Cómo visitar cada punto en la gráfica dirigida.

En Prolog, ¿cómo puedo implementar el algoritmo gráfico para encontrar todas las rutas con el fin de implementar el problema del vendedor de viajes en el gráfico dirigido?

ejemplo:

                                                                         graph
                    expected input     expected output                 X -----> Y
    start X             X  Y               X Z                         Y -----> T
    end   Z             Y  T               X Y Z                       T -----> Z
                        T  Z               X Y T Z                     Y -----> Z
                        Y  Z                                           X -----> Z
                        X  Z

Como ustedes saben, en el gráfico dirigido, podría haber un ciclo. Sin embargo, no es necesario pasar el mismo punto dos veces.

             graph             expected output             
           X ----> Y            
           Y ----> X               X Y Z
           Y ----> Z 

Por qué estoy eliminando este caso es porque;

      output :

      X Y X Y ...   Z
              ^^^
              god knows this length ( when program terminates )
              termination is np problem

Respuestas a la pregunta(2)

Su respuesta a la pregunta