Pert 1 Materi 4 - Pengetahuan dan Penalaran: I. Agen Logika

Pengetahuan dan Penalaran: Agen Logika

Pengetahuan dan Penalaran

I.    Agen Logika

4.1. Pengetahuan Berbasis Agen

Representasi pengetahuan adalah cara untuk menyajikan pengetahuan yang diperoleh ke dalam suatu skema/diagram tertentu sehingga dapat diketahui relasi antara suatu pengetahuan dengan pengetahuan yang lain dan dapat dipakai untuk menguji kebenaran penalarannya.
Logika sebagai Bahasa Representasi Pengetahuan memliki pengertian Logika sebagai bhasa formal untuk memrepresentasikan fakta sedemikian sehinga kesimpulan (fakta baru,jawaban) dapat ditarik. Ada banyak metode inference yang diketahui sehingga kata bias mebangun  agent Wumpus Wold dengan logika. Memanfaatkan perkembangan logika oleh ahli metematika, filsafat selama ratusan tahun.

Inferensi merupakan proses atau algoritma yang “merunkan” fakta baru dari fakta-fakta yang lama. Reasong bukan dilakukan pada fakta di dunia (berdasarkan semantic), melainkan representasi fakta dalam bahasa representasi pengetahuan si agent (secara sintaks). Otak manusia melakukan proses reasoning dalam suatu bentuk sintak dapat di ilustrasikan.

Agen berbasis pengetahuan menggunakan inferensi dan knowledge base untuk menghasilkan informasi baru atau untuk mengambil keputusan. 

4.2. Logika

Logika berasal dari kata Yunani kuno λόγος (logos) yang berarti hasil pertimbangan akal pikiran yang diutarakan lewat kata dan dinyatakan dalam bahasa. Logika adalah salah satu cabang filsafat.Sebagai ilmu, logika disebut dengan logike episteme (bahasa Latin: logica scientia) atau ilmu logika (ilmu pengetahuan) yang mempelajari kecakapan untuk berpikir secara lurus, tepat, dan teratur.

Ilmu di sini mengacu pada kemampuan rasional untuk mengetahui dan kecakapan mengacu pada kesanggupan akal budi untuk mewujudkan pengetahuan ke dalam tindakan. Kata logis yang dipergunakan tersebut bisa diartikan dengan masuk akal.

Logika didefinisikan sebagai ilmu untuk berpikir dan menalar dengan benar sehingga didapatkan kesimpulan yang absah.

Tujuan dari logika: memberikan aturan-aturan penalaran sehingga orang dapat menentukan apakah suatu kalimat bernilai benar atau salah.

Representasi Logika dibagi menjadi dua:
1.    Propositional Logic (Logika Proposisi)
Proposisi adalah suatu pernyataan yang dapat bernilai Benar atau Salah. Simbol-simbol seperti P dan Q menunjukkan proposisi. Dua atau lebih proposisi dapat digabungkan dengan menggunakan operator
logika :
a.Konjungsi :  (and)   
b. Disjungsi : 
 (or)      
c. Negasi : ¬ (not)        
d.Implikasi : Æ (if then)
e. Ekuivalensi : ↔ (if and only if)

2.    Predicate Logic (Logika Predikat)
Representasi Fakta Sederhana
Misal diketahui fakta-fakta sebagai berikut :

Andi adalah seorang laki-laki : A
Ali adalah seorang laki-laki : B
Amir adalah seorang laki-laki : C
Anto adalah seorang laki-laki : D
Agus adalah seorang laki-laki : E

Jika kelima fakta tersebut dinyatakan dengan menggunakan proposisi, maka akan terjadi pemborosan, dimana beberapa pernyataan dengan predikat yang sama akan dibuat dalam proposisi yang berbeda. Logika predikat digunakan untuk merepresentasikan hal-hal yang tidak dapat direpresentasikan dengan menggunakan logika proposisi. Pada logika predikat kita dapat merepresentasikan fakta-fakta sebagai suatu pernyataan yang disebut dengan wff (well –formed formula). Logika predikat merupakan dasar bagi bahasa AI seperti bahasa pemrograman PROLOG Pada contoh diatas, dapat dituliskan :

