Professional Documents
Culture Documents
ფფფ
ფფფ
nana rezo
gია lali
ლია ია
gogi
mshobeli(nana, gia).
mshobeli(rezo, gia).
mshobeli(rezo, lali).
mshobeli(gia, lia).
mshobeli(gia, ia).
mshobeli(ia, gogi).
ეს პროგრამა შეიცავს ექვს წინადადებას. თითოეული წინადადება
აკეთებს განაცხადს ერთი ისეთი ფაქტის არსებობაზე, რომელიც შეიცავს
მიმართებას mshobeli. მაგალითად, არის თუ არა gია ია-ს მშობელი? ეს
კითხვა შეიძლება გადავცეთ პროლოგ-სისტემას თუ კლავიატურაზე
ავკრიბავთ:
?- mshobeli(gია, ia).
yes (დიახ)
?- mshobeli(lali, ia).
სისტემა გვიპასუხებს
no (არა)
რადგანაც პროგრამაში არაფერია ნათქვამი იმაზე, რომ lali ია-ს მშობელია.
პროგრამა გვიპასუხებს “არა” შემდეგ კითხვაზეც:
?- mshobeli(rezo, valeri).
?- mshobeli(X, lali).
X = rezo
აუცილებელია აღინიშნოს, რომ პროლოგის ზოგიერთ რეალიზაციაში
ცვლადის გამოტანისათვის საჭიროა დამატებითი ბრძანებების მიცემა,
მაგალითად:
?- mshobeli(gia, X).
X = lia
X = ia
?- mshobeli( X, Y).
სისტემა რიგ-რიგობით მონახავს ”მშობელი-შვილი” სახის ყველა წყვილს.
პასუხები გამოვა შემდეგნაირად:
X = nana
Y = gia
X = rezo
Y = gia
X = rezo
Y = lali
...
mSobeli
Y
mSobelismSobeli
mSobeli
gogi
პასუხი იქნება:
X = gia
Y = ia
X = gia
Y = lia
X = gia
Y = ia
პასუხი:
X = gia
სავარჯიშო
1.1. ჩავთვალოთ, რომ მიმართება mshobeli განსაზღვრულია
როგორც ზემოთ (იხილეთ ნახ. 1.1). მონახეთ პროლოგ-
სისტემის პასუხები შემდეგ კითხვებზე:
? – mshobeli(gogi, X).
? – mshobeli(X, gogi).
? – mshobeli(nana, X), mshobeli(X, ia).
? – mshobeli(nana, X), mshobeli(X, Y).
kaci(gogi).
kaci (rezo).
kaci (gia).
qali(lali).
qali (ia).
qali (lia).
qali (nana).
sqesi(nana, mdedrobiti).
sqesi(rezo, mamrobiti).
sqesi(gია, mamrobiti).
...
ყველა X და Y – სათვის
Y არის X – ის შვილი, თუ
X არის Y – ის მშობელი
ყველა X და Y – სათვის
თუ X არის Y – ის მშობელია, მაშინ
Y არის X – ის შვილი.
ასეთ წინადადებებს პროლოგში წესები ეწოდება. ფაქტებსა და
წესებს შორის არსებითი განსხვავებაა. ფაქტი
mshobeli(rezo, lali).
?- shvili(lali, rezo).
X = rezo და Y = lali
დაკონკრეტების შემდეგ ჩვენ მივიღებთ კონკრეტულ შემთხვევას
ზოგადი წესიდან. აი ისიც:
mshobeli(rezo, lali)
იცვლება ქვემიზნით
mshobeli(rezo, lali)
ყველა X და Y- სათვის
X არის Y – ის დედა, თუ
X არის Y – ის მშობელი და
X – ქალია.
qali
X X X
mSobeli
mSobeli
mSobeli
deda
Svili
mSobeli Y
mSobelis
mSobeli
mSobeli
Y Y
Z
mshobeliსmshobeli(X,Z) :- mshobeli(X,Y),
mshobeli(Y,Z).
mSobeli mSobeli
qali X Y
da
da(X, Y) :-
mshobeli(Z,X),
mshobeli(Z,Y),
qali(X).
?- da(lia,X).
X = lia
X = ia
გამოდის, რომ ია თავისი თავის დაა? როცა ჩვენ განვსაზღვრეთ
მიმართება და, ეს მხედველობაში არ მიგვიღია. მაგრამ პროლოგის
პასუხი სრულიად ლოგიკურია, რადგანაც ის ხელმძღვანელობდა ჩვენი
წესით, ეს წესი კი არაფერს არ ამბობს იმის შესახებ,რომ თუ X – Y – ის
დაა, მაშინ X და Y ერთმანეთს არ უნდა დაემთხვეს. პროლოგი (სრული
უფლებით) თვლის, რომ X და Y შეიძლება იყოს ერთი და იგივე ობიექტი
და აქედან გამომდინარე აკეთებს დასკვნას, რომ ნებისმიერი ქალი,
რომელსაც ჰყავს მშობელი, არის თავისი თავის და.
რომ გამოვასწოროთ წესი დებზე, ის უნდა შევავსოთ
მტკიცებულებით, რომ X და Y ერთმანეთისაგან უნდა
განსხვავდებოდნენ. შემდეგ თავებში ჩვენ ვნახავთ, რომ ამის გაკეთება
შეიძლება, ამ მომენტში კი ვივარაუდოთ, რომ მიმართება gansxvavebuli
პროლოგ-სისტემისთვის უკვე ცნობილია და მიზანი
gansxvavebuli (X,Y)
da(X, Y) :-
mshobeli(Z,X),
mshobeli(Z,Y),
qali(X),
gansxvavebuli (X,Y).
hyavsshvili(X) :- mshobeli(X,Y).
სავარჯიშო
X X
mSobeli
mSobeli
winapari
Z winapari
mSobeli
(a)
mSobeli
Z
(b)
cinapari (X,Z) :-
mshobeli(X,Z)
cinapari (X,Z) :-
mshobeli(X,Y),
mshobeli(Y,Z).
cinapari (X,Z) :-
mshobeli(X,Y1),
mshobeli(Y1,Y2),
mshobeli(Y2,Z).
cinapari (X,Z) :-
mshobeli(X,Y1),
mshobeli(Y1,Y2),
mshobeli(Y2,Y3),
mshobeli(Y3,Z).
. . .
X X
mSobeli
mSobeli
winapari
Y1
Y winapari
mSobeli
mSobeli
Y2
Z mSobeli
ყველა X და Z – ისთვის,
X არის Z – ის წინაპარი, თუ
არსებობს ისეთი Y, რომ
(1) X არის Y – ის მშობელი და
(2) Y არის Z – ის წინაპარი.
cinapari (X,Z) :-
mshobeli(X,Y),
cinapari (Y,Z).
cinapari (X,Z) :-
mshobeli(X,Z).
cinapari (X,Z) :-
mshobeli(X,Y),
cinapari (Y,Z).
X= gia
X= lia
X= ia
X= gogi
X
mSobeli
winapari
winapari
. . .
/* ეს კომენტარია */
% ესეც კომენტარია.
სავარჯიშო
cinapari (X,Z) :-
mshobeli(X,Z).
cinapari (X,Z) :-
mshobeli(Y,Z),
cinapari (X,Y).
სოკრატე მოკვდავია.
?- cinapari(rezo, ia).
?- cinapari(rezo, ia).
wesi w1 – s mixedviT
mSobeli(gია, ია)
X = rezo, Z = ia
საწყისი მიზანი cinapari(rezo,ia) იცვლება ახალი მიზნით
mshobeli(rezo,ia)
cinapari (X,Z) :-
mshobeli(X,Y),
cinapari (Y,Z).
X = rezo, Z =ia
mshobeli(rezo,Y),
cinapari (Y,ia).
გამოთვლის ეს ბიჯი ნაჩვენებია ნახ. 1.10 – ზე, რომელიც წარმოადგენს
ნახ. 1.9 –ზე გამოსახული სიტუაციის გაგრძელებას.
winapari(rezo, ია)
(ara)
cinapari (gia,ia)
ამ მიზნის მისაღწევად ისევ გამოიყენება წესი წ1. შევნიშნოთ, რომ წესის
ეს (მეორედ) გამოყენება არაფრით არ არის დაკავშირებული მის პირველ
გამოყენებასთან. ამიტომ წესის ყოველი ახალი გამოყენებისას სისტემა
იყენებს წესების ცვლადების ახალ სიმრავლეებს. ამაზე რომ
მივუთითოთ, წესი წ1 – ს ცვლადებს ჩვენ შემდეგნაირად გადავარქვათ
სახელები:
cinapari (X’,Z’) :-
mshobeli(X’,Y’).
X’ = gia, Z’ = ia
mshobeli(gia, ia)
(ara)
faqtidan Y = gია
mSobeli(rezo,gია)
winapari(gია, ია)
mSobeli(gია, ია)
(dიაx)
სავარჯიშო
Tavi 2
konstantebi cvladebi
atomebi ricxvebi
‘Tomi’
‘Goga Asatიაni’
‘Saqartvelo_Imereti’
2.1.2. ცვლადები
X
Rezult
Object2
Gიაs_deda
NivtebisSია
_z76
_68
hyavsshvili(X) :- mshobeli(X,Y).
vigac_hyavs_shvili :- mshobeli(X,Y).
vigac_hyavs_shvili :- mshobeli(X,X).
?-mshobeli(X, _).