Anda di halaman 1dari 11

MODUL PERKULIAHAN

Pengantar
Kecerdasan
Buatan
Solving Problems (4)

Fakultas Program Studi Tatap Muka Kode MK Disusun Oleh

06
Ilmu Komputer Informatika

Abstract Kompetensi
Algoritma Depth-First Search merupakan suatu langkah-langkah Memahami konsep
pencarian mendalam yaitu dengan cara mengunjungi atau penyelesaian masalah dengan
melewati anak suatu simpul sebelum mengunjungi simpul algoritma pencarian dengan
tetangganya. Sementara Algoritma DLS (Depth Limited Search) metode Uninformed Search
Strategies dalam implementasi
adalah salah satu algoritma yang digunakan untuk pencarian pada sebuah bahasa
jalur. Algoritma ini memiliki batasan dimana perhitungan pada pemrograman. (Depth-first
sebuah titik hanya dihitung sampai pada kedalaman tertentu. search & Depth-limited search)
Setelah semua kemungkinan pada kedalaman itu sudah habis,
kemudian akan dilanjutkan pada titik berikutnya.
Pembahasan

A. DEPTH-FIRST SEARCH
Algoritma Depth First Search (DFS) adalah salah satu algoritma
pencarian solusi yang digunakan di dalam kecerdasan buatan. Algoritma ini
termasuk salah satu jenis uninformed algorithm yaitu algoritma yang
melakukan pencarian dalam urutan tertentu tetapi tidak memiliki informasi
apa-apa sebagai dasar pencarian kecuali hanya mengikuti pola yang
diberikan.
Di dalam DFS, pencarian dilakukan pada suatu struktur pohon yaitu
kumpulan semua kondisi yang mungkin yang diimplementasikan dalam
sebuah struktur pohon. Paling atas adalah akar (root) yang berisi kondisi
awal pencarian (initial state) dan di bawahnya adalah kondisi-kondisi
berikutnya sampai kepada kondisi tujuan (goal state).

Permasalahan dalam pencarian rute terpendek adalah mencari jarak


terdekat untuk mencapai suatu tujuan. Akan tetapi, hal ini bisa
dikembangkan untuk mencari biaya minimum dan waktu tempuh tersingkat.
Intinya adalah untuk mendapatkan penyelesaian yang efektif dari suatu
persolan yang dihadapi. Algoritma Depth-First Search merupakan salah
satu algoritma yang sering digunakan untuk melakukan pencarian rute
terpendek. Algoritma ini akan mencari atau mengunjungi anak dari suatu
2018 Kecerdasan Buatan Pusat Bahan Ajar dan eLearning
2 http://www.mercubuana.ac.id
simpul sebelum simpul tetangganya. DFS melakukan pencarian secara
preorder. Mengunjungi anak suatu simpul sebelum simpul tetangganya.
DFS 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. Setelah sampai di level terdalam, penelusuran akan kembali ke 1
level sebelumnya untuk menelusuri simpul anak kedua pada pohon biner
[simpul sebelah kanan] lalu kembali ke langkah sebelumnya dengan
menelusuri simpul anak pertama lagi sampai level terdalam dan seterusnya.
Jadi, jika ada pohon biner seperti gambar di bawah ini:

Maka, urutan penelusurannya: A–B-D–H–E–I–C–F–G–J–K–L


Dalam implementasinya DFS dapat diselesaikan dengan cara rekursif atau
dengan bantuan struktur data stack. Kita akan membahas dengan cara
yang menggunakan stack. Stack yang digunakan adalah stack yang isi
elemennya adalah simpul pohon / tree. Bagaimana cara kerjanya ? Berikut
ini adalah urutan algoritmanya :
1. Masukkan simpul root ke dalam tumpukan dengan push
2. Ambil dan simpan isi elemen (berupa simpul pohon) dari tumpukan
teratas
3. Hapus isi stack teratas dengan prosedur pop
4. Periksa apakah simpul pohon yang disimpan tadi memiliki anak
simpul
5. Jika ya, push semua anak simpul yang dibangkitkan ke dalam stack
2018 Kecerdasan Buatan Pusat Bahan Ajar dan eLearning
3 http://www.mercubuana.ac.id
6. Jika tumpukan kosong berhenti, tapi jika tidak kembali ke langkah
dua.