laki-laki(x)
dimana x adalah variabel yang disubstitusikan dengan Andi, Ali, Amir, Anto, Agus, dan laki-laki yang lain. Dalamlogika predikat, suatu proposisi atau premis dibagi menjadi 2 bagian, yaitu argumen (objek) dan predikat (keterangan). Argumen adalah individu atau objek yang membuat keterangan. Predikat adalah keterangan yang membuat argumen dan predikat.

Misal terdapat pernyataan sebagai berikut :

1.Andi adalah seorang mahasiswa
2.Andi masuk jurusan Elektro
3.Setiap mahasiswa elektro pasti mahasiswa teknik
4.Kalkulus adalah matakuliah yang sulit
5.Setiap mahasiswa teknik pasti akan suka kalkulus atau akan membencinya
6.Setiap mahasiswa pasti akan suka terhadap suatu matakuliah
7.Mahasiswa yang tidak pernah hadir pada kuliah matakuliah sulit, maka mereka pasti tidak suka terhadap matakuliah tersebut.
8.Andi tidak pernah hadir kuliah matakuliah kalkulus



4.3. Logika Proposi / Logika Sederhana

a. SINTAKS

Sintaks merupakan kumpulan aturan yang mendefinisikan suatu bentuk bahasa. Sintaks mendefinisikan bagaimana suatu kalimat dibentuk sebagai barisan/urutan dari pemilihan suatu kata dasar. Kata bukan merupakan sesuatu yang mendasar. Kata dikonstruksikan dengan karakter-karakter alfabet. Dengan menggunakan aturan ini maka suatu kalimat dapat dikatakan legal atau tidak legal. Sebagai contoh, dalam keyword bahasa C (seperti while, do,if, dan else), identifier, angka, operator, dan seterusnya, merupakan kata dalam suatu bahasa.Sintaks dalam bahasa C mengatur cara mengombinasikan kata-kata tersebut ke dalam suatu statement dengan bentuk yang benar sehingga dapat disusun suatu program yang dapat berjalan dengan benar. Sintaks tidak mengerti apapun tentang isi atau arti dari suatu kalimat, aturan semantik yang bisa mengartikannya.

Sintaks dari bahasa pemrograman didefinisikan dengan dua kumpulan aturan, yaitu aturan lexical dan aturan syntactic. Aturan leksikal menspesifikasikan kumpulan karakter yang terdapat dalam alfabet dari bahasa dan cara supaya karakter-karakter tersebut dikombinasikan ke dalam kata-kata yang valid dan dapat diterima. Sebagai contoh adalah bahasa Pascal yang tidak memperhatikan huruf besar dan huruf kecil, sedangkan bahasa C dan Ada memperhatikan dan membedakan hal tersebut.

Sintaks berfungsi menyediakan bentuk-bentuk notasi untuk komunikasi antar programmer dan pemroses bahasa pemrograman sehingga dapat mempermudah pembuatan suatu program.
Suatu bahasa pemrograman juga dibangun berdasarkan elemen-elemen syntactic, yang dapat membentuk suatu statement-statement dalam bahasa pemrograman. Elemen-elemen tersebut antara lain :

§  Himpunan karakter

Himpunan karakter yang sering dijumpai dan digunakan adalah himpunan karakter ASCII, yang berisi dasar karakter-karakter angka dan huruf. Karakter ASCII secara umum dapat langsung digunakan pada kebanyakan perangkat I/O, namun ada bahasa pemrograman yang tidak menggunakan himpunan karakter ASCII, contohnya bahasa APL. APL menggunakan karakter yang tidak dapat digunakan secara langsung pada kebanyakan pernagkat I/O, tidak seperti bahasa C yang menggunakan himpunan karakter ASCII.

§  Identifier

Sintaks dasar dari identifier yang sering digunakan adalah string dari huruf dan angka yang dimulai dengan huruf. Namun, banyak juga variasi dari bahasa pemrograman yang menggunakan suatu identifier dengan tanda “.” Atau “-“. Hal ini akan berpengaruh pada kemudahan dalam pembacaan program.

