Langsung ke konten utama

ALGORITMA A* DAN DEPTH FIRST SEARCH


      ALGORITMA A* / ALGORITMA A-Star

A. PENGERTIAN ALGORITMA A*
Algoritma A Star merupakan salah satu algoritma yang menggunakan fungsi biaya. Atau algoritma pencarian graf/pohon yang mencari jalur dari satu titik awal ke sebuah titik akhir yang telah ditentukan.
Perbedaan algoritma A Star dan algoritma Greedy terletak pada rumus yang digunakan oleh kedua algoritma, algoritma greedy hanya menggunakan rumus perkiraan atau estimasi saja tetapi algoritma A Star selain menggunakan rumus perkiraan atau estimasi, juga menghitung cost yang diperlukan untuk mengembalikan puzzle ke posisi berurut. Inilah yang membuat algoritma A Star lebih baik daripada algoritma Greedy. Tetapi dengan lebih banyaknya rumus yang dihitung, hal ini menyebabkan algoritma A Star bekerja dengan lambat sehingga waktu yang diperlukan untuk menemukan solusi akan semakin besar pula karena selain menghitung biaya yang diperlukan untuk berjalan dari simpul satu ke simpul lainnya, Algoritma A Star juga menggunakan fungsi untuk memprioritaskan pemeriksaan simpul-simpul arah yang benar
Heuristic
 Kata heuristic berasal dari sebuah kata kerja bahasa Yunani, heuriskein, yang berarti mencari atau memasukkan. Dalam dunia pemograman, sebagian orang menggunakan kata heuristic sebagai lawan kata dari algoritmik, dimana kata heuristic ini diartikan sebagai suatu proses yang mungkin dapat menyelesaikan suatu masalah tetapi tidak menjamin bahwa selalu solusi yang dicari selalu dapat ditemukan. Didalam mempelajari metode-metode pencarian ini, kata heuristic diartikan sebagai suatu fungsi yang memberikan suatu nilai berupa biaya perkiraan (estimasi) dari suatu solusi. Heuristic adalah sebuah teknik yang mengembangkan efisiensi dalam proses pencarian. Untuk dapat menerapkan heuristic tersebut dengan baik dalam suatu domain tertentu, diperlukan suatu Fungsi Heuristic. Fungsi heuristic ini digunakan untuk mengevaluasi keadaan-keadaan problema individual dan menentukan seberapa jauh hal tersebut dapat digunakan untuk mendapatkan solusi yang diinginkan. Teknik pencarian heuristic (heuristic searching) merupakan suatu strategi untuk melakukan proses pencarian ruang keadaan (state space) suatu problema secara selektif, yang memandu proses pencarian yang kita lakukan di sepanjang jalur yang memiliki kemungkinan sukses paling besar.
A.    URAIAN LANGKA-LANGKAH ALGORITMA
Algoritma A Star merupakan salah satu algoritma yang menggunakan fungsi biaya. Algoritma A Star memeriksa kelayakan biaya yang diperlukan untuk mencapai suatu simpul dari sebuah simpul lain. Dalam kasus puzzle 8 ini, algoritma A Star membandingkan 2 posisi puzzle yaitu posisi puzzle awal (state awal) dengan posisi puzzle yang terurut dengan benar (state akhir). Rumus yang digunakan oleh algoritma A Star yaitu  : f(n) = g(n)+h(n)
dengan:
g(n) = total keseluran biaya untuk mencapai posisi benar
h(n) = total keseluruhan biaya grid yang ada di posisi salah
Program ini akan menghitung nilai g(n) yaitu keseluruhan biaya untuk mencapai posisi benar dan h(n) yaitu dengan memeriksa jumlah kotak yang berada di posisi yang salah. Lakukan langkah-langkah diatas sampai ditemukan semua jalur atau langkah untuk mengembalikan Puzzle 8 ke posisi yang berurut.
Perbedaan algoritma A Star dan algoritma Greedy terletak pada rumus yang digunakan oleh kedua algoritma, algoritma greedy hanya menggunakan rumus perkiraan atau estimasi saja tetapi algoritma A Star selain menggunakan rumus perkiraan atau estimasi, juga menghitung cost yang diperlukan untuk mengembalikan puzzle ke posisi berurut. Inilah yang membuat algoritma A Star lebih baik daripada algoritma Greedy. Tetapi dengan lebih banyaknya rumus yang dihitung, hal ini menyebabkan algoritma A Star bekerja dengan lambat sehingga waktu yang diperlukan untuk menemukan solusi akan semakin besar pula karena selain menghitung biaya yang diperlukan untuk berjalan dari simpul satu ke simpul lainnya, Algoritma A Star juga menggunakan fungsi untuk memprioritaskan pemeriksaan simpul-simpul arah yang benar
·         Perancangan
Use Case Diagram





