Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

dokumen-dokumen yang mirip
Pemanfaatan Directed Acyclic Graph untuk Merepresentasikan Hubungan Antar Data dalam Basis Data

Penggunaan Algoritma Dijkstra dalam Penentuan Lintasan Terpendek Graf

BAB II LANDASAN TEORI

BAB II TINJAUAN PUSTAKA

Aplikasi Pohon dan Graf dalam Kaderisasi

Permodelan Pohon Merentang Minimum Dengan Menggunakan Algoritma Prim dan Algoritma Kruskal

Aplikasi Algoritma Dijkstra dalam Pencarian Lintasan Terpendek Graf

TEORI GRAF DALAM MEREPRESENTASIKAN DESAIN WEB

Pengembangan Teori Graf dan Algoritma Prim untuk Penentuan Rute Penerbangan Termurah pada Agen Penyusun Perjalanan Udara Daring

PEWARNAAN GRAF SEBAGAI METODE PENJADWALAN KEGIATAN PERKULIAHAN

Aplikasi Pewarnaan Graf pada Penjadwalan Pertandingan Olahraga Sistem Setengah Kompetisi

Aplikasi Teori Graf dalam Manajemen Sistem Basis Data Tersebar

Penggunaan Graf Semi-Hamilton untuk Memecahkan Puzzle The Hands of Time pada Permainan Final Fantasy XIII-2

TEORI GRAF UNIVERSITAS MUHAMMADIYAH JEMBER ILHAM SAIFUDIN PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK. Selasa, 13 Desember 2016

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

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

Aplikasi Shortest Path dengan Menggunakan Graf dalam Kehidupan Sehari-hari

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

Aplikasi Graf dalam Formasi dan Strategi Kesebelasan Sepakbola

IKI 20100: Struktur Data & Algoritma

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Graf. Program Studi Teknik Informatika FTI-ITP

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

Studi Algoritma Optimasi dalam Graf Berbobot

Aplikasi Teori Graf dalam Permainan Instant Insanity

Penerapan Teori Graf Pada Algoritma Routing

ANALISIS JARINGAN LISTRIK DI PERUMAHAN JEMBER PERMAI DENGAN MENGGUNAKAN ALGORITMA PRIM

Aplikasi Pohon Merentang Minimum dalam Rute Jalur Kereta Api di Pulau Jawa

Penerapan Algoritma Prim dan Kruskal Acak dalam Pembuatan Labirin

Aplikasi Graf pada Fitur Friend Suggestion di Media Sosial

Graf dan Pengambilan Rencana Hidup

Deteksi Wajah Menggunakan Program Dinamis

Aplikasi Pohon Merentan Minimum dalam Menentukan Jalur Sepeda di ITB

BAB 2 TINJAUAN PUSTAKA

Penerapan Algoritma Branch and Bound pada Penentuan Staffing Organisasi dan Kepanitiaan

Penyelesaian Traveling Salesman Problem dengan Algoritma Heuristik

Pengaplikasian Graf dalam Menentukan Rute Angkutan Kota Tercepat

MEMBANDINGKAN KEMANGKUSAN ALGORITMA PRIM DAN ALGORITMA KRUSKAL DALAM PEMECAHAN MASALAH POHON MERENTANG MINIMUM

Menyelesaikan Topological Sort Menggunakan Directed Acyclic Graph

Penggunaan BFS dan DFS untuk Pixel Traversing

Implementasi Graf dalam Penentuan Rute Terpendek pada Moving Object

Implementasi Logika Penurunan Persamaan Aritmatika pada Program Komputer

Aplikasi Graf pada Penentuan Jadwal dan Jalur Penerbangan

HAND OUT MATA KULIAH TEORI GRAF (MT 424) JILID SATU. Oleh: Kartika Yulianti, S.Pd., M.Si.

POLA PERMAINAN SEPAK BOLA DENGAN REPRESENTASI GRAF

Penerapan Algoritma Greedy untuk Memecahkan Masalah Pohon Merentang Minimum

Graf. Matematika Diskrit. Materi ke-5