§  Simbol untuk operator

Kebanyakan bahasa pemrograman menggunakan karakter “+” dan “-“ untuk merepresentasikan dua buah operasi dasar aritmetika, dan menggunaka kombinasi serta memanfaatkan karakter-karakter spesial untuk suatu operator, atau menggunakan string untuk operator seperti pada FORTRAN dengan .EQ. untuk membandingkan kesamaan dan ** untuk perpangkatan.

§  Keyword dan reserved word

Keyword merupakan merupakan suatu identifier yang digunakan sebagai bagian tetap dari sintaks suatu statement, misalnya IF untuk memulai suatu statement kondisi atau DO untuk memulai suatu perulangan dalam bahasa FORTRAN. Keyword merupakan reserved word jika tidak digunakan sebagai identifier yang dipilih oleh programmer. Misalnya dalam bahasa FORTRAN, identifier IF dan DO dapat dipilih sebagai nama variabel oleh programmer sehingga suatu statemen yang dimulai dengan IF belum tentu merupakan statement kondisi.

§  Noise word

Merupakan kata pilihan yang disisipkan dalam statemen untuk meningkatkan readibility. Sebagai contoh adalah statemen GO TO label. GO merupakan keyword yang harus ada, sedangkan TO merupakan optional yang akan meningkatkan readibility.

§  Komentar

Penambahan komentar dalam suatu program merupakan hal penting dari dokumentasi suatu program. Bahasa pemrograman mengijinkan komentar dalam beberapa bentuk.
-       Baris komentar yang terpisah di dalam program seperti pada FORTRAN.
-       Penggunaan karakter khusus yang tidak memedulikan baris seperti /* dan */ di bahasa C.
-       Dimulai dari sembarang tempat disuatu baris dengan diawali suatu karakter khusus, seperti“-“ di Ada, “//” di C++ atau “!” di FORTRAN.

§  Blank

Aturan penggunaan spasi pada bahasa pemrograman sangat beragam. Sebagai contoh adalah bahasa C. Biasanya spasi diabaikan, kecuali jika ada simbol “=+” yang merupakan operator tunggal. Bila dipisahkan dengan spasi maka akan terjadi kesalahan sintaks.

§  Delimiter dan tanda kurung

Delimiter merupakan elemen syntactic yang digunakan untuk menandai suatu awalan atau akhiran dari suatu syntactic unit seperti statemen atau ekspresi. Tanda kurung biasanya berpasangan dengan delimiter, misalnya kurung kurawal atau pasangan kata begin … end. Delimiter berguna untuk meningkatkan readability suatu program dan juga dapat menghilangkan ambiguitas suatu statemen karena dapat digunakan secara eksplisit untuk memisahkan statemen-statemen yang mirip.

§  Ekspresi

Merupakan suatu fungsi yang mengakses data dalam suatu program dan mengembalikan suatu nilai. Ekspresi merupakan dasar dari blok syntactic dari statemen yang dibangun.

b. SEMANTIK

Sintak mendifinisikan suatu bentuk program yang benar dari suatu bahasa. Semantic mendefinisikan arti dari program yang benar secara sintak dari bahasa tersebut. Semantic suatu bahasa membutuhkan semacam ekspresi untuk mengirimkan suatu nilai kebenaran (TRUE, FALSE, NOT atau nilai integer). Dalam banyak kasus, program hanya dapat dieksekusi jika benar, serta mengikuti aturan sintak dan semantic.

Semantic suatu bahasa pemrograman mempunyai banyak potensial / keunggulan, beberapa diantaranya adalah :

§  Standarisasi bahasa pemrograman.

Banyak usaha yang dilakukan untuk menstandarisasi bahasa pemrograman seperti FORTRAN, COBOL, dan PL/1, untuk lebih memudahkan programmer menggunakannya.

§  Referensi untuk user.

Programmer membutuhkan suatu dokumentasi yang pasti supaya user dapat mengoperasikan program yang dibuat dengan baik.

§  Pembuktian dari program yang benar.

Secara matematis, program tidak mungkin bekerja dan berjalan jika tidak ada semantic.

§  Referensi untuk implementor.

