Изменения

Перейти к: навигация, поиск

Heavy-light декомпозиция

48 байт добавлено, 14:23, 29 мая 2016
Лемма
Задача о наименьшем общем предке для двух вершин в дереве с <tex>n</tex> вершинами решается с помощью heavy-light декомпозиции. Воспользуемся основной идеей: декомпозиция разбивает все вершины дерева на реберно-непересекающиеся пути так, что поднимаясь от любой вершины до корня дерева придется сменить не более <tex>\log{n}</tex> различных путей.
===={{Лемма|id=Лемма1|statement===Пусть есть две вершины <tex>a</tex>, <tex>b</tex>, лежащие на разных путях. Пусть <tex>A</tex>, <tex>B</tex> - корни путей, на которых они лежат. Пусть <tex>A</tex> более удален от корня, чем <tex>B</tex>. Докажем, что <tex>LCA(a, b) </tex> = <tex>LCA(A, B)</tex>.
|proof====Доказательство====.Пусть пути не пересекаются. Предположим, что LCA не равны. Значит существует вершина, на пути от <tex>a</tex> к <tex>A</tex>, являющаяся LCA. Но LCA должен принадлежать двум путям. Но пути на пересекаются (?!). Тем самым пришли к противоречию.
Рассмотрим случай, когда пути пересекаются. Пути не могут пересекайся более, чем в одной вершине. В данном случае корень одного из путей является вершиной другого. LCA должен принадлежать двум путям, значит именно этот корень и будет LCA.
}}
====Препроцессинг====
Анонимный участник

Навигация