a nalisa searching algorithm breadth-first,...

Download A NALISA SEARCHING ALGORITHM BREADTH-FIRST, …arwins2.tripod.com/ec6040_files/publikasi/analisa-search.pdf · ut tekn 2 gorith st-firs roblem kuliah leh nti, nim ari, ni wan, n teknik

If you can't read please download the document

Upload: lamdan

Post on 05-Feb-2018

217 views

Category:

Documents


1 download

TRANSCRIPT

  • A

    ANALISA

    DEPT

    A SEARCH

    TH-FIRST

    PENYEL

    TUGA

    DESI R

    ARWIN

    HENDRA

    Progr

    INSTIT

    HING AL

    T DAN BE

    ESAIAN P

    AS MATA

    O

    RAMAYA

    D.W. SUM

    A RAHMA

    ram Studi

    UT TEKN2

    LGORITH

    EST-FIRS

    PROBLEM

    A KULIAH

    Oleh

    ANTI, NIM

    MARI, NI

    AWAN, N

    i Teknik K

    NOLOGI 2006

    HM BREA

    T SEARC

    M KOTA

    H EC-6040

    M 2320600

    IM 232060

    NIM 23206

    Komputer

    BANDUN

    ADTH-FIR

    CH PADA

    AK-8

    0

    6

    008

    017

    NG

    RST,

  • DAFTAR ISI

    Hal

    DAFTAR ISI

    BAB I PENDAHULUAN 1

    BAB II ARTIFICIAL INTELLIGENCE DAN IMPLEMENTASI 2

    A. Depth First Search (DFS) 5

    B. Breadth First Search (BFS) 6

    C. Best First Search (BestFS) 7

    BAB III IMPLEMENTASI SOFTWARE 9

    A. Bahasa Pemrograman 10

    B. Representasi Data 10

    C. Struktur Organisasi Software 11

    D. Implementasi Searching Algorithm 12

    E. Solution Path 15

    BAB IV ANALISA 16

    A. Proses Pembangkitan Simpul Anak 16

    B. Solution Path 25

    C. Keefektifan Algoritma 32

    D. Proses Penelusuran GS 32

    BAB V KESIMPULAN 33

    DAFTAR PUSTAKA 34

    LAMPIRAN

  • 1

    ANALISA SEARCHING ALGORITHM BREADTH-FIRST, DEPTH-FIRST

    DAN BEST-FIRST SEARCH PADA PENYELESAIAN PROBLEM KOTAK-8

    Desi Ramayanti (232 06 006), Arwin D.W. Sumari (232 06 008)

    Hendra Rahmawan (232 06 017)

    I. PENDAHULUAN

    Dalam penyelesaian suatu permasalahan yang bersifat problem solving yang

    dihadapi di dunia nyata ditinjau dari perspektif engineering dapat dilakukan melalui

    pendekatan umum dan pendekatan secara intelligence atau cerdas. Dari perspektif

    intelligence juga terdapat beberapa paradigma yang umum digunakan menyelesaikan

    suatu permasalahan yakni Artificial Intelligence, Computational Intelligence yang

    diwakili oleh paradigma Artificial Neural Networks (ANN), Fuzzy Logic dan

    Evolutionary Computation. Dalam konteks permasalahan problem solving,

    paradigma yang banyak digunakan adalah Artificial Intelligence (AI) atau

    Kecerdasan Tiruan.

    Di dalam proses mendapatkan solusi permasalahan problem solving yang

    diberikan, AI mempunyai beberapa kategori metode untuk menyelesaikannya. Salah

    satu dari kategori tersebut adalah Metode Searching yang mencakup beberapa

    searching algorithm yang umum digunakan dalam problem solving. Hal yang

    sangat menarik dari metode ini adalah bagaimana searching algorithm yang

    diterapkan berusaha mencari solusi, yang diistilahkan dengan goal state (GS), paling

    optimal dan lengkap dengan parameter kompleksitas waktu dan ruang yang

    dihadapinya dari kondisi awal atau initial state (IS) yang diberikan.

  • 2

    Paradigma AI banyak digunakan dalam berbagai aplikasi dan salah satu

    diantaranya adalah game. Dari beberapa aplikasi game yang banyak diteliti, aplikasi

    8-puzzle atau Kotak-8 adalah aplikasi game yang menarik untuk dibedah dan

    dianalisa. Karakteristik menarik dari game ini adalah pada representasi data yang

    akan diolah oleh searching algorithm yang diaplikasikan kepadanya. Oleh karena

    itu untuk mengetahui lebih detil, di dalam naskah akan disampaikan analisa

    pembangkitan generasi penerus (successor) simpul induk (parent) hingga didapatkan

    anak (node) terbaik ditinjau dari mekanisme searching algorithm Breadth-First

    Search (BFS), Depth-First Search (DFS) dan Best-First Searh (BestFS).

    Untuk memudahkan pemahaman, naskah ini disusun dengan tata urut Bagian I

    berisi latar belakang penulisan naskah, pada Bagian II akan disampaikan konsep AI

    dan searching algorithm yang akan dipresentasikan dan Bagian III dikhususkan

    untuk analisa implementasi software searching algorithm yang digunakan untuk

    problem solving Kotak-8. Pada Bagian IV akan disampaikan analisa problem

    solving pada Kotak-8 dan akhirnya pada Bagian V akan disimpulkan hasil analisa

    dari aplikasi searching algorithm pada permasalahan Kotak-8 ini.

    II. ARTIFICIAL INTELLIGENCE DAN SEARCHING

    Pada dasarnya AI adalah suatu disiplin ilmu yang mempelajari bagaimana atau

    untuk membuat komputer agar mampu mendekati kecerdasan sebagaimana makhluk

    hidup. Wikipedia mendefinisikan AI sebagai a branch of computer science that

    deals with intelligent behavior, learning and adaptation in machines. Di dalam

    penyelesaian suatu permasalahan, AI dianggap sebagai suatu Sistem Produksi yang

    berlandaskan pada 3 (tiga) komponen yakni Fakta, Kaidah dan Inferensi. Fakta

    menyatakan deskripsi tentang obyek yang menjadi perhatian, Kaidah (rule) adalah

    aturan yang bila diterapkan pada suatu keadaan (state) (dari fakta) akan

    menghasilkan keadaan (state) baru dan Inferensi atau penalaran adalah untaian

    (chain) dari kaidah untuk bergerak dari keadaan awal (initial state) menuju keadaan

  • 3

    sasaran (goal state). Di dalam komponen Kaidah terdapat 2 (dua) subkomponen

    lagi yakni : Prakondisi (antecedent) yang merupakan persyaratan agar suatu kaidah

    tertentu dapat diterapkan pada suatu state dan Aksi (consequence) yang mewakili

    hasil yang diperoleh bila kaidah yang bersangkutan dieksekusi.

    Karakteristik menarik AI dalam menyelesaikan suatu masalah adalah adanya

    karakteristik heuristik yang melekat padanya. Heuristik adalah prinsip atau

    informasi atau knowledge (bersifat problem-specific) yang dapat digunakan sebagai

    panduan (guidance) dalam penelusuran untuk mencapai goal states dengan cara yang

    efektif. Heuristik juga dapat dikatakan sebagai estimasi seberapa dekat current state

    dengan goal state dan ia yang membedakan penelusuran yang bersifat intelligence

    dengan yang tidak. Ia tidak unik dan merupakan gabungan dari beberapa prinsip

    atau informasi namun tidak menjamin (secara penuh) dicapainya goal states.

    Heuristik adalah salah satu metode dari informed search dan dapat dianggap sebagai

    pruning (memotong pohon) dengan mempertimbangkan node yang promising

    (menjanjikan atau lebih pasti menuju GS). Oleh karena itu, seyogyanya fungsi

    heuristik tidak terlalu rumit (sederhana dan mudah untuk dihitung) karena akan

    diaplikasikan ke setiap node.

    Dalam proses pencarian solusi terbaik, AI melakukan tindakan penelusuran

    (searching) menggunakan suatu algoritma tertentu. Searching pada dasarnya adalah

    penelusuran untuk mendapatkan langkah terdekat (minimal) menuju GS dari IS

    dengan menggunakan kaidah (rule). Arah searching ditujukan kepada jumlah GS

    terbesar. Searching ditentukan oleh 3 (tiga) faktor yakni branching factor, jumlah

    GS dan model penalaran manusia. Brancing factor sendiri adalah menyatakan

    jumlah rata-rata simpul yang dapat dicapai oleh simpul induk secara langsung,

    jumlah rata-rata kaidah untuk mencapai state berikutnya dan seberapa luas state

    space tree diagram searching. Intelligent search akan diterapkan bila branching

    factor meledak secara eksponensial. Searching dapat dilakukan melalui salah satu

    dari 2 (dua) arah yakni forward searching yang mengikuti model penalaran manusia

    dan backward searching. Metode forward searching dilakukan dengan

  • 4

    mencocokkanya dengan Prakondisi dan dilakukan bila branching factor kecil,

    sedangkan metode backward searching dilakukan dengan cara mencocokkannya

    dengan Aksi atau mencari simpul induk.

    AI sebagai searching tool didefinisikan ke dalam 4 (empat) hal yaitu IS, GS,

    Operator/Kaidah/Prosedur dan Control Strategy sebagaimana gambar di bawah ini :

    Gambar 1. AI sebagai searching tool.

    Secara sederhana proses penelusuran dapat dijelaskan sebagai berikut :

    1) Diberikan keadaan awal atau IS.

    2) Aplikasikan prosedur atau kaidah dengan persyaratan Prakondisi dan

    Aksi yang telah ditetapkan untuk mendapatkan GS.

    3) Terapkan control strategy dengan memilih satu dari active rule yang ada

    untuk diterapkan. Control strategy akan menentukan kesuksesan proses

    penelusuran. Kesalahan pemilihan control strategy akan berdampak pada tidak

    didapatkannya solusi seperti yang diharapkan.

  • 5

    Gambar 2. Konsep dasar searching.

    Dalam naskah ini akan dibahas 3 (tiga) searching algorithm sebagaimana telah

    disampaikan di atas. Algoritma-algoritma tersebut adalah :

    A. Depth-First Search (DFS). Algoritma DFS akan melakukan penelusuran

    dengan cara mengekplorasi simpul anak yang pertama kali ia buka. Bila GS tidak

    ditemukan pada simpul yang dibuka, ia akan bergerak mundur untuk membuka

    simpul anak berikutnya. Hal ini akan dilakukan secara terus menerus hingga GS

    ditemukan. Secara sederhana pseudo code algoritma DFS adalah sebagai berikut :

    1) Berikan simpul awal pada daftar open.

    2) Loop : if open = kosong then exit(fail).

    3) n := first(open)

    4) if goal(n) then exit(success)

    5) Remove(n, open) dan Add(n, closed)

    6) Ekspansikan n. Berikan pada kepala open semua simpul anak yang

    belum muncul pada open atau closed dan bubuhkan pointer pada n.

    7) Ekspansikan n, berikan semua simpul anak pada kepala open dan

    bubuhkan pointer dari simpul anak ke-n.

    8) Kembali ke Loop.

  • 6

    [ S ] [ A B ] [ C D B ] [ D B ] [ B ] [ E F ] [ H G F ] [ G F ] Urutan pelacakan : S, A, C, D, B, E, F, H, G Fungsi pointer untuk solution path

    Tree Diagram

    Urutan Searching

    Gambar 3. Konsep Metode DFS.

    Dalam mengimplementasikan algoritma DFS harus diperhatikan seberapa dalam

    suatu cabang akan diekplorasi untuk mencegah penelusuran tak terhingga yang dapat

    memakan memory komputer.

    B. Breadth-First Search (BFS). Berbeda dengan DFS, algoritma BFS akan

    melakukan penelusuran pada semua cabang yang dibuka dari simpul induknya.

    Pencarian dilakukan dalam arah horisontal sehingga semua cabang yang dibuka

    dijamin akan mendapatkan giliran yang adil. Bila pada kedalaman (depth) yang

    sama GS belum ditemukan, maka dilakukan pembukaan cabang baru lagi sesuai

    dengan urutan pembukaan cabang sebelumnya. Secara sederhana pseudo code

    algoritma BFS adalah sebagai berikut :

    1) Berikan simpul awal pada daftar open.

    2) Loop : if open = kosong then exit(fail).

    3) n := first(open)

  • 7

    4) if goal(n) then exit(success)

    5) Remove(n, open) dan Add(n, closed)

    6) Ekspansikan n, berikan semua simpul anak pada ekor open dan

    bubuhkan pointer dari simpul anak ke-n.

    7) Kembali ke Loop.

    [ S ] [ A B ] [ B C D ] [ C D E F ] [ D E F ] [ E F ] [ F H G ] [ H G ] [ G ] Urutan pelacakan : S, A, B, C, D, E, F, H, G Fungsi pointer untuk solution path

    Tree Diagram

    Urutan Searching

    Gambar 4. Konsep Metode BFS.

    C. Best-First Search (BestFS). Sedikit berbeda dengan kedua tipe uninformed

    search di atas, metode BestFS menggunakan nilai nilai heuristik tiap simpul yang

    dibuka. Simpul dengan nilai heuristik terkecil akan dibuka terlebih dulu. Bila GS

    belum ditemukan, akan dilakukan pemeriksaan pada simpul berikutnya dengan nilai

    heuristik terkecil pada kedalaman yang sama. Simpul tersebut kemudian dibuka dan

    diperiksa apakah terdapat GS pada cabang-cabangnya. Bila GS belum ditemukan,

    akan dilakukan proses yang sama pada simpul berikutnya. Metode BsFS ini mirip

  • 8

    gabungan antara metode BFS dan DFS. Secara sederhana pseudo code algoritma

    BestFS adalah sebagai berikut :

    1) Berikan simpul awal pada daftar open, $( )h s

    2) Loop : if open = kosong then exit(fail).

    3) n := first(open)

    4) if goal(n) then exit(success)

    5) Remove(n, open) dan Add(n, closed)

    6) Ekspansikan n, hitung $( )ih n untuk semua simpul anak ni dan bubuhkan

    pointer dari ni ke-n. Berikan semua simpul anak pada open dan urutkan

    mulai dari biaya terendahnya.

    7) Kembali ke Loop

    n

    c(n,ni)

    S

    Optimal Searchg(n) = cummulative cost dari IS ke n

    Goal

    Initial

    hBest First Search

    Gambar 5. Konsep Metode BsFS.

    $( ) ( ),i ih n c n n= dimana ( )innc , adalah cost dari n ke ni.

  • 9

    Untuk melihat keefektifan suatu searching algorithm, [Russel 2004]

    merumuskan 4 (empat) parameter sebagai berikut :

    1) Time Complexity yang menyatakan waktu yang diperlukan untuk

    mencapai sasaran. Ini sangat berkaitan erat dengan cpu time dan branching

    factor.

    2) Space Complexity yang mengukur jumlah memory yang dibutuhkan

    untuk implementasi search dan diukur dalam bentuk besar byte.

    3) Completeness yang mengukur jaminan bahwa GS dicapai oleh search

    berdasarkan pada searching algorithm yang dipakai.

    4) Optimality yang memberikan ukuran jaminan bahwa solution path adalah

    paling minimum.

    Untuk memudahkan mengingat keempat parameter tersebut, di dalam naskah

    ini parameter-parameter tersebut akan disingkat dengan COST. COST ini

    mempunyai 2 (dua) makna yakni yang pertama merupakan singkatan dari

    Complexity, Optimality, Space Complexity dan Time Complexity; yang kedua

    merepresentasikan biaya yang dibutuhkan oleh setiap searching algorithm dalam

    melakukan proses penelusuran ditinjau dari keempat parameter tersebut di atas.

    III. IMPLEMENTASI SOFTWARE

    Untuk mendapatkan gambaran detil tentang proses penelusuran ketiga

    searching algorithm di atas, ketiga algoritma diimplementasikan menggunakan

    bahasa pemrograman Java. Source code diperoleh dari download di Internet pada

    beberapa alamat web dan dimodifikasi sedemikian rupa untuk keperluan tujuan

    utama naskah ini. Penekanan utama pada implementasi software ini adalah :

    Representasi struktur data.

  • 10

    Proses pembangkitan generasi penerus (successor) atau simpul anak

    (child node).

    Penampilan solution path.

    GUI tidak diutamakan.

    A. Bahasa Pemrograman. Untuk mengimplementasikan ketiga searching

    algorithm bersama dengan komponen-komponen lain yang berkaitan, digunakan

    Java Development Kit versi 1.5.0.09 dengan editor Java Creator LE versi 4.0 dan

    dijalankan pada komputer berbasis Pentium 4 dengan OS Windows XP Professional

    service Pack 2. Untuk listing program, periksa Lampiran A dan hubungan antara

    class, periksa Lampiran B.

    B. Representasi Data. Struktur data direpresentasikan dalam bentuk vektor

    matriks dengan dimensi 1 x 9, sebagai contoh adalah 7 1 4 2 3 5 8 0 6

    untuk merepresentasikan simpul induk pada gambar di bawah ini. 0 mewakili

    lokasi yang tidak terisi pada susunan tile Kotak-8.

    Gambar 6. Konsep dasar penyelesaian Kotak-8.

  • 11

    C. Struktur Organisasi Software. Pada dasarnya software implementasi

    searching algorithm ini dibuat sesederhana mungkin tanpa meninggalkan esensi

    utamanya. Telah disiapkan 2 (dua) program, 1 (satu) untuk keperluan pengujian

    pembandingan keefektifan searching algorithm dan 1 (satu) untuk mendemokan pola

    penelusuran searching algorithm. Program untuk keperluan pengujian memerlukan

    pemasukan data vektor input secara manual melalui command prompt bersama

    dengan macam algoritma yang akan diamati dan kedalaman penelusuran. Program

    untuk demo hanya memerlukan pemasukan data jenis algoritma yang ingin diamati

    dan kedalaman penelusuran yang diinginkan. Data vektor input tidak dimasukkan

    karena program akan melakukan pemindahan posisi tile secara otomatis secara acak

    (random). Contoh pemanggilan program melalui command prompt adalah :

    1) Program untuk pengujian masukkan perintah sebagai berikut :

    E:\Kotak-Wolu\java classpath .\ MyPuzzle 253160478 0

    15

    2) Program untuk demo masukkan perintah sebagai berikut :

    E:\Kotak-Wolu\java classpath .\ MyShufflePuzzle 0 15

    dimana 253160478 merepresentasikan susunan posisi tile pada IS, 0 mewakili

    algoritma BestFS (1 untuk DFS dan 2 untuk BFS) dan 15 menunjukkan

    kedalaman penelusuran yang diinginkan. Untuk kedalaman sebaikanya pilih antara

    15 30 agar tidak memakan ruang memory yang besar. Struktur organisasi

    software adalah sebagai berikut :

    1) MyPuzzle.class yang bertindak sebagai program utama dan akan

    memanggil class lainnya pada saat dijalankan. Class ini dapat langsung

    dijalankan melalui command prompt dengan memasukkan data vektor input,

  • 12

    kode macam searching algorithm yang akan digunakan serta kedalaman yang

    diinginkan. Class digunakan untuk kepentingan perbandingan keefektifan satu

    algoritma terhadap algoritma lainnya.

    2) MyShufflePuzzle.class yang bertindak sebagai program utama demo dan

    akan memanggil class lainnya pada saat dijalankan. Class ini dapat langsung

    dijalankan melalui command prompt dengan memasukkan kode macam

    searching algorithm yang akan digunakan serta kedalaman yang diinginkan.

    Class digunakan untuk kepentingan demo yang memperlihatkan proses

    penelusuran dari IS menuju GS algoritma yang dipilih.

    3) MyTreeSearch.class berisi data dan method untuk ketiga searching

    algorithm yang diimplementasikan beserta komponen-komponen lainnya yang

    diperlukan, diantaranya adalah untuk menampilkan pembangkitan simpul anak

    dan solution path.

    4) State.class yang berisi data dan method yang digunakan oleh setiap

    searching algorithm dalam melaksanakan prosedur penelusuran.

    D. Implementasi Searching Algorithm. Berikut ini adalah data dan method

    masing-masing searching algorithm yang berada di dalam MyTreeSearch.class.

    1) Algoritma DFS

    public void depthFirstSearch() { State currentState = null; open.addFirst(initState); System.out.println("Pencarian dengan Depth First Search...\n\n"); while (!open.isEmpty()) { currentState = (State) open.getFirst();

  • 13

    System.out.println(currentState.toString() + "\n"); if ( currentState.isGoal(goalState)) { System.out.println("Goal ditemukan...\n\n"); goalFound = true; break; } open.removeFirst(); close.add(currentState.toString()); System.out.println(currentState.getLevel()); if (currentState.getLevel() < depth) { ArrayList list = currentState.getSuccessors(); System.out.println("Jumlah suksesor : " + list.size()); Iterator e = list.iterator(); while (e.hasNext()) { State successor = (State) e.next(); if (!close.contains(successor.toString())) { open.addFirst(successor); numOfState++; } } } } if (!goalFound) System.out.println("Goal tidak ditemukan..."); System.out.println("Jumlah State yang ditelusuri = " + numOfState + "\n\n" ); }

    2) Algoritma BFS

    public void breadthFirstSearch() { State currentState = null; open.addFirst(initState);

  • 14

    System.out.println("Pencarian dengan Breadth First Search...\n\n"); while (!open.isEmpty()) { currentState = (State) open.getFirst(); System.out.println(currentState.toString() + "\n"); if (currentState.isGoal(goalState)) { System.out.println("Goal ditemukan...\n\n"); goalFound = true; break; } open.removeFirst(); close.add(currentState.toString()); if (currentState.getLevel() < depth) { ArrayList list = currentState.getSuccessors(); Iterator e = list.iterator(); while (e.hasNext()) { State successor = (State) e.next(); if (!close.contains(successor.toString())) { open.addLast(successor); numOfState++; } } } } if (!goalFound) System.out.println("Goal tidak ditemukan..."); System.out.println("Jumlah State yang ditelusuri = " + numOfState + "\n\n" ); }

    3) Algoritma BestFS

    public void bestFirstSearch() { State currentState = null; open = new LinkedList();

  • 15

    ArrayList close = new ArrayList(); //tambahan open.addFirst(initState); System.out.println("Pencarian dengan Best First Search...\n\n"); while (!open.isEmpty()) { currentState = (State) open.getFirst(); System.out.println(currentState.toString() + " nilai heuristik = " + currentState.getHeuristic() + "\n"); if ( currentState.isGoal(goalState)) { System.out.println("Goal ditemukan...\n\n"); goalFound = true; break; } open.removeFirst(); close.add(currentState.toString()); ArrayList list = currentState.getSuccessors(); Iterator e = list.iterator(); while (e.hasNext()) { State successor = (State) e.next(); if (!close.contains(successor.toString())) { successor.calculateHeuristic(goalState.getOrder());

    open.addFirst(successor); numOfState++;

    } } Collections.sort(open); //order of heuristic value } if (!goalFound) System.out.println("Goal tidak ditemukan"); System.out.println("Jumlah State yang ditelusuri = " + numOfState + "\n\n" ); }

  • 16

    E. Solution Path. Untuk melacak arah penelusuran yang dilaksanakan oleh

    algoritma, diperlukan pelacak solution path dan diimplementasikan sebagai berikut :

    public void printSolutionPath(State theState) { State curState = null; State goal = theState; Stack stack = new Stack(); System.out.println("\n\nSolution pathnya adalah .... \n\n"); //lakukan backtrack untuk menentukan solution pathnya... while(theState != null) { stack.push(theState); theState = theState.getParent(); } while(true) { try { curState = (State)stack.pop(); } catch(EmptyStackException e) { break; } System.out.println(curState.toString() + "\n"); } System.out.println("Panjang Solution Path (Cost) adalah " + goal.getCost()); } }

    IV. ANALISA

    Pada bagian ini akan disampaikan analisa proses pembangkitan simpul anak

    dan keefektifan masing-masing searching algorithm berdasarkan pada parameter

    COST yang telah disampaikan di atas. Hasil pengujian adalah sebagai berikut :

  • 17

    A. Proses Pembangkitan Simpul Anak. Dalam pengujian ini input vektor

    tes atau IS yang diberikan adalah : 1 0 3 4 5 6 2 7 8 dengan GS =

    1 2 3 4 5 6 7 8 0 .

    1) Algoritma BFS. Pembangkitan simpul anak menggunakan konsep

    First-In-First-Out (FIFO) karena simpul anak akan diletakkan pada

    ekor daftar open. Hasil running program adalah sebagai berikut :

    Pencarian dengan Breadth First Search... 1 0 3 4 5 6 2 7 8 Depth ke : 0 Jumlah suksesor : 3 1 3 0 4 5 6 2 7 8 Depth ke : 1 Jumlah suksesor : 2 1 5 3 4 0 6 2 7 8 Depth ke : 1 Jumlah suksesor : 4 0 1 3 4 5 6 2 7 8 Depth ke : 1 Jumlah suksesor : 2 1 3 6 4 5 0 2 7 8 Depth ke : 2 Jumlah suksesor : 3

  • 18

    1 5 3 4 6 0 2 7 8 Depth ke : 2 Jumlah suksesor : 3 1 5 3 4 7 6 2 0 8 Depth ke : 2 Jumlah suksesor : 3 1 5 3 0 4 6 2 7 8 Depth ke : 2 Jumlah suksesor : 3 4 1 3 0 5 6 2 7 8 Depth ke : 2 Jumlah suksesor : 3 1 3 6 4 5 8 2 7 0 Depth ke : 3 Jumlah suksesor : 2 1 3 6 4 0 5 2 7 8 Depth ke : 3 Jumlah suksesor : 4 1 5 0 4 6 3 2 7 8 Depth ke : 3 Jumlah suksesor : 2 1 5 3 4 6 8 2 7 0

  • 19

    Depth ke : 3 Jumlah suksesor : 2 1 5 3 4 7 6 2 8 0 Depth ke : 3 Jumlah suksesor : 2 . . . . . 1 3 6 4 0 2 7 5 8 Depth ke : 11 Jumlah suksesor : 4 1 2 0 4 6 3 7 5 8 Depth ke : 11 Jumlah suksesor : 2 1 2 3 4 6 8 7 5 0 Depth ke : 11 Jumlah suksesor : 2 1 2 3 4 5 6 7 8 0 Goal ditemukan...

    2) Algoritma DFS. Pembangkitan simpul anak menggunakan konsep

    Last-In-First-Out (LIFO) karena simpul anak akan diletakkan pada

    kepala daftar open. Hasil running program adalah sebagai berikut :

  • 20

    Pencarian dengan Depth First Search... 1 0 3 4 5 6 2 7 8 Depth ke : 0 Jumlah suksesor : 3 0 1 3 4 5 6 2 7 8 Depth ke : 1 Jumlah suksesor : 2 4 1 3 0 5 6 2 7 8 Depth ke : 2 Jumlah suksesor : 3 4 1 3 2 5 6 0 7 8 Depth ke : 3 Jumlah suksesor : 2 4 1 3 2 5 6 7 0 8 Depth ke : 4 Jumlah suksesor : 3 4 1 3 2 5 6 7 8 0 Depth ke : 5 Jumlah suksesor : 2 4 1 3 2 5 0 7 8 6 Depth ke : 6 Jumlah suksesor : 3

  • 21

    4 1 3 2 0 5 7 8 6 Depth ke : 7 Jumlah suksesor : 4 4 1 3 0 2 5 7 8 6 Depth ke : 8 Jumlah suksesor : 3 4 1 3 7 2 5 0 8 6 Depth ke : 9 Jumlah suksesor : 2 4 1 3 7 2 5 8 0 6 Depth ke : 10 Jumlah suksesor : 3 4 1 3 7 2 5 8 6 0 Depth ke : 11 Jumlah suksesor : 2 4 1 3 7 2 0 8 6 5 Depth ke : 12 Jumlah suksesor : 3 4 1 3 7 0 2 8 6 5 Depth ke : 13 Jumlah suksesor : 4 . .

  • 22

    . . .

    1 2 3 4 8 0 7 6 5 Depth ke : 14 Jumlah suksesor : 3 1 2 3 4 0 8 7 6 5 Depth ke : 15 1 2 0 4 8 3 7 6 5 Depth ke : 15 1 2 3 4 5 0 7 8 6 Depth ke : 12 Jumlah suksesor : 3 1 2 3 4 5 6 7 8 0 Goal ditemukan...

    3) Algoritma BestFS. Pembangkitan simpul anak didasarkan pada

    hasil perbandingan nilai heuristik tiap simpul yang dibuka. Simpul

    dengan nilai heuristik terkecil akan dibuka terlebih dulu. Nilai heuristik

    diperoleh dari penjumlahan tile yang tidak tepat (mismatch tiles).

    Pencarian dengan Best First Search... 1 0 3 4 5 6 2 7 8 nilai heuristik = 0

  • 23

    0 1 3 4 5 6 2 7 8 nilai heuristik = 4 1 5 3 4 0 6 2 7 8 nilai heuristik = 4 1 5 3 4 7 6 2 0 8 nilai heuristik = 4 1 5 3 4 7 6 2 8 0 nilai heuristik = 3 1 5 3 4 7 0 2 8 6 nilai heuristik = 4 1 5 3 4 0 7 2 8 6 nilai heuristik = 4 1 0 3 4 5 7 2 8 6 nilai heuristik = 3 0 1 3 4 5 7 2 8 6 nilai heuristik = 4 1 3 0 4 5 7 2 8 6 nilai heuristik = 4 1 3 7 4 5 0 2 8 6 nilai heuristik = 4 1 3 7 4 5 6 2 8 0 nilai heuristik = 3 1 3 7 4 5 6 2 0 8 nilai heuristik = 4

  • 24

    1 3 7 4 5 6 0 2 8 nilai heuristik = 4 1 5 3 4 7 6 0 2 8 nilai heuristik = 4 1 3 0 4 5 6 2 7 8 nilai heuristik = 4 1 3 6 4 5 0 2 7 8 nilai heuristik = 5 1 3 6 4 5 8 2 7 0 nilai heuristik = 5 1 3 6 4 5 8 2 0 7 nilai heuristik = 5 1 3 6 4 5 8 0 2 7 nilai heuristik = 5 1 5 3 0 7 6 4 2 8 nilai heuristik = 5 1 5 3 7 0 6 4 2 8 nilai heuristik = 5 1 0 3 7 5 6 4 2 8 nilai heuristik = 4 0 1 3 7 5 6 4 2 8 nilai heuristik = 5 7 1 3 0 5 6 4 2 8 nilai heuristik = 5 7 1 3 4 5 6

  • 25

    0 2 8 nilai heuristik = 4 7 1 3 4 5 6 2 0 8 nilai heuristik = 4 7 1 3 4 5 6 2 8 0 nilai heuristik = 3 . . . . . 4 1 3 2 5 0 7 8 6 nilai heuristik = 4 4 1 3 2 0 5 7 8 6 nilai heuristik = 5 4 1 3 0 2 5 7 8 6 nilai heuristik = 5 0 1 3 4 2 5 7 8 6 nilai heuristik = 4 1 0 3 4 2 5 7 8 6 nilai heuristik = 3 1 2 3 4 0 5 7 8 6 nilai heuristik = 2 1 2 3 4 5 0 7 8 6 nilai heuristik = 1 1 2 3 4 5 6 7 8 0 nilai heuristik = 0 Goal ditemukan...

  • 26

    B. Solution Path. Solution path menunjukkan jalur penelusuran yang

    dilakukan dari IS menuju GS. Aspek ini juga dapat digunakan sebagai

    parameter keefektifan algoritma dalam menemukan GS-nya. Solution path

    terpendek menunjukkan keunggulan satu algoritma terhadap algoritma lainnya.

    Solution path ketiga searching algorithm di atas adalah :

    1) Algoritma BFS

    Solution pathnya adalah .... 1 0 3 4 5 6 2 7 8 0 1 3 4 5 6 2 7 8 4 1 3 0 5 6 2 7 8 4 1 3 2 5 6 0 7 8 4 1 3 2 5 6 7 0 8 4 1 3 2 0 6 7 5 8 4 1 3 0 2 6 7 5 8 0 1 3 4 2 6 7 5 8

  • 27

    1 0 3 4 2 6 7 5 8 1 2 3 4 0 6 7 5 8 1 2 3 4 5 6 7 0 8 1 2 3 4 5 6 7 8 0 Panjang Solution Path (Cost) adalah 11

    Jumlah State yang ditelusuri = 2237

    2) Algoritma DFS Solution pathnya adalah .... 1 0 3 4 5 6 2 7 8 0 1 3 4 5 6 2 7 8 4 1 3 0 5 6 2 7 8 4 1 3 2 5 6 0 7 8 4 1 3 2 5 6 7 0 8 4 1 3 2 5 6 7 8 0

  • 28

    4 1 3 2 5 0 7 8 6 4 1 3 2 0 5 7 8 6 4 1 3 0 2 5 7 8 6 0 1 3 4 2 5 7 8 6 1 0 3 4 2 5 7 8 6 1 2 3 4 0 5 7 8 6 1 2 3 4 5 0 7 8 6 1 2 3 4 5 6 7 8 0

    Panjang Solution Path (Cost) adalah 21

    Jumlah State yang ditelusuri = 7425

    3) Algoritma BestFS Solution pathnya adalah .... 1 0 3 4 5 6 2 7 8 1 5 3 4 0 6 2 7 8

  • 29

    1 5 3 4 7 6 2 0 8 1 5 3 4 7 6 0 2 8 1 5 3 0 7 6 4 2 8 1 5 3 7 0 6 4 2 8 1 5 3 7 2 6 4 0 8 1 5 3 7 2 6 4 8 0 1 5 3 7 2 0 4 8 6 1 5 3 7 0 2 4 8 6 1 0 3 7 5 2 4 8 6 1 3 0 7 5 2 4 8 6 1 3 2 7 5 0 4 8 6 1 3 2 7 5 6 4 8 0

  • 30

    1 3 2 7 5 6 4 0 8 1 3 2 7 5 6 0 4 8 1 3 2 0 5 6 7 4 8 1 3 2 5 0 6 7 4 8 1 3 2 5 4 6 7 0 8 1 3 2 5 4 6 7 8 0 1 3 2 5 4 0 7 8 6 1 3 2 5 0 4 7 8 6 1 0 2 5 3 4 7 8 6 1 2 0 5 3 4 7 8 6 1 2 4 5 3 0 7 8 6 1 2 4 5 0 3 7 8 6

  • 31

    1 2 4 0 5 3 7 8 6 0 2 4 1 5 3 7 8 6 2 0 4 1 5 3 7 8 6 2 4 0 1 5 3 7 8 6 2 4 3 1 5 0 7 8 6 2 4 3 1 5 6 7 8 0 2 4 3 1 5 6 7 0 8 2 4 3 1 0 6 7 5 8 2 4 3 0 1 6 7 5 8 0 4 3 2 1 6 7 5 8 4 0 3 2 1 6 7 5 8 4 1 3 2 0 6 7 5 8

  • 32

    4 1 3 2 5 6 7 0 8 4 1 3 2 5 6 7 8 0 4 1 3 2 5 0 7 8 6 4 1 3 2 0 5 7 8 6 4 1 3 0 2 5 7 8 6 0 1 3 4 2 5 7 8 6 1 0 3 4 2 5 7 8 6 1 2 3 4 0 5 7 8 6 1 2 3 4 5 0 7 8 6 1 2 3 4 5 6 7 8 0 Panjang Solution Path (Cost) adalah 47

    Jumlah State yang ditelusuri = 205

  • 33

    C. Kefektifan Algoritma. Untuk melihat keefektifan algoritma, dilakukan

    pengujian pada beberapa vektor test berbeda dan hasil pengujian dirangkum

    dalam bentuk tabel perbandingan COST. Periksa Lampiran C untuk hasil

    pengujian yang dilakukan pada 4 (empat) vektor input sebagai berikut :

    1) 1 0 3 4 5 6 2 7 8 atau 1 0 34 5 62 7 8

    .

    2) 1 4 3 0 2 6 5 7 8 atau 1 4 30 2 65 7 8

    .

    3) 7 4 3 1 2 6 5 0 8 atau 7 4 31 2 65 0 8

    .

    4) 2 5 3 1 6 0 4 7 8 atau 2 5 31 6 04 7 8

    .

    D. Proses Penelusuran GS. Ilustrasi proses penelusuran menuju GS untuk

    masing-masing searching algorithm dapat dilihat pada Lampiran D.

    V. KESIMPULAN

    Dari pengujian 4 (empat) vektor input di atas yang dirangkum dalam tabel

    COST dapat disimpulkan bahwa secara umum :

    A. BFS menampilkan keunggulan ditinjau dari Completeness dan

    Optimality (Solution Path, Cost).

    B. BestFS mampu menampilkan Completeness namun tidak Optimality

    karena Cost yang digunakan cukup besar.

    C. DFS menampilkan performa terendah di antara ketiga algoritma dan

    dalam beberapa problem tidak mampu mencapai Completeness dan Optimality

  • 34

    D. Algoritma BFS adalah yang paling tepat digunakan untuk menyelesaikan

    Problem Kotak-8 pada contoh kasus vektor input yang digunakan pada naskah

    ini.

  • 35

    DAFTAR PUSTAKA

    [1] Riyanto, Bambang (2006), Sistem Cerdas Lanjut, Materi Kuliah S-2 Teknik Komputer (EC-6040), Bandung.

    [2] Russel, Stuart, and Norvig, Peter (2003), Artificial Intelligence: A Modern Approach 2nd Ed., Prentice-Hall, New Jersey.

    [3] Savitch, Walter (2001), Java: An Introduction to Computer Science & Programming, 2nd Ed., Prentice-Hall, New Jersey.

    [4] Schildt, Herbert (2005), Java: A Beginners Guide, 3rd Ed., McGraw-Hill

    Companies, New York.