Semantic akan mencegah suatu gaya bahasa yang tidak kompetibel yang diwujudkan dalam suatu implementasi berbeda walaupun dengan bahasa yang sama.

§  Implementasi otomatis.

Suatu tool/alat dapat secara otomatis membuatu translasi bahasa yang melebihi parsing. Hal ini dapat dilakukan jika semantic sudah dirumuskan. f. Pemahaman yang lebih baik dari desain bahasa. Jika suatu rumusan semantic sulit untuk di deskripsikan secara formal maka rumusan semantic tersebut juga akan sulit digunakan oleh programmer.


Teknik semantic :

§  Operational semantic

Pendekatan ini mendefinisikan suatu mesin buatan (abstrak) dengan instruksi-instruksi primitive, tidak perlu realistic, tetapi cukup sederhana supaya tidak muncul kesalahpahaman. Deskripsi semantic dari bahasa pemrograman menentukan suatu translasi ke kode.

§  Detonational semantic.

Pada pendekatan ini, diberikan suatu fungsi yang memetakan program-program computer yang di tunjuk ke dalam bentuk nilai-nilai abstrak secara matematika (angka, nilai kebenaran, fungsi matematika, dsb).

§  Axiomatic semantic.

Pada pendekatan ini di definisikan suatu tindakan program yang di bangun dengan property logika yang menyimpan status computer sebelum dan sesudah dieksekusi.

§  Algebraic semantic.

Pada pendekatan ini dipertimbangkan suatu objek komputasi yang menjadi syarat-syarat dalam aljabar multi stored. Program mengimplementasikan fungsi yang dapat di wujudkan dengan suatu persamaan di antara syarat-syarat tersebut.

§  Structured operational semantic atau natural semantic.

Seperti dalam pengambilan keputusan secara alamiah dengan logika, program di beri suatu arti dari aturan yang diturunkan yang menggambarkan penilaian gagasan suatu bahasa.

Proses analisa sintak dan analisa semantic merupakan 2 proses yang sangat erat kaitannya dan sulit untuk dipisahkan.
Contoh :
A:= (A+B) * (C+D)
Parser hanya akan mengenali symbol-simbol „:=”, “+”, “*”, parser tidak mengetahui makna dari symbol-simbol tersebut. Untuk mengenali makna dari symbol-simbol tersebut maka compiler memanggil routin semantics.

Untuk mengetahui makna, maka routin ini akan memeriksa :
• Apakah variable yang ada telah didefinisikan sebelumnya.
• Apakah variable-variabel terserbut tipenya sama.
• Apakah operand yang akan di operasikan terserbut ada nilainya, dst.
• Menggunakan table symbol.
• Pemeriksaan bisa dilakukan pada table identifier, table display, dan table block.

c. INFERENSI

Metode inferensi adalah suatu teknik/metode untuk menurunkan kesimpulan berdasarkan hipotesa yang diberikan, tanpa harus menggunakan table kebenaran. Beberapa metode inferensi untuk menentukan validitas adalah sebagai berikut :

§  Modus Ponens

Pada suatu implikasi “jika p maka q” yang diasumsikan bernilai benar, dan apabila juga diketahui bahwa nilai dari anteseden (p) bernilai benar, maka nilai q juga harus benar.
p —> q
p
q
Contoh :
Jika suatu bilangan habis dibagi 2 maka bilangan tersebut adalah bilangan genap.
Suatu bilangan habis dibagi 2.
Bilangan tersebut adalah bilangan genap.

§  Modus Tollens

Suatu implikasi “jika p maka q” akan selalu ekuivalen dengan kontraposisinya, yaitu “jika bukan q maka bukan p”. dengan demikian, hipotesa kedua dan kesimpulan merupakan kontraposisi hipotesa pertama pada modus ponens.
p –> q
~q
~p

Contoh :
Jika hasil jual lebih dari hasil beli maka penjual itu untung.
Penjual itu tidak untung.
Hasil jual tidak lebih dari pembelian.

§  Silogisme

