Breadth/Depth First Search. Bahan Kuliah IF2211 Strategi Algoritmik Oleh: Rinaldi Munir Update: Masayu Leylia Khodra 22 September 2013

dokumen-dokumen yang mirip
Breadth/Depth First Search (BFS/DFS) Bahan Kuliah IF2211 Strategi Algoritmik Oleh: Rinaldi Munir Update: Nur Ulfa Maulidevi 2 Maret 2015

Referensi. Materi kuliah IF3170 Inteligensi Buatan Teknik Informatika ITB,

Penerapan BFS dan DFS pada Pencarian Solusi

Penerapan BFS dan DFS pada Pencarian Solusi

BFS dan DFS. Bahan Kuliah IF2151 Strategi Algoritmik. Oleh: Rinaldi Munir

Penyelesaian N-Puzzle Menggunakan A* dan Iterative Deepening A*

Mendeteksi Blob dengan Menggunakan Algoritma BFS

Branch & Bound. Bahan Kuliah IF2211 Strategi Algoritma Rinaldi Munir & Masayu Leylia Khodra

Kecerdasan Buatan. Penyelesaian Masalah dengan Pencarian... Pertemuan 02. Husni

Tujuan Instruksional

Penerapan strategi BFS untuk menyelesaikan permainan Unblock Me beserta perbandingannya dengan DFS dan Branch and Bound

Aplikasi dan Analisis Algoritma BFS dan DFS dalam Menemukan Solusi pada Kasus Water Jug

Problem solving by Searching. Materi 3 Kecerdasan Buatan Oleh: Dewi Liliana TI PNJ

Algoritma Traversal di dalam Graf

Algoritma Branch & Bound

IKI 30320: Sistem Cerdas Kuliah 4: Uninformed Search Strategies (Rev.)

Kecerdasan Buatan Penyelesaian Masalah dengan Pencarian

AI sebagai Masalah Pelacakan. Lesson 2

PENERAPANAN ALGORITMA BFS, DFS, DAN UCS UNTUK MENCARI SOLUSI PADA MASALAH ROMANIA

Penerapan Algoritma BFS, DFS, DLS dan IDS dalam Pencarian Solusi Water Jug Problem

ALGORITMA PENCARIAN. 1. Iterative-Deepening Depth-First Search (IDS) Nama : Gede Noverdi Indra Wirawan Nim : Kelas : VI A

Bab 4. Informed Search

Algoritma Pencarian Blind. Breadth First Search Depth First Search

Hal penting dalam menentukan keberhasilan sistem cerdas adalah kesuksesan dalam pencarian.

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

Implementasi Algoritma BFS dan DFS dalam Penyelesaian Token Flip Puzzle

Overview. Searching. Deskripsi. Intro Searching 2/4/2012 IF-UTAMA 1

Perbandingan BFS, DFS dan Greedy pada Permainan Logika Crossing Bridge

Penerapan Algoritma Greedy dan Algoritma BFS untuk AI pada Permainan Greedy Spiders

METODE PENCARIAN. Irvanizam Zamanhuri, M.Sc Dr. Taufiq A. Gani, M.EngSc

METODE PENCARIAN BFS dan DFS

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

Penerapan Search Tree pada Penyelesaian Masalah Penentuan Jalur Kota Terpendek.

SEARCHING. Blind Search & Heuristic Search

Pelacakan dan Penentuan Jarak Terpendek terhadap Objek dengan BFS (Breadth First Search) dan Branch and Bound

METODE BRANCH AND BOUND UNTUK MENEMUKAN SHORTEST PATH

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

IKI30320 Kuliah 4 5 Sep Ruli Manurung. Ulasan. Breadth-first. Uniform-cost. Depth-first. Pengulangan state. Ringkasan

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

Artificial Intelegence/ P_2. Eka Yuniar

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

Penyelesaian Permainan Sliding Puzzle 3x3 Menggunakan Algoritma Greedy Dengan Dua Fungsi Heuristik

Bab 2 2. Teknik Pencarian

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

ALGORITMA PENCARIAN (1)

