ВУЗ:
Составители:
Рубрика:
56
path (X, X).
path (X, Y):- edge (X, Z), path (Z, Y).
Пример 68:
Решить задачу из примера 67, используя списочные структуры для
представления графа. Граф задается двумя списками: списком вершин и
списком ребер. Ребро представлено при помощи структуры edge.
domains
edge= e(symbol, symbol)
/* аргументы обозначают имена вершин */
list1=symbol*
list2=edge*
graf = g(list1, list2)
predicates
path(graf, symbol, symbol)
/*Предикат path(graf, symbol, symbol) определяет отношение
связанности вершин в графе.*/
clauses
path (g([],[]),_,_).
path (g([X|_],[e(X,Y)|_]),X,Y).
path (g([X|T],[e(X,_)|T1]),X,Y):-
path (g([X|T],T1),X,Y).
path (g([X|T],[e(_,_)|T1]),X,Y):-
path (g([X|T],T1),X,Y).
path (g([X|T],[e(X,Z)|T1]),X,Y):-
path (g([X|T],T1),Z,Y).
goal
path (g([a, b, c, d],[e(a, b),e(b, c),e(a, d),e(c, b)]), a, c).
Пример 69:
Решить задачу из примера 67, используя
списочные структуры для
представления графа. Граф задается списком списков: в каждом подсписке
голова является вершиной, а хвост – списком смежных вершин.
domains
edge= e(symbol, symbol)
/* аргументы обозначают имена вершин */
list1=symbol*
list2=edge*
graf = g(list1, list2)
predicates
path(graf, symbol, symbol)
/*Предикат path(graf, symbol, symbol) определяет отношение
связанности вершин в графе.*/
clauses
path (g([],[]),_,_).
path (g([X|_],[e(X,Y)|_]),X,Y).
Страницы
- « первая
- ‹ предыдущая
- …
- 54
- 55
- 56
- 57
- 58
- …
- следующая ›
- последняя »