Тверской государственный университет
Опубликован: 21.08.2007 | Доступ: свободный | Студентов: 3170 / 268 | Оценка: 4.08 / 3.92 | Длительность: 15:40:00
ISBN: 978-5-9556-0110-6
Специальности: Программист, Математик
Лекция 11:

Три алгоритма на графах

< Лекция 10 || Лекция 11: 1234

Задачи

Задача 11.1. Цикл в связном неориентированном графе называется Эйлеровым, если он проходит по одному разу через каждое ребро графа. Докажите, что в таком графе имеется Эйлеров цикл тогда и только тогда, когда степени всех его вершин четны (такие графы называются четными.

Указание. Достаточность можно установить, доказав правильность следующей процедуры построения Эйлерова цикла.

  1. Выбрать произвольную вершину a и построить цикл, начинающийся и закачивающийся в a, следуя правилу (*): прийдя в некоторую вершину, выйти из нее по произвольному ребру, еще не включенному в цикл.
  2. Если построенный цикл содержит не все ребра, то выбрать среди вершин, через которые он проходит, произвольную вершину b, инцидентную еще не пройденному ребру (почему такая вершина найдется?), и построить, начиная с нее, цикл, следуя тому же правилу (*). Объединить этот цикл с построенным ранее.
  3. Повторять пункт (2) до тех пор, пока построенный цикл не станет Эйлеровым.

Задача 11.2. Используя результаты предыдущей задачи, определить по неориентированному графу G=(V,E) четный ли он. Если он не является четным, то удалить из него минимальное число ребер, чтобы он стал четным. Построить в исходном или в получившемся после удаления ребер четном графе Эйлеров цикл.

V={a,b,c,e,f,g,h, k,m,n }, E={ (a,c), (a,h), (a,m),(a,k), (b,c),(b,k), (b,f), (b,m), (c,k), (c,m), (e,f), (e,g), (f,k), (f,n),(g,m), (g,h), (h,k), (h,m),(k,n) }.

Задача 11.3. Неориентированный граф G=(V,E) называется двудольным, если его вершины можно разбить на две непересекающихся части X и Y ( V=X \cup  Y, X \setminus cap Y = \varnothing ) так, что каждое ребро из e \in  E соединяет вершину из X с вершиной из Y. Такой граф также называется бихроматическим, так как его вершины можно раскрасить в два цвета так, что соседние вершины будут окрашены в разные цвета.

Докажите, что граф является двудольным тогда и только тогда, когда в нем нет циклов нечетной длины.

Указание. Достаточность можно установить, доказав правильность следующей процедуры разбиения V на X и Y:

  1. Поместить произвольную вершину v \in  V в X и отметить ее знаком +.
  2. ПОКА имеются неотмеченные вершины с отмеченными соседями

    ВЫПОЛНЯТЬ {

    • Поместить все неотмеченные вершины с соседями из X в Y и отметить их знаком - ;
    • Поместить все неотмеченные вершины с соседями из Y в X и отметить их знаком +

      };

  3. ЕСЛИ после завершения цикла 2 в V остались неотмеченные вершины

    ТО поместить произвольную такую вершину v в X, отметить ее знаком + и снова повторить цикл 2

    ИНАЧЕ выдать в качестве результата полученные множества: X - вершины, отмеченные +, и Y - вершины, отмеченные -.

Для доказательства корректности этой процедуры установите, что в процессе разметки ни одна вершина не получит соседа с той же меткой.

Задача 11.4. Используя результаты предыдущей задачи, определить, является ли заданный ниже неориентированный граф G=(V,E) двудольным. Если он не двудольный, то каково минимальное число ребер, которые нужно из него удалить, чтобы он стал двудольным? Приведите обоснование ответа.

V={a,b,c,e,f,g,h, k,m,n }, E={ (a,h), (a,n),(a,k), (b,k), (b,f), (b,m), (c,k), (c,h), (e,f), (e,g), (f,a), (f,m),(g,m), (m,n) }.

Задача 11.5. Найти минимальное остовное дерево для неориентированного графа G=(V,E), где V={v1,v2,v3,v4,v5,v6,v7,v8,v9}, E = {(v1,v2,18), (v1,v3,2), (v3,v2,4), (v3,v4,6), (v3,v5,8), (v4,v6,5), (v5,v4,4), (v6,v1,7), (v6,v8,4), (v6,v7,3), (v7,v5,1), (v7,v8,7), (v8,v1,5), (v8,v9,3), (v9,v1,1)} (третий параметр в скобках - стоимость ребра).

Задача 11.6. Пусть S= (V,T) - остовное дерево наименьшей стоимости, построенное алгоритмом МИНОД для нагруженного неориентированного графа G=(V,E) с n вершинами. Пусть c1 <= c2 <= ... <= cn-1 - это последовательность длин ребер из T, упорядоченных по возрастанию. Пусть S' - произвольное остовное дерево для G с длинами ребер d1 <= d2 <= ... <= dn-1. Показать, что ci <= di для всех i: 1 <= i <= n-1.

Задача 11.7. Пусть e - ребро максимального веса в некотором цикле графа G=(V,E). Докажите, что существует минимальный остов графа G'=(V,E \ {e}), который является также минимальным остовом графа G.

Задача 11.8. Пусть D=(V,T) - это глубинный остов, построенный алгоритмом обхода "в глубину" для графа G=(V, E). Докажите, что для каждого обратного ребра (u,v) \in  E \setminus  T либо u является предком v в D, либо v является предком u в D.

Задача 11.9. Модифицируйте алгоритм поиска в глубину так, чтобы он вычислял функцию ВЕРХ(v) и распечатывал список всех мостов графа.

Задача 11.10. Обойти (занумеровать) вершины заданного неориентированного графа G с помощью алгоритма обхода "в глубину" и построить дерево этого обхода.

G = (V,E), где V = {v1,v2,v3,v4,v6,v7, v8,v9,v10,v11},

E ={(v1,v2),(v1,v4),(v1,v8),(v7,v8), (v2,v9),(v9,v11), (v3,v8),(v6,v3), (v3,v7),(v6,v7), (v10,v9), (v10,v11) }.

Какое обратное ребро e \in  E \setminus  T и цикл в G обнаружились в этом обходе первыми? Вычислите для каждой вершины v значение ВЕРХ(v) и определите все мосты графа G.

Задача 11.11. Измените алгоритм обхода "в глубину" так, чтобы он позволил перечислить все связные компоненты неориентированного графа.

Задача 11.12. Определить для заданного нагруженного графа G=(V, E) и выделенной вершины a \in  V длины кратчайших путей из этой вершины в остальные вершины G и построить дерево этих путей.

V={a, b, c, d, e,f }, E= {(a,b; 154), (a,c; 17),(a,d; 214), (a,e; 63), (b, d; 25), (c,e; 33), (c, d; 192), ( c,b; 123), (d, f; 5), (e,f; 140), (d,e; 10)}, (здесь каждая скобка (u,v; D) задает ребро (u,v) \in  E и его "вес" c(u,v)=D ).

Задача 11.13. Где в доказательстве правильности алгоритма Дейкстры используется неотрицательность весов ребер? Приведите пример графа (с отрицательными весами), для которого алгоритм Дейкстры дает неверный ответ.

Задача 11.14. Докажите, что на каждом шаге алгоритма Дейкстры кратчайший путь из исходной вершины в любую вершину множества S проходит только через вершины множества S.

Задача 11.15. Сколько раз может меняться для одной вершины v значение D[v] в ходе работы алгоритма Дейкстры для графа с 6 вершинами? Привести пример на каждый возможный случай.

< Лекция 10 || Лекция 11: 1234
Елена Алексеевская
Елена Алексеевская

Это в лекции 3.

Татьяна Дембелова
Татьяна Дембелова

Почему в вводной лекции курса Основы дискретной математики одним из свойств отношения частичного порядка упоминается антирефлексивность? Посмотрела в других источниках, там -0  рефлексивность... http://ru.wikipedia.org/wiki/%D0%9E%D1%82%D0%BD%D0%BE%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0