Metode Searching. Blind/Un-informed Search. Heuristic/Informed Search. Breadth-First Search (BFS) Depth-First Search (DFS) Hill Climbing A*

KI Kecerdasan Buatan Materi 6: Pencarian dgn. Lihat Status Lawan (Adversarial Search)

Implementasi Algoritma DFS pada permainan Monument Valley

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

Algoritma Branch & Bound untuk Optimasi Pengiriman Surat antar Himpunan di ITB

Search Strategy. Search Strategy

Problem-solving Agent: Searching

Informed Search (Heuristic) & Eksplorasinya

BAB III ALGORITMA BRANCH AND BOUND. Algoritma Branch and Bound merupakan metode pencarian di dalam ruang

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

PENYELESAIAN MASALAH MISSIONARIES DAN CANNIBAL MENGGUNAKAN ALGORITMA DFS DENGAN VARIASI PENGHINDARAN REPEATED STATE

Penyelesaian Masalah dengan Pencarian

Sistem Kecerdasan Buatan. Masalah, Ruang Masalah dan Pencarian Solusi. Masalah. Masalah Sebagai Ruang Keadaan 10/7/2015

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Penerapan Algoritma BFS dan DFS dalam Permainan Ular Tangga

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

RENCANA PEMBELAJARAN SEMESTER (RPS)

Analisis Penggunaan Algoritma Backtracking dalam Penjadwalan Kuliah

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

PENGGUNAAN ALGORITMA BRANCH AND BOUND UNTUK MENYELESAIKAN PERSOALAN PENCARIAN JALAN (PATH-FINDING)

KI Kecerdasan Buatan Materi 5: Pencarian dengan Optimasi (Local Search & Optimization )

Kecerdasan Buatan. Pertemuan 03. Pencarian Branch & Bound dan Heuristik (Informed)

Aplikasi Branch and Bound Pada Pencarian Jalan Pada Software Navigasi

Pembentukan pohon pencarian solusi dan perbandingan masingmasing algoritma pembentuknya dalam simulasi N-Puzzle

VARIASI PENGGUNAAN FUNGSI HEURISTIK DALAM PENGAPLIKASIAN ALGORITMA A*

Kode MK/ Pemrograman Terstruktur 2

ABSTRACT. Keyword: Algorithm, Depth First Search, Breadth First Search, backtracking, Maze, Rat Race, Web Peta. Universitas Kristen Maranatha

Penghematan BBM pada Bisnis Antar-Jemput dengan Algoritma Branch and Bound

Pemanfaatan Algoritma Runut-balik dalam Penentuan Golongan Suara pada Dunia Paduan Suara

IKI 30320: Sistem Cerdas Kuliah 3: Problem-Solving Agent & Search

Algoritma Runut-balik (Backtracking)

Pencarian Pohon Solusi Permainan Alchemy Menggunakan Algoritma BFS dan DFS

Penerapan Pohon dengan Algoritma Branch and Bound dalam Menyelesaikan N-Queen Problem

Bahasan Terakhir... Pencarian dan Klasifikasinya Breadth-first Search Depth-first Search Variasi Depth-first Search:

Update 2012 DESAIN DAN ANALISIS ALGORITMA SEARCHING

BAB 2 TINJAUAN PUSTAKA

Penerapan Algoritma Greedy Best First Search untuk Menyelesaikan Permainan Chroma Test : Brain Challenge

IMPLEMENTASI ALGORITMA BREADTH FIRST SEARCH DAN STRING MATCHING PADA SISTEM PAKAR

ANALISIS PERBANDINGAN ALGORITMA PATHFINDING GREEDY BEST-FIRST SEARCH DENGAN A*(STAR) DALAM MENENTUKAN LINTASAN PADA PETA

PERBANDINGAN ALGORITMA BFS DAN DFS DALAM PEMBUATAN RUTE PERJALANAN OBJEK PERMAINAN 2 DIMENSI

PERBANDINGAN APLIKASI ALGORITMA BRUTE-FORCE DAN KOMBINASI ALGORITMA BREADTH FIRST SEARCH DAN GREEDY DALAM PENCARIAN SOLUSI PERMAINAN TREASURE HUNT

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

