Дискретка_Экзамен_Ответы / графы / 4 цепи
.docxМаршрут, в котором все рёбра различны, называется цепью. Цепь, также как и маршрут, может быть задана последовательностью вершин. Пусть задана последовательность вершин и требуется определить, является ли она цепью в заданном графе. Для этого будем использовать множество E' (в исходном состоянии оно пустое) рёбер. Последовательно перебирая пары соседних вершин в заданной последовательности, проверяем условие, являются ли эти вершины смежными и принадлежит ли ребро, образованное этими вершинами множеству E’, и, если вершины смежны и ребро, образованное ими, не принадлежит множеству E’, то ребро включаем в множество E’ и переходим к следующей паре вершин. Если же на некотором шаге обнаруживаем, что вершины не смежны или ребро, образованное ими, принадлежит множеству E’, то заданная последовательность вершин не является цепью в заданном графе.
Получить все цепи W длины l в графе G, начинающиеся вершиной v можно, используя метод поиска с возвращением. Сначала на первое место цепи W поставим вершину v. Множество рёбер E', включенных в цепь, пусто. Затем, начиная со второго элемента, последовательно формируем элементы цепи. Формирование i-го элемента цепи опишем рекурсивным алгоритмом 4.2, блок-схема которого представлена на рис.4.12. В цикле перебираются вершины, смежные вершине, стоящей на i-1-м месте в цепи W и не образующие с ней ребро, принадлежащее множеству E’, т.е. элементы множества Г(Wi-1)-{y|{Wi-1,y}E’}, которые можно поставить на i-е место. Если заполнено последнее, l+1-е место, то цепь получена и выводим её, иначе заполняем следующее i+1-е место по алгоритму 4.2 с учётом последнего включённого в цепь ребра.
Алгоритм 4.2 получения всех цепей W длины l в графе G, начинающихся вершиной v.
Вход: i – заполняемое место в цепи W;
E’ – множество рёбер, включенных в цепь.
Выход: последовательность всех цепей W в графе G, начинающихся вершиной v.
Глобальные параметры: W – формируемая цепь;
l – длина цепи.
Маршрут, в котором все вершины (а значит, и рёбра) различны, называется простой цепью. Пусть задана последовательность вершин и требуется определить, является ли она простой цепью в заданном графе. Для этого будем использовать множество V' вершин (в исходном состоянии оно содержит только первую вершину заданной последовательности). Последовательно перебирая пары соседних вершин в заданной последовательности, проверяем условие, являются ли эти вершины смежными и принадлежит ли вторая вершина пары множеству V’, и, если вершины смежны и вторая вершина пары не принадлежит множеству V’, то вторую вершина пары включаем в множество V’ и переходим к следующей паре вершин. Если же на некотором шаге обнаруживаем,
Цепи(i,E’)
x Г(Wi-1)-{y|{Wi-1,y}E’}
Wi := x
+
i=l+1
Цепи(i+1, E’ {Wi-1,x})
W
Конец
Рис.4.12. Рекурсивный алгоритм получения всех цепей W длины l в графе G, начинающихся вершиной v
что вершины не смежны или вторая вершина пары принадлежит множеству V’, то заданная последовательность вершин не является простой цепью в заданном графе.
Получить все простые цепи W длины l в графе G, начинающиеся вершиной v можно, используя метод поиска с возвращением. Сначала на первое место цепи W поставим вершину v и запомним её в множестве V’. Затем, начиная со второго элемента, последовательно формируем элементы цепи. Формирование i-го элемента цепи опишем рекурсивным алгоритмом 4.3, блок-схема которого представлена на рис.4.13. В цикле перебираются вершины, смежные вершине, стоящей на i-1-м месте в цепи W за исключением тех, которые уже включены в цепь, т.е. элементы множества Г(Wi-1)-V’, которые можно поставить на i-е место. Если заполнено последнее, l+1-е место, то простая цепь длины l получена и выводим её, иначе заполняем следующее i+1-е место по алгоритму 4.3 с учётом последней включённой в цепь вершины.
Алгоритм 4.3 получения всех простых цепей W длины l в графе G, начинающихся вершиной v.
Вход: i – заполняемое место в цепи W;
V’ – множество вершин, включенных в цепь.
Выход: последовательность всех простых цепей W длины l в графе G, начинающихся вершиной v.
Глобальные параметры: W – формируемая простая цепь;
l – длина цепи.
Цепи(i,V’)
Wi := x
xГ(Wi-1)-V’
i=l+1
+
W
Цепи(i+1, V’{x})
Конец
Рис.4.13. Рекурсивный алгоритм получения всех простых цепей W длины l в графе G, начинающихся вершиной v
Простая цепь, начинающаяся вершиной v, называется максимальной простой цепью, если она не является частью ни какой другой простой цепи, начинающейся вершиной v. Пусть задана последовательность вершин и требуется определить, является ли она максимальной простой цепью в заданном графе. Последовательность вершин будет максимальной простой цепью, если она является простой цепью и все вершины, смежные с последней вершиной последовательности, содержатся в этой последовательности. Это означает, что в максимальную простую цепь нельзя добавить ни одной вершины так, чтобы последовательность оставалась простой цепью.
Получить все максимальные простые цепи W в графе G, начинающиеся вершиной v можно, используя метод поиска с возвращением. Сначала на первое место цепи W поставим вершину v и запомним её в множестве V’. Затем, начиная со второго элемента, последовательно формируем элементы цепи. Формирование i-го элемента цепи опишем рекурсивным алгоритмом 4.4, блок-схема которого представлена на
рис.4.14. В цикле перебираются вершины, смежные вершине, стоящей на i-1-м месте в цепи W за исключением тех, которые уже включены в цепь, т.е. элементы множества Г(Wi-1)-V’, которые можно поставить на i-е место. Если все вершины, смежные вершине, установленной на i-е место уже находятся в цепи, то максимальная простая цепь получена и выводим её, иначе заполняем следующее i+1-е место по алгоритму 4.4 с учётом последней включённой в цепь вершины.
Алгоритм 4.4 получения всех максимальных простых цепей W в графе G, начинающихся вершиной v.
Вход: i – заполняемое место в цепи W;
V’ – множество вершин, включенных в цепь.
Выход: последовательность всех максимальных простых цепей W в графе G, начинающихся вершиной v.
Глобальные параметры: W – формируемая максимальная простая цепь, начинающаяся вершиной v.
Цепи(i,V’)
Wi := x
xГ(Wi-1)-V’
Г(x)V’
+
W
Цепи(i+1, V’{x})
Конец
Рис.4.14. Рекурсивный алгоритм получения всех максимальных простых
цепей W в графе G, начинающихся вершиной v