Prinsip Silogisme adalah sifat transitif dari implikasi. Artinya, jika suatu implikasi p à q dan q à r keduanya bernilai benar maka implikasi p à q pasti bernilai benar.
p –> q
q –> r
p –> r

Contoh :
Jika ia belajar dengan baik maka ia akan pandai.
Jika ia pandai maka ia akan lulus dalam ujian.
Jika ia belajar dengan baik ia akan lulus dalam ujian.


d. EKUIVALEN

Dua atau lebih pernyataan majemuk yang mempunyai nilai kebenaran sama disebut ekuivalensi logika dengan notasi “ dua buah pernyataan majemuk dikatakan ekuivalen, jika kedua pernyataan majemuk itu mempunyai nilai kebenaran yang sama untuk semua kemungkinan nilai kebenaran pernyataan-pernyataan komponen-komponennya.


e. VALIDITAS

Menurut Azwar (1986) validitas berasal dari kata validity yang mempunyai arti sejauh mana ketepatan dan kecermatan suatu alat ukur dalam melakukan fungsi ukurnya. Menurut Arikunto (1999) validitas adalah suatu ukuran yang menunjukkan tingkat kesahihan suatu tes. Menurut Nursalam (2003) validitas adalah suatu ukuran yang menunjukkan tingkat kevalidan atau kesahihan suatu instrumen. Berdasarkan beberapa pendapat tentang pengertian validitas di atas, maka dapat diambil kesimpulan bahwa validitas adalah suatu standar ukuran yang menunjukkan ketepatan dan kesahihan suatu instrumen.
Suatu Kalimat logika f bersifat valid jika untuk setiap interpretasinya I for f, f bernilai true.
Contoh :
·         (f and g) if and only if (g and f)
·         f or not f
·         [p and (if r then s)] if only if [(if  r then s ) and p]
·         [p or q) or not (p or q)
·         (if p then not q) if and only if not (p and q)

f. SATISFIABILITY

Sebuah proposisi majemuk dikatakan satisfiable jika ada minimal satu nilai tabel kebenarannya yang bernilai TRUE (benar), Jika proposisi majemuk tersebut tidak memiliki nilai TRUE (benar) sama sekali dalam tabel kebenarannya, maka proposisi majemuk tersebut disebut tidak satisfiable.
Contoh:
Dengan menggunakan table kebenaran, buktikan bahwa : (p ˄ (p->q)) adalah satisfiable.
Pengetahuan dan Penalaran: Agen Logika


4.4. Pola Penalaran (Reasoning Pattern) Pada Logika Proposisi

a.     RESOLUSI

Resolusi merupakan suatu teknik pembuktian yang lebih efisien, sebab fakta-fakta yang akan dioperasikan terlebih dahulu dibawa ke bentuk standar yang sering disebut dengan nama klausa. Pembuktian suatu pernyataan menggunakan resolusi ini dilakukan dengan cara menegasikan pernyataan tersebut, kemudian dicari kontradiksinya dari pernyataan-pernyataan yang sudah ada.

Resolusi adalah suatu aturan untuk melakukan inferensi yang dapat berjalan secara efisien dalam suatu bentuk khusus conjunctive normal form (CNF). Pada logika proposisi, prosedur untuk membuktikan proposisi P dengan beberapa aksioma F yang telah diketahui, dengan menggunakan resolusi.

Algoritma resolusi :
§  Konversikan semua proposisi F ke bentuk CNF.
§  Negasikan P, dan konversikan hasil negasi tersebut ke bentuk klausa. Tambahkan ke himpunan klausa yang telah ada pada langkah 1.
§  Kerjakan hingga terjadi kontradiksi atau proses tidak mengalami kemajuan :
§  Seleksi 2 klausa sebagai klausa parent.
§  Bandingkan (resolve) secara bersama-sama. Klausa hasil resolve tersebut dinamakan resolvent. Jika ada pasangan literal L dan L, eliminir dari resolvent.
§  Jika resolvent berupa klausa kosong, maka ditemukan kontradiksi. Jika tidak, tambahkan ke himpunan klausa yang telah ada.

b.     FORWARD CHAINING

