2012-06-12 2 views
0

Я должен реализовать разреженную матрицу (матрицу с преобладанием нулей, поэтому вы записываете только значения, отличные от 0), но я должен реализовать ее с помощью двоичного дерева поиска.Реализация разреженной матрицы с использованием двоичного дерева поиска

EDIT:

Так что теперь я имею в виду ее реализации, используя строку/столбец в качестве ключа, но то, что я использую в качестве корня этого дерева?

/EDIT

Я надеялся, что когда-то я исследовал бинарные деревья поиска Я бы понять, как эта реализация будет полезным, или, по крайней мере, возможно, но я за жизнь меня не может понять это ,

Я пробовал google безрезультатно, и я сам не могу себе представить, как это сделать.

Я еще не решил, на каком языке я буду это реализовывать, поэтому мне не нужны примеры кода, моя проблема - логика. Мне нужно посмотреть, как это будет работать.

P.S. Я понятия не имею, какие теги использовать, если кто-то может редактировать их, было бы очень благодарно.

+5

Я считаю, что термин, который вы хотите, не «редок», а «разреженный». – JAB

+0

На каком языке вы собираетесь это делать? Этот тег будет наиболее полезным. –

+0

Как я уже сказал, я еще не знаю, я думаю, что python будет быстрее C++. Но, как я сказал, не на 100% уверен – Kalec

ответ

2

Чтобы использовать двоичное дерево, вам необходимо иметь ключ, который отличается для каждой (возможной) записи в матрице. Поэтому, если вы хотите искать (2, 4) в матрице [100, 100], тогда ключ может быть чем-то вроде «002004». С помощью этого ключа вы можете вставить значение в дерево.

Для каждого измерения ключ будет длиннее, поэтому вы также можете считать хеш-функцию хэш-координатами ячейки, а внутри дерева у вас есть список записей для этой хэш-клавиши. Дерево - это только индекс в правом списке. Внутри списка вам необходимо выполнить последовательный поиск. Или, если вы закажете список, который вы можете улучшить, используя двоичный поиск.

+0

Итак, если я хочу представить свою матрицу через триплет (строка, столбец, значение), где значение! = 0, я могу использовать BST (дерево двоичного поиска), сохраняя строку и столбец как один ключ? Что я буду использовать в качестве корня дерева? – Kalec

+0

@kalec: да, ключ будет хешем строки и столбца. Значение может быть 0, вам нужно distingush между 0 и пустым. Пустой означает, что в дереве нет записи для этой строки, кортежей столбцов. Корень может быть первым узлом или деревьями для самостоятельной балансировки, которые корневой узел изменится при вставке большего количества ячеек. – schoetbi

Смежные вопросы