APLIKASI PEWARNAAN SIMPUL GRAF UNTUK MENGATASI KONFLIK PENJADWALAN MATA KULIAH DI FMIPA UNY

Representasi Graf dalam Menjelaskan Teori Lokasi Industri Weber

Pengaplikasian Graf dalam Pendewasaan Diri

Aplikasi Graf pada Hand Gestures Recognition

MATEMATIKA DISKRIT II ( 2 SKS)

Pengelompokan Organisme Dengan Menggunakan Algoritma Kruskal

Pertemuan 11 GRAPH, MATRIK PENYAJIAN GRAPH

BAB II LANDASAN TEORI

RANCANG BANGUN APLIKASI MINIMUM SPANNING TREE (MST) MENGGUNAKAN ALGORITMA KRUSKAL

BAB 2 LANDASAN TEORI

Penerapan Pewarnaan Graf dalam Pengaturan Penyimpanan Bahan Kimia

Penerapan Graf dalam Algoritma PageRank Mesin Pencari Google

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

INTRODUCTION TO GRAPH THEORY LECTURE 2

Aplikasi Graf dalam Rute Pengiriman Barang

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

Aplikasi Teori Graf dalam Penggunaan Cairan Pendingin pada Proses Manufaktur

BAB 2 LANDASAN TEORI

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

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

Pencarian Lintasan Hamilton Terpendek untuk Taktik Safe Full Jungle Clear dalam Permainan League of Legends

NASKAH UJIAN UTAMA. JENJANG/PROG. STUDI : DIPLOMA TIGA / MANAJEMEN INFORMATIKA HARI / TANGGAL : Kamis / 18 FEBRUARI 2016

Aplikasi Pewarnaan Graf Pada Pengaturan Warna Lampu Lalu Lintas

Penerapan Pohon Keputusan pada Penerimaan Karyawan

GRAF. Graph seperti dimaksud diatas, ditulis sebagai G(E,V).

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

BAB 2 LANDASAN TEORI

Termilogi Pada Pohon Berakar 10 Pohon Berakar Terurut

Penyelesaian Teka-Teki Sudoku dengan Didasarkan pada Teknik Pewarnaan Graf

Penerapan Pewarnaan Graf pada Permainan Real- Time Strategy

Memanfaatkan Pewarnaan Graf untuk Menentukan Sifat Bipartit Suatu Graf

BAB 2 LANDASAN TEORI

Penerapan Algoritma Steiner Tree dalam Konstruksi Jaringan Pipa Gas

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Penggunaan Algoritma Backtracking Untuk Menentukan Keisomorfikan Graf

Penggunaan Graf dan Pohon Merentang Minimum dalam Menentukan Jalur Terpendek Bepergian di Negara-negara Asia Tenggara dengan Algoritma Prim

Menentukan Titik Evakuasi Selanjutnya bagi Sekelompok Regu Tim SAR dengan Algoritma Branch and Bound

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

ANALISIS JARINGAN LISTRIK DI PERUMAHAN JEMBER PERMAI DENGAN MENGGUNAKAN ALGORITMA PRIM

Penerapan Algoritma Backtracking pada Pewarnaan Graf

Penerapan Travelling Salesman Problem dalam Penentuan Rute Pesawat

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Representasi Graph Isomorfisme. sub-bab 8.3

Branch and Bound untuk Rute Terpendek Tur Pengenalan Labtek V Gedung Benny Subianto Chita Najmi Nabila /

Penerapan Algoritma Transversal pada Graf dan Algoritma Pencocokan String dalam Sistem Jual-Beli Tiket Bioskop

I. PENDAHULUAN II. DASAR TEORI. Penggunaan Teori Graf banyak memberikan solusi untuk menyelesaikan permasalahan yang terjadi di dalam masyarakat.

METODE BRANCH AND BOUND UNTUK MENEMUKAN SHORTEST PATH

UNIVERSITAS GUNADARMA

Analisis Penerapan Algoritma Kruskal dalam Pembuatan Jaringan Distribusi Listrik

Algoritma Prim sebagai Maze Generation Algorithm

