प्रस्तावना। एक ग्राफ के एक सकर्मक समापन का निर्माण
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).