AGEN LOGIKA
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.
Perbedaan dua agent, problem solving agent dan knowledge-based agent. Problem solving agent memilih solusi di antara kemungkinan yang ada. Apa yang ia “ketahui” tentang dunia, pengetahuannya tidak berkembang untuk mencapai problem solution (initial state, successor function, goal test) tetapi jika Knowledge-based agent lebih “pintar”. Ia “mengetahui” hal-hal tentang dunia dan dapat melakukan reasoning (berpikir, bernalar) mengenai Hal-hal yang tidak diketahui sebelumnya (imprefect/ partial information). Tindakan yang paling baik untuk diambil (best action).
1. PENGETAHUAN
BERBASIS LOGIKA
Pengetahuan Berbasis Agen, Knowledge Base (KB) menyatakan apa yang “diketahui” oleh si agent Pendekatan deklaratif membangun agent: “beritahu” informasi yang relevan, simpan dalam KB. Agen dapat ditanya (atau bertanya diri sendiri) apa yang sebaiknya dilakukan berdasarkan KB. Maka sebuah agen berbasis pengetahuan harus bisa mereprentasikan world, state, action, dst. Menerima informasi baru (dan meng-update representasinya). Menyimpulkan pengetahuan lain yang tidak eksplisit (hidden property). Menyimpulkan action apa yang perlu diambil.
Agen Berbasis Pengetahuan atau Knowledge Base (KB) merupakan Himpunan representasi fakta yang diketahui tentang lingkungannya. Tiap fakta disebut sebagai sentence. Fakta tersebut dinyatakan dalam bahasa formal sehingga bisa diolah, menambahkan sentence baru ke KB. Inference Engine merupakan menentukan fakta baru yang dapat diturunkan dari pengetahuan yang sudah ada dalam KB. Agen Berbasis Pengetahuan dalam representasi, agent dapat dipandang dari knowledge level. Apa saja informasi yang diketahui? Misal sebuah robot “mengetahui” bahwa gedung B di antara gedung A dan gedung C. Agent dapat dipandang dari implementation level Bagaimana representasi informasi yang diketahuinya? Logical sentence di_antara(gdB, gdA, gdC). Natural language “Gedung B ada di antara gedung A dan gedung C”.
Agen Berbasis Pengetahuan, pilihan representasi berpengaruh
terhadap apa yang bisa dilakukan inference engine. Pada pendekatan deklaratif
programmer memberitahu agent informasi tentang environment. Kalau informasi
kurang, agen bisa melengkapinya sendiri. Jika dibandingkan dengan pendekatan
prosedural programmer secara eksplisit memrogram agen untuk bertindak. Sehingga
bagaimana jika program tidak benar, maka akan besar kemungkinan menyebabkan
kesalahan. Agen Berbasis Pengetahuan, permasalahannya adalah bagaimana
representasi yang tepat, sehingga ada dua hal yang harus diperhatikan
expressive bisa menyatakan fakta tentang environment, Tractable bisa mengolah/
memproses inference engine (dengan cepat). Knowledge merupakan power atau
kekuatan dari pemrograman secara deklaratif. Representasi dan penalaran
membentuk suatu Intelligence.
2. LOGIKA PROPORSI / 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. 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.
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)
e. 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.
3. POLA PENALARAN 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.
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.
4. 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.
- 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.
5. AGEN BERBASIS LOGIKA PROPOSISI
-
LOGICAL AGENTS
Logic merupakan jantung dari program, para pemrogram
mempunyai keyakinan bahwa sebuah computer dapat dibuat mengerti logika, maka
computer dapat dibuat untuk berfikir, karena logika kelihatannya menjadi inti
dari kecerdasan.
a. Problem
solving agent hanya bisa menyelesaikan masalah yang lingkungannya accessible
b. Kita
membutuhkan agen yang dapat menambah pengetahuan dan menyimpulkan keadaan
c. Agent yang
akan membantu seperti ini kita beri nama knowledge based agent
-
LOGIKA PROPOSISI
Logika Proposisi berupa kalimat-kalimat lengkap dari fakta
atau kenyataan, atau bisa dikatakan sebuah propositional logic bisa merupakan
sebuah proposisi adalah kalimat yang berbentuk dengan sendirinya, apakah
kalimat itu bernar atau kalimat itu salah. Propositional logic merupakan
operator-operator untuk menghubungkan proposisi-proposisi dalam bentuk,
ungkapan dan ekspresi, sebagai kata penyambung logika.
Contoh:
1 Tanda “^”
artinya “AND”
2 Tanda “v” artinya
“OR”
3. Tanda “ “ artinya
“IF THEN”
4. Tanda “ “
artinya “IF and only IF then”
5. Tanda “=” artinya
“assignment”
6. Tanda “ “ artinya
“NOT (negation)”
Penggunaan dari propositional logic sebagai langkah atau cara mempresentasikan dari pengetahuan dunia yang diperlukan dari sebuah sistem yang sudah terorganisir (AI). Ekspresi-ekspresi dibentuk menurut semua tata bahasa sederhana, dan ekspresi yang sesuai dengan tata bahasa ini disebut well formed formulae (wffs). Tanda kurung digunakan untuk membuat kelas urutan dari penempatan nilai kebenaran, jika tidak yang lain jelas.
ppt:
Referensi:
Fatichah, Chastine. 2012. Logical Agents. Surabaya.
Astuti,Waniwatining dan Rizani Teguh. 2016. Logika
Informatika. Palembang.
Komentar
Posting Komentar