OLEH: WISNU HADI S (0934010144) RAKHMAD SATRIYA (0934010159) DIQY SEVTYAN (0934010161) DOSEN : BIMO GUMELAR, S. KOM JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS PEMBANGUNAN NASIONALVETERANJAWA TIMUR 2011 KATA PENGANTAR
Puji syukur kehadirat Allah Yang Maha Esa atas limpahan Hidayah- Nya serta Rahmad-Nya, sehingga kami dapat menyelesaikan Tugas Ke 3 Mata Kuliah Kecerdasan Buatan Pernyataan Gerbang Logika,Mencari 10 Algoritma Dalam Informatika dan Jaringan Semantik. Penyusunan Tugas ini ditujukan sebagai syarat untuk mengikuti Mata Kuliah Kecerdasan Buatan. Tugas ini diharapkan dapat memberikan solusi bagi Mahasiswa terutama Mahasiswa dalam bidang IT, dalam hal mendalami tentang Kecerdasan Buatan. Semoga Laporan Resmi ini bermanfaat bagi Mahasiswa terutama dalam bidang IT agar memahami lebih jelas tentang pernyataan Gerbang Logika,Algoritma Dalam Informatika Dan Jaringan Semantik. Terima kasih kami ucapkan kepada semua pihak yang telah membantu dalam bentuk materi dan saran, serta dibuat dengan segala masukan dan kekurangan yang telah diberikan pada kami sehingga Laporan ini dapat selesai. Kami berharap kepada semua pihak dengan segala kritik dan saran yang bersifat membangun, sangat Kami harapkan untuk dimasa yang akan datang agar bisa menyempurnakan makalah ini, sebab makalah ini masih banyak kekurangannya.
Surabaya, 25 Oktober 2011
Penulis
BAB 1 PENDAHULUAN
1.1 LATAR BELAKANG Logika sebagai ilmu pengetahuan merupakan sebuah ilmu pengetahuan di mana obyek materialnya adalah berpikir (khususnya penalaran/proses penalaran) dan obyek formal logika adalah berpikir/penalaran yang ditinjau dari segi ketepatannya. Representasi Logika - Representasi ini menggunakanekspresi-ekspresi dalam logika formal untuk merepresentasikan basis pengetahuan.Representasi logika terdiri dari dua jenis yaituKalkulus proposisional (Propositional logic) danKalkulus predikatif (Predicate logic). Kalkulus Proposisional (Propositional Logic).Proposisi adalah suatu model untuk mendeklarasikansuatu fakta. Lambang-lambang proposisional menunjukkan proposisi atau pernyataantentang segala sesuatu yang dapat benar atausalah. Dalam matematika dan komputasi, algoritma atau algoritme 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, dalam hal ini berbeda dengan heuristik. Algoritma sering mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan) sampai tugasnya selesai. Jaringan semantik merupakan salah satu yang dipelajari dalam materi Artificial Inteligence (Kecerdasan Buatan) . Dalam jaringan semantik terdapat gambaran pengetahuan grafis yang menunjukkan hubungan antar berbagai objek, terdiri dari lingkaran-lingkaran yang dihubungkan dengan anak panah yang menunjukkan objek dan informasi tentang objek-objek tersebut.
1.2 MASALAH Dari latar belakang di atas didapat beberapa masalah, antara lain: 1. Apakah Representasi Logika itu? 2. Apa yang dimaksud Algoritma dalam pemrograman khususnya di Informatika? 3. Apa yang dimaksud dengan Jaringan Semantik beserta contohnya?
1.3 TUJUAN Dalam membuat laporan ini, kami mempunyai beberapa tujuan, yaitu: 1. Mengetahui bagaimana pernyataan dari Representasi Logika. 2. Mengetahui lebih lanjut mengenai Algoritma. 3. Mengetahui lebih lanjut tentang Jaringan Semantik berikut contohnya.
1.4 MANFAAT Selain itu, diharapkan laporan ini dapat mempunyai banyak manfaat, antara lain: 1. Mengetahui tentang pernyataan dari Representasi Logika. 2. Menambah informasi tentangAlgoritma dalam pemrograman khususnya di Informatika. 3. Bisa menerapkan Jaringan Semantik.
BAB II LANDASAN TEORI
2.1 REPRESENTASI LOGIKA Representasi Pengetahuan (Knowledge Representation)dimaksudkan untuk menangkap sifat- sifatpenting masalah dan membuat infomasidapat diakses oleh prosedur pemecahanmasalah. Bahasa representasi harus dapat membuatseorang programmer mampu mengekspresikanpengetahuan untuk mendapatkan solusi suatumasalah. Secara singkat Mylopoulos dan Levesquemengklasifikasikan susunan atau pola representasi menjadi empat katagori : 1. Representasi Logika - Representasi ini menggunakan ekspresi-ekspresi dalam logika formaluntuk merepresentasikan basis pengetahuan. 2. Representasi Prosedural Menggambarkan pengetahuan sebagai sekumpulan instruksi untuk memecahkan suatu masalah. Dalam sistem yang berbasis aturan, aturan if-then dapat ditafsirkan sebagai sebuah prosedur untuk mencapai tujuan pemecahan masalah. 3. Representasi Network - Menangkap pengetahuansebagai sebuah graf dimana simpul-simpulnyamenggambarkan obyek atau konsepdalam masalah yang dihadapi, sedangkanlengkungan-lengkungannya menggambarkanhubungan atau asosiasi antar mereka.Contohnya adalah jaringan semantik. 4. Representasi Terstruktur - Memperluas networkdengan cara membuat setiap simpulnya menjadisebuah struktur data kompleks yang berisitempat-tempat bernama slot dengan nilai-nilaitertentu. Nilai-nilai ini dapat merupakan datanumerik atau simbolik sederhana, pointer kebingkai (frame) lain, atau bahkan merupakanprosedur untuk mengerja kan tugas tertentu.Contoh : skrip (script), bingkai (frame) danobyek (object). Representasi logika terdiri dari dua jenis yaitu Kalkulus proposisional (Propositional logic) dan Kalkulus predikatif (Predicate logic). Kalkulus Proposisional (Propositional Logic)Proposisi adalah suatu model untuk mendeklarasikan suatu fakta. Lambang-lambang proposisional menunjukkan proposisi atau pernyataan tentang segala sesuatu yang dapat benar atausalah. Lambang-lambang kalkulus proposisional : 1. Lambang pernyataan proposisionalP,Q,R,S,T,... (disebut sebagai atom-atom) 2. Lambang kebenaranbenar (True) , salah (False) 3. Lambang penghubung konjungsi,disjungsi,negasi,implikasi,Bi-implikasi,equivalen.
BAB III PEMBAHASAN DAN IMPLEMENTASI
3.1 PROPOSITION LOGIC 1.Konjungsi (AND) Konjungsi adalah suatu pernyataan majemuk yang menggunakan perakit "dan". Contoh pernyataan nya adalah sebagai berikut: Diqy makan nasi dan minum kopi Pernyataan tersebut ekivalen dengan dua pernyataan tunggal berikut: " Diqy makan nasi." dan sekaligus " Diqy minum kopi." dalam hal mana pernyataan di atas bernilai benar dan dalam hal mana bernilai salah dalam empat kasus berikut, yaitu: (1) Diqy memang benar makan nasi dan ia juga minum kopi. (2) Diqy makan nasi namun ia tidak minum kopi. (3) Diqy tidak makan nasi namun ia minum kopi. (4) Diqy tidak makan nasi dan ia tidak minum kopi. Pada kasus pertama,Diqy memang benar makan nasi dan ia juga minum kopi.Dalam kasus seperti ini, tidaklah mungkin Anda akan mengatakan pernyataan tadi bernilai salah. Alasannya, pernyataan tadi sesuai dengan kenyataannya. Pada kasus kedua,Diqy makan nasi namun ia tidak minum kopi. Dalam hal ini,tentunya Anda akan menyatakan bahwa pernyataan tersebut majemuk.pernyataan tadi bernilai salah karena meskipun Diqy sudah makan nasi namun ia tidak minum kopi. Pada kasus ketiga, Diqy tidak makan nasi meskipun ia sudah minum kopi. Sebagaimana kasus kedua tadi, Anda akan menyatakan bahwa pernyataan tersebut majemuk tadi bernilai salah karena Diqy tidak makan nasi sebagaimana yang dinyatakan bahwa Diqy makan nasi dan minum kopi. Pada kasus keempat, Diqy tidak makan nasi dan ia tidak minum kopi. Dalam hal ini Anda akan menyatakan bahwa pernyataan tersebut majemuk.pernyataan tadi bernilai salah karena tidak ada kesesuaian antara yang dinyatakan dengan kenyataan yang sesungguhnya. Berdasar penjelasan di atas, dapatlah disimpulkan bahwa suatu konjungsi p bernilai benar hanya jika komponen-komponennya, yaitu baik p maupun q, keduanya bernilai benar, sedangkan nilai kebenaran yang selain itu akan bernilai salah. Sebagaimana ditunjukkan pada tabel kebenaran berikut: P Q P ^ Q T T T T F F F T F F F F
2.DISJUNGSI (OR) Disjungsi adalah pernyataan majemuk yang menggunakan perakit "atau". Contoh pernyataan nya adalah sebagai berikut: "Diqymakannasiatauminum kopi." Sekarang dalam hal mana pernyataan di atas akan bernilai benar dalam empat kasus berikut, yaitu: (1) Diqy memang benar makan nasi dan ia juga minum kopi. (2) Diqy makan nasi namun ia tidak minum kopi. (3) Diqy tidak makan nasi namun ia minum kopi. (4) Diqy tidak makan nasi dan ia tidak minum kopi. Pada kasus pertama, Diqy memang benar makan nasi dan ia juga minum kopi. Dalam kasus seperti ini, tidaklah mungkin Anda akan mengatakan pernyataan tadi bernilai salah, karena pernyataan tadi sesuai dengan kenyataannya. Pada kasus kedua,Diqy makan nasi namun ia tidak minum kopi. Dalam hal ini, tentunya Anda akan menyatakan bahwa pernyataan majemuk tadi bernilai benar karena Diqy sudah benar makan nasi meskipun ia tidak minum kopi sebagaimana yang dinyatakan. Pada kasus ketiga, Diqy tidak makan nasi namun ia minum kopi. Sebagaimana kasus kedua tadi, Anda akan menyatakan bahwa pernyataan majemuk tadi bernilai benar karena meskipun Diqy tidak makan nasi namun ia sudah minum kopi sebagaimana yang dinyatakan. Pada kasus keempat, Diqy tidak makan nasi dan ia tidak minum kopi. Dalam hal ini Anda akan menyatakan bahwa pernyataan majemuk tadi bernilai salah karena tidak ada kesesuaian antara yang dinyatakan dengan kenyataan yang sesungguhnya.
Pernyataan menyatakan Diqy makan nasi atau minum kopi namun kenyataannya,Diqy tidak melakukan hal itu. Berdasar penjelasan di atas, dapatlah disimpulkan bahwa suatu disjungsi p bernilai salah hanya jika komponen-komponennya, yaitu baik p maupun q, keduanya bernilai salah, yang selain itu akan bernilai benar sebagaimana ditunjukkan pada tabel kebenaran berikut: P Q P v Q T T T T F T F T T F F F
3.Implikasi Misalkan ada dua pernyataan p dan q. Yang sering menjadi perhatian para ilmuwan maupun matematikawan adalah menunjukkan atau membuktikan bahwa jika p bernilai benar akan mengakibatkan q bernilai benar juga. Untuk mencapai keinginannya tersebut,diletakkanlah kata "Jika" sebelum pernyataan pertama lalu diletakkan juga kata "maka" diantara pernyataan pertama dan pernyataan kedua, sehingga didapatkan suatu pernyataan majemuk yang disebut dengan implikasi, pernyataan bersyarat, kondisional atau hypothetical dengan notasi "" seperti ini: p Berikut ini adalah contoh pernyataan: Jika hari hujan maka Diqy membawa payung. Dalam hal ini dimisalkan: p: Hari hujan. q: Diqy membawa payung. Dalam hal manakah pernyataan tadi akan bernilai benar atau salah untuk empat kasus berikut, yaitu: 1) Hari benar-benar hujan dan Diqy benar-benar membawa payung. 2) Hari benar-benar hujan namun Diqy tidak membawa payung. 3) Hari tidak hujan namun Diqy membawa payung. 4) Hari tidak hujan dan Diqy tidak membawa payung.
Pada kasus pertama, hari benar-benar hujan dan Diqy benar-benar membawa payung sebagaimana yang ia nyatakan. Bagaimana mungkin ia akan dinyatakan berbohong dalam kasus ini? Dengan demikian jelaslah bahwa kedua komponen yang sama-sama bernilai benar itu telah menyebabkan pernyataan majemuk (implikasi) yang dinyatakan tadi akan bernilai benar. Pada kasus kedua, hari itu benar-benar hujan akan tetapi Diqy tidak membawa payung sebagaimana yang seharusnya ia lakukan seperti yang telah dinyatakannya, bagaimana mungkin pernyataan Diqy tadi akan dinilai benar? Dengan kata lain, komponen p yang bernilai benar namun tidak diikuti dengan komponen q yang seharusnya bernilai benar juga, akan menyebabkan pernyataan majemuk (implikasi) yang dinyatakan tadi akan bernilai salah. Akhirnya, untuk kasus ketiga dan keempat, di mana hari itu tidak hujan, tentunya Anda tidak akan menyebut pernyataan majemuk (implikasi) tersebut sebagai pernyataan yang salah, karena Diqy hanyalah menyatakan bahwa sesuatu akan terjadi yaitu dia akan membawa payung jikalau hari hujan. Dengan demikian jelaslah bahwa implikasi p hanya akan bernilai salah untuk kasus kedua di mana p bernilai benar namun q-nya bernilai salah, sedangkan yang selain itu implikasi p tabel kebenaran berikut ini: P Q P Q T T T T F F F T T F F T
4.Biimplikasi Biimplikasi atau bikondisional adalah pernyataan majemuk dari dua pernyataan p dan q yang dinotasikan dengan p dapat dibaca: "p jika dan hanya jika q" atau "p bila dan hanya bila q. Tabel kebenaran dari p :
P Q P Q T T T T F F F T F F F T Dengan demikian jelaslah bahwa biimplikasi dua pernyataan p dan q hanya akan bernilai benar jika kedua pernyataan tunggalnya bernilai sama. Contoh biimplikasi: (1) Suatusegitigaadalahsegitigasiku-sikujikadanhanyajikaluaspersegipada Hipotenusan nyasamadenganjumlahluasdaripersegi-persegipadakeduasisi yang lain. (2) Suatu segitiga adalah segitiga sama sisi bila dan hanya bila ketiga sisinya sama.
3.2 ALGORITMA DALAM INFORMATIKA 3.2.1 AlgoritmaGenetika Algoritma Genetika adalah algoritma yang memanfaatkan proses seleksi alamiah yang dikenal dengan proses evolus yang dikembangkan dari proses pencarian solusi menggunakan pencarian acak, ini terlihat pada proses pembangkitan populasi awal yang menyatakan sekumpulan solusi yang dipilih secara acak.Berikutnya pencarian dilakukan berdasarkan proses-proses teori genetika yang memperhatikan pemikiran bagaimana memperoleh individu yang Lebih baik, sehingga dalam proses evolusi dapat diharapkan diperoleh individu yang terbaik. Struktur umum dari suatu algoritma genetika dapat didefinisikan dengan langkah-langkah sebagai berikut: 1. Membangkitkan populasi awal, Populasi awal ini dibangkitkan secara random sehingga didapatkan solusi awal. Populasi itu sendiri terdiri dari sejumlahkromosom yang merepresentasikan solusi yang diinginkan. 2. Membentuk generasi baru, Dalam membentuk digunakan tiga operator yang telah disebut di atas yaitu operator reproduksi/seleksi, crossover dan mutasi.Proses ini dilakukan berulang-ulang sehingga didapatkan jumlah kromosomyang cukup untuk membentuk generasi baru dimana generasi baru in merupakan representasi dari solusi baru. 3. Evaluasi solusi, Proses ini akan mengevaluasi setiap populasi dengan menghitung nilai fitness setiap kromosom dan mengevaluasinya sampaiterpenuhi kriteria berhenti. Bila kriteria berhenti belum terpenuhi maka akandibentuk lagi generasi baru dengan mengulangi langkah 2. Beberapa kriteria berhenti yang sering digunakan antara lain: 1. Berhenti pada generasi tertentu. 2. Berhenti setelah dalam beberapa generasi berturut-turut didapatkan nilai fitness tertinggi tidak berubah. 3. Berhenti bila dalam n generasi berikut tidak didapatkan nilai fitness yanglebih tinggi
Cross Over (Pindah Silang) merupakan salah satu operator dalam algoritma genetika yang melibatkan dua induk untuk menghasilkan keturunan yang baru. Cross over dilakukan dengan melakukan pertukaran gen dari dua induk secara acak. Macam-macam Cross-Over yang banyak digunakan antara lain: 1. pertukaran gen secara langsung dan 2. pertukaran gen secara aritmatika. 3. Proses cross over dilakukan pada setiap individu dengan probabilitas crossover yang ditentukan. Mutasi Gen merupakan operator yang menukar nilai gen dengan nilai inversinya, misalnya gennya bernilai 0 menjadi 1. Setiap individu mengalami mutasi gen dengan probabilitas mutasi yang ditentukan. Mutasi dilakukan dengan memberikan nilai inversi atau menggeser nilai gen pada gen yang terpilih untuk dimutasikan. Algoritma genetik yang umum menyaratkan dua hal untuk didefinisikan: 1. representasi genetik dari penyelesaian 2. fungsi kemampuan untuk mengevaluasinya. Siklus Algoritma Genetika
Gambar 1: Siklus Algoritma Genetika Hal-hal yang harus dilakukan untuk menggunakan Algoritma Genetika yaitu : 1. Mendefinisikan individu, dimana individu menyatakan salah satu solusi (penyelesaian) yang mungkin dari permasalahan yang diangkat. 2. Mendefinisikan nilai fitness, yang merupakan ukuran baik-tidaknya sebuah individu atau baik-tidaknya solusi yang didapatkan. 3. Menentukan proses pembangkitan populasi awal. Hal ini biasanya dilakukan dengan menggunakan pembangkitan acak seperti random-walk. 4. Menentukan proses seleksi yang akan digunakan. 5. Menentukan proses perkawinan silang (cross-over) dan mutasi gen yang akan digunakan.
CONTOH Evolusi pada ikan,generasi yang terbaik akan bertahan dan menciptakan generasi baru.dimana generasi yang lemah tersingkir.
Populasi ikan 20 ekor,makanan 40 buah. Ikan terbaik 26 ekor,medium 14 ekor
Gambar 2:Generasi 0 Gambar 3:Generasi 15 Ikan terbaik 51 ekor,medium 32 ekor Ikan terbaik 64 ekor,medium 44 ekor
Gambar 4:Generasi 234 Generasi 5: Generasi 1200 3.2.2 Algoritma Insertion Sort Algoritma insertion sort pada dasarnya memilah data yang akan diurutkan menjadi dua bagian, yang belum diurutkan (meja pertama) dan yang sudah diurutkan (meja kedua). Elemen pertama diambil dari bagian array yang belum diurutkan dan kemudian diletakkan sesuai posisinya pada bagian lain dari array yang telah diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang belum diurutkan. CONTOH Gambar 6: Contoh insertion sort 3.2.3 Algoritma Selection Sort Mari kita menelusuri bagaimana algoritma ini berfungsi terhadap satu paketkartu. Asumsikan bahwa kartu tersebut akan diurutkan secara ascending. Padaawalnya, kartu tersebut akan disusun secara linier pada sebuah meja dari kiri kekanan, dan dari atas ke bawah. Pilih nilai kartu yang paling rendah, kemudiantukarkan posisi kartu ini dengan kartu yang terletak pada pojok kiri atas meja. Lalucari kartu dengan nilai paling rendah diantara sisa kartu yang tersedia. Tukarkankartu yang baru saja terpilih dengan kartu pada posisi kedua. Ulangi langkah langkah tersebut hingga posisi kedua sebelum posisi terakhir dibandingkan dandapat digeser dengan kartu yang bernilai lebih rendah.Ide utama dari algoritma selection sort adalah memilih elemen dengan nilai palingrendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai dari i dimulaidari 1 ke n, dimana n adalah jumlah total elemen dikurangi 1. CONTOH Gambar 7:Contoh selection sort 3.2.4 Algoritma Merge Sort Sebelum mendalami algoritma merge sort, mari kita mengetahui garis besar dari konsep divide and conquer karena merge sort mengadaptasi pola tersebut. Pola Divide and Conquer Beberapa algoritma mengimplementasikan konsep rekursi untuk menyelesaikan permasalahan. Permasalahan utama kemudian dipecah menjadi sub-masalah, kemudian solusi dari sub-masalah akan membimbing menuju solusi permasalahan utama.Pada setiap tingkatan rekursi, pola tersebut terdiri atas 3 langkah. 1. Divide Memilah masalah menjadi sub masalah.Memilah elemen elemen dari rangkaian data menjadi dua bagian. 2. Conquer Selesaikan sub masalah tersebut secara rekursif. Jika sub-masalah tersebut cukup ringkas dan sederhana, pendekatan penyelesaian secara langsung akan lebih efektif.Conquer setiap bagian dengan memanggil prosedur merge sort secara rekursif
3. Kombinasi Mengkombinasikan solusi dari sub-masalah, yang akan membimbing menuju penyelesaian atas permasalahan utama.Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan.
CONTOH
Gambar 8: Contoh Merge Sort 3.2.5 Algoritma Quicksort Quicksort ditemukan oleh C.A.R Hoare. Seperti pada merge sort, algoritma ini jugaberdasar pada pola divide-and-conquer. Berbeda dengan merge sort, algoritma inihanya mengikuti langkah langkah sebagai berikut : 1. Divide Memilah rangkaian data menjadi dua sub-rangkaian A[pq-1] dan A[q+1r] dimana setiap elemen A[pq-1] adalah kurang dari atau sama dengan A[q] dan setiap elemen pada A[q+1r] adalah lebih besar atau sama dengan elemen pada A[q]. A[q] disebut sebagai elemen pivot. Perhitungan pada elemen q merupakan salah satu bagian dari prosedur pemisahan. 2. Conquer Mengurutkan elemen pada sub-rangkaian secara rekursif Pada algoritma quicksort, langkah kombinasi tidak di lakukan karena telah terjadi pengurutan elemen elemen pada sub- array.
CONTOH
Gambar 9: Contoh Quick Sort
3.2.6 ALGORITMA DYNAMICPROGRAMMING Dynamic Programming merupakan sebuah algoritmapemecahan masalah dengan cara menguraikan solusimenjadi sekumpulan langkah (step) atau tahapan (stage)sedemikian sehingga solusi dai persoalan dapat dipandangdari serangkaian keputusan yang saling berkaitan. Pada penyelesaian metode in kita menggunakan persyaratan optimasi dan kendala untuk membatasi sejumlah pilihanyang harus dipertimbangkan pada suatu tahap.Algoritma Dynamic Programming memiliki karakteristik sebagai berikut. 1. Persoalan dapat dibagi mejadi beberapatahap(stage), yang pada setiap tahap hanya diambilsatu keputusan yang optimal. 2. Masing-masing tahap terdiri dari sejumlahstatus(state) yang berhubungan dengan tahaptersebut. 3. Hasil keputusan yang diambil pada tahapditransformasikan dari status yang bersangkutan kestatus berikutnya pada tahap berikutnya. 4. Ongkos (cost) pada suatu tahap bergantung padaongkos tahap-tahap sebelumnya dan meningkatsecara teratur dengan bertambahnya jumlah tahapan 5. Keputusan terbaik pada suatu tahap bersifatindependen terhadap keputusan yang dilakukantahap sebelumnya. 6. Adanya hubungan rekursif yangmengidentifikasikan keputusan terbaik untuk setiapstatus pada tahap k memberikan keputusan terbaik untuk tahap sebelumnya. 7. Prinsip optimalitas berlaku pada persoalan tersebut. Ciri utama dari dynamic programming adalah prinsip optimalitas yang berbunyi : jika solusi total optimal, maka bagian solusi sampai tahap ke-k juga optimal. Dari karakteristik poin ke-4 di atas, kita dapat menyimpulkan bahwa algoritma Dynamic Programming dapat diaplikasikan apabila peningkatkan ongkos secara linear dan diskrit sehingga optimasi parsial dapat dilakukan.Dalam menyelesaikan persoalan dengan Dynamic Programming, kita dapat menggunakan 2 pendekatan berbeda yaitu: Maju (forward atau up-down) : bergerak mulai dari tahap 1, terus maju ke tahap 2,3,..,n. Urutan variabel keputusan adalah x1,x2,...,xn Mundur(backward atau bottom-up) : bergerak mulai dari tahap n, terus mundur ke tahap n-1,n-2,..,2,1. Urutan variabel keputusan adalah xn xn-1,x2,x1. Secara umum ada 4 langkah yang dilakukan dalam mengembangkan algoritma program dinamis: 1. Karakteristikkan struktur solusi optimal. 2. Definisikan secara rekursif nilai solusi optimal. 3. Hitung nilai solusi optimal secara maju atau mundur. 4. Konstruksi solusi optimal.
CONTOH METODE PERHITUNGAN EDIT DISTANCE MENGGUNAKAN DYNAMIC PROGRAMMING. Pada permasalahan string edit distance ini, nilai edit distance D menjadi ongkos (cost) yang harus dicari solusi optimum parsial maupun globalnya. Misalnya, diketahui 2 buah yaitu string W dan string V, di mana W = W1...Wi merupakan string yang akan diperbaiki, dan V = V1...Vj merupakan string yang akan dihitung nilai edit distancenya terhadap string W, maka persamaan umum rekursif dari edit distance dengan menggunakan algoritma Dynamic Programming prinsip pendekatan maju (forward atau up-down) dapat kita bentuk sebagai berikut.
Untuk persoalan ini, kita tentukan nilai mismatch penalty P(i, j) = 0 ,jika Wi = Vj dan P(i, j) = 1, jika Wi Vj ,serta nilai gap penalty d (i, j) = 1,jika ada karakter -, dan d (i, j) = 0 ,jika tidak ada.Pada bagian rekurens, persamaan (1) menunjukkan bahwa perlu dilakukan penggantian (substitution) jika Wi Vj agar karakter Wi = Vj . Sedangkan, persamaan (2) menunjukkan bahwa perlu dilakukan pemasukkan karakter (insertion) serta persamaan (3) menunjukkan bahwa perlu dilakukan penghapusan karakter (deletion).Untuk menyimpan nilai-nilai edit distance dari setiap langkahnya, maka kita bentuk suatu matriks M berdimensi m x n dimana m=[panjang(V) +1] dan n=[panjang(W) + 1] dimana M[0,0] merupakan tempat untuk menyimpan nilai basis yaitu 0.
Tabel 1: Matriks Nilai Edit Distance Tabel 2: langkah Penetuan Nilai Matrik M[0,J]
Tabel 3:Langkah Penentuan Nilai Matrik M[1,J] Jika langkah-langkah tersebut dilanjutkan dengan cara yang sama hingga langkah terakhir yaitu langkah ke-5, maka...
Tabel 4:Langkah Penentuan Nilai Matrik M[4,J] Selanjutnya, kita akan melakukan konstruksi solusi optimal yang dibaca nilai D(4,4). Maka, solusi-solusi optimal parsial yang dipilih untuk membentuk solusi optimal global adalah sebagai berikut.
Tabel 5:Konstruksi Solusi Optimal Dengan demikian, edit distance dari V=PARKterhadap W=PARL bernilai D(i,j) = 1. Penggunaan algoritma Dynamic Programming untuk kasus ini, jika dilihat dari langkah-langkah yang sudah dibentuk di atas, langkah -langkah tersebut berupa traversal matriks M yang berdimensi m x n. Sedangkan,nilai edit distance yang ditentukan dilakukan dengan sendirinya akibat sifat rekursifitas persamaan edit distance yang dibentuk. Oleh karena itu, kompleksitas dari penggunaan algoritma ini sebesar O(mn), lebih baik dari metode penyelesaian masalah dengan exhaustive search.Untuk melihat perbedaan nilai edit distance jika string PARL dibandingkan dengan string yang lain,sekarang kita definisikan V=SPEAK dan W=PARL.Dalam hal ini, i j dan ada d (i, j) = 1, karena panjang(V ) panjang(W) . Langkah-langkah penentuan nilai edit distance dan juga konstruksi solusi optimalnya tidak dijelaskan secara mendetail karena keterbatasan waktu dan tempat. Namun, kita dapat menentukan nilai edit distance dari string V=PEARL terhadap W=PARL menurut definisi yaitu sebagai berikut.
Apabila teknik ini diimplementasikan pada aplikasi word processor ataupun search engine, maka program akan memberikan feedback berupa string W dengan nilai D(PARL, W) yang paling kecil, dimana W merupakan kumpulan string yang ada pada database.Jadi, jika kita merujuk ke contoh di atas, program word processor akan mengoreksi string PARL denganPARK, bukan dengan PEARL. Begitu juga pada Search Engine Google. Google, misalnya, akan memberikan feedback berupa pertanyaan Did you mean PARK ?. Ini dikarenakan nilai D(PARL, PARK)<D(PARL,PEARL).
Kesimpulan yang bisa ditarik dari penggunaan algoritma Dynamic Programming untuk kasus String Edit Distance adalah bahwa algoritma ini bekerja cukup baik dengan kompleksitas yang lebih kecil dari metode exhaustive search dan tingkat akurasi pencarian solusi optimal yang lebih tinggi dari algoritma greedy. Namun, akibat penggunaan fungsi cost yang bersifat rekursif,maka akan menyebabkan penggunaan kapasitas yang cukup besar terhadap memori internal komputer saatmengeksekusi fungsi ini. Selama tidak ada permasalahan yang berkenaan dengan kapasitas memori internal,algoritma Dynamic Programming merupakan pilihan yang paling sesuai.Penerapan algoritma Dynamic Programming untuk mencari solusi masalah String Edit Distance banyakdigunakan untuk memecakan berbagai kasus yang serupa,khususnya di bidang disiplin ilmu Bioinformatika.Beberapa perluasan dari metode tersebut diterapkan pada analisis sequens DNA atau protein. Sekuen DNA yang terdiri dari kombinasi basa ATCG, dapat dibandingkan dengan sekuen lain. 3.2.7 Algoritma Brute force Brute force adalah sebuah pendekatan yang sangat jelas(straightforward) untuk memecahkan suatu persoalan, biasanya didasarkan pada problem statement dan definisi konsep yang dilibatkan. Algoritma brute force memecahkan masalah dengan sangat sederhana, langsung dan dengan cara yang jelas . Cara kerja Algoritma Brute Force: 1. Enumerasi (list) setiap solusi yang mungkin dengan cara yang sistematis. 2. Evaluasi setiap kemungkinan solusi satu per satu dan simpan solusi terbaik yang ditemukan sampai sejauh ini (the best solusi found so far). 3. Bila pencarian solusi berakhir, umumkan solusi terbaik (the winner) Karakteristik Algoritma Brute Force: 1. Algoritma brute force sebenarnya bukanlah algoritma yang cerdas dan mangkus(efisien), karena ia membutuhkan jumlah langkah yang besar/banyak dalam penyelesaiannya dan tentu saja membutuhkan waktu yang berbanding lurus dengan jumlah langkah penyelesaiannya. Kadang-kadang algoritma brute force disebut juga algoritma naif (nave algorithm). 2. Algoritma brute force seringkali merupakan pilihan yang kurang disukai karena ketidakmangkusannya itu, tapi kalau mencari pola2 dasar, keteraturan, atau trik-trik khusus, biasanya dapat membantu membantu untuk menemukan algoritma yang lebih cerdas dan lebih mangkus lagi. 3. Untuk persoalan2 yang kecil, kesederhanaan brute force lebih diperhitungkan daripada ketidakmangkusannya. Algoritma brute force sering digunakan sebagai basis bila membandingkan beberapa alternatif algoritma yang mangkus. 4. Meskipun brute force bukan merupakan teknik pemecahan masalah yang mangkus, namun teknik brute force dapat diterapkan pada sebagian besar persoalan. Bayangkan..,sangat sulit menemukan masalah yang tidak dapat dipecahkan dengan teknik brute force, tapi ada masalah yang hanya dapat dipecahkan secara brute force. CONTOH Algoritma bubble sort mengimplementasikan teknik brute force dengan jelas sekali. Berikut contoh persoalan sorting yang dipecahkan dengan algoritma bubble sort:
Setelah kita lihat lagi algoritma diatas, sangat mudah dimengerti. Dengan melooping sebanyak isi array lalu menukarkan nilainya, jika ada nilai yang lebih kecil berada di bawah nilai yang lebih besar, lalu melooping lagi untuk sebanyak jumlah isi array untuk memastikan seluruh kondisi di-cek satu per satu dan menukarkan nilainya kembali jika masih terdapat kondisi seperti diatas dan seterusnya sampai selesai.
3.2.8 Algoritma Ant colony Ant Colony System (ACS) adalah sebuah metodologi yang dihasilkan melalui pengamatan terhadap semut. Pada algoritma ACS, semut berfungsi sebagai agen yang ditugaskan untuk mencari solusi terhadap suatu masalah optimisasi. ACS telah diterapkan dalam berbagai bidang, salah satunya adalah untuk mencari solusi optimal pada Traveling Salesman Problem (TSP). Dengan memberikan sejumlah n titik, TSP dapat didefinisikan sebagai suatu permasalahan dalam menemukan jalur terpendek dengan mengunjungi setiap titik yang ada hanya sekali. Karakteristik Ants Colony System (ACS) Terdapat tiga karakteristik utama dari ACS, yaitu : Aturan transisi status, Aturan pembaruan pheromone lokal, Aturan pembaruan pheromone global. 1. Aturan transisi status Aturan transisi status yang berlaku pada ACS adalah sebagai berikut: seekor semut yang ditempatkan pada titik t memilih untuk menuju ke titik v, kemudian diberikan bilangan pecahan acak q dimana 0q1, q0 adalah sebuah parameter yaitu Probabilitas semut melakukan eksplorasi pada setiap tahapan, dimana (0 q01) dan pk (t,v) adalah probabilitas dimana semut k memilih untuk bergerak dari titik t ke titik v.
dimana (t,u) adalah nilai dari jejak pheromone pada titik (t,u) , (t,u) adalah fungsi heuristik dimana dipilih sebagai invers jarak antara titik t dan u, merupakan sebuah parameter yang mempertimbangkan kepentingan relatif dari informasi heuristic, yaitu besarnya bobot yang diberikan terhadap parameter informasi heuristik, sehingga solusi yang dihasilkan cenderung berdasarkan nilai fungsi matematis. parameter adalah 0. Pheromon adalah zat kimia yang berasal dari kelenjar endokrin dan digunakan oleh makhluk hidup untuk mengenali sesama jenis, individu lain, kelompok, dan untuk membantu proses reproduksi. Berbeda dengan hormon, pheromon menyebar ke luar tubuh dapat mempengaruhi dan dikenali oleh individu lain yang sejenis (satu spesies). Proses peninggalan pheromon ini dikenal sebagai stigmergy, sebuah proses memodifikasi lingkungan yang tidak hanya bertujuan untuk mengingat jalan pulang ke sarang, tetapi juga memungkinkan para semut berkomunikas dengan koloninya. Seiring waktu, bagaimanapun juga jejak pheromon akan menguap dan akan mengurangi kekuatan daya tariknya, sehingga jejak pheromon harus diperbaharui. Pada ACS pembaruan pheromon dibagi menjadi 2, yaitu: Aturan pembaruan pheromon lokal, Aturan pembaruan pheromon global. 2. Aturan pembaruan pheromon lokal Selagi melakukan tur untuk mencari solusi dari TSP, semut mengunjungi ruas-ruas dan mengubah tingkat pheromon pada ruas-ruas tersebut dengan menerapkan aturan pembaruan pheromon lokal yang ditunjukkan oleh persamaan (3)
dimana : Lnn = panjang tur yang diperoleh c = jumlah lokasi = parameter dengan nilai 0 sampai 1 = perubahan pheromon adalah sebuah parameter (koefisien evaporasi), yaitu besarnya koefisien penguapan pheromon . Adanya penguapan pheromone menyebabkan tidak semua semut mengikuti jalur yang sama dengan semut sebelumnya. Hal ini memungkinkan dihasilka solusi alternatif yang lebih banyak. Peranan dari aturan pembaruan pheromone lokal ini adalah untuk mengacak arah lintasan yang sedang dibangun, sehingga titik-titik yang telah dilewati sebelumnya. oleh tur seekor semut mungkin akan dilewati kemudian oleh tur semut yang lain. Dengan kata lain, pengaruh dari pembaruan lokal ini adalah untuk membuat tingkat ketertarikan ruas-ruas yang ada berubah secara dinamis: setiap kali seekor semut menggunakan sebuah ruas maka ruas ini dengan segera akan berkurang tingkat ketertarikannya (karena ruas tersebut kehilangan sejumlah pheromon-nya), secara tidak langsung semut yang lain akan memilih ruas-ruas lain yang belum dikunjungi. Konsekuensinya, semut tidak akan memiliki kecenderungan untuk berkumpul pada jalur yang sama. Fakta ini, yang telah diamati dengan melakukan percobaan [Dorigo dan Gambardella, 1997]. Merupakan sifat yang diharapkan bahwa jika semut membuat tur-tur yang berbeda maka akan terdapat kemungkinan yang lebih tinggi dimana salah satu dari mereka akan menemukan solusi yang lebih baik daripada mereka semua berkumpul dalam tur yang sama. Dengan cara ini, semut akan membuatpenggunaan informasi pheromon menjadi lebih baik tanpa pembaruanlokal, semua semut akan mencari pada lingkungan yang sempit dari tur terbaik yang telah ditemukan sebelumnya. 3.Aturan pembaruan pheromon global Pada sistem ini, pembaruan pheromon secara global hanya dilakukan oleh semut yang membuat tur terpendek sejak permulaan percobaan. Pada akhir sebuah iterasi, setelah semua semut menyelesaikan tur mereka, sejumlah pheromon ditaruh pada ruas-ruas yang dilewati oleh seekor semut yang telah menemukan tur terbaik (ruas-ruas yang lain tidak diubah). Tingkat pheromon itu diperbarui dengan menerapkan aturan pembaruan pheromon global yang ditunjukkan oleh persamaan (4).
Dimana : (t,v) = nilai pheromone akhir setelah mengalami pembaharuan lokal gb L = panjang jalur terpendek pada akhir siklus = parameter dengan nilai antara 0 sampai 1 = perubahan pheromone bernilai jika ruas (t,v) merupakan bagian dari rute terbaik namun jika sebaliknya . adalah tingkat kepentingan relatif dari pheromon atau besarnya bobot yang diberikan terhadap pheromon, sehingga solusi yang dihasilkan cenderung mengikuti sejarah masa lalu dari semut dari perjalanan sebelumnya, dimana nilai parameter adalah 0, dan Lgb adalah panjang dari tur terbaik secara global sejak permulaan percobaan. Pembaruan pheromon global dimaksudkan untuk memberikan pheromon yang lebih banyak pada tur-tur yang lebih pendek. Persamaan (3) menjelaskan bahwa hanya ruas-ruas yang merupakan bagian dari tur terbaik secara global yang akan menerima penambahan pheromone.
CONTOH Sama halnya dengan cara kerja semut dalam mencari jalur yang optimal, untuk mencari jalur terpendek dalam penyelesaian masalah Traveling Salesman Problem (TSP) diperlukan beberapa lngkah untuk mendapatkan jalur yang optimal, antara lain :
1. Menentukan pheromone awal masing- masing semut. Tapi sebelum itu tentukan terlebih dahulu banyaknya semut dalam proses tersebut, setelah itu tentukan titik awal masing- masing semut. 2. Setelah itu tentukan titik selanjutnya yang akan dituju, ulangi proses sampai semua titik terlewati. Dengan menggunakan persamaan 1 atau 2 dapat ditentukan titik mana yang akan dituju, yaitu dengan : Jika q q 0 maka pemilihan titik yang akan dituju menerapkan aturan yang ditunjukkan oleh persamaan (1).
Dengan
jika titik yang dimaksud bukanlah titik yang akan akan dilalui, maka kembali ke titik sebelumnya. 3. Apabila telah mendapatkan titik yang dituju, pheromone masing-masing pada titik tersebut diubah dengan menggunakan persamaan 3, yaitu :
dimana : Lnn = panjang tur yang diperoleh c = jumlah lokasi = parameter dengan nilai 0 sampai 1 = perubahan pheromone Perubahan pheromon tersebut dinamakan perubahan pheromon lokal. 4. Setelah proses diatas selesai, hitung panjang lintasan masing-masing semut. 5. Kemudian akan didapatkan panjang lintasan yang minimal. 6. Ubah pheromone pada titik-titik yang yang termuat dalam lintasan tersebut. 7. Setelah semua proses telah dilalui, maka akan didapatkan lintasan dengan panjang lintasan yang minimal.
Berikut ini adalah algoritma ACS
3.2.9 Algoritma Greedy Algoritma greedy adalah algoritma yang memecahkan masalah langkah demi langkah, pada setiap langkah: 1. mengambil pilihan yang terbaik yang dapat diperoleh saat itu 2. berharap bahwa dengan memilih optimum loklal pada setiap langkah akan mencapai optimum global. Algoritma greedy mengasumsikan bahwa optimum lokal merupakan bagian dari optimum global.Prinsip algoritma greedy adalah: take what you can get now!. Ambil apa yang anda peroleh sekarang!Prinsip ini juga dipakai dalam pemecahan masalah optimasi. Dalam kehidupan sehari-hari, kita juga pernah menggunakan prinsip greedy, misalnya: a. Memilih jurusan di Perguruan Tinggi b. Memilih jalur tersingkat dari Bandung ke Jakarta.
Skema Umum Algoritma Greedy Persoalan optimasi dalam konteks algoritma greedy disusun oleh elemen-elemen sebagai berikut: 1. Himpunan kandidat, C.Himpunan ini berisi elemen-elemen pembentuk solusi. Pada setiap langkah, satu buah kandidat diambil dari himpunannya. 2. Himpunan solusi, S.Merupakan himpunan dari kandidat-kandidat yang terpilih sebagai solusi persoalan. Himpunan solusi adalah himpunan bagian dari himpunan kandidat. 3. Fungsi seleksi dinyatakan sebagai predikat SELEKSI merupakan fungsi yang pada setiap langkah memilih kandidat yang paling mungkin untuk mendapatkan solusi optimal. Kandidat yang sudah dipilih pada suatu langkah tidak pernah dipertimbangkan lagi pada langkah selanjutnya. 4. Fungsi kelayakan (feasible) dinyatakan dengan predikat LAYAK merupakan fungsi yang memeriksa apakah suatu kandidat yang telah dipilih dapat memberikan solusi yang layak, yakni kandidat tersebut bersama-sama dengan himpunan solusi yang sudah terbentuk tidak melanggar kendaaran yang ada. 5. Fungsi obyektif, merupakan fungsi yang memaksimumkan atau meminimumkan nilai solusi. Kita berharap optimum global merupakan solusi optimum dari persoalan. Namun, ada kalanya optimum global belum tentu merupakan solusi optimum (terbaik), tetapi dapat merupakan solusi sub-optimum atau pseudo-optimum. Hal ini dapat dijelaskan dari dua faktor berikut: 1. algoritma greedy tidak beroperasi secara menyeluruh terhadap semua alternatif solusi yang ada. 2. pemilihan fungsi SELEKSI: fungsi SELEKSI biasanya didasarkan pada fungsi obyektif (fungsi SELEKSI bisa saja identik dengan fungsi obyektif).Jika fungsi SELEKSI tidak identik dengan fungsi obyektif, kita harus memilih fungsi yang tepat untuk menghasilkan nilai yang optimum. Karena itu, pada sebagian masalah algoritma greedy tidak selalu berhasil memberikan solusi yang benar benar optimum. Tetapi, algoritma greedy pasti memberikan solusi yang mendekati (approximation)nilai optimum.
CONTOH Contoh penyelesaian menggunakan algoritma greedy ini adalah mencari pohon perentang minimum, baik menggunakan Prim maupun Kruskal Pohon perentang minimum Misalkan G = (V, E) adalah suatu graph tidak berarah, terhubung, dan mempunyai bobot yang non negatif. Maka pohon perentang minimum adalah subgraph G yang mempunyai sifat berupa pohon Mengandung semua simpul pada G.Mempunyai jumlah bobot pada busur yang minimum. Y = {v0} untuk setiap v0 ? V while (Y = V ) { Cari busur (u,v)dengan bobot minimum dengan u ? Y dan v ?/ Y Masukkan busur (u, v) pada MST Tambahkan v pada Y } Kode programnya adalah sebagai berikut
for (i = 1; i <= n; i ++) { V [i] . Reached = FALSE; V [i] . Connect_Wt = INFINITY; } V [Start] . Connect_Wt = 0; V [Start] . Connect_From = 0; for (i = 1; i <= n; i ++) { Min_Connect = INFINITY; for (j = 1; j <= n; j ++) if (V [j] . Connect_Wt < Min_Connect) { Min_Connect = V [j] . Connect_Wt; Min_V = j; } V [Min_V] . Reached = TRUE; for (j = 1; j <= n; j ++) if (! V [j] . Reached && Weight [Min_V] [j] < V [j] . Connect_Wt) { V [j] . Connect_Wt = Weight [Min_V] [j]; V [j] . Connect_From = Min_V; } } Algoritma Kruskal Tempatkan masing masing simpul sebagai himpunan terpisah for ( setiap busur (u,v) yang diurutkan bobotnya secara ascending) if (u dan v berada dalam himpunan terpisah) { Masukkan busur (u,v) dalam MST gabungkan himpunan yang mengandung u dan v } Inilah potongan programnya
for (i = 1; i <= n; i ++) { V [i] . Reached = FALSE; V [i] . Connect_Wt = INFINITY; } V [Start] . Connect_Wt = 0; V [Start] . Connect_From = 0; for (i = 1; i <= n; i ++) { Min_Connect = INFINITY; for (j = 1; j <= n; j ++) if (V [j] . Connect_Wt < Min_Connect) { Min_Connect = V [j] . Connect_Wt; Min_V = j; } V [Min_V] . Reached = TRUE; for (j = 1; j <= n; j ++) if (! V [j] . Reached && Weight [Min_V] [j] < V [j] . Connect_Wt) { V [j] . Connect_Wt = Weight [Min_V] [j]; V [j] . Connect_From = Min_V; } } 3.2.10 Algoritma MiniMax Banyak sekali algoritma yang digunakan untuk mengimplementasikan kecerdasan buatan. Salah satu dari algoritma itu adalah minimax. Algoritma minimax merupakan salah satu implementasi dari depth first search. Algoritma minimax terutama diaplikasikan pada permainan yang melibatkan dua orang, dan lebih khusus lagi, permainan dua orang yang saling berganti giliran bermain seperti checkers, tic-tac-toe, catur, catur jawa dan lain sebagainya.Permainan-permainan tersebut dapat dideskripsikan dengan sejumlah aturan dan premis. Dengan itu, kita dapat mengetahui, pada titik tertentu permainan,langkah-langkah yang mungkin berikutnya. Permainan tersebut berbagi karakteristik yang sama,yakni permainan dengan penuh informasi. Dengan cara inilah penulis akan berusaha membuat sebuah kecerdasan buatan untuk permainan catur jawa, yang lagi, memiliki karakteristik yang sama dengan permainan yang telah disebutkan di atas. Pada suatu titik di makalah ini juga terdapat cara untuk mengoptimasi algoritma minimax agar memiliki performansi yang lebih baik, salah satunya dengan menggunakan alpha-beta. METODE Algoritma Minimax Algoritma minimax diaplikasikan pada permainan yang melibatkan dua orang. Permainan- permainan tersebut dapat dideskripsikan dengan sejumlah aturan dan premis.Dengan itu, kita dapat mengetahui, pada titik tertentu permainan, langkah-langkah yang mungkin berikutnya.Permainan tersebut berbagi karakteristik yang sama, yakni permainan dengan penuh informasi. Setiap pemain mengetahui semua langkah-langkah yang mungkin dari pemain lawannya.Sebelum menjelaskan algoritma minimax, pengenalan mengenai pohon pencarian dibutuhkan. Pohon pencarian adalah cara untuk merepresentasikan pencarian. Kotak disebut sebagai simpul dan simpul- simpul tersebut merepresentasikan titik keputusan pada pencarian. Simpul dihubungkan dengan cabang. Pencarian dimulai pada simpul akar, ditunjukkan pada bagian atas pada gambar 1.Pada setiap simpul keputusan, simpul berikutnya yang mungkin untuk pencarian dibangkitkan, sampai tidak ada lagi keputusan yang mungkin. Simpul yang merepresentasikan akhir pencarian disebut sebagai simpul daun.
Gambar 10. Representasi pohon pencarian untuk permainan logika Pada algoritma ini ada dua pemain yang terlibat, kita asumsikan MAX dan MIN. Pohon pencariandibangkitkan, depth-first, dimulai dari posisi permainan saat ini sampai pada akhir posisi permainan. Lalu, kondisi permainan final dievaluasi sebagai sudut pandang MAX,seperti tergambar pada gambar 1. Setelah itu, simpul-simpul di atas simpul daun diisi secara bottom up dengan nilai pada simpul anak-anaknya. Simpul yang dimiliki pemain MAX menerima nilai maksimum dari simpul anak-anaknya dan pemain MIN memperoleh nilai minimum dari nilai-nilai yang dimiliki simpul anak-anaknya.
3.3 JARINGAN SEMANTIK DAN SCRIPT Jaringan semantik adalah gambaran pengetahuan grafis yang menunjukkan hubungan antar berbagai objek, terdiri dari lingkaran-lingkaran yang dihubungkan dengan anak panah yang menunjukkan objek dan informasi tentang objek-objek tersebut. Gambar berikut menunjukkan representasi pengetahuan menggunakan jaringan semantik.
Gambar 11: Jaringan Semantik
Dari gambar di atas dapat dibentuk beberapa kalimat yang menunjukkan suatu peristiwa, seperti : Reza adalah siswa tingkat SMA di Jakarta Reza menonton film di bioskop daerah Jakarta Reza menonton film berjudul Avatar di bioskop daerah Jakarta Reza menonton film di Australia Reza kekasih Renata Reza bermain sepabola di kejuaraan antar SMA SMA memiliki klub olahraga sepabola Renata bermain drama di Australia Renata menonton sepakbola di televisi Film berjudul Avatar disutradarai James Cameron James Cameron membuat film bergenre drama di Australia
Dalam mata kuliah Pengantar Kecerdasan Buatan script merupakan representasi pengetahuan berdasarkan karakteristik yang sudah dikenal sebagai pengalaman-pengalaman yang menggambarkan urutan peristiwa. Terdapat enam elemen script, yaitu :
1. Kondisi input, merupakan kondisi yang harus dipenuhi sebelum terjadi 2. Track, yaitu variasi kemungkinan yang terjadi 3. Prop, yaitu objek yang digunakan dalam suatu peristiwa 4. Role, yaitu peran dalam suatu peristiwa 5. Scene, yaitu adegan dalam suatu peristiwa 6. Hasil, yaitu kondisi setelah terjadinya urutan peristiwa Berikut ini adalah contoh script kejadian Penyewaan Film di Rental Film Jalur (track) : menyewa film Role (peran) : calon penyewa, penyewa, penjaga rental Prop (pendukung) : kartu rental, uang, dvd, vcd, pulpen, formulir pendaftaran Kondisi input : penyewa terdaftar untuk menyewa film Adegan 1 : Calon penyewa atau penyewa datang ke tempat rental film Calon penyewa atau penyewa telah menyiapkan uang untuk sewa Penjaga rental mempersilahkan masuk Penjaga rental memberi salam hangat kepada calon penyewa atau penyewa Adegan 2 : Calon penyewa mendaftar menjadi anggota Penjaga rental menjelaskan prosedur penyewaan film Penjaga rental memberikan formulir pendaftaran Calon penyewa menunjukkan KTP Calon penyewa mengisi formulir pendaftaran Penjaga rental memberikan kartu rental
Adegan 3 : Penyewa memilih film Penyewa memilih film dalam bentuk dvd Penyewa memilih film dalam bentuk vcd Penyewa memilih film dalam berbagai genre (action, drama, comedy, horror) Adegan 4 : Penyewa membayar uang sewa Penyewa menunjukkan film yang dipinjam Penjaga rental memberikan tempat atau bungkus untuk film Penyewa membayar uang sewa Penjaga rental memberikan tanda bukti penyewaan Adegan 5 : Penyewa kembali ke rumah Penyewa meninggalkan tempat rental Penyewa menonton film Penyewa akan kembali ke tempat rental untuk mengembalikan film yang dipinjam sesuai jangka waktu penyewaan Hasil : Penyewa merasa senang Penyewa merasa kecewa Penyewa tertawa (karena film komedi) Penyewa merasa sedih