Pertemuan-07 INFORMATIKA FASILKOM UNIVERSITAS IGM

Pencarian Lintasan Terpendek Pada Aplikasi Navigasi Menggunakan Algoritma A*

PENYELESAIAN TRAVELLING SALESMAN PROBLEM DENGAN ALGORITMA BRANCH AND BOUND

PENERAPAN ALGORITMA BFS PADA CHINESE SLIDE BLOCK PUZZLE (KLOTSKI)

ALGORITMA PENCARIAN (HEURISTIC)

Penerapan Algoritma Branch and Bound untuk Optimasi Rute Penempelan Poster di Papan Mading ITB

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

Algoritma Runut-balik (Backtracking) Bahan Kuliah IF2251 Strategi Algoritmik Oleh: Rinaldi Munir

Problem-Solving Agent & Search

Jurusan Matematika Fakultas Matematika dan Ilmu Pengetahuan Alam Institut Teknologi Sepuluh Nopember Surabaya 2011

KECERDASAN BUATAN METODE HEURISTIK / HEURISTIC SEARCH ERWIEN TJIPTA WIJAYA, ST., M.KOM

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Perbandingan Algoritma Depth-First Search dan Algoritma Hunt-and-Kill dalam Pembuatan Labirin

Transkripsi:

Breadth/Depth First Search (BFS/DFS) Bahan Kuliah IF2211 Strategi Algoritmik Oleh: Rinaldi Munir Update: Masayu Leylia Khodra 22 September 2013 1

Traversal Graf Algoritma traversal graf: mengunjungi simpul dengan cara yang sistematik Pencarian melebar (breadth first search/bfs) Pencarian mendalam (depth first search/dfs) Asumsi: graf terhubung Graf: representasi persoalan Traversal graf: pencarian solusi social graph http://www.oreilly.de/catalog/9780596518172/toc.html Web page network 2

Algoritma Pencarian Tanpa informasi (uninformed/blind search) Tidak ada informasi tambahan Contoh: DFS, BFS, Depth Limited Search, Iterative Deepening Search, Uniform Cost Search Dengan informasi (informed Search) Pencarian berbasis heuristik Mengetahui non-goal state lebih menjanjikan daripada yang lain Contoh: Best First Search, A* 3

Pencarian Melebar (BFS) Traversal dimulai dari simpul v. Algoritma: 1. Kunjungi simpul v 2. Kunjungi semua simpul yang bertetangga dengan simpul v terlebih dahulu. 3. Kunjungi simpul yang belum dikunjungi dan bertetangga dengan simpul-simpul yang tadi dikunjungi, demikian seterusnya. 1 2 3 4 5 6 7 8 4

BFS: Struktur Data 1. Matriks ketetanggaan A = [aij] yang berukuran nxn, a ij = 1, jika simpul i dan simpul j bertetangga, a ij = 0, jika simpul i dan simpul j tidak bertetangga. 2. Antrian q untuk menyimpan simpul yang telah dikunjungi. 3. Tabel boolean yang bernama dikunjungi dikunjungi : array[l..n] of boolean dikunjungi[i] = true jika simpul i sudah dikunjungi dikunjungi[i] = false jika simpul i belum dikunjungi 5

6

BFS: Ilustrasi 1 Iterasi V Q dikunjungi 1 2 3 4 5 6 7 8 2 3 Inisialisasi 1 {1} T F F F F F F F Iterasi 1 1 {2,3} T T T F F F F F Iterasi 2 2 {3,4,5} T T T T T F F F Iterasi 3 3 {4,5,6,7} T T T T T T T F 4 5 6 7 Iterasi 4 4 {5,6,7,8} T T T T T T T T Iterasi 5 5 {6,7,8} T T T T T T T T Iterasi 6 6 {7,8} T T T T T T T T Iterasi 7 7 {8} T T T T T T T T 8 Iterasi 8 8 {} T T T T T T T T 7

