Darstellung eines gerichteten zyklischen Graphen in Prolog mit direktem Zugriff auf benachbarte Verticies

Ich muss einen gerichteten Graphen (zur Laufzeit) mit Zyklen in Prolog erstellen und weiß nicht genau, wie ich ihn darstellen soll. Meine Anforderung ist, dass ich in einer konstanten Zeit von einem Scheitelpunkt zu seinem Nachbarn gelangen muss.

Ist es möglich, es als Baum darzustellen, z.

t(left_son,V,right_son)

aber wie löst man die zyklen?

Ich kann eine Liste von Kanten erstellen:

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

Oder nur

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

aber wie vermeide ich es, die Funktion 'member' auf der Liste aufzurufen, während ich nach Nachbarn suche, was lineare Zeit kostet?

Danke für Ihre Hilfe

Antworten auf die Frage(3)

Ihre Antwort auf die Frage