Anda di halaman 1dari 12

Algoritma Depth First Search

Oleh :
Moh. Rochman Wahid Maulana ( 16070895014 )

Program Studi S2 Pendidikan Teknologi dan Kejuruan

Program Pascasarjana Universitas Negeri Surabaya

2016

0
KATA PENGANTAR

Bismillahirrohmanirohim Puji syukur kami panjatkan kepada Allah


SWT, karena kuasa-Nya kami dapat menyelesaikan tepat pada
waktunya. Sholawat dan salam semoga tetap tercurah limpahkan kepada
junjungan Nabi Muhammad SAW, kepada keluarganya, sahabatnya,
tabi’in dan tabi’atnya dan semoga sampai kepada kita selaku umatnya,
semoga di akhir zaman kita dapat mendapat syafaat darinya. Amin.
Dalam makalah ini kami akan mencoba membahas tentang
pengurutan dan pencarian yaitu metode pengurutan Depth First Search
(DFS) serta contoh-contoh programnya.
Kami sadar dalam penyusunan makalah ini sudah pasti jauh dari
kesempurnaan, maka dari itu kritik dan saran yang membangun sangat
kami tunggu. Akhir kata semoga makalah ini bisa bermanfaat bagi
semua, khususnya bagi kami selaku penulis dan penyusun, dan umunnya
bagi semua pembaca. Terima kasih.

Bangkalan, 20 Desember 2016

Penulis

1
DAFTAR ISI
Kata pengantar ............................................................................................................................. 1
Daftar Isi ...................................................................................................................................... 2
BAB I PENDAHULUAN
1.1 Pendahuluan .......................................................................................................................... 3
1.2 Rumusan Masalah ................................................................................................................. 3
1.3 Tujuan .................................................................................................................................... 4
BAB II PEMBAHASAN
2.1 Pengertian DFS ...................................................................................................................... 5
2.2 Contoh program sederhana DFS ........................................................................................... 7
BAB III PENUTUP
3.1 Kesimpulan .......................................................................................................................... 10
Daftar pustaka ............................................................................................................................ 11

2
BAB I
PENDAHULUAN

1.1 Latar Belakang


Dalam matematika dan komputasi, algoritma merupakan kumpulan perintah untuk
menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari
awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah,
ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan
dapat selalu berakhir untuk semua kondisi awal yang memenuhi kriteria. Algoritma sering
mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan
perbandingan) sampai tugasnya selesai.
Desain dan analisis algoritma adalah suatu cabang khusus dalam ilmu komputer yang
mempelajari karakteristik dan performa dari suatu algoritma dalam menyelesaikan masalah,
terlepas dari implementasi algoritma tersebut. Dalam cabang disiplin ini algoritma dipelajari
secara abstrak, terlepas dari sistem komputer atau bahasa pemrograman yang digunakan.
Algoritma yang berbeda dapat diterapkan pada suatu masalah dengan kriteria yang sama.
Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang
dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang
dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang
rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya
mempunyai kompleksitas yang tinggi.
Algoritma searching (pencarian) merupakan proses menemukan suatu nilai (data) tertentu
di dalam sekumpulan nilai yang bertipe sama. Pencarian suatu nilai dari suatu tabel(array) sering
sekali dilakukan. Ada beberapa variasi pencarian yang digunakan. Setiap pencarian memiliki
kelebihan dan kekurangan. Hal inilah yang membedakan performansi dari setiap teknik
pencarian tersebut.
Algoritma seaching terdiri dari beberapa algoritma seperti DFS, BFS, Djikstra, A*, dan
Hill Climbing yang dimana setiap jenis seaching ini memiliki perbedaan satu sama lainnya.
Dalam makalah ini penulis hanya membahas algoritma tentang DFS.

1.2 Rumusan Masalah