Pencarian Mendalam (DFS) Traversal dimulai dari simpul v. Algoritma: 1. Kunjungi simpul v 2. Kunjungi simpul w yang bertetangga dengan simpul v. 3. Ulangi DFS mulai dari simpul w. 4. Ketika mencapai simpul u sedemikian sehingga semua simpul yang bertetangga dengannya telah dikunjungi, pencarian dirunut-balik (backtrack) ke simpul terakhir yang dikunjungi sebelumnya dan mempunyai simpul w yang belum dikunjungi. 5. Pencarian berakhir bila tidak ada lagi simpul yang belum dikunjungi yang dapat dicapai dari simpul yang telah dikunjungi. 1 2 3 4 5 6 7 8 8

DFS 9

DFS: Ilustrasi 1 1 2 3 4 5 6 7 DFS(1): v=1; dikunjungi[1]=true; DFS(2) DFS(2): v=2; dikunjungi[2]=true; DFS(4) DFS(4): v=4; dikunjungi[4]=true; DFS(8) DFS(8): v=8; dikunjungi[8]=true; DFS(5)» DFS(5): v=5; dikunjungi[5]=true» DFS(6): v=6; dikunjungi[6]=true; DFS(3) DFS(3): v=3; dikunjungi[3]=true; DFS(7) DFS(7): v=7; dikunjungi[7]=true 8 10

DFS: Ilustrasi 2 1 2 3 4 5 6 7 DFS(1): v=1; dikunjungi[1]=true; DFS(2) DFS(2): v=2; dikunjungi[2]=true; DFS(3) DFS(3): v=3; dikunjungi[3]=true; DFS(6) DFS(6): v=6; dikunjungi[6]=true; DFS(8)» DFS(8): v=8; dikunjungi[8]=true; DFS(4) DFS(4): v=4; dikunjungi[4]=true; DFS(8): DFS(5) DFS(5): v=5; dikunjungi[5]=true DFS(8): DFS(7) DFS(7): v=7; dikunjungi[7]=true 8 11

Contoh (hal 113) 1 2 3 4 6 Khusus untuk graf berarah, beberapa simpul mungkin tidak dapat dicapai dari simpul awal. Coba dengan simpul yang belum dikunjungi sebagai simpul awal. (hal 113) 5 7 DFS (1): 1-2-4-3-5-6-7 BFS (1): 1-2-4-3-5-7-6 12

Penerapan BFS dan DFS: Citation Map Sumber: Teufel (1999), Argumentative Zoning 13

Penerapan BFS dan DFS: Web Spider Arsitektur umum mesin pencari Secara periodik, web spider menjejalahi internet untuk mengunjungi halamanhalaman web http://www.ibm.com/developerworks/web/library/wa-lucene2/ 14

Web Spider: Penjelajahan Web http://introcs.cs.princeton.edu/java/16pagerank/ Halaman web dimodelkan sebagai graf berarah Simpul menyatakan halaman web (web page) Sisi menyatakan link ke halaman web Bagaimana teknik menjelajahi web? Secara DFS atau BFS Dimulai dari web page awal, lalu setiap link ditelusuri secara DFS sampai setiap web page tidak mengandung link. 15

Pencarian Solusi dengan BFS/DFS Persoalan optimasi: n kandidat solusi Pencarian solusi pembentukan pohon dinamis Akar: initial state Simpul: problem state(layak membentuk solusi) Daun: solution/goal state Cabang: operator/langkah dalam persoalan Ruang status (state space): himpunan semua simpul Ruang solusi: himpunan status solusi Pohon ruang status (state space tree) Solusi: path ke status solusi 16

Pohon Dinamis: Permutasi A,B,C Pohon ruang status Operator: add X Akar : status awal (status kosong ) Simpul: problem state Status persoalan (problem state): simpul-simpul di dalam pohon dinamis yang memenuhi kendala (constraints). Daun: status solusi Status solusi (solution state): satu atau lebih status yang menyatakan solusi persoalan. Ruang solusi: Ruang solusi (solution space): himpunan semua status solusi. Ruang status (state space): Seluruh simpul di dalam pohon dinamis dan pohonnya dinamakan juga pohon ruang status (state space tree). 17

