2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Подсчёт инверсий при помощи RB-tree с длиной ветки
Сообщение04.07.2011, 13:46 


03/05/09
45
Минск, Беларусь
Здравствуйте.

Поскажите, пожалуйста, как при помощи красно-чёрных деревьев (+ к каждой вершине хранить длину дерева, в котором эта вершина корень, ясно, что это и так восстанавливается, но для быстродейтвия, т.к. в процессе построения за этим добром уследить несложно) посчитать количество инверсий во входном массиве (из которого и было сделано это дерево) за время $O(n \cdot lgn)$. Задача из книги Кормен "Алгоритмы, построение и анализ".

Я так понимаю, считается, что дерево уже построено. Доступ к первоначальному массиву закрыт. Но только мне кажется, что тогда массив неоднозначно восстанавливается (отсюда не следует, конечно, что кол-во инверсий тоже неоднозначно восстанавливается).
По крайней мере в обычном дереве поиска он восстанавливается неоднозначно. (Пример: Вставить: 1, 2, 3, 5, 4, 9 и Вставить: 1, 2, 3, 5, 9, 4 получаются одинаковые деревья, а даже и кол-во инверсий в исходных массивах разные)

И тогда второй вопрос: можно ли в RB tree однозначно восстановить изначальный массив? Если нет, то, может, можно добавить какое-то дополнительное поле каждому элементу, и тогда можно будет?

Спасибо.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group