Logiko programiranjeu Prologu
Logiko programiranje Logiko programiranje (engl. logic programming) uporaba matematike logike za programiranje Ideja: opisati problem logikim formulama, a rjeavanjeprepustiti raunalu "Algorithm = Logic + Control Razliito od dokazivaa teorema (ATP) jer: U program su ugraneni eksplicitni kontrolni mehanizmi Nije podrana puna ekspresivnost logike
DEKLARATIVNI PROGRAMSKI JEZICI deklarativni jezici opisuju to se izraunava umjesto kakose to izraunava zadaje se specifikacija skupa uvjeta koji definirajuprostor rjeenja pronalaenje rjeenja preputeno je interpreteru osnovne karakteristike: eksplicitno stanje umjesto implicitno stanje nema popratnih efekata (engl. side-effects) programiranje s izrazima funkcijski jezici: izraz=fukcija logiki jezici: izraz=relacija
DEKLARATIVNI JEZICI isto deklarativni (engl. purely declarative) jezici nedozvoljavaju popratne efekte Haskell, ... radi praktinosti veina deklarativnih jezika doputakontrolirane popratne efekte (declarative in style) Lisp, SML, Ocaml, Prolog, ... pogodnosti: formalno koncizni, visoka razina apstrakcije laka formalna verifikacija manja mogunost pogreke nedostaci: neuinkovitost neke strukture/funkcije iziskuju popratne efekte (npr.?)
PROLOG Prolog = Programming in Logic deklarativni logiki programski jezik 1972.: Alan Colmerauer, Robert Kowalski, PhilippeRoussel originalno razvijen za NLP fundamentalni koncepti: rekurzija unifikacija postupak vraanja (backtracking) nije isto deklarativan: "Algorithm = Logic + Control (A B) C (B A) C
HORNOVE FORMULEProgrami u Prologu sainjeni su od slijeda pravila Svako pravilo je FOPL formula u Hornovom obliku: ~P1 P2 P3 ... Pn Q tj. klauzula u kojoj je najvie jedan literal pozitivan Ekvivalentno: (P1 P2 P3 ... Pn) Q Specijalan sluaj za Pi = true: true Q == Q Zakljuivanje nad Hornovim formulama: primjeni modus ponens dokle god je mogue Naalost, ne moe se svaka formula pretvoriti u Hornovoblik .... ~P Q ... niti moemo s MP dokazati svaku logiku posljedicu
Top Related