Discrete Mathematics & Its Applications Chapter 10 : Graphs. Fahrul Usman Institut Teknologi Bandung Pengajaran Matematika

TINJAUAN PUSTAKA. Pada bab ini akan diberikan beberapa definisi, istilah istilah yang berhubungan dengan materi

Transkripsi:

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf Marvin Jerremy Budiman / 13515076 1 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia 1 13515076@std.stei.itb.ac.id Abstrak Graf merupakan struktur data yang unik. Graf diaplikasikan dalam berbagai hal, seperti perancangan rangkaian listrik, social network analysis, perancangan jaringan komputer, dan sebagainya. Karena struktur data graf berbeda dengan struktur data lain, maka dalam memproses graf diperlukan algoritma yang berbeda dibanding dengan algoritma untuk memproses struktur data lain, seperti tabel atau matriks. Beberapa algoritma untuk mengelola graf menggunakan pendekatan brute-force dan greedy. A. Pengertian Graf II. TEORI DASAR GRAF Graf G, terdiri atas himpunan simpul V dan himpunan sisi E, umumnya ditulis G = (V, E). Graf H pada Gambar 1, terdiri dari himpunan simpul V = {a, b, c, d, e, f, g, h, i, j} dan himpunan sisi E = {(a,c), (a,d), (a,e), (c,f), (c,d), (e,f), (e,b), (b,f), (g,h), (g,j), (h,i), (i,j)}. Kata Kunci Algoritma, Brute-Force, Graf, Greedy. I. PENDAHULUAN Algoritma adalah sekumpulan intruksi terurut yang digunakan untuk menyelesaikan masalah. Selain algoritma, untuk menyelesaikan masalah tersebut diperlukan struktur data, yang digunakan untuk menyimpan data yang berkaitan dengan masalah tersebut. Misal, dalam mencari bilangan bulat terbesar dari N buah bilangan bulat, setiap bilangan bulat disimpan dalam larik (array). Kemudian akan dipilih suatu bilangan pertama X dalam larik, yang akan dibandingkan dengan N-1 bilangan yang lain dalam larik tersebut. Perbandingan tersebut dilakukan secara sekuensial, mulai dari indeks larik kedua, hingga indeks ke-n. Larik tersebut menjadi struktur data yang dipakai untuk menyelesaikan masalah tersebut. Struktur data graf, merupakan struktur data yang berbeda dengan larik. Graf terdiri dari himpunan simpul (vertex) dan himpunan sisi (edge) yang menghubungkan simpul-simpul tersebut. Suatu sisi yang menghubungkan 2 buah simpul biasanya melambangkan suatu hal/hubungan. Graf digunakan untuk merepresentasikan banyak hal, seperti hubungan antarindividu dalam suatu komunitas, hubungan antarorganisme dalam rantai makanan, hubungan antarkomponen elektronik dalam suatu rangkaian listrik, hubungan antarkota dalam suatu negara, dan sebagainya. Beberapa masalah umum yang dapat direpresentasikan dengan struktur data graf, diantaranya adalah mencari lintasan antara 2 simpul, mencari lintasan terpendek antara 2 simpul, pewarnaan graf, dan lain-lain. Masalah-masalah tersebut memerlukan algoritma yang berbeda dengan algoritma untuk mengelola larik, ataupun struktur data lain. Gambar 1. Graf H merupakan graf sederhana dan tak berarah. (Sumber: Levitin, 2011) B. Penggolongan Graf Graf sederhana dan graf tak sederhana Graf disebut graf sederhana (simple) jika graf tersebut tidak memiliki sisi ganda (misal, simpul a dan b dihubungkan oleh 2 sisi berbeda) dan tidak memiliki loop (misal, simpul a memiliki sisi yang menghubungkannya dengan diri sendiri). Graf yang di dalamnya terdapat sisi ganda atau loop, disebut graf tak sederhana (multigraph). Graf berarah dan graf tak berarah Graf yang setiap sisinya tidak memiliki arah tertentu disebut graf tak berarah (undirected). Graf yang setiap sisinya memiliki arah tertentu (dilambangkan dengan anak panah), disebut graf berarah (directed). Jika terdapat sisi berarah (a, b) dalam suatu graf berarah, maka sisi tersebut berawal dari simpul a dan berakhir di simpul b. C. Terminologi Graf Bertetangga dan Bersisian Dua buah simpul a dan b dikatakan bertetangga (adjacent) jika terdapat sisi e yang mengubungkan a dan b. Sisi e dikatakan bersisian (incident) dengan simpul a dan