Permainan 8-Puzzle State berdasarkan ubin kosong (blank) 18

8-Puzzle: Pohon Ruang Status 19

BFS untuk Pembentukan Pohon Ruang Status Inisialisasi dengan status awal sebagai akar, lalu tambahkan simpul anaknya, dst. Semua simpul pada level d dibangkitkan terlebih dahulu sebelum simpul-simpul pada level d+1 20

BFS untuk Permutasi 21

BFS untuk 8-Puzzle Catatan: Urutan operator yang digunakan harus konsisten. 22

DFS untuk Pembentukan Pohon Ruang DFS: Status BFS: 23

Permutasi A,B,C BFS: DFS: 24

DFS untuk 8-Puzzle up left down down dst DFS dapat menambahkan batasan kedalaman pohon ruang status yang dibentuk 25

DFS: Contoh Lain 26

Pohon Ruang Status 27

PR Misalkan anda mempunyai dua buah ember, masingmasing bervolume 5 liter dan 3 liter. Anda diminta mendapatkan air (dari sebuah danau) sebanyak 4 liter di dalam salah satu ember dengan menggunakan bantuan hanyakeduaember tersebut(tidakadaperalatanlain yang tersedia, hanyakeduaember itusajayang ada!). Andabolehmemindahkanair darisatuember keember lain, membuangseluruhair dariember, dansebagainya. Gambarkan pencarian solusi persoalan ini dengan membangun pohon secara dinamis dengan algoritma DFS atau BFS. Anda harus menjelaskan apa yang menjadi state persoalan.

Algoritma Pencarian Lainnya Depth-limited search Iterative deepening search 29

Depth-Limited Search BFS: dijamin menemukan path dgn langkah minimum tapi membutuhkan ruang status yang besar DFS: efisien, tetapi tidak ada jaminan solusi dgn langkah minimum DFS dapat memilih langkah yang salah, sehingga path panjang bahkan infinite. Pemilihan langkah sangat penting Salah satu solusi: DFS-limited search DFS dengan pembatasan kedalaman sampai l Simpul pada level l dianggap tidak memiliki successor Masalah: penentuan batas level ( shallowest goal) 30

DLS Algorithm Function DLS (problem, limit) rec_dls(make_node(init_state),problem,limit) Function Rec_DLS (node,problem, limit) if isgoal(node) then solution(node) else if depth(node)=limit then cutoff else for each successor in Expand(node,problem) do result rec_dls(successor,problem,limit) if result=cutoff then cutoff_occured true else if result failure then result if cutoff_occured then cutoff else failure 31

Iterative Deepening Search (IDS) IDS: perform a sequence of DFS searches with increasing depthcutoff until goal is found Assumption: most of the nodes are in the bottom level so it does not matter much that upper levels are generated multiple times. Depth 0 Iterate result DLS(problem,depth) stop: result cutoff depth depth+1 result 32

Route/Path Planning Materi Kuliah IF2211 Strategi Algoritma Teknik Informatika - ITB 33

Referensi Materi kuliah IF3054 Inteligensi Buatan Teknik Informatika ITB, Course Website: http://kuliah.itb.ac.id STEI Teknik Informatika IF3054 Stuart J Russell & Peter Norvig, Artificial Intelligence: A Modern Approach, 3rd Edition, Prentice-Hall International, Inc, 2010, Textbook Site: http://aima.cs.berkeley.edu/(2nd edition) Free online course materials MIT OpenCourseWare Website: Site: http://ocw.mit.edu/courses/electricalengineering-and-computer-science/ 34

Route Planning 35

Z O 71 151 99 Source: Russell s book Search S F 75 211 A 118 T 111 140 80 L 70 M 75 120 D R 97 C P 146 138 101 B S: set of cities i.s: A (Arad) g.s: B (Bucharest) Goal test: s = B? Path cost: time ~ distance 36

Uninformed Search 37

