BAB 2 LANDASAN TEORI

dokumen-dokumen yang mirip
BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB II LANDASAN TEORI

BAB 1 PENDAHULUAN. Persoalan lintasan terpanjang (longest path) merupakan persoalan dalam mencari

BAB 2 LANDASAN TEORI

BAB II TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI

LANDASAN TEORI. Bab Konsep Dasar Graf. Definisi Graf

BAB 2 LANDASAN TEORI

BAB 2 TINJAUAN PUSTAKA

Penggunaan Algoritma Dijkstra dalam Penentuan Lintasan Terpendek Graf

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

BAB II KAJIAN PUSTAKA. Sebuah graf G didefinisikan sebagai pasangan himpunan (V,E), dengan V

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

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

Matematika dan Statistika

BAB II LANDASAN TEORI

BAB II LANDASAN TEORI

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

Aplikasi Algoritma Dijkstra dalam Pencarian Lintasan Terpendek Graf

BAB 2 TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI. Definisi Graf G didefinisikan sebagai pasangan himpunan (V, E), yang dalam hal ini:

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

PENYELESAIAN TRAVELLING SALESMAN PROBLEM DENGAN METODE TABU SEARCH

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

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB 2 LANDASAN TEORI. 2.1 Teori graf Definisi graf

BAB 2 LANDASAN TEORI

BAB II LANDASAN TEORI

IMPLEMENTASI DAN ANALISIS ALGORITMA DEPTH-FIRST SEARCH (DFS) DALAM PENCARIAN LINTASAN TERPANJANG SKRIPSI SHEILA EKA PUTRI S

Deteksi Wajah Menggunakan Program Dinamis

BAB 2 LANDASAN TEORI

BAB II TINJAUAN PUSTAKA

BAB 2 TINJAUAN PUSTAKA

BAB II KAJIAN PUSTAKA. Pada bab kajian pustaka berikut ini akan dibahas beberapa materi yang meliputi

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

A. TUJUAN PEMBELAJARAN

BAB II LANDASAN TEORI

BAB 2 LANDASAN TEORI

Denny Setyo R. Masden18.wordpress.com

STUDI PERBANDINGAN ALGORITMA CHEAPEST INSERTION HEURISTIC DAN ANT COLONY SYSTEM DALAM PEMECAHAN TRAVELLING SALESMAN PROBLEM

BAB 2 LANDASAN TEORI

BAB II LANDASAN TEORI

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI. Algoritma adalah urutan atau deskripsi langkah-langkah untuk memecahkan suatu masalah.

Penyelesaian Traveling Salesman Problem dengan Algoritma Heuristik

BAB I PENDAHULUAN. Di tengah masyarakat dengan aktivitas yang tinggi, mobilitas menjadi hal yang penting.

Struktur dan Organisasi Data 2 G R A P H

BAB 2 LANDASAN TEORI

METODE PENCARIAN DAN PELACAKAN

= himpunan tidak-kosong dan berhingga dari simpul-simpul (vertices) = himpunan sisi (edges) yang menghubungkan sepasang simpul

GRAF. V3 e5. V = {v 1, v 2, v 3, v 4 } E = {e 1, e 2, e 3, e 4, e 5 } E = {(v 1,v 2 ), (v 1,v 2 ), (v 1,v 3 ), (v 2,v 3 ), (v 3,v 3 )}

Penerapan Algoritma BFS & DFS untuk Routing PCB

PERBANDINGAN KOMPLEKSITAS PENERAPAN ALGORITMA GREEDY UNTUK BEBERAPA MASALAH

BAB I PENDAHULUAN. himpunan bagian bilangan cacah yang disebut label. Pertama kali diperkenalkan

BAB 2 TINJAUAN PUSTAKA

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

Kode MK/ Matematika Diskrit

Penerapan Teori Graf Pada Algoritma Routing

Penerapan Algoritma Steiner Tree dalam Konstruksi Jaringan Pipa Gas

