Kode MK/ Pemrograman Terstruktur 2

dokumen-dokumen yang mirip
ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Menyelesaikan Topological Sort Menggunakan Directed Acyclic Graph

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Queue (Antrian)

Aplikasi Branch and Bound Pada Pencarian Jalan Pada Software Navigasi

TOPOLOGICAL SORT dengan DFS dan METODE LAIN

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

CCH1A4 / Dasar Algoritma & Pemrogramanan

IKG2A3/ Pemrograman Terstruktur 2

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

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

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

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan)

CCH1A4 / Dasar Algoritma & Pemrogramanan

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

Algoritma Traversal di dalam Graf

CCH1A4 / Dasar Algoritma & Pemrogramanan

Pengantar List Linier

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama :

PENERAPAN ALGORITMA BFS PADA CHINESE SLIDE BLOCK PUZZLE (KLOTSKI)

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Tree (Pohon)

Pemanfaatan Directed Acyclic Graph untuk Merepresentasikan Hubungan Antar Data dalam Basis Data

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Variasi List Linier

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

Representasi Logic List Linier

Struktur Data. Queue (Antrian)

CRITICAL PATH. Menggunakan Graph berbobot dan mempunya arah dari Critical Path: simpul asal : 1 simpul tujuan : 5. Graph G. Alternatif

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Mesin Abstrak

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

CCH1A4 / Dasar Algoritma & Pemrogramanan

Penerapan Algoritma BFS dan DFS dalam Permainan Ular Tangga

CCH1A4 / Dasar Algoritma & Pemrogramanan

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

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

Algoritma Penentuan Graf Bipartit

Analisis Perbandingan Algoritma Rekursif dan Non-Rekursif secara DFS (Depth First Search) dengan Memanfaatkan Graf

CCH1A4 / Dasar Algoritma & Pemrogramanan

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

Penerapan Algoritma Backtracking pada Pewarnaan Graf

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Penggunaan BFS dan DFS untuk Pixel Traversing

Memecahkan Puzzle Hidato dengan Algoritma Branch and Bound

Aplikasi Algoritma Dijkstra dalam Pencarian Lintasan Terpendek Graf

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Penggunaan Graf dalam Pemodelan Matematis Permainan Delapan Jari

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Penerapan Algoritma Backtracking untuk Menyelesaikan Permainan Hashiwokakero

RENCANA PEMBELAJARAN SEMESTER (RPS)

Penggunaan Algoritma Dijkstra dalam Penentuan Lintasan Terpendek Graf

Perbandingan BFS, DFS dan Greedy pada Permainan Logika Crossing Bridge

LIST LINIER 1. DEFINISI

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

BAB 2 LANDASAN TEORI

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

Integer (Bilangan Bulat) Yang dimaksud bilangan bulat adalah, -1, -2, -3, 0, 1, 2, 3, 4 dan lain lain yang bukan merupakan bilangan pecahan.

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

Pengantar Struktur Data

APLIKASI GRAF DALAM BISNIS TRAVEL BANDUNG-BOGOR

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Implementasi Algoritma BFS dan DFS dalam Penyelesaian Token Flip Puzzle

Implementasi Intuitif Penyelesaian Labirin dengan Algoritma Depth-First Search

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

APLIKASI PEWARNAAN GRAPH PADA PEMBUATAN JADWAL

List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

BAB 2 LANDASAN TEORI

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

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue.

Pendeteksian Deadlock dengan Algoritma Runut-balik

Permodelan Pohon Merentang Minimum Dengan Menggunakan Algoritma Prim dan Algoritma Kruskal

1, 2, 3

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

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

KKKF33110 STRUKTUR DATA

PENERAPAN ALGORITMA BFS DALAM PEMECAHAN PERMAINAN MINESWEEPER

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Penerapan Algoritma DFS dalam Menyelesaikan Permainan Buttons & Scissors

Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek

IKI 20100: Struktur Data & Algoritma

Studi Algoritma Optimasi dalam Graf Berbobot

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Pengenalan Algoritma & Struktur Data. Pertemuan ke-1

PENGGUNAAN EXHAUSTIVE SEARCH SEBAGAI SOLUSI PERMAINAN SCRAMBLE

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut

Denny Setyo R. Masden18.wordpress.com

ALGORITMA & PEMROGRAMAN

PENERAPAN PEWARNAAN GRAF DALAM PENJADWALAN

CCH1A4 / Dasar Algoritma & Pemrogramanan

METODE BRANCH AND BOUND UNTUK MENEMUKAN SHORTEST PATH

QUEUE (ANTRIAN) Struktur Data - Queue

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