simpul b. Pada Gambar 1 simpul c dan simpul f dikatakan bertetangga, dan sisi (c,f) dikatakan bersisian dengan simpul c dan simpul f. Derajat Derajat adalah jumlah sisi yang bersisian dengan suatu simpul. Derajat simpul a dinyatakan dengan deg(a), pada Gambar 1, deg(a) = 3. Lemma jabat tangan (handshaking lemma) menyatakan bahwa jumlah derajat seluruh simpul dalam suatu graf G, sama dengan jumlah dua kali jumlah sisi dalam graf tersebut. 2e = deg (v) vεg Lintasan dan Sirkuit Lintasan (path) dengan panjang n dari simpul a menuju b adalah kumpulan n sisi berurutan yang menguhubungkan simpul a dan simpul b. Lintasan disebut sirkuit (circuit), jika berawal dan berakhir pada simpul yang sama, dan panjangnya lebih besar dari 0. Lintasan atau sirkuit dikatakan sederhana, jika tidak terdapat 2 atau lebih sisi yang sama pada lintasan tersebut. Pada Gambar 1, lintasan dari a ke b terdiri dari sisi (a,c), (c,f) dan (b,f) dengan panjang 3. Salah satu sirkuit yang melalui simpul a adalah (a,c), (c,d), (a,d) dengan panjang 3. Tidak terdapat lintasan dari simpul a menuju simpul g. Keterhubungan dalam Graf Graf tak berarah G dikatakan terhubung (connected), jika terdapat lintasan antara a dan b, dengan a dan b merupakan pasangan setiap simpul pada graf G. Jika terdapat 2 simpul yang terhubung dengan suatu lintasan, maka graf disebut graf tak terhubung (unconnected). Graf H pada Gambar 1 merupakan graf tak terhubung. Upagraf Graf H = (V 1, E 1) merupakan upagraf (subgraph) dari graf G = (V, E), jika V 1 merupakan himpunan bagian dari V, dan E 1 merupakan himpunan bagian dari E. Graf J pada Gambar 2 merupakan upagraf dari H pada Gambar 1. Gambar 2. Graf J. (Sumber: Levitin, 2011) Graf Berbobot Graf berbobot (weighted graph) merupakan graf, yang setiap sisinya diberi bobot (nilai) tertentu. D. Representasi Graf Matriks Ketetanggaan Setiap baris dan kolom pada matriks ketetanggan (adjacency matrix) melambangkan simpul-simpul pada graf. Jika simpul v i bertetangga dengan simpul v j pada graf, maka isi elemen X ij pada matriks diisi dengan 1, jika tidak bertetangga, diisi dengan 0. 0 0 1 0 0 0 M = 1 0 0 1 0 1 1 1 0 [ 0 1 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 0 1 0] Gambar 3. Matriks ketetanggaan dari graf J pada Gambar 2. Urutan baris dari atas ke bawah dan urutan kolom dari kiri ke kanan adalah a, b, c d, e, f Matriks Bersisian Baris pada matriks bersisian (incidency matrix) melambangkan simpul-simpul pada graf. Kolom melambangkan sisi-sisi yang ada pada graf. Jika simpul v i bersisian dengan sisi e j pada graf, maka isi elemen X ij pada matriks diisi dengan 1, jika tidak bersisian, diisi dengan 0. Senarai Ketetanggaan Senarai ketetanggan (adjacency list) berisi daftar semua simpul beserta simpul-simpul yang bertetangga dengan simpul tersebut. Simpul Simpul Tetangga a c, d, e b e, f c a, d, f d a, c e a, b, f f b, c, e Tabel 1. Senarai ketetanggaan dari graf J pada Gambar 2. III. PEMROSESAN GRAF A. Algoritma Brute-Force Algoritma yang menggunakan pendekatan brute-force, merupakan algoritma yang sederhana, namun langsung menyelesaikan masalah, tidak membutuhkan banyak pemikiran dari programmer. Algoritma brute-force relatif lebih mudah diaplikasikan. Contoh algoritma brute-force yang digunakan untuk memproses graf, antara lain menggunakan pendekatan depth-first search dan breadth-first search. Depth-First Search Pemrosesan dengan pendekatan depth-first search diawali dengan mengunjungi suatu simpul a dari graf G, tandai setiap simpul yang sudah dikunjungi. Dalam setiap kali pengulangan, algoritma akan memproses simpul yang bertetangga dengan simpul yang sedang dikunjungi pada saat itu. Proses mengunjungi akan terus berlangsung hingga tiba di simpul yang semua tetangganya sudah pernah dikunjungi. Ketika tiba di simpul tersebut, misal simpul b, pemrosesan akan kembali ke simpul yang dikunjungi sebelum b, dan mencari lagi tetangga b yang belum dikunjungi. Pemrosesan ini dapat dibantu dengan struktur data lain, yaitu stack. Setiap kali mengunjungi suatu simpul, maka simpul tersebut di-push ke dalam stack. Ketika simpul tersebut tidak memiliki tetangga yang belum dikunjungi, maka simpul tersebut di-pop dari stack.