Jadi, untuk gambar pohon biner di atas urutan langkah dan kondisi stack-
nya setiap iterasi adalah :

Contoh diatas menggunakan prioritas untuk memasukkan anak


simpul dari sebelah kanan terlebih dahulu ke dalam stack. Sehingga, pada
iterasi 2 elemen A dihapus lalu memasukkan anak simpulnya yaitu C dulu,
baru B ke dalam stack. Selain itu bisa dilihat stack teratas (yang diwarna
biru) pada tiap iterasi memiliki urutan A – B – D – H – E – I – C – F – G – J
– K – L. Oiya, pada iterasi ke 13 itu kondisi stack sudah kosong karena
ketika simpul J dibangkitkan tidak ada anak simpul yang dimasukkan ke
stack. Jika dituliskan dalam bahasa C, prosedur pencetakan dengan DFS-
nya kurang lebih bisa ditulis seperti ini :

1 void DFS_printPreOrder(simpul *root){


2 if(root!=NULL){
3 stack S;
4 createEmptyStack(&S);
5 push(root, &S);
6
7 while(isStackEmpty(S) != 1){
8 printf("%c ", S.top->elemen->huruf);
9 simpul *node = peek(S);
10 pop(&S);
2018 Kecerdasan Buatan Pusat Bahan Ajar dan eLearning
4 http://www.mercubuana.ac.id
11
12 if(node->right != NULL){
13 push(node->right, &S);
14 }
15 if(node->left != NULL){
16 push(node->left, &S);
17 }
18 }
19 printf("\n");
20 }
21 }

Keuntungan dari Algoritma Depth-First Search


1. Membutuhkan memori yang relative kecil, karena hanya node-node
pada lintasan yang aktif saja.
2. Secara kebetulan, metode depth-first search akan menemukan
solusi tanpa harus menguji lebih banyak lagi dalam ruang keadaan.
3. Jika solusi yang dicari berada pada level yang dalam dan paling kiri,
maka DFS akan menemukannya secara cepat.

Kelemahan dari Algoritma Depth-First Search


1. Memungkinkan tidak ditemukannya tujuan yang diharapkan.
2. Hanya akan menemukan satu solusi pada setiap pencarian.
3. Jika pohon yang dibangkitkan mempunyai level yang dalam (tak
terhingga), maka tidak ada jaminan untuk menemukan solusi (tidak
complete).
4. Jika terdapat lebih dari satu solusi yang sama tetapi berada pada
level yang berbeda, maka pada DFS tidak ada jaminan untuk
menemukan solusi yang paling baik (tidak optimal).

Pada prinsipnya, DFS ini menggunakan tumpukan untuk menyimpan


seluruh state yang ditemukan atau bisa dikatakan bahwa DFS
menggunakan metode LIFO (Last In First Out).

B. DEPTH-LIMITED SEARCH
Algoritma Depth Limited Search memberikan batas kedalaman
padaalgoritma Depth First Search (Russel & Norvig, 1995). Dengan

2018 Kecerdasan Buatan Pusat Bahan Ajar dan eLearning


5 http://www.mercubuana.ac.id
algoritmaDepth Limited Search, penelusuran Depth First Search data
dibatasisehingga tidak melakukan penelusuran terlalu dalam. Algoritma
DepthLimited Search adalah sebagai berikut:

a) Tetapkan node awal dengan kedalaman = 0 dan tentukan


bataskedalaman.
b) Cek apakah node adalah node tujuan. Jika benar maka proses
berhenti,jika tidak maka lanjut ke langkah c.
c) Cek apakah kedalaman node sama dengan batas kedalaman yang
telahditentukan. Jika benar, maka lanjutkan proses dengan
menelusur hanya node– node yang berada dalam batas kedalaman
yang telah ditentukan dan belumdikunjungi dengan kembali
kelangkah b. Jika tidak maka lanjutkan kelangkah d.
d) Perluas node dan kembali ke langkah b.

Gambaran kerja algoritma Depth Limited Search dapat digambarkan


