Определение
Центроид дерева - такая вершина, если подвесить за которую, мощность любого из ее сыновей не превышает , где - количество вершин дерева.
Алгоритм нахождения центроида
- Выберите корень и для каждой вершины насчитайте мощность ее поддерева.
- Если есть сын с мощностью хотя бы , такой может быть только один, то перейдите в него и повторите второй пункт, иначе вершина, в которой мы остановились - центроид.
Утверждение. Найденная вершина является центроидом.
Доказательство. Предположим алгоритм закончил свою работу - . Переподвесим дерево за нее, у всех вершин, что были подвешены к , мощность не поменялась. Так как в алгоритме мы в них не зашли, то правда, что их мощность менее . Вспомним интересный факт: . Значит у нас для потомков все верно. Если в изначальном алгоритме мы не делали ни одного шага, то и предка у нас не было и все хорошо, но если хотя бы один шаг был, то в изначальном дереве мощность хотя бы . Вспомним еще один классный факт: , а значит при переподвешивании у предка мощность будет не более чем . Значит полученная вершина является центроидом по определению.
Поиск в худшем случае, то есть бамбуке, займет по времени.
Математические свойства центроидов
Так как мы нигде не пользовались свойствами самого дерева, то центроид существует в любом дереве, причем их может быть не более 2, так как в нашем алгоритме еще 1 центроидом может быть только предок найденного, если мощность его поддерева все-таки равна .
Существует дерево центроидов, которое имеет логарифмическую высоту из-за свойств центроида, и позволяет считать разные функции на отрезках в дереве.
Центроид - идея бинарного поиска, примененная на дереве, ведь центроид для дерева, как и середина для массива, делит его пополам.