खोज…


विघटन (तार्किक या), निहित बनाम अन्वेषण

प्रोलोग उपस्थिति के क्रम में एक विधेय के लिए वैकल्पिक खंड की कोशिश करता है:

likes(alice, music).
likes(bob, hiking).

// Either alice likes music, or bob likes hiking will succeed.

डिसजंक्शन (OR) ऑपरेटर ; इसे एक नियम में व्यक्त करने के लिए इस्तेमाल किया जा सकता है:

likes(P,Q) :-
    ( P = alice , Q = music ) ; ( P = bob , Q = hiking ).

कोष्ठक यहाँ स्पष्टता के लिए महत्वपूर्ण हैं। इस प्रश्न को संकलित करने , और विघटन के लिए सापेक्ष वरीयता पर देखें ;

संयोजन (तार्किक और)

Conjunction (तार्किक और) अल्पविराम , ऑपरेटर (अन्य भूमिकाओं के बीच) द्वारा दर्शाया गया है।

खण्डों के बीच संबंध एक प्रश्न में प्रकट हो सकते हैं:

?- X = 1, Y = 2.

एक नियम के शरीर में उप-खंड के बीच संयोजन भी दिखाई दे सकता है:

triangleSides(X,Y,Z) :-
    X + Y > Z, X + Z > Y, Y + Z > X.

कट (पसंद अंक हटाएं)

कभी-कभी प्रोलॉग को वैकल्पिक समाधानों में पीछे जाने से रोकना वांछनीय है। प्रोग्रामर के लिए उपलब्ध मूल उपकरण उसके बैकट्रैक में फ़्यूचर को जारी रखने से रोकने के लिए उपलब्ध कटौती ऑपरेटर है। निम्नलिखित को धयान मे रखते हुए।

% (percent signs mean comments)
% a is the parent of b, c, and d.
parent(a,b).
parent(a,c).
parent(a,d).

यहाँ विधेय parent/2 एक से अधिक बार सफल होता है

?- parent(a,X).

कहा जाता है। पहले पाए जाने के बाद अधिक समाधानों की खोज करने से प्रोलॉग को रोकने के लिए आप कट ऑपरेटर का उपयोग करेंगे, जैसे।

?- parent(a,X), !.

यह बी के बराबर एक्स होगा (जैसा कि यह पहला संभव समाधान है) और कोई और समाधान नहीं है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow