1.1.3. Struktura programmы na Prologe. Programma na yazыke PROLOG vklyuchayet sleduyuщiye osnovnыye razdelы:
opisaniye imen i struktur obyektov (domains);
opisaniye predikatov – nazvaniy otnosheniy, suщyestvuyuщix mejdu obyektami (predicates);
razdel selevыx utverjdeniy (goal), kotorыy mojet otsutstvovat; v etom sluchaye programma budet zaprashivat selevoye utverjdeniye pri zapuske;
opisaniye faktov i pravil, opisыvayuщix otnosheniya (clauses).
Imena obyektov (konstant) v PROLOGe pishutsya s malenkoy bukvы, a peremennыx – s bolshoy.
Rassmotrim, kak mojno opisat na PROLOGe zadachu iz nekotoroy predmetnoy oblasti, naprimer geografii.
Programma 1
DOMAINS
gorod, strana = symbol
PREDICATES
situ(gorod,strana)
CLAUSES
situ (london, england).
situ (petersburg, russia).
situ (kiev, ukraine).
situ (pekin, asia).
situ (warszawa, poland).
situ (berlin, europe).
situ (X, europe):- situ (X, russia).
situ (X, europe):- situ (X, poland).
Vыrajeniye
situ(kiev, ukraine)
opisыvayet tot fakt, chto gorod Kiyev naxoditsya na Ukraine. Raneye v programme bыl vveden sootvetstvuyuщiy predikat, rabotayuщiy s obyektami simvolnogo tipa. Nazvaniye goroda i stranы zdes yavlyayutsya konstantami, poetomu po pravilam PROLOGa ix nujno pisat s malenkoy bukvы. Vmesto bloka opredeleniy:
DOMAINS
gorod, strana = symbol
PREDICATES
situ(gorod,strana)
mojno bыlo prosto opisat predikat:
PREDICATES
situ(symbol, symbol)
Inogda pervыy variant predpochtitelneye, poskolku pozvolyayet osenivat semanticheskiy smыsl argumentov predikata.
V konse razdela clauses Programmы 1 opisanы dva pravila. Pravilo zadayet novыy predikat cherez predikatы, opredelennыye raneye. Pravilo sostoit iz golovы (predikata) i tela – posledovatelnosti predikatov. Golova otdelyayetsya ot tela znachkom :- kotorыy mojno interpretirovat kak slovo «Yesli». Takim obrazom, zaklyucheniye yavlyayetsya golovoy pravila, a telo pravila sostoit iz nabora posыlok.
Ispolzovaniye pravil yavlyayetsya osnovnыm sposobom predstavleniya znaniy v intellektualnыx sistemax.
Smыsl pravila sostoit v tom, chto sel, yavlyayuщayasya golovoy, budet istinnoy, yesli interpretator PROLOGa smojet pokazat, chto vse vыrajeniya (podseli) v tele pravila yavlyayutsya istinnыmi.
V pravilax bukva X (ili lyubaya drugaya zaglavnaya bukva, ili lyuboye slovo, nachinayuщyeyesya s zaglavnoy bukvы) oboznachayet peremennuyu, kotoraya mojet prinimat raznыye znacheniya.
Tak, pravilo
situ (X, europe):- situ (X, poland)
oznachayet, chto lyuboy polskiy gorod yavlyayetsya odnovremenno yevropeyskim gorodom. Dobavleniyem novыx pravil mojno popolnyat i modifisirovat opisaniye zadachi. Yesli mы xotim opisat tot fakt, chto vse goroda Fransii yavlyayutsya odnovremenno yevropeyskimi gorodami, to dostatochno dobavit vsego odno pravilo
situ (X, europe):- situ (X, france)
i mojno budet po-prejnemu ispolzovat vse ostalnыye faktы o gorodax Yevropы.
V PROLOGe mojno ispolzovat sostavnыye obyektы. Sostavnыye obyektы pozvolyayut opisыvat iyerarxicheskiye strukturы, v kotorыx opisaniye odnogo predikata vklyuchayet v sebya opisaniye drugix predikatov.
Naprimer:
Programma 2
DOMAINS
personal_library=book(title,author,publication)
publication= publication(publisher,year)
collector,title,author,publisher=symbol
year=integer
PREDICATES
collection(collector, personal_library)
CLAUSES
collection(“Ivanov”,book(“Voyna i mir”, “Lev Tolstoy”,
publication(“Prosveщyeniye”,1990))).
Pri opisanii pravil chasto voznikayet neobxodimost ispolzovat logicheskiye svyazki I i ILI. V kachestve svyazki I ispolzuyetsya zapyataya, a v kachestve svyazki ILI – tochka s zapyatoy. Naprimer:
gigant(X) :- rost(X,Y),Y>200.
star_or_mlad(X) :- X>70; X<10.
PROLOG imeyet bolshoye kolichestvo vstroyennыx predikatov, t.ye. predikatы, opredelyayemыye avtomaticheski. Naprimer, vstroyennыy predikat nl vыzыvayet perevod stroki, a vstroyennыy predikat write primenyayetsya dlya vыvoda informasii na ekran. Vstroyennыye predikatы ispolzuyutsya tak je, kak i opredelyayemыye polzovatelem predikatы, no vstroyennыy predikat ne mojet yavlyatsya golovoy pravila ili poyavlyatsya v fakte.
Chasto ispolzuyemыmi vstroyennыmi predikatami yavlyayutsya = (unifikasiya) i logicheskoye otrisaniye not. Naprimer:
student(X) :- X=”Petrov”; X=”Ivanov”.
xor_student(X) :- not(X=”Petrov”), not(X=”Ivanov”).
planeta(X) :- not(X=”solnse”).
Utverjdeniye not(X = Y) ekvivalentno X<>Y.
Inogda bыvayet polezno ispolzovat predikatы, pro kotorыye zaraneye izvestno, istinnы oni ili lojnы. Dlya etix seley ispolzuyut predikatы true i fail. Predikat true vsegda istinen, v to vremya kak fail vsegda lojen. Posledniy predikat ispolzuyetsya dlya upravleniya prosessom resheniya zadachi na PROLOGe.
PROLOG-programma mojet ispolzovat kommentarii, kotorыye ne vliyayut na vыpolneniye programmы, no mogut okazat pomoщ cheloveku, chitayuщyemu programmu. PROLOG ignoriruyet proizvolnoye chislo strok, zaklyuchennoye mejdu simvolami /* i */. Vse, chto naxoditsya mejdu % i konsom stroki, takje rassmatrivayetsya kak kommentariy:
/* Zdes zapisan
kommentariy */
% Eto toje kommentariy
Pri opisanii konkretnoy predmetnoy oblasti obыchno imeyetsya nabor isxodnыx faktov i pravdopodobnыx dopuщyeniy, na osnovanii kotorыx formuliruyutsya pravila.
Rassmotrim, kakim obrazom na PROLOGe mojno opisat zadachu o semeynыx otnosheniyax.
Pust imeyutsya faktы ob otsovstve:
1) Ivan – otes Igorya.
2) Ivan – otes Sidora.
3) Sidor – otes Lizы.
Vvedem takje tri predikata:
Mujchina (x), oznachayuщiy, chto x – mujchina,
Yedinokrovnыy (x,y), oznachayuщiy yedinokrovnost x i y,
Brat (x,y), oznachayuщiy, chto x brat y.
Spravedlivы, ochevidno, sleduyuщiye pravila:
1) «Vse otsы – mujchinы».
2) «Yesli u detey odin otes, to oni yedinokrovnы».
3) «Brat – eto yedinokrovnыy mujchina».
Rassmotrim vыvod resheniya pri otvete na vopros:
«Yest li bratya u Igorya?».
Programma 3
DOMAINS
person = symbol
PREDICATES
otec(person,person)
man(person)
brat(person,person)
CLAUSES
man(X):-otec(X,_).
brat(X,Y):-otec(Z,Y),otec(Z,X),man(X),X<>Y.
otec(ivan,igor). otec(ivan,sidor). otec(sidor,lisa).
Vo vtorom pravile programmы ukazano usloviye X<>Y. Eto pozvolyayet opisat PROLOG-programme tot fakt, chto chelovek ne mojet bыt sobstvennыm bratom.
Posle zaprosa
goal: brat(igor,X)
Sistema vыdast
X = sidor
Eto otvechayet nashim predstavleniyam o pravilnom reshenii.
Privedennыye primerы primitivnы, no oni pozvolyayut predstavit neojidannost i poleznost resheniy, kotorыye mojet sgenerirovat PROLOG pri bolshom kolichestve faktov i pravil v slojnoy predmetnoy oblasti.
Do'stlaringiz bilan baham: |