1 / 23

Logic Programming

Kecerdasan Buatan / Artificial Intelligence. Logic Programming. Imam Cholissodin, S.Si., M.Kom. Pokok Bahasan. Sekilas Inference FOL ( Optional ) Logic Programming Logika Predikat Bahasa Deklaratif Pemrograman Prolog Fakta (Clauses) Aturan (Rules) Klausa (Clauses) Variabel Query

Download Presentation

Logic Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. KecerdasanBuatan/ Artificial Intelligence Logic Programming Imam Cholissodin, S.Si., M.Kom.

  2. Pokok Bahasan • Sekilas Inference FOL (Optional) • Logic Programming • Logika Predikat • Bahasa Deklaratif • Pemrograman Prolog • Fakta (Clauses) • Aturan (Rules) • Klausa (Clauses) • Variabel • Query • Implementasi Prolog (The Next) • Latihan Individu + Tugas Kelompok

  3. Logic Programming • SejarahSingkat • PemrogramanLogikadiperkenakanoleh Robert Kowalski padatahun 1974 • AlgoritmatersusunatasLogikadankontrol • Prolog • Merupakanpemrogramandalamlogika • Bahasapemrograman yang menggunakanpemrogramanlogikauntkkomputasi • Diperkenalkanoleh Alain Colmerauerpadatahun 1970 an • ImprementasiProlog yang digunakan SWI Prolog versi 5.6.32 • Bebasmelakukan download di URL: http://www.swi-prolog.org/ • Dikembangkanoleh Jan Wielenmaker, Universitas Amsterdam • Ada berbagaiimplementasi lain seperti: SICStus Prolog, XSB, dsb.)

  4. Logic Programming • PROLOG adalah kependekan dari PROgramming in LOGic, yang berarti pemrograman. • Pemrograman Prolog menggunakan bahasa deklaratif, dimana pemrogram memberi fakta dan aturan untuk selanjutnya diselesaikan oleh Prolog secara deduktif sehingga menghasilkan suatu kesimpulan. • Hal ini berbeda dengan bahasa prosedural seperti Pascal, Fortran, C, atau yang sejenis, dimana pemrogram memberi perintah atau penugasan untuk memecahkan persoalan langkah demi langkah. • Prolog menggunakan relasi, bukan fungsi sehingga sangat sesuai untuk implementasi sistem pakar.

  5. Logic Programming • Contoh : Pemrograman Logika • Temukan seluruh elemen yang beranggotakan dua list yang diberikan • List: [a1, a2, ..., an] atau [a1 | [a2..., an]] a1disebutdengan head dari [a1, a2, ..., an] [a2, ..., an] disebut tail dari [a1, a2, ..., an] • Contoh: [1,2,3,4,5=[1|[2,3,4,5]] • Kita memerlukan definisi pada saat X merupakan member dari suatu list. • JikaX adalahsebagai head-nya, makajawabannyapositif (benar) member(X,[X|List]). • Sebaliknya, lakukanpengecekanapakah X adalah member dari tail. member(X,[Y|List]) member(X,List). • Maka dalam bahasa Prolog bisa dituliskan terurut sebagaimana berikut: member(X|[X|List]). member(X,[Y|List]):-member(X,List). member_both(X,L1,L2):-member(X,L1),member(X,L2). • Kemudian jalankan program untuk memecahkan permasalahan ?-member_both(X,[1,2,3],[2,3,4,5]).

  6. Logika Predikat • Logikapredikat (kalkuluspredikat) merupakanbagiandarikomputasilogika yang jugamencakuplogikaproposisional, dimanafaktadanaturandinyatakanmelaluipredikatseperti: lelaki(Joko) . // fakta menikah(Joko, Tuti) . // fakta ∀x ∀y [menikah(x,y) ∧ lelaki(x)] → ~lelaki(y) . // aturan ∀y ∃x [orang(y) → ibu(x,y) . // aturan • KalimatpertamamenunjukkanadanyafaktabahwaJokoadalahseoranglelaki. • kalimatkeduamenyatakanbahwaJokomenikahdenganTuti. • Kalimatketigadankeempatmenunjukkansuatuaturanataukaidah yang umumberlaku. • Simbolpredikat yang digunakandalamkalimat-kalimattersebutadalahlelaki, menikah, orang, danibu yang seringdisebutsebagairelasi, sedangkanJokodanTutidisebutsebagaisimbolkonstanta.

  7. Bahasa Deklaratif • Sebagaibuktibahwa Prolog merupakanbahasadeklaratifadalahdalammenyatakanfaktadanaturansepertiberikut: • Jikainginmenyatakanbahwa“PrawiroadalahbapakdariJoko”, makadalamProlog dituliskansebagai: bapak(prawiro, joko). • Jikainginmenerangkansuatukaidahbahwa A adalahkakekdari Z makaharusdibuatdahululogikadalambahasa Indonesia sehinggamenjadisuatuaturansepertiberikut: A adalahkakekZ jika A adalahbapakdari X dan X adalahbapak Z atau A adalahkakekZ jika A adalahbapakdari X dan X adalahibuZ dalamProlog dituliskansebagai: kakek(A,Z) :- bapak(A,X), bapak(X,Z). atau kakek(A,Z) :- bapak(A,X), ibu(X,Z).

  8. Pemrograman Prolog • Faktaadalahsuatukenyataanataukebenaran yang diketahui, danmenyatakanhubungan (relasi) antaraduaataulebihobyek. Faktadapat pula menunjukkansifatsuatuobyek. Contoh : bapak(prawiro, joko). merah(darah). asin(garam). • Aturanmerupakanlogika yang dirumuskandalambentukrelasisebab-akibatdanhubunganimplikasi. Misalnyadapatdibuataturanbahwajika A adalahbapakdari X dan X adalahbapakatauibudari Z makadapatdipastikanbahwa A adalahkakekdari Z. Contoh : kakek(A,Z) :- bapak(A,X), bapak(X,Z). kakek(A,Z) :- bapak(A,X), ibu(X,Z).

  9. Pemrograman Prolog • Klausaadalahaturanyang ditulisberupaklausa (clause) danterdiridarihead (kakek) dantail yang dipisahkanolehtanda :- (bapakdanibu). Klausaselaludiakhiridengantandatitik (.). Suatutail klausadapatterdiridaribeberapa sub-klausa yang dihubungkandengantandakoma (,) yang berartihubungananddantandatitikkoma (;) yang menunjukkanhubunganor. Contoh : orangtua(P,Q) :- bapak(P,Q); ibu(P,Q). kakek(A,Z) :- bapak(A,X), orangtua(X,Z). • Variabeladalahargumensuatupredikatdapatberupakonstanta (atom), variabel, atauobyeklain. Suatuatom, variabel, atauobyek lain dalam Prolog disebutterm, sehinggaargumenselaluberupa term.Dalam Prolog terdapat dua variabel, yaitu 1. Variabelbernama, sepertiX, Orang, dansebagainya 2. Variabeltakbernama (placeholder), dilambangkan(_).

  10. Pemrograman Prolog • Variabeladalahargumensuatupredikatdapatberupakonstanta (atom), variabel, atauobyeklain. Suatuatom, variabel, atauobyek lain dalam Prolog disebutterm, sehinggaargumenselaluberupa term.Dalam Prolog terdapat dua variabel, yaitu 1. Variabelbernama, sepertiX, Orang, dansebagainya 2. Variabeltakbernama(placeholder), dilambangkan(_). Setiapterm yang ditulisdenganawalanhurufkapitalselaludianggapsebagaivariabelbernamadalam Prolog, sedangkanawalandenganhurufkecildianggapsebagaisuaturelasiataukonstanta. Variabeltakbernamadigunakanuntukmengabaikannilaisuatuvariabel, yang berartibisabernilaiapasaja. Contoh : member(X,[X|_]). member(X,[_|Y]) :- member(X,Y)

  11. Pemrograman Prolog • Contoh gambaran Prolog : Fakta : link(fortran,algol60). link(algol60, simula67). link(algol60, cpl). link(simula67, smalltalk80). link(simula67, cpp). link(cpl, bcpl). link(bcpl, c). link(c, cpp). path(L,L). path(L,M):-link(L,X),path(X,M).

  12. Pemrograman Prolog • Contoh gambaran Prolog : Fakta : father(john,bill). father(bill,mary). father(bill,tom). father(tom,chris). father(tom,bob). mother(mary,june). mother(mary,katie) john bill tom mary june katie chris bob

  13. Pemrograman Prolog • Contoh dua Program keluarga : Fakta : female(pat). male(jim), offspring(Y,X) :- parent(X,Y). mother(X,Y) :- parent(X,Y),female(X). grandparent(X,Z) :- parent(X,Y),parent(Y,Z). sister(X,Y) :- parent(Z,X),parent(Z,Y),female(X), different(X,Y). predecessor(X,Z) :- parent(X,Z). predecessor(X,Z) :- parent(X,Y),predecessor(Y,Z). Fakta : parent(pam,bob). % Pam is a parent of Bob parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim). female(pam). % Pam is female male(tom). male(bob). female(liz). female(ann).

  14. Pemrograman Prolog • Queryadalahpertanyaan yang digunakan untuk memperoleh jawaban dari suatu problem. Contoh : • Fakta : • edge(a,b). • edge(a,e). • edge(b,d). • edge(b,c). • edge(c,a). • edge(e,b). • edge(X,Y) :- tedge(X,Y). tedge(Node1,Node2) :-edge(Node1,SomeNode), edge(SomeNode,Node2). • Query : • ?- edge(a,c). • ?- edge(a,b). • ?- edge(e,c).

  15. Pemrograman Prolog • FOL form: X (barks(X) wags_tail(X)  dog(X)) • Knowledge Base dog(X) :- barks(X), wags_tail(X). barks(woff). barks(spot). wags_tail(woff). • Queries ?- dog(woff) => yes ?- dog(Y) => Y = woff(menggunakanVariabel) ?- dog(spot) => no Means no more matches found.

  16. Pemrograman Prolog • Knowledge Base : big(bear). big(elephant). small(cat). brown(bear). black(cat). gray(elephant). dark(Z) :- black(Z). dark(Z) :- brown(Z). • Queries : ?- dark(X), big(X).

  17. Pemrograman Prolog • Penyelesian (Unification) : • Knowledge Base : written_by(fleming, "DR NO"). written_by(melville, "MOBY DICK"). book("MOBY DICK", 250). book("DR NO", 310). long_novel(Title):- written_by(_, Title), book(Title, Length), Length > 300. • Queries : ?- written_by(X,Y) ?- written_by(X,Y) written_by( X , Y ). | | written_by(fleming, "DR NO"). written_by( X , Y ). | | written_by(melville, "MOBY DICK"). Prolog menampilkan semua solusi : X=fleming, Y=DR NO X=melville, Y=MOBY DICK 2 Solusi

  18. Pemrograman Prolog • Penyelesian (Unification) : • Knowledge Base : written_by(fleming, "DR NO"). written_by(melville, "MOBY DICK"). book("MOBY DICK", 250). book("DR NO", 310). long_novel(Title):- written_by(_, Title), book(Title, Length), Length > 300. • Queries : ?- written_by(X,Y) ?- written_by(X, “MOBY DICK”) ?- written_by(X, “MOBY DICK”) ?- written_by(X, “MOBY DICK”). | | written_by(fleming, "DR NO"). FAIL ?- written_by(X, “MOBY DICK”). | | written_by(melville, "MOBY DICK"). Prolog menampilkan 1 solusi : X=melville

  19. Pemrograman Prolog • Penyelesian (Unification) : • Knowledge Base : written_by(fleming, "DR NO"). written_by(melville, "MOBY DICK"). book("MOBY DICK", 250). book("DR NO", 310). long_novel(Title):- written_by(_, Title), book(Title, Length), Length > 300. • Queries : ?- written_by(X,Y) ?- written_by(X, “MOBY DICK”) ?- long_novel(X) ?- long_novel(X) ?- long_novel(X) | long_novel(Title):- written_by(_, Title), book(Title, Length), Length > 300. written_by(_, Title) | | written_by(fleming,"DR NO"). book(Title, Length) | book("DR NO", Length). | book("DR NO", 310). Length > 300 | 310> 300. Prolog menampilkan 1 solusi : X=DR NO

  20. Backtracking • Penyelesaian (Backtracking) : • Knowledge Base : likes(bill,X):-food(X),tastes(X,good). tastes(pizza,good). tastes(brussels_sprouts,bad). food(brussels_sprouts). food(pizza). • Queries : ?- likes(bill, What). likes(bill, What). | likes(bill, X) food(X) | backtracking point food(brussels_sprouts) tastes(X,good). | | FAIL tastes(brussels_sprouts,bad). Backtracking food(X) | food(pizza) tastes(X, good). | | tastes(pizza,good). X => What = pizza

  21. Latihan Individu • Perhatikansilsilahkeluargaberikut: • Buatlah Code Prolog sesuaifaktayang adadarisilsilahkeluarga di atas! • Buatlah minimal 2 query yang merepresentasikanpermasalahan di atasdalam Code Prolog! Ninda Alya Arya Ari Level 3 Nisak Aldi Roy Aisah Fahmi Level 2 Soni Tian Maya Level 1

  22. Tugas Kelompok • Buatlah 1 silsilah keluarga minimal sampai pada tingkatan buyut (Level 4). Kemudian buatlah fakta-fakta yang mungkin dan berikakan 5 query yang representatif dengan permasalahan tersebut! • Perhatikan Program Plolog berikut : Ubahlah pertanyaan berikut menjadi Program Prolog & Jawaban! • Was George1 the parent of Charles1? • Who was Charles1's parent? • Who were the children of Charles1? • parent(charles1, james1). • parent(elizabeth, james1). • parent(charles2, charles1). parent(catherine, charles1). • parent(james2, charles1). • parent(sophia, elizabeth). • parent(george1, sophia). • Fakta : • male(james1). • male(charles1). • male(charles2). • male(james2). • male(george1).  • female(catherine). • female(elizabeth). • female(sophia). 

  23. Selesai

More Related