IMPLEMENTASI ALGORITMA BREADTH FIRST SEARCH DAN STRING MATCHING PADA SISTEM PAKAR

Studi dan Implementasi Struktur Data Graf

Transkripsi:

Kode MK/ Pemrograman Terstruktur 2 ZK Abdurahman Baizal KK Algoritma dan Komputasi Graf 1 8/25/2015

Pendahuluan Dalam bab ini kita akan membahas struktur data graf Struktur data graf banyak digunakan sebagai sebuah pemodelan banyak kasus dalam dunia nyata Jaringan Komputer Web Scheduling, dsb Dalam bab ini diasumsikan mahasiswa telah memahami definisi graf secara lebih detil dalam Matematika Diskrit 2 8/25/2015 IKG2A3/Pemrograman Terstruktur 2

Definisi Graf terdiri dari simpul (vertex) dan edge Informasi berada dalam nodes, dan edge merepresentasikan hubungan antar nodes Graf merupakan salah satu struktur data non linier 3 8/25/2015

Representasi Graf Untuk keperluan komputasi, graf perlu direpresentasikan dalam bentuk yang dikenali komputer Macam-macam representasi graf : Matriks ketetanggan Matriks kebersisian List ketetanggan Matriks ketetanggan paling sering digunakan, dan dalam bab ini akan dibahas representasi menggunakan matriks ketetanggaan 4 8/25/2015

Contoh v1 Matriks ketetanggaan: v4 v3 v2 1 2 3 4 1 0 1 0 1 2 1 0 1 1 3 0 1 0 1 4 1 1 1 0 5 8/25/2015

Contoh Matriks Ketetangaan v1 e2 v2 e1 e4 e3 v3 e5 1 0 2 2 3 1 1 2 3 2 0 1 1 1 2 6 8/25/2015

Contoh v3 v1 v2 v4 Matriks Ketetangaan 1 2 3 4 1 0 1 0 0 2 1 0 1 1 3 0 0 0 1 4 0 0 0 0 7 8/25/2015

Contoh v1 8 v2 Matriks Ketetangaan 1 2 3 4 9 v4 6 5 v3 1 ~ 2 ~ 3 5 4 ~ 8 ~ ~ ~ ~ ~ ~ ~ 9 6 ~ ~ 8 8/25/2015

List Ketanggaan v1 1 2 4 v4 v2 2 3 1 3 4 2 4 v3 4 1 2 3 9 8/25/2015

List Ketetanggaan v1 v2 1 2 2 1 3 4 v3 v4 3 4 4 Head 1 2 2 1 3 4 3 4 10 8/25/2015

List Ketetanggaan Untuk graf : A D E H e a d Bisa juga direpresentasikan sbb : A B C B C D E 11 8/25/2015

Traversal pada Graf DFS (Depth First Search) BFS (Breadth First Search). 1 DFS : 1 2 4 8 5 6 3 7 2 3 BFS : 1 2 3 4 5 6 7 8 4 5 6 7 8 12 8/25/2015

Traversal DFS dan BFS Kamus Umum {asumsi : penamaan simpul graf dikonversi menjadi bilangan bulat terurut dimulai dengan 1, contoh : 1, 2, 3, 4,... } Type ElmtMat : integer[0,1] Type Graf : array[1..jumsimpul][1..jumsimpul] of ElmtMat JumNode : integer {array untuk membedakan simpul yang telah diproses dengan yang belum} Visited : array [1..N] of boolean Array Visited diinisialisasi dengan False} 13 8/25/2015

Kamus (lanjutan) w: integer Q: Queue Procedure CreateQueue (output Q: Queue) {I.S. - F.S. Terdefinisi Q antrian kosong} Function IsEmptyQueue (Q: Queue) boolean {True jika Q antrian kosong, False jika tidak kosong} Procedure InsertQueue (input/output Q: Queue; input v: integer) {I.S. Terdefinisi Q (mungkin kosong) dan v adalah elemen yang akan disisipkan ke Q F.S. v telah disisipkan di Q} Procedure DeleteQueue (input/output Q: Queue; output v: integer) {I.S. Terdefinisi Q (tidak kosong) F.S. v adalah elemen yang dihapus dari Q} Procedure Process (input v: integer) {I.S. v adalah simpul yang akan diproses F.S. v telah diproses} 14 8/25/2015

Traversal DFS Procedure DFS (input v : integer) {I.S. Terdefinisi graf A, v adalah nomor dari simpul yang akan diproses F.S. Simpul dengan nomor v telah diproses} Kamus w: integer Procedure Process (input v: integer) {I.S. v adalah nomor dari simpul yang akan diproses 15 8/25/2015 F.S. Simpul dengan nomor v telah diproses} Algoritma Process(v) Visited[v] true for w 1 to N do if (A[v,w]=1) and (not Visited[w]) then DFS(w)

