Метод Флёри построения эйлерова цикла

 

Метод Флёри построения эйлерова цикла начинает работу с некоторой вершины х и каждый раз вычеркивает пройденное ребро. Не проходить по ребру, если удаление этого ребра приводит к разбиению графа на две связные компоненты (не считая изолированных вершин).

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

Замечание. Граф G=(X,V) задается множеством X своих вершин и набором реберных окрестностей всех его вершин S(x)={v |ребро v инцидентно вершине х}.

Шаг 1. Выбрать произвольную вершину х0ÎX и положить х=x0, z=х0, С=x0, D=x0, где С - чередующаяся последовательность вершин и ребер, представляющая строящийся эйлеров цикл; D - чередующаяся последовательность, представляющая начальный отрезок цикла, который будет присоединен к текущему циклу С; х - конечная вершина в последовательности D; z - вершина на цикле С, которая служит началом D.

Шаг 2. В множестве S(x)\[V(СV(D)] выбрать произвольное ребро 1. Если S(x)=Æ, то прейти к шагу 5. Здесь V(С) и V(D) обозначают множество ребер из С и D.

Шаг 3. К D дописать ребро 1 и его конец у, т.е. положить D ={ D, 1, у}.

Шаг 4. Положить х=у и перейти к шагу 2.

Шаг 5. Присоединить к С в вершине z цикл D, т.е. положить C={C[x0,z),D,C(z,x0]}, где C[x0,z) - начальный отрезок последовательности С до веpшины z, не включая z; C(z,x0] – отрезок последовательности С от z до x0, не включая z.

Шаг 6. Просматривая последовательность С слева направо, ищем первую такую вершину v, что S(v)\V(C)=Æ. Если такой вершины нет, то перейти к шагу 8, иначе перейти к шагу 7.

Шаг 7. Положить x=v, z=v, D=v и перейти к шагу 2.

Шаг 8. ВыдатьпоследовательностьС, которая является эйлеровым циклом.

 

 

4.12.2. Метод перебора Робертса и Флореса для построения гамильтоновых путей и контуров

 

Метод состоит в выполнении следующей последовательности шагов.

Шаг 1. Построить матрицу , n=|X|, m=max{d(xi)}, mij , xiÎX . mij - есть j-я вершина (скажем, xk), для которой в графе G=(X,Г) существует дуга (xi,xk) (вершины в столбцах упорядочены).

Шаг 2. Положить p=x1 (x1 – отправная вершина), S={x1}.

Шаг 3. Если в столбце р существует возможная вершина (под возможной понимается вершина, еще не принадлежавшая S), то перейти к шагу 4, иначе к шагу 7.

Шаг 4. Выбрать первую возможную вершину xk. Положить S=SÈ{xk}, p=xk и перейти к шагу 5.

Шаг 5. Если |S|=n-1, то напечатать гамильтонов путь S и перейти к шагу 6, иначе перейти к шагу 3.

Шаг 6. Если существует дуга (p,x1), то напечатать гамильтонов контур (SÈ{x1}), иначе перейти к шагу 7.

Шаг 7. Удалить последнюю включенную в S вершину x1. Если S=Æ, то процесс заканчивается, так как все пути и контуры найдены. Останов. Иначе положить p=xi-1 и перейти к шагу 3.

Пример. Рассмотрим граф, изображенный на рис. 4.43.








Дата добавления: 2015-04-10; просмотров: 1750;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.