Dari latar belakang diatas adapun permasalahan kami adalah sebagai berikut :
1.2.1 Apa pengertian algoritma sorting Merge Sort dan Radix Sort serta seahcing DFS?
1.2.2. Apa saja bagian-bagian algoritma sorting Merge Sort dan Radix Sort serta seahcing DFS?
1.2.3. Apa fungsi dari bagian-bagian algoritma sorting Merge Sort dan Radix Sort serta
seahcing DFS tersebut ?

3
1.3 Tujuan
Dari rumusan masalah diatas, adapun tujuan kami adalah sebagai berikut:

1.3.1. Untuk mengetahui pengertian algoritma seahcing DFS ?


1.3.2. Untuk mengetahui bagian-bagian algoritma seahcing DFS ?
1.3.3. Untuk mengetahui fungsi dari bagian-bagian algoritma seahcing DFS tersebut ?

4
BAB II
PEMBAHASAN

2.1 Algoritma Depth First Search (DFS)


Depth first search (DFS) atau metode pencarian mendalam melakukan pencarian
secara preorder. Mengunjungi anak suatu simpul sebelum simpul tetangganya.
DFS (Depth-First-Search) adalah salah satu algoritma penelusuran struktur graf / pohon
berdasarkan kedalaman. Simpul ditelusuri dari root kemudian ke salah satu simpul
anaknya ( misalnya prioritas penelusuran berdasarkan anak pertama [simpul sebelah
kiri]), maka penelusuran dilakukan terus melalui simpul anak pertama dari simpul anak
pertama level sebelumnya hingga mencapai level terdalam.
Berikut penjelasan dari DFS :

Penjelsan dari gambar diatas dapat dilihat bahwa dengan algoritma DFS, setiap anak
simpul pertama yang bertetangga dengan simpul akar dikunjungi sampai tingkat
terdalamnya lebih dahulu, lalu seluruh simpul pada subpohon tersebut, sebelum simpul
lain yang juga bertetangga dengan simpul akar.

Algoritma DFS :

Contoh kasus :
5
Kita membuat struktur organisasi, kemudian kita urutkan data pejabat dalam struktur
tersebut menggunakan algoritma DFS, kita urutkan posisinya sesuai dengan algoritma
DFS.

Penjelasan dari kasus diatas :


Berdasarkan teori DFS, yang dicari berawal simpul terdalam / paling awal terlebih
dahulu.
Alur pencarian pada struktur diatas adalah sebagai berikut:
1) Dari Agus, setelah dicek Agus ternyata mempunyai dua bawahan.
2) Periksa bawahan Agus yang pertama, namanya Novan, setelah dicek, Novan punya dua
bawahan juga.
3) Periksa bawahan Novan yang pertama, namanya Syauqil, setelah dicek, Syauqil adalah
posisi paling bawah / ujung.
4) Periksa bawahan Novan yang kedua, namanya Aji, setelah dicek, dia juga ada di posisi
paling bawah sekaligus yang terakhir.
5) Berikutnya periksa bawahan Agus yang kedua, namanya Budi, setelah dicek, ternyata dia
punya tiga bawahan.
6) Bawahan Budi yang pertama adalah Wildan dan dia tidak punya bawahan lagi (posisi
paling bawah).
7) Bawahan Budi yang kedua adalah Ni'am dan dia juga ada di posisi paling bawah.
8) Bawahan Budi yang ketiga adalah Bayu dan dia juga di posisi paling bawah sekaligus
akhir dari pencarian.
Dengan hasil berikut :

Kelebihan dan kekukangan dari DFS :


a) Kelebihan :
6
1) Membutuhkan memori yang relative kecil, karena hanya nodenode pada lintasan
yang aktif saja.
2) Secara kebetulan, metode depth first search akan menemukan solusi tanpa harus
menguji lebih banyak lagi dalam ruang keadaan.
b) Kekurangan :
1) Memungkinkan tidak ditemukannya tujuan yang diharapkan.
2) Hanya akan menemukan satu solusi pada setiap pencarian.

2.2 Contoh Program dari DFS


