Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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




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




 


Рис. 9.11. Примеры графов: а) простой граф; б) ори­ентированный граф со стоимостями, назначенными дугам

Графы могут быть представлены на языке Prolog несколькими методами. Один из методов состоит в том, чтобы каждое ребро или каждая дуга были представлены от­дельно, в виде одного предложения. Поэтому графы, показанные на рис. 9.11, могут быть представлены с помощью множеств предложений, например, следующим образом:

connected! а, Ь). connected! Ь, с).

arc< s, t, 3). atc(t, v, 1). arc(u, t, 2).

Еще один метод состоит в том, что весь граф может быть представлен как один объект данных. Поэтому граф представляется как пара из двух множеств: узлы и ребра. Каждое множество узлов можно представить как список, а каждое ребро в множестве ребер - как пару узлов. Для объединения обоих множеств в пару выбе­рем функтор graph, а для представления ребер будем применять функтор е. Таким образом, один из методов представления (неориентированного) графа, показанного на рис. 9.11, выглядит таким образом: G1 = graph; ta,b,c,dj. te(a,b}, e(b,dj, e(b,c), e;c,d;]|

Для представления ориентированного графа можно выбрать функторы digraph и а (для дуг). Поэтому ориентированный граф, показанный на рис. 9.11,. принимает следующий вид: G2 = digraph! [s,t,u,v], [a(s,t,3>, a{t,v,l), a(t,u,5), a[u,t,2), a(v,uf2Jl>

Если каждый узел связан, по меньшей мере, еще с одним узлом, то можно ис­ключить из этого представления список узлов, поскольку в таком случае множество узлов неявно задано списком ребер.

Еще один метод состоит в том, чтобы каждый узел был связан со списком узлов, смежных по отношению к этому узлу. В этом случае граф представляет собой список



Часть I. Язык Prolog


пар, состоящий из узла и соответствующего ему списка смежности. Поэтому графы, рассматриваемые в качестве примеров, можно представить следующим образом;

S1 - [ а -> [b], b -> [a,C,dJ, с -> [Ь,й], d -> [b,c) ]

G2 = [ 3 -> [t/3], t -> [u/5, v/1], u -> [t/2], v -> [u/2] ]

Безусловно, приведенные выше символы "->" и "/" представляют собой инфикс­ные операторы.

Выбор наиболее подходящего представления зависит от приложения и от того, какие операции должны выполняться с графами. Две самые распространенные опе­рации состоят в следующем.

• Поиск пути между двумя указанными узлами,

• Поиск в графе такого подграфа, который обладает некоторыми заданными
свойствами.

Примером операции последнего типа является поиск остовного дерева графа. В следующих разделах рассматриваются некоторые простые программы поиска пути и формирования остовного дерева.





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 424 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Не будет большим злом, если студент впадет в заблуждение; если же ошибаются великие умы, мир дорого оплачивает их ошибки. © Никола Тесла
==> читать все изречения...

2541 - | 2236 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.006 с.