Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Alg_na_graphax.docx
Скачиваний:
9
Добавлен:
18.08.2019
Размер:
493.84 Кб
Скачать

Упражнения.

1. Модифицировать алгоритм поиска в глубину так, чтобы для каждого ребра печатался его тип – древесное или обратное.

2. Ориентированный граф G = (V, Е) называется полусвязным, если для всех пар вершин u, vV, либо существует путь из u в v, либо путь из v в u, либо и то, и другое одновременно. Разработайте эффективный алгоритм для определения, является ли данный граф G полусвязным. Докажите корректность разработанного алгоритма и проанализируйте время его работы.

3. N шестеpенок пpонумеpованы от 1 до N (N ≤ 10). Заданы M (0 ≤ M ≤ 45) соединений паp шестеpенoк в виде (i, j), 1≤ i < j N (шестеpня с номеpом i находится в зацеплении с шестеpней j). Можно ли повеpнуть шестеpню с номеpом 1?

Если да, то найти количество шестеpен, пpишедших в движение.

Если нет, то тpебуется убpать минимальное число шестеpен так, чтобы в оставшейся системе пpи вpащении шестеpни 1 во вpащение пpишло бы максимальное число шестеpен. Указать номеpа убpанных шестеpен ( если такой набоp не один, то любой из них ) и количество шестеpен, пpишедших в движение.

4. Имеется N человек и прямоугольная таблица А[1:N,1:N]; элемент A[i, j] равен 1, если человек i знаком с человеком j, А[i, j] =А[j,i]. Можно ли разбить людей на 2 группы, чтобы в каждой группе были только незнакомые люди.

5. Сильно связанная компонента ориентированного графа G(V, E) – это максимальное множество вершин V V, такое что для каждой пары вершин u, vV’ существуют пути из u в v и из v в u. Разработайте на основе поиска в глубину алгоритм выделения всех сильно связанных компонент ориентированного графа.

Как может измениться количество сильно связных компонентов графа при добавлении в граф нового ребра?

3. Кратчайшие пути

Задача о поиске кратчайшего пути довольно часто встречается на практике. Например, водителю нужно проехать из Ярославля в Мурманск и у него есть дорожный атлас с указанием расстояний между каждой парой пересечений дорог. Как найти кратчайший путь? Эта задача легко решается с помощью аппарата теории графов.

Итак, пусть дан граф G = (V, E), ребрам( или дугам в случае ориентированного графа) которого приписаны веса (стоимости), задаваемые взвешенной матрицей смежности A. Задача о кратчайшем пути состоит в нахождении кратчайшего пути от заданной начальной вершины sV(G) до заданной конечной вершины tV(G), при условии, что такой путь существует, то есть вершины s и t принадлежат одной компоненте связности.

Веса (стоимости), приписанные ребрам, могут быть положительными, отрицательными или нулями. Единственное ограничение состоит в том, чтобы в графе не было циклов с суммарным отрицательным весом. Если такой цикл все же существует и u —некоторая его вершина, то, двигаясь от s к u, обходя затем этот цикл достаточно большое число раз и попадая наконец в t, получим путь со сколь угодно малым весом. Таким образом, в этом случае кратчайшего пути не существует.

Поэтому будем предполагать, что все циклы в G имеют неотрицательный суммарный вес. Отсюда также вытекает, что неориентированные дуги (ребра) графа G не могут иметь отрицательные веса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]