a 0 // a variabel global Depth_First_Search (G) F.S. Semua simpul pada G, ditandai dengan n, n adalah urutan dikunjunginya simpul tersebut secara DFS} tandai setiap simpul pada V dengan 0 if v ditandai dengan 0 DFS(v) ditambahkan dalam pohon tersebut sebagai anak dari simpul sebelumnya yang dikunjungi. Jika pada suatu pohon hasil DFS atau BFS, semua simpulnya sudah tidak memiliki tetangga yang belum dikunjungi, namun pada graf tersebut masih ada simpul yang belum dikunjungi, maka akan dibuat pohon baru, dengan akarnya adalah salah satu simpul yang belum dikunjungi. DFS(v) { I.S. v terdefinisi F.S. v ditandai dengan suatu nilai } a a + 1; tandai v dengan a for w ϵ V and w bertetangga dengan v do if w ditandai dengan 0 DFS(w) Algoritma 1. Pseudocode algoritma dengan pendekatan DFS Breadth-First Search Pemrosesan dengan pendekatan breadth-first search dibantu dengan menggunakan struktur data queue. Pemrosesan diawali dengan mengunjungi suatu simpul a dari graf G, simpul tersebut ditandai dan ditambahkan ke queue (a menjadi simpul terdepan dalam queue). Dalam setiap kali pengulangan, semua simpul yang bertetangga dengan simpul terdepan ditandai dan dimasukkan ke dalam queue, lalu simpul terdepan dihapus dari queue. Proses mengunjungi akan terus berlangsung hingga queue kosong. Gambar 4. Isi stack (gambar kiri) dan DFS forest (gambar kanan) untuk DFS pada graf H pada gambar 1. Indeks pertama pada isi stack melambanakan urutan dipush-nya simpul tersebut, indeks kedua melambangkan urutan di-pop-nya simpul tersebut. (Sumber: Levitin, 2011) a 0 // a variabel global Breadth_First_Search (G) F.S. Semua simpul pada G, ditandai dengan n, n adalah urutan dikunjunginya simpul tersebut secara BFS } tandai setiap simpul pada V dengan 0 if v ditandai dengan 0 BFS(v) BFS(v) { I.S. v terdefinisi F.S. v ditandai dengan suatu nilai } a a + 1; tandai v dengan a tambahkan v ke queue while queue tidak kosong do for w ϵ V and w bertetangga dengan simpul terdepan do if w ditandai dengan 0 a a + 1; tandai w dengan a tambahkan w ke queue hapus simpul terdepan dari queue Algoritma 2. Pseudocode algoritma dengan pendekatan BFS Simpul simpul yang telah diproses oleh algoritma ini dapat disusun menjadi DFS forest dan BFS forest. Setiap DFS forest maupun BFS forest tersusun dari 1 atau lebih pohon (tree). Simpul awal yang dikunjungi akan menjadi akar (root) dari pohon. Setiap simpul yang ditandai akan Gambar 5. Isi queue (gambar kiri) dan BFS forest (gambar kanan) untuk BFS pada graf H pada gambar 1. Indeks pertama pada isi queue melambanakan urutan ditambahkannya simpul tersebut pada queue. (Sumber: Levitin, 2011) Kedua pendekatan ini dapat digunakan untuk menyelidiki keterhubungan suatu graf. Simpul-simpul yang terhubung dalam graf akan berada dalam pohon yang sama. Jika terdapat lebih dari 1 pohon yang terbentuk, maka graf tidak terhubung. Jumlah pohon yang terbentuk merupakan jumlah komponen terhubung dari graf (connected component), untuk graf H pada Gambar 1, jumlah komponen terhubungnya adalah 2. Pendekatan DFS dapat digunakan untuk mencari simpul yang jika dihapus akan memecah graf menjadi bagian-bagian yang disjoint. Pendekatan BFS dapat digunakan untuk mencari jumlah sisi paling sedikit antara 2 simpul. Algoritma dengan pendekatan DFS dan BFS sama-sama memiliki kompleksitas asimptotik θ( V + E ), jika graf diimplementasi dengan senarai ketetanggaan, dengan V merupakan jumlah simpul pada graf dan E merupakan jumlah sisi pada graf. B. Algoritma Greedy Selain masalah keterhubungan dalam suatu graf, persoalan lain yang sering dicari solusinya adalah bobot minimum dari suatu lintasan pada graf berbobot. Algoritma yang menggunakan pendekatan greedy,

