Для ориентированного взвешенного графа требуется минимальный набор рёбер, обеспечивающий достижимость всех вершин от фиксированного источника при минимальной сумме весов — сформулируйте задачу формально, разъясните связь с задачей о минимальном арборесценции (Edmonds’ algorithm), опишите алгоритм и проиллюстрируйте на небольшом примере

9 Ноя в 21:46
3 +2
0
Ответы
1
Формулировка задачи
- Дано ориентированный взвешенный граф (V,E)(V,E)(V,E), функция весов w:E→R \;w:E\to\mathbb{R}\;w:ER и фиксированный источник (корень) r∈V\;r\in VrV.
- Требуется найти подмножество рёбер A⊆EA\subseteq EAE такое, что в ориентированном графе (V,A)(V,A)(V,A) из корня r \;r\;r достижимы все вершины, и суммарный вес ∑e∈Aw(e)\sum_{e\in A} w(e)eA w(e) минимален.
- Эквивалентное формальное требование: найти минимальную по сумме весов ориентированную остовную арборесценцию (directed spanning arborescence) корня r\;rr — то есть такое подмножество AAA, что
∀v∈V∖{r} : indegA(v)=1,indegA(r)=0, \forall v\in V\setminus\{r\}\;:\;\ indeg_A(v)=1,\qquad indeg_A(r)=0,
vV{r}: indegA (v)=1,indegA (r)=0,
и (V,A)(V,A)(V,A) ацикличен (тогда из rrr есть путь в любую вершину). Цель: минимизировать w(A)=∑e∈Aw(e)\;w(A)=\sum_{e\in A} w(e)w(A)=eA w(e).
Связь с задачей о минимальной арборесценции (Edmonds / Chu–Liu)
- Это именно задача минимальной (корневой) арборесценции. Алгоритм Chu–Liu/Edmonds даёт полиномиальное решение: выбирает для каждой вершины минимальное входящее ребро, обнаруживает и сворачивает циклы, корректирует веса и рекурсивно решает задачу на сжатом графе, затем разворачивает циклы, восстанавливая решение.
Алгоритм (Chu–Liu/Edmonds), суть и формулы
1. Для каждой вершины v≠r \;v\neq r\;v=r выбираем входящее ребро с минимальным весом:
ev=arg⁡min⁡(u→v)∈Ew(u→v). e_v=\arg\min_{(u\to v)\in E} w(u\to v).
ev =arg(uv)Emin w(uv).
Если такие выбранные ребра образуют ацикличный граф, то набор {ev}v≠r\{e_v\}_{v\neq r}{ev }v=r — искомая минимальная арборесценция.
2. Если выбранные ребра содержат цикл(ы), то возьмём любой цикл CCC. Свернём вершины цикла в одну супер-вершину c \;c\;c. Построим сжатый граф G′G'G так:
- Для ребра (x→y)(x\to y)(xy) с x∉C, y∉Cx\notin C,\,y\notin Cx/C,y/C сохраняем без изменений.
- Для ребра (x→y)(x\to y)(xy) с x∉C, y∈Cx\notin C,\,y\in Cx/C,yC вводим ребро (x→c)(x\to c)(xc) с весом
w′(x→c)=w(x→y)−w(ey), w'(x\to c)=w(x\to y)-w(e_y),
w(xc)=w(xy)w(ey ),
где eye_yey — выбранное минимальное входящее ребро в yyy на шаге 1.
- Для ребра (x→y)(x\to y)(xy) с x∈C, y∉Cx\in C,\,y\notin CxC,y/C вводим ребро (c→y)(c\to y)(cy) с весом
w′(c→y)=min⁡x∈Cw(x→y), w'(c\to y)=\min_{x\in C} w(x\to y),
w(cy)=xCmin w(xy),
сохраняя информацию, от какой конкретной вершины исходило это минимальное ребро (нужно при восстановлении).
- Рёбра внутри CCC удаляются (их роль учтена через w(ey)w(e_y)w(ey ) в корректировке входящих весов).
3. Рекурсивно находим минимальную арборесценцию в G′G'G. Это даёт множество рёбер в сжатом графе, в том числе, возможно, входящее в ccc ребро (x→c)(x\to c)(xc) (или нет, если c=rc=rc=r).
4. Разворачиваем CCC: если в найденном решении в G′G'G входящее ребро в ccc соответствует исходному ребру (x→y)(x\to y)(xy) в GGGy∈Cy\in CyC), то в цикле CCC мы удаляем выбранное ранее входящее ребро eye_yey и оставляем остальные выбранные входящие рёбра цикла. Таким образом разрывается цикл и получаем дерево, корректно соединённое с внешней частью решения.
Корректность: уменьшение весов при свёртке гарантирует, что выбор входящего ребра в сжатом графе соответствует оптимальному варианту выбора того, в какую вершину цикла "пришло" внешнее соединение, и последующее развёртывание даёт глобально оптимальное решение.
Сложность: классическая реализация работает за O(∣V∣⋅∣E∣)O(|V|\cdot |E|)O(VE). Существуют более сложные реализации и оптимизации, улучшающие асимптотику (например, с использованием структур данных для быстрого поиска и сжатия).
Наглядный пример
Пусть V={1,2,3,4}V=\{1,2,3,4\}V={1,2,3,4}, корень r=1r=1r=1. Рёбра и веса:
1→2: 3,1→3: 2,2→3: 1,3→2: 1,2→4: 4,3→4: 2. 1\to 2:\;3,\quad 1\to 3:\;2,\quad 2\to 3:\;1,\quad 3\to 2:\;1,\quad 2\to 4:\;4,\quad 3\to 4:\;2.
12:3,13:2,23:1,32:1,24:4,34:2.