Forward chaining merupakan metode inferensi yang melakukan penalaran dari suatu masalah kepada solusinya. Jika klausa premis sesuai dengan situasi (bernilai TRUE), maka proses akan menyatakan konklusi. Forward chaining adalah data-driven karena inferensi dimulai dengan informasi yang tersedia dan baru konklusi diperoleh. Jika suatu aplikasi menghasilkan tree yang lebar dan tidak dalam, maka gunakan forward chaining.

Contoh :
Terdapat 10 aturan yang tersimpan dalam basis pengetahuan yaitu :
R1 : if A and B then C
R2 : if C then D
R3 : if A and E then F
R4 : if A then G
R5 : if F and G then D
R6 : if G and E then H
R7 : if C and H then I
R8 : if I and A then J
R9 : if G then J
R10 : if J then K

Fakta awal yang diberikan hanya A dan E, ingin membuktikan apakah K bernilai benar. Proses penalaran forward chaining terlihat pada gambar dibawah :
Pengetahuan dan Penalaran: Agen Logika


c.     BACKWARD CHAINING

Menggunakan pendekatan goal-driven, dimulai dari harapan apa yang akan terjadi (hipotesis) dan kemudian mencari bukti yang mendukung (atau berlawanan) dengan harapan kita. Sering hal ini memerlukan perumusan dan pengujian hipotesis sementara. Jika suatu aplikasi menghasilkan tree yang sempit dan cukup dalam, maka gunakan backward chaining.

Contoh :
Seperti pada contoh forward chining, terdapat 10 aturan yang sama pada basis pengetahuan dan fakta awal yang diberikan hanya A dan E. ingin membuktikan apakah K bernilai benar. Proses penalaran backward chaining terlihat pada gambar berikut :
Pengetahuan dan Penalaran: Agen Logika



4.5. Inferensi Proposi Yang Efektif

§  ALGORITMA BACKTRACKING

Algoritma Backtracking mempunyai prinsip dasar yang sama seperti brute-force yaitu mencoba segalakemungkinan solusi. Perbedaan utamanya adalah pada ide dasarnya, semua solusi dibuat dalam bentuk  pohon solusi (pohon ini tentunya berbentuk abstrak) dan algoritma akan menelusuri pohon tersebu secara DFS (depth field search) sampai ditemukansolusi yang layak. Nama backtrack didapatkan dari sifat algoritma iniyang memanfaat karakteristik himpunan solusinya yang sudah disusun menjadi suatu pohon solusi.Agar lebih jelas bisa dilihat pada pohon solusi berikut:
Pengetahuan dan Penalaran: Agen Logika
Misalkan pohon diatas menggambarkan solusi darisuatu permasalahan. Untuk mecapai solusi (5), maka jalan yang ditempuh adalah (1,2,5), demikian jugadengan solusi-solusi yang lain. Algoritma backtrack akan memeriksa mulai dari solusi yang pertamayaitu solusi (5). Jika ternyata solusi (5) bukan solusiyang layak maka algoritma akan melanjutkan ke solusi (6). Jalan yang ditempuh ke solusi (5) adalah (1,2,5) dan jalan untuk ke solusi (6) adalah (1,2,6). Kedua solusi ini memiliki jalan awal yang sama yaitu (1,2). Jadi daripada memeriksa ulang dari (1) kemudian (2) maka hasil (1,2) disimpan dan langsung memeriksa solusi (6). Pada pohon yang lebih rumit, cara ini akan jauh lebih efisien daripada brute-force. Pada beberapa kasus, hasil perhitungan sebelumnya harus disimpan, sedangkan pada kasus yang lainnya tidak perlu.

Kegunaan algoritma backtracking