Gambar 1 Use Case Diagram

            Dari gambar 1 dapat dilihat bahwa user dapat menginputkan angka pada puzzle dengan inputan manual atau inputan otomatis yang dilakukan oleh sistem. Setelah melakukan inputan otomatis atau manual, maka dapat dilakukan pemilihan algoritma dalam penyelesaian soal yaitu algoritma A Star atau algoritma Greedy.
Diagram Alir
Flowchart digunakan untuk menggambarkan alur suatu program menjadi lebih sederhana sehingga program tersebut dapat lebih mudah dimengerti.







Gambar 2 Flowchart Sistem



A.    URAIAN IMPLEMENTASI ALGORITMA DALAM STUDI KASUS
Puzzle 8 adalah representasi permainan teka-teki yang dapat diselesaikan dengan mengurutkan atau menyusun komponen-komponen pembentuknya sesuai dengan kondisi yang berurut. Komponen pada Puzzle 8 adalah berupa kotak-kotak bernomor atau bergambar yang dapat diacak sedemikian hingga menjadi suatu pola random yang dapat dicari jalan penyelesaiannya. Sesuai namanya, Puzzle 8 terdiri atas 8 kotak dan 1 tempat kosong yang dapat digerakkan dengan aturan tertentu. Aturan pergerakannya hanya berupa empat arah pergerakan, yaitu atas, bawah, kanan, dan kiri. Pada Puzzle 8, batasannya adalah ukuran 3×3. Sehingga, 8 kotak yang dimiliki hanya dapat bergerak dalam lingkup ukuran tersebut
Aplikasi ini merupakan aplikasi pemecahan puzzle dimana terdapat form untuk user agar dapat memasukkan angka dan kemudian dapat memilih algoritma apa yang digunakan dalam pemecahan puzzle tersebut. Didalam form terdapat dua buah algoritma yang dapat dipilih, yaitu Algoritma A Star dan Algoritma Greedy. Setelah user memilih algoritma yang digunakan, maka masing-masing algoritma dapat menampilkan jalur yang ditemukan, sehingga dari jawaban tersebut dapat dilihat bahwa algoritma mana yang lebih baik.
 Salah satu algoritma yang termasuk kedalam kategori informed search adalah Greedy Best first search yang dikenal juga dengan Greedy Search. Prinsip greedy adalah mengambil keputusan yang dianggap terbaik hanya untuk saat itu saja yang diharapkan dapat memberikan solusi terbaik secara keseluruhan. Oleh karena itu, pada setiap langkah harus dibuat keputusan yang terbaik dalam menentukan pilihan. Keputusan yang telah diambil pada suatu langkah tidak dapat diubah lagi pada langkah selanjutnya. Greedy Best first search seperti halnya algoritma yang menggunakan strategi Best first search lainnya mempunyai sebuah fungsi yang menjadi acuan kelayakan sebuah simpul yaitu fungsi evaluasi . Pada Greedy Best first search fungsi evaluasi tidak bergantung pada cost sebenarnya, tetapi hanya tergantung pada fungsi heuristic itu sendiri. Jika pada algoritma A Star pencarian yang dilakukan bergantung pada cost sebenarnya dari sebuah simpul yaitu , pada Greedy Best first search fungsi evaluasi hanya bergantung pada fungsi heuristic yang mengestimasikan arah yang benar, sehingga pencarian jalur dapat berlangsung dengan sangat cepat. Secara matematis fungsi evaluasi pada greedy search diberikan oleh = f(n) = h(n)
dengan: = h(n) total keseluruhan biaya grid yang ada di posisi salah.
Program ini akan menghitung nilai h(n) dengan memeriksa jumlah kotak yang berada di posisi yang salah. Semakin banyak jumlah kotak yang berada di posisi yang salah, maka mungkin saja masih banyak langkah yang harus ditempuh. Semakin sedikit jumlah kotak yang berada di posisi yang salah, maka mungkin saja puzzle sudah hampir mendekati penyelesaian. Rumus heuristic ini diterapkan pada kotak yang mungkin untuk digerakkan. Kemudian dipilih heuristic yang paling optimal diantara semua kemungkinan tadi. Kotak yang terpilih, akan digerakkan ke kotak yang kosong, lalu akan dibangkitkan lagi anak pohon dari status yang sekarang. Dan memulai lagi proses penentuan heuristic untuk kemungkinan kotak yang baru.

Gambar 1 Splash screen aplikasi
                                                  Gambar 6. Tampilan utama aplikasi
             Pada halaman gambar 6 user dapat memilih dua cara untuk memasukkan angka yang ingin diselesaikan dari posisi acak hingga posisi berurut. Cara yang dapat digunakan untuk memasukkan nomor adalah cara manual, yaitu user itu sendiri yang menginputkan angka ke dalam aplikasi atau dengan cara otomatis, yaitu aplikasi itu sendiri yang memasukkan angka dengan acak Jika inputan telah benar, maka user dapat memilih untuk mengerjakan soal tersebut menggunakan Algoritma A star atau Algoritma Greedy. User juga dapat memilih untuk mengarjakan soal tersebut dengan dua buah algoritma sekaligus, sehingga user dapat membandingkan hasil jalur yang ditemukan oleh kedua algoritma tersebut

Gambar 7 Hasil
A.    REFERENSI



DEPTH FIRST SEARCH
A.    PENGERTIAN DEPTH FIRST SEARCH
            DFS (Depth First Search) adalah salah satu algoritma penelusuran struktur graf/pohon berdasarkan kedalaman. Simpul ditelusuri dari root kemudian ke salah satu simpul anaknya (misalkan prioritas penelusuran berdasarkan anak pertama [simpul sebelah kiri]), maka penelusuran terus melalui simpul anak pertama dari simpul anak pertama level sebelumnya hingga mencapai level terdalam.
           Algoritma DFS adalah algoritma recursion yang memanfaatkan backtracking. Algoritma ini melakukan pencarian secara mendalam pada semua node dengan terus melakukan pencarian ke bawah selama memungkinkan. Jika tidak memungkinkan, algoritma ini akan beralih menggunakan backtracking.
B.     URAIAN LANGKA-LANGKAH ALGORITMA
Cara kerja algoritma Depth First Search dalam membangkitkan labirin pada permainan dijelaskan seperti pada Gambar 1. Pertama-tama tentukan ukuran labirin berdasarkan tingkatan level permainan. Untuk menghindari ukuran labirin yang terlalu kecil pada setiap level Penulis menggunakan rumus 15 + 2 x level saat ini. Kemudian piiih sel bertetangga yang belum pernah dikunjungi secara acak, Jika ada maka tambahkan pada stack lalu tandai bahwa sudah dikunjungi. Jika tidak ada sel maka lakukan runut balik dari sel teratas yang ada pada stack. Lakukan sampai stack kosong dan tidak ada lagi sel yang dapat dikunjungi.


                                                    Gambar 1 Kotak (Grid) Awal pada Labirin 9x9


                 Berikut ini adalah penjelasan cara pembuatan labirin yang digunakan, secara konsep untuk membangkitkan labirin dimulai dengan kotak (grid) yang merepresentasikan sel dan dinding-dindingnya. Dalam contoh kasus ini diasumsikan bahwa ukuran kotak labirin adalah 9x9 yang dimulai dari indeks 0 sampai 8 seperti pada Gambar 1
                                                        Gambar 2 Kotak (Grid) Awal pada Labirin 9x9

Untuk memudahkan penomoran pada kotak yang akan dijadikan labirin, maka dilakukan pemberian indeks pada setiap kotak dimulai pada indeks [0,0] hingga indeks [8,8] yang diisi dengan nilai 0 sampai 80 seperti pada Gambar 2.
               Gambar 3 Pemberian Nomor pada Setiap Kotak

Setiap satu sel mempunyai 4 dinding yaitu atas, kanan, bawah, dan kiri. Sehingga kotak yang memungkinkan untuk dijadikan sel pada kotak 9x9 ditunjukan pada Gambar 3.
                      Gambar 4 Sel-sel pada Kotak 9x9
Setiap kotak merupakan peubah yang dapat menampung nilai. Nilai 0 untuk mewakilkan sebagai jalur dan nilai 1 untuk mewakilkan dinding pada labirin. Pada awal inisialisasi peubah, setiap peubah diberi nilai 1 terlebih dahulu seperti pada Gambar 4.
                    Gambar 5 Nilai Awal pada Setiap Kotak

Dalam algoritma Depth-First Search, langkah awal adalah menentukan titik awal. Diasumsikan kotak awal yang dipilih pada kotak [1,1] Sehingga nilai pada kotak [1,1] diubah menjadi 0 yang menandakan bahwa kotak [1,1] telah menjadi jalur dalam labirin. Kemudian simpan penomoran kotak [1,1] ke dalam stack sesuai dengan penomoran yang telah dibuat sebelumnya. Setelah menentukan titik awal maka langkah selanjutnya adalah mengecek sel yang bertetangga dengan sel saat ini yang mungkin untuk dijadikan sel. Terdapat 2 kemungkinan sel yang dapat dibentuk, kemungkinan pertama yaitu ke atas pada kotak [3,1] atau ke kanan pada kotak [1,3]. Pengacakan dilakukan untuk menentukan arah yang akan dituju, dalam kasus ini Penulis melakukan pengacakan arah dengan bantuan algoritma Fisher-Yates. Diasumsikan hasil dari arah yang diacak adalah ke kanan sehingga pembuatan jalur di antara kotak saat ini dan kotak selanjutnya dilakukan dengan merubah kotak [1,3] dan kotak diantara sel saat ini dan sel yang akan dijadikan juga menjadi 0 seperti pada Gambar 5.
Gambar 6 Pembuatan Sel pada Kotak [1,3]
Kotak-kotak yang telah terubah menjadi 0 kemudian direpresentasikan menjadi pohon seperti Gambar 5 dengan pemberian nama pada simpul sesuai penomoran pada Gambar 2.
                 Gambar 7 Pengubahan dari Kotak ke Dalam Bentuk Pohon

Ketika tahapan ini menemui kondisi dimana tidak ada lagi sel tetangga yang dapat dijadikan jalur labirin seperti pada Gambar 7. Algoritma Depth-First Search akan mulai merunut balik (backtracking) dengan cara mengambil sel teratas dari stack.
                                                                 Gambar 8 Kondisi Saat Backtracking

Proses ini dilakukan terus menerus hingga tidak ada lagi kotak yang bisa dijadikan sel seperti pada Gambar 8 dan dihasilkan struktur pohon seperti pada Gambar 9.

            Gambar 9 Pengubahan dari Seluruh Kotak ke Dalam Bentuk Pohon
                                                                          Gambar 10 Hasil Struktur Pohon
·        Perancangan cepat prototype yaitu merancang prototype dengan membuat desain sementara yang berfokus pada penerapan algoritma Depth-First Search sebagai maze generator dan penyesuaian cerita game yang akan dibuat.
·        Membangun Prototype, pada tahap ini prototype yang sudah dirancang sementara ataupun sudah jadi dievaluasi apakah game sudah sesuai kebutuhan user. Apabila sudah desain sebelumnya dibangun kembali.
·        Selanjutnya setelah sistem sudah menjadi suatu perangkat lunak yang siap pakai, harus diuji dahulu sebelum digunakan.
·         Perubahan desain dan prototype, pada tahap ini dilakukan evaluasi terhadap rancangan game. Apakah rancangan prototype game dan skenario yang dibuat sudah sesuai dengan yang diharapkan. Jika tidak, maka prototype direvisi dengan mengulang langkah sebelumnya.
·         Impelementasi Sistem, yaitu menerapkan game kepada pengguna untuk sarana pembelajaran bagi anak-anak khususnya kelas IV. Pada tahap ini permainan labirin telah sesuai dengan kebutuhan yang telah melalui proses pengujian yang telah dianggap berhasil. Kemudian permainan labirin akan di Build ke PC sehingga permainan bisa diaplikasikan pada komputer supaya bisa dimainkan untuk anak-anak.

A.    URAIAN IMPLEMENTASI ALGORITMA DALAM STUDI KASUS
Penerapan pada permainan labirin metamorfosis terletak pada pembuatan jalur labirin. Setiap kali dimulai permainan akan melakukan pembuatan jalur labirin dengan menggunakan algoritma Depth-First Search. Contoh penerapan algoritma Depth-First Search bisa dilihat ketika permainan mengacak labirin untuk level 1. pada level 1 ukuran kotak (grid) adalah 17x17 seperti pada Gambar 10.
                                                         Gambar 11 Penomoran pada Kotak (grid) 17x17

                               Pada Unity ketika permainan berada pada level 1 dan dijalankan, bentuk labirin dapat dilihat kotak (grid) secara keseluruhan dari scene view seperti pada Gambar 11.

                          Gambar 12 Contoh Tampilan Labirin Level 1 pada Scene View
Format nama yang diberikan pada dinding labirin yaitu <huruf_d><posisiX><posisiZ>_<penomoran_grid>, sehingga pada kotak[0,0]. diberi nama d0,0_0. Sedangkan pada jalur labirin diberikan format nama yaitu <huruf_EP>,<penomoran_grid> , sehingga pada kotak[1,1] diberi nama EP,18.
Hasil Pengujian
Setelah algoritma Depth-First Search berhasil diimplementasikan pada Unity untuk membuat arena labirin, dilakukan pengujian yang bertujuan untuk menguji kriteria labirin sempurna pada setiap level permainan labirin metamorfosis. Level permainan labirin metamorfosis terdiri dari 12 level, masing-masing level dilakukan pengujian sebanyak lima kali sehingga didapatkan 60 data sampel seperti pada Tabel 1.

Dari Tabel 1 pada kolom loop dan sel terisolasi menampilkan jumlah kondisi yang ) berarti solusi antar satu sel ke sel lainnya mepunyai tepatüditemukan sedangkan tanda ( satu jalur yang benar.
Setelah didapatkan 60 data sampel seperti pada Tabel 1, dilakukan analisa untuk mengetahui hasil level labirin telah memenuhi kriteria labirin sempurna. Pada Tabel 1 diperoleh semua jumlah loop pada labirin yang telah diciptakan oleh permainan berjumlah nol, semua sel terisolasi berjumlah nol, dan semua labirin mempunya tepat satu jalur yang benar.
A.    REFERENSI


Komentar

Posting Komentar

Postingan populer dari blog ini

PROGRAM METODE BISEKSI DAN TABULASI

A. Metode Biseksi      Contoh soal :  f(x) = xe⁻   ͯ + 1 Algoritma Deskripsi Definisikan fungsi f(x) yang akan dicari akarnya Tentukan nilai a dan b Tentukan torelansi e dan iterasi maksimum N Hitung f(a) dan f(b) Jika f(a).f(b)>0 maka proses dihentikan karena tidak ada akar, bila tidak dilanjutkan Hitung x=(a+b)/2 Hitung f(x) Bila f(a).f(x)<0 maka b=x dan f(b)=f(x), bila tidak a=x dan f(a)=f(x) Jika |b-a|<e atau iterasi>iterasi maksimum maka proses dihentikan dan didapatkan akar = x Flowchart      3. Program          Implementasi pada program menggunakan bahasa pemograman phyton           Test Program B. Metode Tabulasi       Contoh Soal :  F(x) = X 2  – 27 Algoritma Deskripsi Definisikan fungsi F(x) = X 2  – 27 Tentukan batas bawah, batas atas, nilai x dan jumlah itera...

UTS Kecerdasan Buatan

   Nama: Larasati Mayan Pramesti    NIM: 1730511081 1.  Dalam bahasan Kecerdasan Buatan sebuah software/hardware disebut cerdas jika memiliki kemampuan untuk  Searching, Reasoning, Planning,  dan  Learning . Jelaskanlah pernyataan tersebut disertai dengan Contoh!  Jawaban: 1. Searching di dalam AI (Artificial Intellegence) adalah salah satu metode penyelesaian masalah dengan pencarian solusi pada suatu permasalahan yang dihadapi. Contohnya pada algoritma A-star, metode yang digunakan secara luas dalam mencari jalur (path finding) dan grafik melintang (graph traversal), proses plotting sebuah jalur melintang secara efisien antara titik-titik, disebut node.  2. Reasoning (penalaran) yang merupakan teknik penyelesaian masalah dengan cara merepresentasikan masalah ke dalam basis pengetahuan (knowledge base) menggunakan logic atau Bahasa formal (Bahasa yang dipahami computer). Contohnya : Apel adalah buah-buahan. Itu me...