dalambentuk tree. Tree merupakan sebuah graf tidak berarah dan
merupakanjaringan bersambung yang tidak memiliki untai (loop) sehingga
dengan demikian dapat disimpulkan bahwa sebuah tree dapat dibentuk dari
graf sederhana karena graf sederhana tidak memiliki self loop ataupun edge
parallel. Tree terdiri dari sekumpulan elemen. Elemen tree adalah akar atau
root dan simpul. Derajat atau degree sebuah simpul menunjukkan jumlah
anak pada simpul tersebut. Kelmahannya: Jika batasan kedalaman terlalu
kecil, DLS tidak dapat juga menemukan solusi yg ada. Artinya DLS bisa
menjadi tidak complete jika batasan kedalamannya lebih kecil dibandingkan
dengan level solusinya.
Metode ini berusaha mengatasi kelemahan DFS (tidak complete)
dengan membatasi kelemahan maksimum dari suatu jalur solusi adalah
suatu algoritma untuk mengeksplorasi simpul dari grafik. Ini merupakan
modifikasi dari depth-first search dan digunakan misalnya dalam algoritma
iteratif memperdalam kedalaman-pertama pencarian umum. Seperti
pencarian depth-first normal, kedalaman terbatas pencarian sebuah
pencarian uninformed. Ia bekerja persis seperti depth-first search, tapi
2018 Kecerdasan Buatan Pusat Bahan Ajar dan eLearning
6 http://www.mercubuana.ac.id
menghindari kekurangan mengenai kelengkapan dengan memberlakukan
batas maksimum pada kedalaman pencarian. Bahkan jika pencarian masih
bisa memperluas simpul melampaui kedalaman itu, itu tidak akan
melakukannya dan dengan demikian tidak akan mengikuti jalan jauh dalam
atau terjebak dalam siklus. Oleh karena itu kedalaman terbatas pencari
akan mencari solusi jika dalam batas kedalaman, yang menjamin
setidaknya kelengkapan pada semua grafik.
Algoritma (informal)
General
1. Menentukan titik mana harus memulai pencarian dan menetapkan
kedalaman maksimum pencarian.
2. Periksa apakah titik saat ini adalah negara tujuan; Jika tidak:
Melakukan apa-apa. Jika ya: kembali.
3. Periksa apakah titik saat berada dalam kedalaman maksimum
pencarian. Jika tidak: Melakukan apa-apa. Jika ya: Memperluas titik
dan menyimpan semua penerusnya dalam tumpukan &
hubungi DLS rekursif untuk semua simpul dari stack.

Ruang kompleksitas : Karena kedalaman terbatas pencarian


internal menggunakan depth-first search, kompleksitas ruang adalah setara
dengan normal kedalaman-pertama pencarian.
Waktu kompleksitas : Karena kedalaman terbatas pencarian
internal menggunakan depth-first-search, kompleksitas waktu adalah
setara dengan normal kedalaman-pertama pencarian, dan O () di mana
singkatan jumlah simpul dan jumlah tepi dalam grafik dieksplorasi.
Perhatikan bahwa kedalaman terbatas pencarian tidak mengeksplorasi
seluruh grafik, tetapi hanya bagian yang terletak dalam terikat ditentukan.
Kelengkapan : Meskipun kedalaman terbatas pencarian tidak bisa
mengikuti jalan panjang tak terhingga, juga tidak dapat terjebak dalam
siklus, secara umum algoritma ini tidak lengkap karena tidak menemukan
solusi yang terletak di luar kedalaman pencarian tertentu. Tetapi jika

2018 Kecerdasan Buatan Pusat Bahan Ajar dan eLearning


7 http://www.mercubuana.ac.id
kedalaman pencarian maksimum dipilih untuk menjadi lebih besar dari
kedalaman solusi algoritma menjadi lengkap.
Optimalitas : Kedalaman terbatas pencarian tidak optimal. Ia masih
memiliki masalah depth-first pencarian yang pertama kali mengeksplorasi
salah satu jalan sampai akhir, sehingga mungkin menemukan solusi yang
lebih mahal daripada beberapa solusi di jalan lain.
Diasumsikan ada 5 titik yang harus dilalui semuanya, yaitu
A,B,C,D,E
semua titik tidak terhubung secara langsung dengan titik-titik lainnya,
melainkan hanya melalui jalur tertentu saja, setiap jalur juga memiliki biaya
sendiri-sendiri maka tentukan jalur yang harus diambil untuk mengelilingi
semua titik yang ada. Diasumsikan data jalur yang tersedia adalah sebagai
berikut:

