प्रस्तावना। एक ग्राफ के एक सकर्मक समापन का निर्माण

Nov 30 2020

मैं प्रोलॉग के लिए बहुत नया हूं। मेरा ऐसा ग्राफ है:

edge(a,e).
edge(e,f).
edge(f,d).
edge(d,a).

मैं एक सकर्मक बंद को परिभाषित करता हूं:

p(X,Y) :- edge(X,Y).
tran(X,Z) :- p(X,Y), p(Y,Z).

मुझे एक ग्राफ के एक सकर्मक समापन का निर्माण करने की आवश्यकता है। कृपया मुझे बताएं कि इसके साथ कैसे आगे बढ़ना है।

जवाब

2 WillemVanOnsem Nov 30 2020 at 00:58

इसके साथ समस्या trans/2यह है कि यह केवल दो किनारों पर चलेगा , एक मनमाना संख्या नहीं।

हम एक विधेय को परिभाषित कर सकते हैं tran(X, Z)जो धारण edge(X, Z)करता है, या edge(X, Y)फिर रखता है tran(Y, Z)। इस प्रकार हम बाद में एक किनारे का अनुसरण करते हैं और फिर निम्न पर फिर से बढ़ते हैं tran/2:

tran(X, Z) :-
    edge(X, Z).
tran(X, Z) :-
    edge(X, Y),
    tran(Y, Z).