Шаг 1 — выбрать минимальные входящие для каждой вершины, кроме корня:
e2=3→2 (вес 1),e3=2→3 (вес 1),e4=3→4 (вес 2). e_2=3\to 2\;(\text{вес }1),\quad e_3=2\to 3\;(\text{вес }1),\quad e_4=3\to 4\;(\text{вес }2).
e2 =32(вес 1),e3 =23(вес 1),e4 =34(вес 2).
Эти выбранные рёбра содержат цикл C={2,3}C=\{2,3\}C={2,3} (рёбра 2→32\to 323 и 3→23\to 232).
Шаг 2 — свернём CCC в вершину ccc. Рассчитаем веса входящих рёбер в ccc из вершин вне CCC:
- Для 1→21\to 212: w′(1→c)=w(1→2)−w(e2)=3−1=2.w'(1\to c)=w(1\to 2)-w(e_2)=3-1=2.w(1c)=w(12)w(e2 )=31=2. - Для 1→31\to 313: w′(1→c)=w(1→3)−w(e3)=2−1=1.w'(1\to c)=w(1\to 3)-w(e_3)=2-1=1.w(1c)=w(13)w(e3 )=21=1. Выберем минимальный (со значением 111), соответствующий исходному ребру 1→31\to 313.
Ребра из ccc наружу:
c→4: min⁡(w(2→4),w(3→4))=min⁡(4,2)=2 c\to 4:\; \min(w(2\to 4),w(3\to 4))=\min(4,2)=2
c4:min(w(24),w(34))=min(4,2)=2
(исходило от 3→43\to 434).
Сжатый граф: вершины {1,c,4}\{1,c,4\}{1,c,4} с рёбрами 1→c1\to c1c вес 111, c→4c\to 4c4 вес 222.
Шаг 3 — в сжатом графе выбираем входящие: для ccc1→c1\to c1c (1), для 444c→4c\to 4c4 (2). Ациклично, решение найдено.
Шаг 4 — разворачивание цикла CCC. В сжатом решении входящее в ccc ребро соответствовало 1→31\to 313. Значит при разворачивании мы включаем 1→31\to 313 и в цикле удаляем e3e_3e3 (это было 2→32\to 323), оставляя 3→23\to 232. В итоге берём рёбра:
1→3 ( 2),3→2 ( 1),3→4 ( 2). 1\to 3\;(\,2),\quad 3\to 2\;(\,1),\quad 3\to 4\;(\,2).
13(2),32(1),34(2).
Суммарный вес 2+1+2=5 \;2+1+2=5\;2+1+2=5 — это минимальная арборесценция корня 111.
Краткое резюме
- Задача — найти минимальную направленную остовную арборесценцию корня rrr.
- Алгоритм Edmonds (Chu–Liu) решает её полиномиально: выбирает минимальные входящие, сворачивает циклы с корректировкой весов, рекурсивно решает задачу на сжатом графе и затем разворачивает циклы.
- Основная формула при сжатии входящих рёбер: w′(x→c)=w(x→y)−w(ey)w'(x\to c)=w(x\to y)-w(e_y)w(xc)=w(xy)w(ey ) для y∈Cy\in CyC.
9 Ноя в 22:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир