Algoritma Depth First Search DFS

nomor diametris berlawanan adalah 17, yang merupakan jumlah dari angka pertama dan terakhir dari seri. Matriks pada magic square berukuran n x n, dengan elemen yang berbeda satu sama lain berupa bilangan bulat dari 1 hingga n2 . Jumlah dari deret 1+2+3+…+n2 dapat ditentukan melalui persamaan : Dari persamaan 1, maka dapat ditentukan pula bahwa jumlah angka-angka pada tiap baris, kolom, dan diagonal adalah : Jumlah tersebut menghasilkan angka yang disebut dengan konstanta magic square Munir, 2007.

2.3 Algoritma Depth First Search DFS

Algoritma Depth First Search DFS menggunakan struktur data stack untuk mengingat kemana seharusnya Depth First Search DFS pergi saat ia mencapai suatu simpul tertentu. Istilah “depth first” artinya melewati sebuah lintasan sejauh sedalam mungkin. Hanya pada titik tertentu yang tidak dapat ditelusuri, maka dilakukan runut balik backtracking dan menelusuri lintasan alternatif lain. Metode ini dapat dijelaskan dalam bentuk pseudocode berikut: Algorithm DFSVertex v: if v has already been visited: return else: Universitas Sumatera Utara mark v as visited processv for each edge e that leaves v: let u be the other endpoint of e call DFSu Algoritma ini akan mengunjungi dan memproses setiap simpul yang dapat dicapai dari v dan yang belum pernah dikunjungi. Hal ini dilakukan dengan mengikuti setiap sisi yang terhubung dengan v dan menggunakan prosedur yang sama secara rekursif untuk endpoint lain dari sisi tersebut. Menurut Robert Laforce 1998 pada Adi dalam buku algoritma dan struktur data dengan C di halaman 499, menyatakan algoritma Depth First Search DFS memiliki beberapa aturan, yaitu:

1. Jika mungkin, lakukan kunjungan pada simpul-simpul pendamping adjacent

vertex yang belum pernah dikunjungi, tandai, dan masukkan push ke stack. Sebagai contoh, pada gambar 9 dan tabel 1, aturan ini dapat diterapkan pada simpul-simpul sebelum simpul H. Pada langkah terakhir ini kita perlu melakukan sesuatu karena tidak ada simpul pendamping yang belum dikunjungi. Dalam hal ini kita bisa masuk ke aturan 2 di bawah ini. Gambar 2.13 Lintasan DFS A D B E C G F I H Universitas Sumatera Utara Tabel 2.1 Isi Stack dalam DFS Event Isi Stack Visit A A Visit B AB Visit F ABF Visit H ABFH Pop H ABF Pop F AB Pop B A Visit C AC Pop C A Visit D AD Visit G ADG Visit I ADGI Pop I ADG Pop G AD Pop D A Visit E AE Pop E A Pop A - FINISH

2. Jika saat kita melakukan aturan di atas kita mengalami kesulitan, kita keluarkan

popped off simpul dari stack. Mengikuti aturan ini, jika kita mengeluarkan suatu simpul dari suatu stack, kita akan sampai ke simpul di bawahnya. Jika simpul di bawahnya ini bukan simpul pendamping yang belum dikunjungi, kita keluarkan lagi. Demikian selanjutnya hingga kita tidak bisa melakukannya lagi dan kita harus masuk ke aturan 3 di bawah ini. 3. Jika kita tidak bisa lagi mengikuti baik aturan 1 maupun 2 di atas, berarti kita telah menyelesaikan algoritma Depth First Search DFS. Universitas Sumatera Utara Beberapa kelebihan dari Depth First Search adalah : 1. Pemakaian memori hanya sedikit, berbeda dengan BFS Breadth First Search yang harus menyimpan semua simpul yang pernah dibangkitkan. 2. Jika solusi yang dicari berada pada level yang dalam dan paling kiri, maka akan ditemukan solusi secara cepat. Dan beberapa kelemahan dari Depth First Searh adalah : 1. Jika pohon yang dibangkitkan mempunyai level yang dalam tak terhingga, maka solusi pun sulit untuk ditemukan. 2. Tidak memiliki titik optimal jika terdapat lebih dari satu solusi yang sama tetapi berada pada level yang berbeda.

2.4 Algoritma Runut Balik Backtracking