merupakan algoritma yang mencari solusi paling optimal diantara seluruh solusi yang ada. Algoritma dengan pendekatan greedy bisa diterapkan dalam pencarian bobot lintasan minimum dalam suatu graf. Pohon Merentang, Algoritma Prim dan Algoritma Kruskal Pohon merentang (spanning tree) dari suatu graf G, adalah upagraf terhubung tanpa sirkuit dari G, yang berisi seluruh simpul pada G. Pohon merentang minimum dari suatu graf berbobot W, adalah pohon merentang dari W yang memiliki bobot minimum. Pohon merentang minimum dapat dicari dengan menggunakan algoritma Prim dan Kruskal. o Algoritma Prim Algoritma Prim diawali dengan memilih suatu simpul a pada graf G dan memasukkannya pada suatu subgraf T. Dalam setiap pengulangan akan ditambahkan suatu simpul, misal simpul b dan suatu sisi e yang menghubungkan b dengan dengan suatu simpul pada T. Sisi e yang dipilih merupakan sisi dengan bobot minimum. Pengulangan akan berhenti ketika semua simpul pada G, telah ditambahkan pada T. Algoritma Prim diilustrasikan pada Gambar 6. diantara semua sisi (b,c) // b ϵ Vt, c ϵ V - Vt Vt Vt {k} Et Et {e} return Et Algoritma 3. Pseudocode algoritma Prim o Algoritma Kruskal Algoritma Kruskal diawali dengan mengurutkan secara naik seluruh sisi dalam suatu graf G menurut bobotnya. Kemudian dilakukan penambahan simpul pada subgraf T, diawali dengan urutan pertama dari sisi yang telah terurut. Jika penambahan sisi tersebut membentuk sirkuit pada T, maka sisi tersebut tidak ditambahkan ke dalam T, dan sisi berikutnya akan diproses. Algoritma Kruskal diilustrasikan pada gambar 7. Gambar 7. Ilustrasi algoritma Kruskal. (Sumber: Levitin, 2011) Gambar 6. Ilustrasi algoritma Prim. (Sumber: Levitin, 2011) Prim (G) F.S. Terdapat graf T = (Vt, Et) yang menyusun pohon merentang minimum dari G } Vt {a} // a salah satu simpul dalam G Et Ø for i 1 to V - 1 do cari sisi berbobot minimum e = (j,k) Kruskal (G) F.S. Terdapat graf T = (Vt, Et) yang menyusun pohon merentang minimum dari G } urutkan E secara menaik berdasarkan bobot // e1, e2,... dst. Et Ø; counter 0; k 0 while counter < V - 1 do k k + 1 if Et {ek} tidak memiliki sirkuit Et Et {ek}; counter counter + 1 return Et Algoritma 4. Pseudocode algoritma Kruskal