Breadth-First Search (BFS) Treat agenda as a queue (FIFO) O 71 Z 151 S F 99 A 75 140 80 R 97 120 101 P 211 B 118 T 111 L 70 M 75 D 146 C 138 Simpul-E A Z A S A Simpul Hidup Z A,S A,T A S A,T A,O AZ T A,O AZ,O AS,F AS,R AS Path: A S F B, Path-cost = 450 T A O AZ O AS F AS R AS O AZ,O AS,F AS,R AS,L AT O AS,F AS,R AS,L AT F AS,R AS,L AT R AS,L AT,B ASF L AT,B ASF,D ASR,C ASR,P ASR 38 L AT B ASF B ASF,D ASR,C ASR,P ASR,M ATL Solusi ketemu

Depth-First Search (DFS) Treat agenda as a stack (LIFO) O 71 Z 151 S F 99 A 75 118 T 111 140 80 L 70 M 75 120 D R 97 C P 146 138 211 101 Simpul-E A B Simpul Hidup Z A,S A,T A Path: A Z O S F B Path-cost = 607 Z A O AZ O AZ, S A,T A S AZO,S A,T A S AZO F AZOS, R AZOS,S A,T A F AZOS B AZOSF, R AZOS,S A,T A B AZOSF Solusi ketemu 39

IDS Z 71 O 151 S 99 F A 75 118 T 111 140 80 L 70 M 75 120 Depth=0: A: cutoff Depth=1: A Z A,S A,T A Z A : cutoff, S A : cutoff, T A : cutoff Depth=2: A Z A,S A,T A O AZ, S A,T A O AZ : cutoff F AS, R AS,T A F AS : cutoff R AS : cutoff L AT L AT : cutoff Depth=3: A Z A,S A,T A O AZ, S A,T A S AZO,S A,T A S AZO : cutoff F AS, R AS,T A B ASF, R AS,T A B ASF Stop: B=goal, path: A S F B, path-cost = 450 D R 97 C P 146 138 211 101 40 B

Simpul-E Uniform Cost Search (UCS) Simpul Hidup A Z A-75, T A-118, S A-140 BFS & IDS find path with fewest steps If steps cost, this is not relevant (to optimal solution) How can we find the shortest path (measured by sum of distances along path)? Z A-75 T A-118 S A-140 O AZ-146 R AS-220 L AT-229 T A-118, S A-140,O AZ-146 S A-140,O AZ-146,L AT-229 O AZ-146,R AS-220,L AT-229,F AS- 239,O AS-291 R AS-220, L AT-229,F AS-239,O AS-291 L AT-229,F AS-239,O AS-291,P ASR- 317,D ASR-340,C ASR-366 F AS-239,O AS-291,M ATL-299,P ASR- Z 71 O 151 S 99 F F AS-239 317,D ASR-340,C ASR-366 O AS-291,M ATL-299,P ASR-317,D ASR- A 75 118 T 111 140 80 L 70 M 75 120 Path: A S R P B Path-cost = 418 D R 97 P 146 138 C 211 101 B O AS-291 M ATL-299 P ASR-317 340,C ASR-366, B ASF-450 M ATL-299,P ASR-317,D ASR-340,C ASR- 366,B ASF-450 P ASR-317,D ASR-340,D ATLM-364,C ASR- 366,B ASF-450 D ASR-340,D ATLM-364,C ASR-366, B ASRP- 418,C ASRP-455, B ASF-450 D ASR-340 D ATLM-364,C ASR-366, B ASRP-418, C ASRP-455, B ASF-450 D ATLM-364 C ASR-366, B ASRP-418,C ASRP-455, B ASF- 450 C ASR-366 B ASRP-418,C ASRP-455, B ASF-450 41

Informed Search 42

Best-first search Idea: use an evaluation function f(n) for each node greedy best-first search: f(n) = h(n) A * search: f(n) = g(n) + h(n) e.g., h SLD (n)= straight-line distance from nto Bucharest Romania with step costs in km g(n) = cost so far to reach n h(n)= estimated cost from nto goal f(n) = estimated total cost of path through nto goal 43

Greedy best-first search example 44

Greedy best-first search example 45

Greedy best-first search example 46

Greedy best-first search example 47

A * search example 48

A * search example 49

A * search example 50

A * search example 51

A * search example 52

A * search example 53

THANK YOU 54