<?php
/* 1
* /\
* 2 3___
* /\ |\\
*4 56 78
*
*/

$ar[1]['parent']=0;
$ar[1]['value']=1;
$ar[1]['nama']='Agus';
$ar[1]['posisi']='Ketua';

$ar[2]['parent']=1;
$ar[2]['value']=2;
$ar[2]['nama']='Novan';
$ar[2]['posisi']='Wakil 1';

$ar[3]['parent']=1;
$ar[3]['value']=3;
$ar[3]['nama']='Budi';
$ar[3]['posisi']='Wakil 2';

$ar[4]['parent']=2;
$ar[4]['value']=4;
$ar[4]['nama']='Syauqil';
$ar[4]['posisi']='Anggota';

$ar[5]['parent']=2;
$ar[5]['value']=5;
$ar[5]['nama']='Aji';

7
$ar[5]['posisi']='Anggota';

$ar[6]['parent']=3;
$ar[6]['value']=6;
$ar[6]['nama']='Wildan';
$ar[6]['posisi']='Anggota';

$ar[7]['parent']=3;
$ar[7]['value']=7;
$ar[7]['nama']='Ni\'am';
$ar[7]['posisi']='Anggota';

$ar[8]['parent']=3;
$ar[8]['value']=8;
$ar[8]['nama']='Bayu';
$ar[8]['posisi']='Anggota';

function dfs($arr,$parent,$base){
global $explc;
global $explv;
$explc++;

for($a=1; $a<=count($arr); $a++){


/*if($parent==0){
$explv[$explc]['parent'] = $arr[$a]['parent'];
$explv[$explc]['value'] = $arr[$a-1]['value'];
$explv[$explc]['nama'] = $arr[$a-1]['nama'];
$explv[$explc]['posisi'] = $arr[$a-1]['posisi'];

$explv[$explc]['base'] = $base;
}*/
if($arr[$a]['parent']==$parent){
$explv[$explc]['parent'] = $arr[$a]['parent'];
$explv[$explc]['value'] = $arr[$a]['value'];
$explv[$explc]['nama'] = $arr[$a]['nama'];
$explv[$explc]['posisi'] = $arr[$a]['posisi'];

$explv[$explc]['base'] = $base;
$base++;
dfs($arr,$arr[$a]['value'],$base);
$base--;

8
}
}
}

function menjorok($jumlah,$tanda){
for($a=0;$a<$jumlah;$a++) echo $tanda;
}

echo "Dengan Hasil Algoritma DFS:<br>";


global $explv,$explc;
$explc = -1;
dfs($ar,0,0);
for($a=0; $a<$explc; $a++){
echo menjorok($explv[$a]['base'],'_').$explv[$a]['nama']." (".$explv[$a]
['posisi'].")<br>";
}
unset($explc);
unset($explv);
?>

Dengan hasil :

9
BAB III
KESIMPULAN

3.1 Kesimpulan
Algoritma Depth First Search bisa digunakan untuk melakukan pencarian rute
terpendek. Dengan memperhatikan keuntungan dan kelemahan dari algoritma tersebut,
bisa diambil kesimpulan bahwa algoritma ini bisa membantu pencarian rute terpendek,
sehingga bisa mendapatkan penyelesaian yang efektif.
Algoritma DepthFirst Search akan berhenti melakukan pencarian jika sudah
ditemukan tujuan akhir.

10
Daftar Pustaka

https://www.youtube.com/watch?v=GUHGMtNo6RQ. Diakses tanggal 29 Oktober 2016


pukul 12.10 WIB.

http://zeromin0.blogspot.co.id/2011/07/analisa-algoritma-depth-first-
search.html#axzz4RSOqLeOZ. Diakses tanggal 12 November 2016 pukul 10.00 WIB.

https://www.youtube.com/watch?v=iaBEKo5sM7w&t=74s. Diakses tanggal 12


November 2016 pukul 11.00 WIB.

11

Anda mungkin juga menyukai