Traversal DFS Procedure BFS (input v : integer) {I.S. Terdefinisi A yaitu matriks ketetanggaan representasi sebuah graf, v adalah nomor dari simpul yang akan diproses F.S. v telah diproses} Kamus : w: integer Q: Queue 16 8/25/2015

Algoritma Process(v) Visited[v] true CreateQueue(Q) InsertQueue(Q,v) while not IsEmptyQueue(Q) do DeleteQueue(Q,v) for w 1 to N do if (A[v,w]=1) and (not Visited[w]) then {IsEmptyQueue(Q)} Process(w) InsertQueue(Q,w) Visited[w] true 17 8/25/2015

Topological Sort Topological Sort adalah pengurutan vertex dalam directed acyclic graph (graph berarah tanpa siklus), sedemikian hingga ada lintasan dari vi hingga vj secara berurutan Diberikan urutan partial dari elemen suatu himpunan, dikehendaki agar elemen yang terurut partial tersebut mempunyai keterurutan linier 18 8/25/2015

Topological Sort Contoh Dalam suatu kurikulum, suatu mata pelajaran mempunyai prerequisit mata pelajaran lain. Urutan linier adalah urutan untuk seluruh mata pelajaran dalam kurikulum Dalam suatu proyek, suatu pekerjaan harus dikerjakan lebih dulu dari pekerjaan lain (misalnya membuat fondasi harus sebelum dinding, membuat dinding harus sebelum pintu. Namun pintu dapat dikerjakan bersamaan dengan jendela. dsb 19 8/25/2015

Topological Sort Hasil Topological sort untuk graf di atas : v1, v2, v5, v4, v3, v7, v6 dan v1, v2, v5, v4, v7, v3, v6 20 8/25/2015

Topological Sort Pada dasarnya, langkah dalam topological sort : Temukan vertex dengan InDegree = 0 Print vertex Hapus vertex tersebut serta busurbusurnya 21 8/25/2015

Procedure topsort {IS : terdefinisi matriks ketetanggaan graf G FS : Top_num menyimpan hasil topological sorting} Kamus : counter, jum_vertex : integer v1,v2, w : vertex {didefinisikan type vertex : integer} Q : queue {list} function FindNewVertexOfIndegreeZero(Indegree:array of vertex) vertex {melakukan pencarian pada array indegree, yang nilainya = 0} function IsEmptyQueue(Q:Queue) boolean Procedure PushQueue(input/output Q:Queue ; input v1:vertex) Procedure PopQueue(input/output Q:Queue ; output v2:vertex) 22 8/25/2015

Algoritma : For counter 1 to jum_vertex do v1 FindNewVertexOfIndegreeZero(Indegree) PushQueue(Q,v1) If IsEmptyQueue(Q) then Output ( graph has a cycle ) Else While not (IsEmptyQueue(Q)) do PopQueue(Q,v) Top_num[counter] v; For (each w adjacent to v) do Indegree[w] indegree[w] 1 {Q empty} 23 8/25/2015

Topological Sort Indegree[ ] adalah array yang menyimpan indegree dari tiap vertex. Top_num[ ] adalah array yang menyimpan hasil topological sorting. 24 8/25/2015

Topological Sort Proses secara umum : Array indegree diisi dengan nilai indegree tiap vertex Untuk vertex-vertex dengan indegree = 0, masukkan ke queue While queue is not empty, sebuah vertex v dihapus dari queue dan semua busur-busur yang adjacent (berisisan) dengan vertex v diturunkan satu nilainya (Indegree(w) = Indegree 1, dengan w adalah vertex yang berhubungan dengan vertex v) 25 8/25/2015

Topological Sort Urutan yang dihasilkan : v1, v2, v5, v4, v3, v7, dan v6 26 8/25/2015

Latihan Buatlah fungsi-fungsi untuk menguji apakah suatu graf sederhana merupakan : Graf Kosong Graf Lengkap Graf Teratur Graf Lingkaran 27 8/25/2015

Latihan Diberikan sebuah graf a b c d f g i e h Hasil pengunjungan (traversal) BFS terhadap graf tersebut, dengan dimulai dari simpul a adalah (asumsi : penamaan simpul lebih kecil, lebih didahulukan. Contoh a lebih lebih dulu dari b, dsb): 28 8/25/2015

Referensi Liem, Inggriani., Diktat Kuliah IF2181 Struktur Data, ITB, 2003. Munir, Rinaldi., Matematika Diskrit, Edisi Kedua, Penerbit Informatika Bandung, Bandung, 2003 29 8/25/2015

30 8/25/2015 THANK YOU