PENYELESAIAN TRAVELING SALESMAN PROBLEM (TSP) MENGGUNAKAN ALGORITMA RECURSIVE BEST FIRST SEARCH (RBFS)

Permodelan Pohon Merentang Minimum Dengan Menggunakan Algoritma Prim dan Algoritma Kruskal

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Pencarian Jalur Terpendek dengan Algoritma Dijkstra

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

BAB 2 LANDASAN TEORI

Studi dan Implementasi Struktur Data Graf

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

ALGORITMA PENCARIAN (1)

BAB III PEMODELAN MASALAH

BAB II LANDASAN TEORI

BAB 2 LANDASAN TEORI

Pertemuan 11 GRAPH, MATRIK PENYAJIAN GRAPH

BAB I PENDAHULUAN. 1.1 Latar Belakang

Graf. Program Studi Teknik Informatika FTI-ITP

BAB 2 TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI

IMPLEMENTASI HIERARCHICAL CLUSTERING DAN BRANCH AND BOUND PADA SIMULASI PENDISTRIBUSIAN PAKET POS

BAB 2 LANDASAN TEORI

BAB II LANDASAN TEORI

BAB 2 TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI

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

PENYELESAIAN TRAVELLING SALESMAN PROBLEM MENGGUNAKAN METODE SIMPLE HILL CLIMBING

Bagaimana merepresentasikan struktur berikut? A E

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

Penerapan Pewarnaan Graf dalam Pengaturan Penyimpanan Bahan Kimia

BAB 2 LANDASAN TEORI. yang tak kosong yang anggotanya disebut vertex, dan E adalah himpunan yang

Graf. Matematika Diskrit. Materi ke-5

BAB I PENDAHULUAN 1.1 Latar Belakang

Tujuan Instruksional

Penerapan Graf dalam Algoritma PageRank Mesin Pencari Google

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

Graf dan Analisa Algoritma. Pertemuan #01 - Dasar-Dasar Teori Graf Universitas Gunadarma 2017

Aplikasi Shortest Path dengan Menggunakan Graf dalam Kehidupan Sehari-hari

Transkripsi:

