Изменения

Перейти к: навигация, поиск
Критерий Тарьяна
Теперь докажем, что дерево <tex>K</tex>, удовлетворяющее условию, минимальноРассмотрим общий алгоритм построения минимального остовного дерева: {{Утверждение '''function''' Gentric MST(G): |statement A =Для любого разреза <tex>\langle S dfs(i, T \rangle</tex>a, в котором ребро <tex>uv</tex> {{---}} единственноеb, пересекающее его в <tex>K</tex>c, вес этого ребра минимален среди всех ребер <tex>G</tex>w, пересекающих этот разрез.Ch) |proof a[x] =Рассмотрим ребро <tex>ab \notin K</tex>max(a[x], пересекающее b[i] + w[x][i] - с[i]) <texfont color = darkgreen>\langle S, T \rangle </tex> и путь между вершинами <tex>a</tex> и <tex>по формуле выше, но без b[x] (прибавим его один раз в конце) </tex> по дереву <texfont color = darkgreen>K</tex>.По условию теоремы, вес <tex>ab</tex> не меньше веса любого ребра на этом пути. b[x] += с[i] При этом a[x] += b[x] <texfont color = darkgreen>ab</tex> пересекает <tex>\langle S, T \rangle</tex>, поэтому так как в a[x] пока что хранится только на этом пути найдется ребро, пересекающее этот разрез.Но единственное такое ребро в остовном дереве {{---}} это <tex>uvсколько мы можем увеличить ответ если будем использовать вершину x</texfont color = darkgreen>. Следовательно c[x] = max(a[x], <tex>w(uv) \le w(abb[x])</tex>.}}
Для доказательства минимальности <tex>K</tex> построим минимальное остовное дерево графа <tex>G</tex> используя [[алгоритм Краскала]], который представляет собой применение [[Лемма о безопасном ребре|леммы о безопасном ребре]] некоторое число раз.
113
правок

Навигация