Cómo representar el gráfico cíclico dirigido en Prolog con acceso directo a las verticías vecinas
Necesito construir una gráfica dirigida (en tiempo de ejecución) con ciclos en Prolog y no estoy seguro de cómo representarlo. Mi requisito es que necesito pasar de un vértice a su vecino en un tiempo constante.
¿Es posible representarlo como un árbol, por ejemplo:
t(left_son,V,right_son)
¿Pero cómo resolver los ciclos?
Puedo hacer una lista de bordes:
graph([a,b,c,d],[e(a,b),e(b,c),e(c,a),e(c,d)])
O solo
[a->[b],b->[c],c->[a,d],d->[]]
pero, ¿cómo evitar llamar a la función 'miembro' en la lista al buscar vecinos, que cuestan tiempo lineal?Gracias por tu ayuda