Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Ребро(a,1,2)



Ребро(b,2,З).

Ребро(c,1,З).

Ребро(d,2,4).

Ребро(e,4,5).

Ребро(f,З,5).

Маршрут из вершины Vi в Vj - чередующаяся последовательность вершин и ребер, начинающаяся в вершине Vi и заканчивающаяся

в вершине Vj и в которой любая пара соседних элементов инцидентна

(вершина V и ребро E инцидентны, если E = (V,W) или E = (W,V)).

Рассмотрим задачу поиска эйлеровой цепи и эйлерового цикла.

Эйлерова цепь - маршрут, содержащий все ребра графа в точности

один раз. Эйлеров цикл - эйлерова цепь, у которой начальная и ко-

нечная вершины совпадают.

Напишем правила для поиска эйлеровой цепи в графе, описав предикат

найти_путь(Текущая,Пройденные),

где первый аргумент - Текущая - вершина, а второй - список Пройденные, хранящий номера пройденных в процессе поиска ребер.

Правило 1: Если найден путь, длина которого равна общему количеству

ребер, то искомый путь найден и его надо напечатать.

найти_путь(Текущая,Пройденные):- длина(Пройденные,6),

Write(Пройденные).

Правило 2: Если остались еще не пройденные ребра, то надо взять

ребро, исходящее из текущей вершины и не принадлежащее списку

пройденных.

найти_путь(Текущая,Пройденные):-

длина(Пройденные,N),N<6, ребро(Ребро,Текущая,Новая),

Не_принадлежит(Ребро,Пройденные),

найти_путь(Новая,[Ребро|Пройденные]).

(предикат 'не_принадлежит' написать самостоятельно).





Дата публикования: 2015-02-20; Прочитано: 164 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...