Изменения

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

Деревья Эйлерова обхода

1542 байта убрано, 22:42, 18 декабря 2016
Реализация структуры
|definition = Определить структуру данных для хранения эйлеровых обходов деревьев для наиболее эффективного выполнения указанных операций.
}}
 
При представлении деревьев в виде их эйлерова обхода выполнение каждой операции <tex>\mathrm{link}</tex> и <tex>\mathrm{cut}</tex> сводится к <tex>O(1)</tex> соединений и разбиений отрезков в последовательности вершин эйлерова обхода.
 
Рассмотрим следующие структуры данных для определения времени выполнения разбиения и соединения последовательностей, а также определение принадлежности вершин одной компоненте связности.
 
===Связные списки===
 
[[Файл:Linked lists.png |center]]
 
 
Каждое разбиение и соединение последовательностей требует <tex>O(1)</tex>.
 
Для каждой вершины будем хранить указатели на первое и последнее вхождение вершины в последовательность. Тогда возможно определять первое и последнее вхождение вершины за <tex>O(1)</tex>.
 
Однако,используя [[Список|двусвязные списки]] определение принадлежности вершин одной компоненте связности занимает <tex>O(\log n)</tex> в худшем случае.
===Balanced Trees===
Анонимный участник

Навигация