Jak przedstawiać ukierunkowany cykliczny wykres w Prologu z bezpośrednim dostępem do sąsiednich pionów

Muszę skonstruować graf skierowany (w czasie wykonywania) z cyklami w Prologu i nie jestem pewien, jak go reprezentować. Moje wymaganie jest takie, że muszę przejść z jednego wierzchołka do jego sąsiada w stałym czasie.

Czy możliwe jest przedstawienie go jako drzewa, np .:

t(left_son,V,right_son)

ale jak rozwiązać cykle?

Mogę zrobić listę krawędzi:

graph([a,b,c,d],[e(a,b),e(b,c),e(c,a),e(c,d)])

Lub tylko

[a->[b],b->[c],c->[a,d],d->[]]

ale jak uniknąć wywoływania funkcji 'member' na liście podczas wyszukiwania sąsiadów, co kosztuje czas liniowy?

Dzięki za pomoc

questionAnswers(3)

yourAnswerToTheQuestion