Upload
doanhuong
View
231
Download
2
Embed Size (px)
Citation preview
Programske paradigmeLogicko programiranje
Milena Vujosevic Janicic
www.matf.bg.ac.rs/~milena
Programske paradigmeBeograd, 26. novembar, 2015.
Logicko programiranjeProlog
Literatura i pitanja
Pregled
1 Logicko programiranje
2 Prolog
3 Literatura i pitanja
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
Resavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
Pregled
1 Logicko programiranjeResavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
2 Prolog
3 Literatura i pitanja
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
Resavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
Proces izracunavanja
Imperativna paradigma: naredbe, sekvenca, selekcija, iteracija ipropratni efektiFunkcionalna paradigma: evaluacija funkcija koriscenjemredukcijaLogicka paradigma: logicke metode (npr metod rezolucije)
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
Resavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
Programske paradigme
Pomenute paradigme se temelje na razlicitim teorijskimmodelima
Formalizam za imperativne jezike — Tjuringova masinaFormalizam za funkcionalne jezike — Lambda racunFormalizam za logicke jezike —
Logika prvog reda
Imperativni jezici imaju svu izrazajnost Tjuringove masine (uzogranicenja memorije i resursa), funkcionalni jezici imaju svuizrazajnost lambda racuna (uz ogranicenja memorije i resursa),ali logicki jezici nemaju svu izrazajnost logike prvog reda.
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
Resavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
Programske paradigme
Pomenute paradigme se temelje na razlicitim teorijskimmodelima
Formalizam za imperativne jezike — Tjuringova masinaFormalizam za funkcionalne jezike — Lambda racunFormalizam za logicke jezike — Logika prvog reda
Imperativni jezici imaju svu izrazajnost Tjuringove masine (uzogranicenja memorije i resursa), funkcionalni jezici imaju svuizrazajnost lambda racuna (uz ogranicenja memorije i resursa),ali logicki jezici nemaju svu izrazajnost logike prvog reda.
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
Resavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
Programske paradigme
Pomenute paradigme se temelje na razlicitim teorijskimmodelima
Formalizam za imperativne jezike — Tjuringova masinaFormalizam za funkcionalne jezike — Lambda racunFormalizam za logicke jezike — Logika prvog reda
Imperativni jezici imaju svu izrazajnost Tjuringove masine (uzogranicenja memorije i resursa), funkcionalni jezici imaju svuizrazajnost lambda racuna (uz ogranicenja memorije i resursa),ali logicki jezici nemaju svu izrazajnost logike prvog reda.
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
Resavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
Resavanje problema
U logickom programiranju, logika se koristi kao deklarаtivnijezik za opisivanje problema, a dokazivac teorema kaomehanizam za resavanje problema.Resavanje problema je podeljeno izmedu programera kojiopisuje problem i dokazivaca teorema koji problem resava.
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
Resavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
Resavanje problema
Sintaksa opisa problema je dosta slicna u jezicima logickeparadigme, ali dokazivac teorema moze da se razlikuje.Najznacajniji predstavnik logicke paradigme je Prolog, koji secesto koristi i kao sinonim za logicku paradigmu.U procesu resavanja problema, Prolog koristi metod rezolucije
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
Resavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
Razvoj logickog programiranja — teorijske osnove
1879. G. Frege - Predikatski racun (sredstvo za analizuformalne strukture cistog misljenja)1915-1936. Gedel, Erban, Skulem, Turing,... Osnovi teorijeizracunljivosti.1965. J.A. Robinson, Metod rezolucije.
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
Resavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
ABSYS
1967. ABSYS — Aberdeen SYStemM. Foster, T. Elkok, Group for Computing Research,University of Aberdeen (UK)Radi sa tvrdenjima (aksiomama) preko kojih se, nakonpostavljanja pitanja, deduktivnim putem generise odgovor.ABSYS je anticipira razne koncepte koji se kasnije koriste ulogickom programiranju.
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
Resavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
Razvoj Prologa
1971. Pod rukovodstvom A. Colmerauer-a u Marselju kreiranQ-System (obrada prirodnih jezika).1972. Q-System preimenovan u PROLOG (PROgramming inLOGic). Saradnja sa Robertom Kovalskim iz Edinburga(automatsko dokazivanje). Implementiran prvi interpretator zaProlog. (Saradnici: Ph. Roussel, R. Pasero, J. Trudel)1974. Na kongresu IFIP-a (International Federation forInformation Processing) R. Kavalski predstavio Prolog sirojjavnosti.1977. David Warren naprvio efikasnu implementacijukompajlera za Prolog za DEC-10 u Edinburgu. (EdinburskiProlog). Osnova sintakse za moderan Prolog.
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
Resavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
Razvoj Prologa
1981. Seminari u Sirakuzi i Los Andjelesu.1982. Prva medunarodna konferencija o Prologu u Marselju.1983. Japanski projekat o razvoju racunara 5. generacije.1986. The Association for Logic Programminghttp://www.logicprogramming.org/
1993. Zavrsen Japanski projekata razvoja racunara 5.generacije.1995. ISO Prolog standarad2007, 2012. Korekcije standarada, dodavanje modula
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
Resavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
Razvoj Prologa
Prolog se cesto koristi kao sinonim za logicko programiranje.Nakon pocetnih godina intenzivnog razvoja jezika, sada jerazvoj usmeren ka integracijama jezika sa drugim programskimjezicima.I dalje se istrazuju efikasniji algoritmi za prevodenje Prologprograma u izvrsni kod.Razne implementacije Prologa: BProlog, GNU Prolog,JIProlog, Visual Prolog, SWI Prolog...Prolog je uticao na razvoj raznih programskih jezika: ALF, Fril,Godel, Mercury, Oz, Ciao, Visual Prolog, XSB, λProlog...
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
Resavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
ASP i Datalog
Pored Prologa, znacajni predstavnici logicke paradime su i ASP(Answer Set Programming) i DatalogSintaksa Dataloga i jezika koji pripadaju ASP podparadigmi suveoma slicne Prologu, ali se proces resavanja problemarazlikuje
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
Resavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
ASP i Datalog
ASP za izracunavanje ne koristi metod rezolucije vec resavaceza iskaznu logiku. Koristi se najcesce za pretragu kod NPteskih problema, npr bojenje grafova, hamiltonovi ciklusi,velike klike...Datalog (logic and databases) je u sintaksnom smislu podskupProloga koji se koristi za integraciju podataka, izvlacenjepodataka, umrezavanje, analizu programa, cloud computing.Datalog moze da koristi razlicite efikasne algoritme zaodredivanje vrednosti upita. Datalog nije Tjuring kompletan.
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
Resavanje problemaTeorijske osnovePrvi logicki jezikRazvoj PrologaDrugi predstavnici logicke paradigmePrimena
Primena logickog programiranja
Logicko programiranje je pogodno zaresavanje problema matematicke logike,obradu prirodnih jezika,podrsku relacionim bazama podataka,automatizaciju projektovanja,simbolicko resavanje jednacina,razne oblasti vestacke inteligencije...
Logicko programiranje nije pogodno zaI/O algoritme,grafiku,numericke algoritme...
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanjaTeorijske osnove
Pregled
1 Logicko programiranje
2 PrologTeorijske osnove
3 Literatura i pitanja
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanjaTeorijske osnove
Teorijske osnove i Prolog
Kao sto se Haskell oslanja na lambda racun, tako se Prologoslanja na logiku prvog reda i metod rezolucijePotrebno je poznavanje pojmova iskazne logike i logike prvogreda (formula, interpretacija, vrednost, literal, standardneforme, unifikacija, rezolucija...)Proloski zapis programa je izveden iz zapisa formula logikeprvog reda.
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanjaTeorijske osnove
Teorijske osnove i Prolog
Proloski zapis je redukovan zapis formula logike prvog reda —ne mogu se sve formule logike prvog reda izraziti u Prologu.U Prologu se mogu izraziti samo Hornove klauze.Hornova klauza: disjunkcija literala sa najvise jednimnenegiranim literalom
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanjaTeorijske osnove
Teorijske osnove i Prolog
Hornova klauza odgovara implikaciji
(A1 ∧ A2... ∧ An)⇒ B
jer je to ekvivalentno sa
¬(A1 ∧ A2... ∧ An) ∨ B
odnosno sa¬A1 ∨ ¬A2... ∨ ¬An ∨ B
Hornove klauze se u prologu zapisuju u obliku
B ⇐ (A1 ∧ A2... ∧ An)
pri cemu se znak ⇐ zapisuje kao :-
B : −(A1,A2, ...,An)
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanjaTeorijske osnove
Teorijske osnove i Prolog
Hornove klauze predstavljaju ogranicenje: ne moze se izrazititvrdenje oblika ¬A⇒ BPrethodnom tvrdenju odgovara formula A ∨ B , dakle formulakoja sadrzi dva nenegirana literala
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanjaTeorijske osnove
Unifikacija
Supstitucija je preslikavanje koje promenljive preslikava utermove. Supstitucija se sastoji od konacnog broja pravilapreslikavanja, npr x → a, y → f (a, b), u → vDva terma t i u se mogu unifikovati ako i samo ako postojisupstitucija σ tako da vazi tσ = uσProblem unifikacije je problem ispitivanja da li postojisupstitucija koja cini dva izraza (dva terma ili dve formule)jednakim.Unifikacija se koristi prilikom trazenja resenja u okviru Prologa.Za formalnu definiciju unifikacije i supstitucije, pogledati nprskriptu iz Vestacke inteligencije
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanjaTeorijske osnove
Unifikacija primeri
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanjaTeorijske osnove
Prolog program
Programiranje u Prologu se sastoji uobezbedivanju cinjenica o objektima i odnosima medu njimadefnisanju pravila o objektima i odnosima medu njima,formiranju upita o objektima i odnosima medu njima.
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanjaTeorijske osnove
Hello world!
?- write(’Hello world!’), nl.Hello world!true.
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
LiteraturaPitanja
Pregled
1 Logicko programiranje
2 Prolog
3 Literatura i pitanjaLiteraturaPitanja
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
LiteraturaPitanja
Literatura — osnovna
Concepts of programming languages, Robert W. SebestaProgramming Language Pragmatics, Michael L. ScottSkripta Vestacka inteligencija, Predrag Janicic, Mladen NikolicSlajdovi prof Dusana Tosica sa istoimenog kursaB-Prolog http://www.picat-lang.org/bprolog/download/manual.pdf
http://www.hakank.org/bprolog/
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
LiteraturaPitanja
Literatura — dodatna
Absys: the first logic programming language — A retrospectiveand a commentary http://www.sciencedirect.com/science/article/pii/0743106690900309
The early years of logic programming — Robert Kowalskihttp://www.doc.ic.ac.uk/~rak/papers/the%20early%20years.pdfhttp://www.doc.ic.ac.uk/~rak/papers/History.pdf
D. Tosic, R. Protic: PROLOG kroz primere, Tehnicka knjiga,Beograd, 1991.B. Bajkovic, M.Durisic, S.Matkovic: PROLOG i logika, Krug,Beograd, 1998.
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
LiteraturaPitanja
Pitanja
Sta cini teorijske osnove logickog programiranja?Na koji nacin se resavaju problemi u okviru logicke paradigme?Koji su osnovni predstavnici logicke paradigme?Za koju vrstu problema je pogodno koristiti logickoprogramiranje?Za koju vrstu problema nije pogodno koristiti logickoprogramiranje?
Milena Vujosevic Janicic Programske paradigme
Logicko programiranjeProlog
Literatura i pitanja
LiteraturaPitanja
Pitanja
Sta je Hornova klauza i cemu ona odgovara?Sta je supstitucija?Kada se dva terma mogu unifikovati?Od cega se sastoji programiranje u Prologu?
Milena Vujosevic Janicic Programske paradigme