Вы находитесь на странице: 1из 4

Алгоритмы

ДЗ 9 (ПРАВКИ)
Халилов Арслан
Б05-223
23 мая 2023 г.

Задача 2
Решим эту задачу жадником..

1. Отсортируем вершины левой доли по возрастанию ri .

2. Для каждой вершины i левой доли, расположенной в отсортиро-


ванном порядке:

a Из всех возможных вершин правой доли, соединенных с i, вы-


берем вершину j с наименьшим номером, которая еще не была
включена в паросочетание.
b Если такая вершина j найдена, добавим пару (i, j) в макси-
мальное паросочетание и пометим вершину j как используе-
мую в паросочетании.

[a]

Докажем корректность
Предположим, что алгоритм нашел не максимальное паросочетание, т.е.
существует еще одно паросочетание большей кратности. Без потери общ-
ности рассмотрим, что в результате были рассмотрены все вершины ле-
вой доли. Также без потери общности считаем, что вершины левой доли
пронумерованы таким образом, что r1 ≤ r2 ≤ · · · ≤ rn .
Пусть существует другое паросочетание {(i′1 , j1′ ), (i′2 , j2′ ), . . . , (i′k , jk′ )},
где k > m и m - это кратность найденного алгоритмом паросочетания.
Рассмотрим первую различающуюся пару вершин (i′t , jt′ ). Тогда вершина

1
i′t была связана с вершиной с номером меньше jt′ , но в жаднике мы эту
связь не использовали. Обозначим эту вершину как j. Так как j < jt′ ,
вершина j должна быть использована нашим алгоритмом в другой паре
из-за свойства жадного выбора. Но тогда алгоритм будет использовать
не менее t + 1 пар, что противоречит предположению о том, что {t} было
первым различием. ч.т.д.

Задача 3
Докажем утверждение по индукции на длине максимального пути в ато-
графе.

База
Если размер длинного пути = 0, то мы имеем только одно ребро, состо-
ящее из двух вершин и одной дуги (a, b). Здесь нам нужно два неза-
висимых множества {a} и {b} для разбиения вершин. Доказательство
утверждения очевидно верно для базы.

Шаг индукции
Предположим, что утверждение верно для всех атографов с длиной мак-
симального пути n. Докажем утверждение для атографов с длиной мак-
симального пути n + 1.
Пусть G - атограф с максимальной длиной пути n+1. Удалим верши-
ну b, находящуюся в длиннейшем пути и имеющую наибольшую степень
исхода (если таких вершин несколько, выберем любую из них). Обозна-
чим полученный граф как G′ . С учетом транзитивности, на максималь-
ном пути, содержащем b, все предыдущие вершины до b имеют ребра к
следующим вершинам после b (дуги, исходящие из предыдущих вершин
до b, также направлены к вершинам после b). Это означает, что длина
максимального пути в G′ равна n.
Теперь для этого графа G′ по предположению индукции существует
разбиение на независимые множества A1 , A2 , . . . , An . Вернем вершину b
в граф, получив изначальный граф G. Теперь разобьем вершины G на
независимые множества следующим образом:

1. Вершины из A1 остаются в A1 .

2. Вершины из A2 остаются в A2 .

2
3. . . .

4. Вершины из An остаются в An .

5. Вершина b будет добавлена в множество An+1 .

Таким образом, мы разбили вершины графа G на n + 1 независимых


множеств. Теперь нам нужно доказать, что такое разбиение действитель-
но минимально.
Предположим, что есть более хорошее разбиение H на m независи-
мых множеств, где m < n + 1. Тогда для некоторой пары вершин a и
c в множестве H (допустим, a и c находятся в Hj и Hk соответствен-
но, где j ̸= k), вершины a и являются несоседними, и существуют дуги
(a, b), (b, c) в G. Однако, это противоречит транзитивности атографа, так
как должна была быть также и дуга (a, c), что делает a и c соседними, а
значит, они не могут быть в разных независимых множествах Hj и Hk .
Значит, наше предположение о существовании такого разбиения невер-
но, и наименьшее количество независимых множеств, на которые можно
разбить все вершины G, равно размеру самого длинного пути в G, то
есть n + 1.
Итак, по принципу математической индукции, изначальное утвер-
ждение верно для всех ациклических транзитивных орграфов.

Задача 7
1. Найдем все компоненты связности из незаблокированных клеток
таблицы, используя DFS. Запомним для каждой компоненты её
размер. Время выполнения: O(n · m).

2. Для каждой компоненты связности проверим, можно ли разбить её


на циклические маршруты длины хотя бы 3. Это возможно, если
размер компоненты нечётный (т. е. содержит нечетное число кле-
ток). Время: O(k), где k - число компонент связности.

Суммарное время: O(n · m).

Пояснение к вашим замечанием из тг


1. Причина, по которой мы проверяем на нечётный размер компонен-
ты связности заключается в том, что мы должны сформировать

3
циклы, содержащие хотя бы 3 клетки, а такие циклы имеют нечёт-
ные размеры. Если размер компоненты связности чётный, то мы не
сможем образовать такие циклы без пропуска определённых клеток
или перекрытия путей.

2. Под змеевидным маршрутом имеется в виду обход клеток компо-


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

Вам также может понравиться