Penggunaan terbesar backtrack adalah untuk membuat AI pada board games. Dengan algoritma ini program dapat menghasilkan pohon sampaidengan kedalaman tertentu dari current status dan memilih solusi yang akan membuat langkah-langkah yang dapat dilakukan oleh user akan menghasilkan pohon solusi baru dengan jumlah pilihan langkahterbanyak. Cara ini dipakai sebagai AI yangdigunakan untuk dynamic problem solving. Beberapa kegunaan yang cukup terkenal darialgoritma backtrack dari suatu masalah “statik”adalah untuk memecahkan masalah N Queenproblem dan mazesolver.
N-Queen problem adalah bagaimana carameletakkan bidak Queen catur sebanyak N buah pada papan catur atau pada papan ukuran NxN sedemikian rupa sehingga tidak ada satu bidakpun yang dapat memangsa bidak lainnya dengan 1gerakan [1]. Meskipun mungkin terdapat lebih darisatu solusi untuk masalah ini, tetapi pencarian semuasolusi biasanya tidak terlalu diperlukan, tetapi untuk beberapa kasus tertentu diperlukan pencarian semua solusi sehingga didapatkan solusi yang optimal.
Maze solver adalah bagaimana cara mencari jalankeluar dari suatu maze (labirin) yang diberikan. Pada maze yang sederhana dimana field yang dibentuk dapat direpresentasikan dalam bentuk biner dan pada setiap petak maksimal terdapat 4 kemungkinan: atas, kanan, bawah dan kiri. Untuk masalah ini biasanya solusi pertama yang ditemukan bukanlah solusi yang paling optimal sehingga untuk mendapatkan hasil yang optimal dibutuhkan pencarian terhadap seluruh kemungkinan solusi. Hal ini disebabkan oleh urutan pencarian yang telah ditetapkan dalam program (apakah menyelidiki kemungkinan ke arah atasdahulu atau ke arah lainnya dahulu).

Implementasi algoritma backtracking

Algoritma backtrack dapat diimplementasikan dengan mudah pada bahasa-bahasa pemograman yang telah mensupport pemograman rekursif. Bahasa pemograman yang nyaman digunakan adalah Pascal atau Java. Bahasa Pascal dipilih karena bisa diprogram secara rekursif dan mendukung penggunaan pointer. Sedangkan bahasa Java meskipun lebih rumit tetapi dapat bekerja secara rekursif dan sangat mudah dalam membuat dynamic array.

§ ALGORITMA PENCARIAN LOKAL

Pencarian lokal terdiri dari:
Hill-Climbing Search
• Pemilihan state berdasarkan nilai objektifnya  
Genetic Algorithm
• Pemilihan state berdasarkan aturan seleksi alam yang diterapkan pada state collection (sering disebut sebagai populasi)


4.6. Agen berbasis logika proposisi

Agen logika merupakan agen yang memiliki kemampuan bernalar secara logika.Ketika beberapa solusi tidak secara eksplisit diketahui, maka diperlukan suatu agen berbasis logika.Logika sebagai Bahasa Representasi Pengetahuan memiliki kemampuan untuk merepresentasikan fakta sedemikian sehingga dapat menarik kesimpulan (fakta baru, jawaban).Sedangkan pengetahuan merupakan komponen yang penting, sehingga terdapat perbedaan jika diterapkan pada dua agent, yakni problem solving agent dan knowledge-based agent.

Logika Proposisi
o   Merupakan logika yang paling sederhana. Sebuah sentence dinyatakan sebagai simbol proposional P1, P2, dst.
o   Sintaks dari logika proposisi
§  Jika S adalah kalimat, ⌐S adalah kalimat (negasi)
§  Jika  S1 dan S2 adalah kalimat, S1 Ʌ S2 adalah kalimat (conjunction)
§  Jika  S1 dan S2 adalah kalimat, S1 V S2 adalah kalimat (disjunction)
§  Jika Jika  S1 dan S2 adalah kalimat, S1 → S2 adalah kalimat (implication)
§  Jika  S1 dan S2 adalah kalimat, S1 ↔ S2 adalah kalimat (biconditional)

Nama: Mahmud Yusuf
Kelas: 3KA10
NPM: 14116231

Sumber Referensi
-       http://dianiraaa.blogspot.com/2017/10/bab-4-pengetahuan-dan-penalaran-agen.html
-       http://anggaradelta.blogspot.com/2017/10/pengetahuan-dan-penalaran-agen-logika.html
-       https://bellavira.blogspot.com/2017/10/agen-logika.html
-       http://xninexozar.blogspot.com/2017/10/pengetahuan-dan-penalaran.html


EmoticonEmoticon