Titik awal Titik Tujuan Biaya

Titik A Titik B 10

Titik A Titik E 11

Titik B Titik A 12

Titik B Titik C 20

Titik B Titik D 6

Titik B Titik E 9

Titik C Titik B 15

Titik C Titik D 14

Titik D Titik B 7

Titik D Titik C 5

Titik E Titik C 8

Titik E Titik D 13

Jika diilustrasikan dalam gambar, maka model data awal sebagai berikut:
2018 Kecerdasan Buatan Pusat Bahan Ajar dan eLearning
8 http://www.mercubuana.ac.id
Sebelum masuk kedalam langkah-langkah pembahasan algoritma, ada
beberapa konstanta atau parameter yang harus diketahui, yaitu:
1. Tentukan jumlah titik yang harus dihubungkan. Diasumsikan dalam
kasus ini, jumlah titik ada 5 buah.
2. Tentukan limit atau batas maksimal kedalaman pencarian karena
ada 5 titik yang akan dicari solusinya, maka limit harus bernilai
minimal 5 buah agar solusi dapat ditemukan. Jika tidak, maka solusi
tidak dapat ditemukan karena pencarian titik tidak akan sampai pada
pencarian 5 titik.
Langkah-langkah penggunaan algoritma ini adalah:
1. Lakukan inisialisasi daftar titik sebanyak jumlah titik, dan masukkan
masing-masing titik ke dalam daftar.
2. Lakukan inisialisasi daftar jalur sesuai dengan data yang tersedia
Terdapat matriks berukuran [jumlah titik x jumlah titik] untuk
menyimpan jalur dari masng - masing titik. Jika tidak ada jalur
diantara 2 titik, maka nilai jalurnya adalah 0.
3. Tentukan titik awal pencarian jalur.
4. Lakukan perhitungan pencarian jalur melalui semua titik yang ada
Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan
dibawah ini (poin 4a – 4e):
a) Masukkan titik awal sebagai titik pertama yang akan dicari
jalurnya.

2018 Kecerdasan Buatan Pusat Bahan Ajar dan eLearning


9 http://www.mercubuana.ac.id
b) Kemudian masukan titik-titik lain secara terurut dari titik
terakhir ke titik pertama.
c) Inisialisasi variabel depth/kedalaman untuk mengetahui
kedalaman pada saat pencarian jalur.
d) Masukkan titik pertama ke dalam jalur yang akan dihitung
Dan hilangkan titik tersebut dari daftar titik yang sudah
dihitung.
e) Lakukan perhitungan selama masih ada titik yang belum
dihitung.

5. Setelah menemukan jalur, maka hitung biaya untuk jalur tersebut.

Gambar diatas merupakan model hasil akhir dari perhitungan jalur


dengan menggunakan limit sebanyak jumlah titik, yaitu sebanyak 5 tingkat.

2018 Kecerdasan Buatan Pusat Bahan Ajar dan eLearning


10 http://www.mercubuana.ac.id
Daftar Pustaka
Bowen, Kenneth A, “Prolog and Expert Systems”, McGraw-Hill, Singapore,
1991.

Giarratano, J and G. Riley, “Expert System: Principle and Programming , 4th


ed.”, PWS Kent, USA, 2004.

Luger, George F. and Stubblefield, William A, AI: “Structures and Strategies


For Complex Problem Solving, 2nd edition”, The Benjamin Cumming Pub,
California, 1993.

Rich, Elaine and Knight, Kevin, “Artificial Intelligence, 2nd Ed.”, McGraw-Hill,
Singapore, 1991.

Russell, S and Norvig, P. “Artificial Intelligence: A Modern Approach; 3rd


Edition.” Prentice Hall, 2010.

Sri Kusumadewi, “Artificial Intelligence: Teknik dan Aplikasinya”, Graha Ilmu,


Yogyakarta, 2003.

2018 Kecerdasan Buatan Pusat Bahan Ajar dan eLearning


11 http://www.mercubuana.ac.id

Anda mungkin juga menyukai