Найти алгоритм в дереве 2-3 BST - PullRequest
1 голос
/ 19 января 2012

Существует ли алгоритм, который с данным 2-3 деревом T и указателем на некоторый узел v в указанном дереве, алгоритм может изменить ключ узла v, чтобы T оставался допустимым 2-3 дерева, в О (логн / логлогн) амортизированная эффективность?

1 Ответ

2 голосов
/ 20 января 2012

Нет.
Предположим, что это возможно, с помощью алгоритма f мы покажем, что можем сортировать массив с O(n*logn/loglogn) сложностью по времени.

sort array A of length n:
(1) Create an  2-3 tree of size n, with no importance to keys. let it be T.
(2) store all pointers to nodes in T in a second array B.
(3) for each i from 0 to n:
   (3.1) f(B[i],A[i]) //modify the tree: pointer: B[i] new value: A[i]
(4) extract elements from T back to A inorder.

правильность:
После каждогоактивация f дерево легально.После завершения активации f на всех элементах T и на всех элементах A дерево является допустимым и содержит все элементы.Таким образом, извлекая элементы из A, мы получаем обратно отсортированный массив.

сложность:
(1) Создание дерева [неважно, какие ключи мы ставим] равно O(n) мыможет поставить 0 во всех элементах, не имеет значения
(2) итерация T и создание B - это O(n)
(3), активация f - O(logn/loglogn), вызывая таким образомэто n раз равно O(n*logn/loglogn)
(4) извлечение элементов - это просто обход: O(n)
Таким образом: общая сложность составляет O(n*logn/loglogn)

Но сортировка - это проблема Omega(nlogn)с алгоритмами сравнения на основе.противоречие.
Заключение : желаемое f не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...