Persoalan Lintasan Terpendek dan Algoritma Dijkstra Lintasan terpendek dari simpul a ke simpul b dalam suatu graf G adalah sekumpulan sisi dengan bobot minimum yang menghubungkan a dan b. Berbeda dengan mencari pohon merentang minimum, sekarang tidak semua sisi dalam G harus berada dalam lintasan dari a ke b. Salah satu algoritma yang digunakan untuk mencari lintasan terpendek ini adalah algoritma Dijkstra. Algoritma Dijkstra mencari jarak terpendek dari suatu simpul dalam graf, ke semua simpul lain dalam graf tersebut. Algoritma Dijkstra dapat digunakan jika tidak ada simpul yang berbobot negatif pada graf. Pada algoritma Dijkstra, setiap simpul diberi 2 label. Label pertama merupakan panjang lintasan dari simpul awal ke simpul yang diberi label. Label kedua merupakan nama simpul terakhir sebelum simpul yang diberi label. Algoritma Dijkstra menggunakan priority queue dengan simpul-simpul pada G, sebagai elemen queue. Priority pada elemen queue, merepresentasikan label jarak. Vt Vt {k} for u ϵ V - Vt and u bertetangga dengan k do if dk + w(k,u) < du du dk + w(k,u); pu k // w(k,u) adalah bobot sisi (k,u) Update(Q, u, du) Algoritma 5. Pseudocode algoritma Dijkstra IV. SIMPULAN Pada graf tak berarah, terdapat algoritma-algoritma unik yang digunakan untuk memproses graf tersebut, diantaranya algoritma DFS dan BFS, algoritma Prim, algoritma Kruskal, serta algoritma Dijkstra. Penanganan akan berbeda jika yang ditangani merupakan graf berarah, kecuali untuk algoritma Dijkstra yang dapat diaplikasikan juga pada graf berarah. V. UCAPAN TERIMA KASIH Saya mengucapkan terima kasih kepada Tuhan Yesus Kristus, karena oleh campur tangan-nya, saya bisa menyelesaikan perkuliahan di semester ini, beserta semua tugas dan ujian yang harus saya lalui. Saya mengucapkan terima kasih kepada Ibu Harlili dan Bapak Rinaldi Munir, sebagai dosen-dosen dari mata kuliah IF2120 Matematika Diskrit, atas bimbingan dan ilmu yang sudah diberikan selama 1 semester ini. REFERENSI [1] Levitin, Anany. 2012. Introduction to the Design and Analysis of Algorithm 3 rd Edition. Addison-Wesley. [2] Rosen, Kenneth. 2012. Discrete Mathematics and Its Application 7 th Edition. McGraw-Hill. [3] https://www.tutorialspoint.com/data_structures_algorithms/, diakses tanggal 8 Desember 2016, pukul 19.17. Gambar 8. Ilustrasi algoritma Dijkstra. (Sumber: Levitin, 2011) Dijkstra (G, s) { I.S. G = (V, E) dan a simpul pada G terdefinisi F.S. dv merupakan jarak terpendek dari a ke v, pv merupakan simpul paling akhir sebelum v, v adalah seluruh simpul pada V } Initialisasi(Q) // Q dikosongkan dv ; pv null; Insert(Q, v, dv) // masukkan v dalam Q dengan priority PERNYATAAN Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bandung, 8 Desember 2016 Marvin Jerremy Budiman/13515076 ds 0; Update(Q, s, ds) // update priority s dengan ds Vt Ø for i 0 to V - 1 do k DeleteMin(Q) // hapus elemen Q dengan priority paling kecil