Программирование на языке Пролог для искусственного интеллекта

6ec30db9

Представление графов



9. 5. 1.    Представление графов

Графы используются во многих приложениях, например для представления отношений, ситуаций или структур задач. Граф определяется как множество вершин вместе с множеством ребер, причем каждое ребро задается парой вершин. Если ребра направлены, то их также называют дугами. Дуги задаются упорядоченными парами. Такие графы называются направленными. Ребрам можно приписывать стоимости, имена или метки произвольного вида, в зависимости от конкретного приложения. На Рисунок 6.18 показаны примеры графов.

В Прологе графы можно представлять различными способами. Один из них - каждое ребро записывать в виде отдельного предложения. Например, графы, показанные иа Рисунок 9.18, можно представить в виде следующего множества предложений:

        связь( а, b).
        связь( b, с).
        . . .

        дуга( s, t, 3).
        дуга( t, v, 1).
        дуга( u, t, 2).
        . . .

Другой способ - весь граф представлять как один объект. В этом случае графу соответствует пара множеств - множество вершин и множество ребер. Каждое множество можно задавать при помощи списка, каждое ребро - парой вершин. Для объединения двух множеств в пару будем применять функтор граф, а для записи ребра - функтор р. Тогда (ненаправленный) граф Рисунок 9.18 примет вид:

        G1 = граф( [a, b, c, d],
                            [р( а, b), р( b, d), р( b, с), p( c, d)] )



Содержание раздела