BAB 2 LANDASAN TEORI 2.1 Teori Graph 2.1.1 Definisi Graph Menurut Dasgupta dkk (2008), graph merupakan himpunan tak kosong titik-titik yang disebut vertex (juga disebut dengan node) dan himpunan garis-garis yang menghubungkan titik tersebut yang disebut dengan edge (juga disebut dengan arc, sehingga dapat dinotasikan sebagai G(V,E). Vertex atau node pada graf dapat dinomori dengan huruf, seperti a,b,c,d,..., atau dengan bilangan asli 1,2,3, atau juga gabungan dengan keduanya. Sedangkan untuk edge atau arc yang menghubungkan antara simpul u dan v dinyatakan dengan (u,v) atau dapat dinyatakan dengan lambang e 1, e 2,e 3, dengan 1,2,3 adalah indeks. Dapat dikatakan bahwa jika e merupakan sisi yang menghubungkan simpul u dengan v, maka e dapat ditulis sebagai e = (u,v). Graph dapat digunakan sebagai cara yang sangat sederhana untuk memodelkan banyak jaringan. Secara luas, sebuah jaringan adalah sebuah sistem yang melibatkan aliran atau perpindahan komoditas. Sebuah jaringan komunikasi misalnya, dapat dimodelkan ke dalam bentuk graph, dimana simpul menyatakan pusat komunikasi (contohnya, saluran telepon) dan busur atau arc menyatakan jaringan komunikasi (contohnya, saluran telegraf). Dalam memodelkan sebuah jaringan dengan graph, simpul dalam graph umumnya dinyatakan dalam bentuk titik yang menyatakan asal aliran serta tempat berakhir (contohnya, stasiun kereta api, terminal, pabrik dan lainlain). Busur atau arc dalam graph secara umum menyatakan saluran dimana komoditas berakhir (contohnya, trayek kereta api, rute penerbangan, aluran pipa dan

lain-lain). Sebuah graph juga memberikan model struktural dari jaringan. Dalam kebanyakan jaringan, metode konstruksi biasanya dinyatakan oleh harga, efisiensi, kehandalan dan kapasitas. 2.1.2 Jenis Graph 2.1.2.1 Berdasarkan arah dan bobot 1. Graph berarah dan berbobot (directed graph) Graph yang setiap sisinya diberikan orientasi arah merupakan graph berarah, yang disebut dengan busur (arc). Dalam graph berarah, (u,v) dan (v,u) menyatakan dua buah busur yang berbeda, dengan kata lain bahwa ( u, v) ( v, u). Pada busur (u,v), simpul u dinamakan simpul asal dan simpul v merupakan simpul tujuan. Graph berarah dan berbobot sering digunakan untuk menggambarkan aliran proses, peta lintas kota dan lain sebagainya. Sehingga, pada graph gelang atau loop diperbolehkan tetapi sisi ganda tidak diperbolehkan. Berikut contoh graph berarah dan berbobot pada Gambar 2.1 dengan lima buah simpul dan delapan buah sisi. Gambar 2.1 Graph Berarah dan Berbobot 2. Graph berarah dan tidak berbobot Merupakan graph yang mempunyai orientasi arah namun tidak mempunyai bobot apapun. Berikut contoh graph berarah dan tidak berbobot pada Gambar 2.2 dengan lima buah simpul dan delapan buah sisi.

Gambar 2.2 Graph Berarah dan Tidak Berbobot 3. Graph tidak berarah dan berbobot (undirected graph) Merupakan graph yang tidak mempunyai orientasi arah namun memiliki suatu bobot pada sisinya. Sehingga, ( u, v) ( v, u) merupakan sisi yang sama. Graph tidak berarah dan berbobot ini sering digunakan dalam menggambarkan jaringan saluran telepon, karena saluran telepon dapat beroperasi pada dua arah. Berikut contoh graph tidak berarah dan berbobot pada Gambar 2.3 dengan lima buah simpul dan delapan buah sisi. Gambar 2.3 Graph Tidak Berarah dan Berbobot 4. Graph tidak berarah dan tidak berbobot Graph yang setiap sisinya tidak mempunyai baik orientasi arah maupun bobot apapun. Berikut contoh graph tidak berarah dan tidak berbobot pada Gambar 2.4 dengan lima buah simpul dan delapan buah sisi.

Gambar 2.4 Graph Tidak Berarah dan Tidak Berbobot 2.1.2.2 Berdasarkan sifat keterhubungan 1. Perjalanan (Walk) Perjalanan atau walk pada suatu graph G adalah barisan vertex dan edge secara berganti-ganti v1, e1, v2, e2,..., en 1, vn dimana edge e 1 menghubungkan vi dan vi 1 dan dapat hanya ditulis barisan edge atau barisan vertex saja ( e 1, e 2,..., en 1 atau v1, v2,... vn 1, vn), dalam hal ini v1 disebut vertex awal, dan vn disebut vertex akhir. Vertex awal dan vertex akhir dari suatu walk mungkin saja sama, dengan demikian disebut closed walk. 2. Lintasan (Trail) Lintasan dari suatu graph G merupakan suatu walk dimana setiap edge-nya berlainan atau dengan kata lain tidak boleh berulang. 3. Jalur (Path) Path dari suatu graph G adalah suatu walk dimana semua unsur vertex-nya berbeda kecuali untuk vertex awal dan vertex akhir. 4. Terhubung (Connected) Suatu graph G dikatakan connected jika untuk setiap pasangan vertex didalam G terdapat paling sedikit satu path. Sebaliknya, jika didalam suatu graph G terdapat

pasangan vertex yang tidak mempunyai path penghubung, graph yang demikian disebut disconnected graph. 5. Sirkuit (Cycle) Sirkuit atau cycle adalah path dengan vertex awal sama dengan vertex akhir. Banyaknya edge yang terdapat dalam suatu walk disebut length dari path tersebut. 2.1.3 Representasi Graph Suatu graph dapat direpresentasikan ke beberapa bentuk. Representasi graph dapat digunakan untuk mengimplementasikan graph tersebut ke dalam bentuk tertentu, sehingga dapat digunakan pada berbagai kasus yang berbeda. Matriks dapat digunakan untuk menyatakan suatu graph. Hal ini sangat membantu program komputer yang berhubungan dengan graph. Ada dua cara standard dalam representasikan suatu graph, yaitu dengan matriks ketetanggaan (adjacency matrix) dan senarai ketetanggaan (adjacency list). 1. Matriks ketetanggaan (adjacency matrix) Matriks ketetanggaan dari suatu graph G dengan nxn matriks A = [a ij ] menunjukkan jumlah edge yang menghubungkan v i dan v j. a ij bernilai 1 jika edge ( i, j) E mempunyai arah dari vertex i V ke vertex j V, dan bernilai 0 jika tidak ada orientasi arah sama sekali. Jika orientasi arah adalah loop, maka diberi nilai 2. Jika graph G merupakan graph tidak berarah, setiap edge (i,j). Dalam hal ini, matriks ketetanggaan E merupakan matriks simetris. Berikut tabel matriks ketetanggaan (adjacency matrix) untuk graph berarah dan berbobot pada Gambar 2.1

a b c d e a 0 1 1 1 0 b 0 0 1 1 0 c 0 0 0 1 1 d 0 0 0 0 1 e 0 0 0 0 0 Matriks Ketetanggaan Graph Gambar 2.1 Adapun bentuk matriks ketetanggaan untuk graph tidak berarah dan tidak berbobot pada Gambar 2.4 dapat dilihat pada Tabel 2.2. a b c d e a 0 1 1 1 0 b 1 0 1 1 0 c 1 1 0 1 1 d 1 1 1 0 1 e 0 0 1 1 0 Matriks Ketetanggaan Graph Gambar 2.2 2. Senarai Ketetanggaan (adjacency list) Pada representasi adjacency list dari suatu graph, n baris dari suatu matriks ketetanggaan direpresentasikan sebagai n link list. Setiap vertex G memiliki sebuah list. Vertex pada list i mempresentasikan vertex terhubung dari vertex i. Setiap vertex setidaknya memiliki dua field: vertex dan link. Berikut bentuk senarai ketetanggaan untuk graph berarah dan berbobot pada Gambar 2.1

Gambar 2.5 Senarai Ketetanggaan Graph Gambar 2.1 Adapun bentuk senarai ketetanggaan untuk graph tidak berarah dan tidak berbobot pada Gambar 2.4 dapat dilihat pada Gambar 2.6. Gambar 2.6 Senarai Ketetanggaan Graph Gambar 2.4 2.2 Permasalahan Optimasi Persoalan optimasi (optimization problem) adalah persoalan yang menuntut pencarian solusi optimum. Persoalan optimasi dibagi menjadi dua macam, yaitu maksimasi (maximization) dan minimasi (minimization). Penentuan jalur terpanjang merupakan salah satu contoh persoalan optimasi dimana termasuk ke dalam persoalan optimasi maksimasi (maximization). Secara umum, penentuan jalur terpanjang dibagi menjadi dua metode, yaitu metode konvensional, yang menggunakan perhitungan matematika secara biasa dan metode heuristik, metode yang menggunakan perhitungan matematika secara komputasi.

1. Metode Konvensional Metode konvensional adalah metode yang diterapkan dengan menggunakan perhitungan matematika murni atau secara biasa. Ada beberapa metode konvensional yang sering digunakan untuk menyelesaikan masalah optimasi, diantaranya: algoritma Djikstra, algoritma Floyd-Warshall, dan algoritma Bellman-Ford. 2. Metode Heuristik Metode heuristik adalah salah satu dari bidang kecerdasan buatan yang digunakan untuk menyelesaikan masalah optimasi. Terdapat beberapa algoritma dari metode heuristik yang sering digunakan dalam permasalahan optimasi, diantaranya adalah algoritma genetika, algoritma pencarian tabu, jaringan saraf tiruan, algoritma semut dan lain-lain. 2.2.1 Persoalan Lintasan Terpanjang (Longest Path Problem) Menurut Cormen dkk (1992), persoalan lintasan terpanjang pada graph merupakan salah satu permasalahan optimasi. Graph yang digunakan merupakan graph tidak berarah berbobot (undirected weighted graph), yaitu graph yang diberi bobot dan tidak memiliki arah. Bobot antar vertex dinyatakan sebagai jarak antar kota, waktu, pengiriman pesan dan lain-lain. Lintasan terpanjang merupakan suatu jaringan atau kerangka jalur petunjuk perjalanan dari suatu vertex ke vertex lainnya atau yang menjadi tujuan perjalanan dengan beberapa pilihan jalur yang mungkin untuk di jalani. Hamiltonian cycle merupakan contoh penggunaan lintasan terpanjang, karena prinsip pada Hamiltonian cycle dimana setiap vertex hanya dikunjungi tepat satu kali. Sehingga diperoleh bahwa Hamiltonian Cycle Longest Path. Persoalan lintasan terpanjang (longest path problem) mempunyai beberapa manfaat, diantaranya, yaitu kasus perhitungan worst-delay pada paket Ethernet. Penggunaan real-time Ethernet protocol menjadi lebih relevan untuk aplikasi waktukritis jaringan industri. Dalam konteks ini, disajikan suatu metode untuk menghitung worst-delay paket Ethernet yang diaktifkan (Schmidt dkk, A Longest-Path Problem for Evaluating The Worst-Case Packet Delay of Switched Ethernet).

Persoalan lintasan terpanjang juga digunakan dalam penjadwalan rute dan mesin bor untuk mengebor lubang pada sebuah PCB dengan vertex sebagai bagian dari mesin atau kakas untuk dibor dan edge sebagai waktu yang dibutuhkan dalam melakukan retooling pada robot, manufaktur printed circuit dan sebagainya (Nugrahadi, 2007). 2.3 NP - Complete NP Problem adalah himpunan persoalan keputusan yang dapat diselesaikan oleh algoritma non-deterministik dalam waktu polinomial. Menurut Munir (2005), NP Problem termasuk persoalan NP Complete yang merupakan persoalan NP yang paling sulit. Kebutuhan waktu suatu algoritma sangat bervariasi, mulai dari 2 O(1), O(log n), O( n), O( n ) dan sebagainya. Seluruh algoritma yang ada sejauh ini merupakan algoritma polynomial-time: dimana input dengan ukuran n, worst-case k running time adalah On ( ) (dibaca Big-O ) untuk beberapa nilai konstan k. Semua algoritma digolongkan kedalam jenis algoritma yang baik yang disebut sebagai solusi polinomial. Hal ini dikarenakan oleh kebutuhan waktunya secara asimptotik yang dibatasi oleh fungsi polinomial. Adapun teknik-teknik yang dapat diterapkan pada algoritma dalam permasalahan NP Complete untuk menyelesaikan masalah komputasi pada umumnya, yaitu: a. Approximation: mencari solusi yang hampir optimal solusi yang layak (feasible solution). b. Randomization: digunakan untuk mendapatkan running time yang diharapkan lebih cepat dari rata-rata dan resiko kesalahan pada algoritma lebih kecil. c. Restriction: algoritma diharapkan mempunyai running time yang lebih cepat dengan membatasi input. d. Parameterization: algoritma akan berjalan lebih cepat jika input parameter tetap. e. Heuristic: suatu algoritma diharapkan akan bekerja cukup baik.

Persoalan lintasan terpanjang yang juga merupakan permasalahan Hamiltonian cycle merupakan persoalan dimana tidak terdapat solusi waktu polinomial untuk menyelesaikannya. Contohnya Persoalan Pedagang Keliling (Traveling Salesman Problem) yang merupakan implementasi pada persoalan Hamiltonian cycle yang juga merupakan lintasan terpanjang, memiliki kompleksitas On (!). Bukti. Diberikan suatu contoh graph G, salah satu algoritma keputusan yang mungkin melampirkan seluruh permutasi dari vertex-vertex G lalu memeriksa hasil seluruh permutasi untuk melihat apakah termasuk kedalam Hamiltonian cycle. Termasuk jenis apakah running time pada algoritma tersebut? Kita gunakan representasi graph dalam matriks adjacency, maka jumlah m pada vertex-vertex dalam graph adalah ( n), dimana n G merupakan panjang dari representasi G. Sehingga terdapat m! permutasi yang mungkin pada vertex-vertex tersebut dan karena itu running time n algoritma adalah ( m!) ( n!) (2 ). 2.4 Algoritma DFS (Depth-First Search) Dalam pencarian suatu solusi optimum pada suatu graph, ada dua algoritma pencarian yang dapat dilakukan, yaitu dengan algoritma DFS (Depth-First Search) dan algoritma BFS (Breadth-First Search). Desiani dkk (2006) menggambarkan ilustrasinya algoritma DFS yang dapat dilihat pada gambar berikut ini.

Gambar 2.7 Teknik pencarian algoritma Depth-First Search (DFS) Berdasarkan gambar tersebut, proses pencarian dilakukan dengan mengunjungi cabang terlebih dahulu hingga tiba di vertex terakhir. Jika tujuan yang diinginkan belum tercapai, maka pencarian dilanjutkan ke cabang sebelumnya, turun ke bawah jika memang masih ada cabangnya. Begitu seterusnya hingga diperoleh tujuan akhirnya (goal). Operasi semacam ini dikenal dengan proses backtracking. Algoritma DFS menggunakan metode pendekatan yang diimplementasikan dengan menggunakan Tumpukan (Stack). Dalam algoritma DFS, ada aturan-aturan tertentu yaitu: 1. Jika mungkin, lakukanlah kunjungan pada vertex-vertex yang belum dikunjungi, lalu tandai (mark) dan masukkan ke Stack. 2. Jika terdapat kesulitan pada langkah 1, keluarkan vertex dari Stack. Lalu kembali mencari vertex di bawahnya, sampai diperoleh vertex-vertex yang belum dikunjungi agar keluar dari Stack.

3. Jika langkah 1 dan 2 telah selesai, maka algoritma DFS sudah mendapatkan solusi optimum dari graph tersebut. Isi dari Stack merupakan jalur yang diambil dari vertex awal, lalu vertex tersebut akan disimpan (push). Saat algoritma kembali ke vertex awal, vertex-vertex yang sudah dikunjungi akan dikeluarkan (pop) dari Stack. Dengan demikian, pada Gambar 2.4 Graph Tidak Berarah dan Tidak Berbobot algoritma secara otomatis akan mencari kunjungan yang memiliki lintasan dengan bobot yang lebih besar, yaitu, a b d e c a. Sehingga diperoleh solusi optimum pada persoalan lintasan terpanjang. Algoritma DFS secara garis besar dapat ditulis sebagai berikut: public int getadjunvisitedvertex(int v) { for(int j=0; j<nvertex; j++) if(adjmat[v][j] == 1 && VertexList[j].wasVisited == false) //Mengembalikan simpul sesuai persyaratan. return j; //Simpul sesuai persyaratan tidak ada. return -1; } Contoh penyelesaian pada kasus Traveling Salesman Problem (TSP) dengan menggunakan algoritma DFS: Misalkan jalur yang ditetapkan pada kasus ini dimulai dari kota ke-a dan berakhir di kota ke-e. Perhatikan Gambar 2.7 Graph Tidak Berarah dan Tidak Berbobot abcde dan Tabel 2.3 Matriks Jarak antar vertex

Gambar 2.8 Graph Tidak Berarah dan Tidak Berbobot abcde a b c d e a 0 20 25 0 10 b 20 0 0 25 10 c 25 0 0 20 10 d 0 25 20 0 10 e 10 10 10 10 0 Matriks Jarak pada Graph Tidak Berarah abcde Sehingga diperoleh suatu lintasan terpanjang, yaitu jalur a c d b e dengan masing-masing bobot yang tersimpan dalam Stack adalah 25 20 25 10. Algoritma Depth-First Search (DFS) memiliki kelebihan-kelebihan sebagai berikut: a. Cepat dalam mencapai kedalaman pada ruang pencarian. b. Jauh lebih efisien untuk ruang pencarian dengan banyak cabang karena tidak perlu mengevaluasi semua simpul pada suatu level tertentu dalam daftar open. c. Menggunakan memori yang relatif kecil karena hanya node-node pada lintasan yang aktif saja yang disimpan.

Namun, Algoritma Depth-First Search (DFS) juga memiliki kelemahan, yaitu: a. Memungkinkan tidak ditemukannya tujuan yang diharapkan. b. Kemungkinan hanya akan mendapatkan satu solusi pada setiap pencarian. 2.5 Kompleksitas Algoritma Algoritma adalah suatu prosedur secara komputasi dengan mengambil beberapa nilai, atau kumpulan dari nilai, sebagai input atau masukan, dan menghasilkan nilai atau kumpulan nilai sebagai output atau keluaran (Cormen dkk, 1992). Efisiensi algoritma dinilai berdasarkan kecepatan waktu eksekusi dan penggunaan struktur data yang menyebabkan banyaknya ruang memori komputer yang digunakan. 2.5.1 Efisiensi Algoritma Algorima yang terbaik adalah bukan hanya berdasarkan karena algoritma itu harus benar, akan tetapi juga harus dipandang dari segi efisiensinya. Jadi algoritma yang terbaik adalah algoritma yang efisien dalam penggunaan waktu eksekusi dan ruang memori komputer. Efisiensi algoritma juga berguna dalam membandingkan algoritma. sebuah masalah dapat mempunyai lebih dari satu jenis algoritma. Misalkan untuk masalah pencarian lintasan optimum pada Traveling Salesman Problem (TSP), dapat digunakan berbagai macam algoritma seperti: dynamic programming, approximation, heuristic dan lainnya. 2.5.2 Kebutuhan Waktu dan Ruang Kebutuhan waktu suatu algoritma biasanya dihitung dalam satuan detik, milidetik dan lain sebagainya. Sedangkan untuk ruang memori yang digunakan dapat dihitung dalam satuan byte atau kilobyte. Biasanya seorang pengguna algoritma mengukur kebutuhan waktu sebuah algoritma dengan mengeksekusi langsung algoritma tersebut pada sebuah komputer, lalu dihitung berapa lama durasi waktu yang dibutuhkan untuk menyelesaikan sebuah persoalan yang berbeda-beda.

Keakuratan waktu eksekusi algoritma dapat diperoleh dengan tidak menghitung kebutuhan waktu untuk menampilkan antarmuka program, operasi input/output dan sebagainya. Sehingga akan dihitung bagian inti dari programnya saja. 2.5.3 Kompleksitas Waktu Saat menjalankan suatu program, maka untuk mengukur kompleksitas waktunya adalah dengan menghitung banyaknya operasi yang dilakukan oleh algoritma, seperti: operasi penjumlahan, pengurangan, perkalian, pembagian dan lain sebagainya. Namun yang paling idealnya adalah cukup menghitung berapa kali operasi yang sama terjadi secara berulang dan mencatat waktu yang terjadi selama eksekusi.