Zdefiniuj wykres w Prologu: krawędź i ścieżka, sprawdzanie, czy istnieje ścieżka między dwoma wierzchołkami
Jestem bardzo nowy w Prologu. Zdefiniowałem wgraph.pl
następujący wykres:
A oto mój kod Prolog:
edge(a,e).
edge(e,d).
edge(d,c).
edge(c,b).
edge(b,a).
edge(d,a).
edge(e,c).
edge(f,b).
path(X,X).
path(X,Y):- edge(X,Z) ; path(Z,Y).
Rozumiem to w ten sposób: istnieje ścieżka między wierzchołkiemX
i wierzchołekY
tylko wtedy, gdy istnieje krawędź między wierzchołkiemX
i wierzchołekZ
ORAZ istnieje ścieżka między wierzchołkiemZ
i wierzchołekY
(pewnego rodzaju rekurencja).
Czy to pasuje do prezentowanego wykresu? Kiedy pytam Prologa o ścieżkę między wierzchołkiemA
i wierzchołekF
to daje mitrue
... co nawet nie jest właściwe! Co może być nie tak w tym kodzie?