Re[5]: Двоичные деревья поиска
От: Wasilij  
Дата: 01.06.04 13:14
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Wasilij, Вы писали:



W>>Просто после слов "Хорошо видно, что при увеличенном размере элемента деревья догоняют, а то и значительно обгоняют массивы" совсем за массивы обидно стало .


S> Тебя и указатели не спасут начиная где то с 20 000 элементов

А от чего меня надо спасать?
Re[6]: Двоичные деревья поиска
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.06.04 13:24
Оценка:
Здравствуйте, Wasilij, Вы писали:

W>>>Просто после слов "Хорошо видно, что при увеличенном размере элемента деревья догоняют, а то и значительно обгоняют массивы" совсем за массивы обидно стало .


S>> Тебя и указатели не спасут начиная где то с 20 000 элементов

W>А от чего меня надо спасать?
От жутких тормозов. Алгоритм вставок имеет кватратичную зависимость от количества элементов (размера перносимой памяти при вставке)
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[4]: Двоичные деревья поиска
От: adontz Грузия http://adontz.wordpress.com/
Дата: 01.06.04 13:35
Оценка:
Здравствуйте, Wasilij, Вы писали:

A>>http://www.rsdn.ru/File/2053/RBT-Test-AutoPtr.xls

W>Прежде всего, спасибо за результаты тестов !

Делов-то

W>Не указатели на данные вместо данных, а указатели на элементы вместо элементов. Мысль была такая: если деревья двигают внутри себя элементы (присваиванием указателя node*), то почему массивы должены копировать эти элементы?


А разве массивы двигают? Вы, извиняюсь за дурацкий вопрос, код статье вообще скачивали?
А то, вы как бы приводите код который не совсем мой, а потом на его основе что-то критикуете, а потмо додумываю, что же вы на самом деле имели ввиду.

Что б было понятно.
Масиивы имеют своим элементом
class arrayElement
 {
  KEY key;
  DATA data;
 }

А вот деревья
class treeElement
 {
  node * left;
  node * right;
  node * parent;
  KEY key;
  DATA data;
 }

Насколько я понимаю, вы предлагаете в массиве хранить arrayElement * вместо arrayElement. Чем это принципиально отличается от уже приведённых тестов с autoptr?
Либо, что более вероятно, я что-то не так понимаю.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[4]: Двоичные деревья поиска
От: adontz Грузия http://adontz.wordpress.com/
Дата: 01.06.04 13:50
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Было бы интересно сравнить с Б+ деревьями.

S> http://www.rsdn.ru/mag/0603/btree.XML

Было бы! Кто кому что даст? Потому что ОЧЕНЬ желательно сравнивать в переделах одного компилятора и одного межеджера памяти.
Кстати интересно как редакиця посмотрит на дополнение к статье до её опубликования на сайте Хорошо бы дали добро, а то как-то некрасиво, статьи из 6/03 вроде ещё даже не начали выкладывать на сайт.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[4]: Двоичные деревья поиска
От: adontz Грузия http://adontz.wordpress.com/
Дата: 01.06.04 13:56
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Было бы интересно сравнить с Б+ деревьями.

S> http://www.rsdn.ru/mag/0603/btree.XML

Кстати, а почему твоя статья в .Net, а не в Алгоритмах? А то выходит как здесь
http://www.rsdn.ru/article/humor/rsdnnews2010.xml
Автор(ы): Reyst
Дата: 27.04.2004

"C# против алгоритмов", "C# против баз данных", "C# против низкоуровневого программирования" и "C# против юмора"

A journey of a thousand miles must begin with a single step © Lau Tsu
Re[5]: Двоичные деревья поиска
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.06.04 14:09
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Serginio1, Вы писали:


S>> Было бы интересно сравнить с Б+ деревьями.

S>> http://www.rsdn.ru/mag/0603/btree.XML

A>Было бы! Кто кому что даст? Потому что ОЧЕНЬ желательно сравнивать в переделах одного компилятора и одного межеджера памяти.

A>Кстати интересно как редакиця посмотрит на дополнение к статье до её опубликования на сайте Хорошо бы дали добро, а то как-то некрасиво, статьи из 6/03 вроде ещё даже не начали выкладывать на сайт.
Да я думаю ничего криминального не будет. Тем более что статья больше подходила под дженерики нежели под алгоритмы.
Например применение двоичных деревьев на экземплярах классов будет тормозить из-за write bariera, но можно оганизовать хип на массиве и держать в качестве ссылки индекс массива или что этого ( http://www.rsdn.ru/Forum/Message.aspx?mid=445372&amp;only=1
Автор: Serginio1
Дата: 17.11.03
). С другой стороны на сишных шаблонах можно избавится от тормозов виртуальных компараторов.
Мне лично сравнение этих алгоритмов очень интересно.
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[5]: Двоичные деревья поиска
От: Wasilij  
Дата: 01.06.04 14:12
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Wasilij, Вы писали:


W>>Не указатели на данные вместо данных, а указатели на элементы вместо элементов. Мысль была такая: если деревья двигают внутри себя элементы (присваиванием указателя node*), то почему массивы должены копировать эти элементы?


A>А разве массивы двигают? Вы, извиняюсь за дурацкий вопрос, код статье вообще скачивали?

Я и не сказал, что массивы двигают, я сказал массивы копируют элементы. Копируют элементы при сортировке, вставке, удалении. А чем меньше размер элемента, тем быстрее будет копирование.
Код скачивал.
Раз уж зашла речь о коде к статье... У меня VC 7.0 не открыл файл солюшина, сказал, что версия файла VC 7.1! Почему код к статье нельзя было привести в VC 6.0? Мелочь — а все-таки.

A>А то, вы как бы приводите код который не совсем мой, а потом на его основе что-то критикуете, а потмо додумываю, что же вы на самом деле имели ввиду.

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

A>Что б было понятно.

A>Масиивы имеют своим элементом
A>
A>class arrayElement
A> {
A>  KEY key;
A>  DATA data;
A> }
A>

A>А вот деревья
A>
A>class treeElement
A> {
A>  node * left;
A>  node * right;
A>  node * parent;
A>  KEY key;
A>  DATA data;
A> }
A>

A>Насколько я понимаю, вы предлагаете в массиве хранить arrayElement * вместо arrayElement. Чем это принципиально отличается от уже приведённых тестов с autoptr?
Тем, что в тесте с autoptr копировался целиком элемент, его ключ и его данные, а моем варианте копируется только 4 байта — указатель на элемент.
Re[5]: Двоичные деревья поиска
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.06.04 14:13
Оценка:
Здравствуйте, adontz, Вы писали:



A>Кстати, а почему твоя статья в .Net, а не в Алгоритмах? А то выходит как здесь

A>http://www.rsdn.ru/article/humor/rsdnnews2010.xml
Автор(ы): Reyst
Дата: 27.04.2004

A>

A>"C# против алгоритмов", "C# против баз данных", "C# против низкоуровневого программирования" и "C# против юмора"

A>
Нет это скорее практическое применение дженериков на примере Б+ деревьев и его усеченного аналога ввиде двухуровнего массива.
Так оно более понятно
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[6]: Двоичные деревья поиска
От: adontz Грузия http://adontz.wordpress.com/
Дата: 01.06.04 14:31
Оценка:
Здравствуйте, Wasilij, Вы писали:

W>Раз уж зашла речь о коде к статье... У меня VC 7.0 не открыл файл солюшина, сказал, что версия файла VC 7.1! Почему код к статье нельзя было привести в VC 6.0? Мелочь — а все-таки.


Мда, нехорошо вышло Извиняюсь. Но с другой стороны если в vcproj заменить Version="7.10" на Version="7.00" может помочь.
А вообще, там всего 2 файле в Win32 EXE проекте. Можете пересоздать. Главное, если на на вычислении Height будет вылетать, увеличьте размер стека. Но на 1000 элементов вылетать не должно.

W>Я имел в виду, что не совсем правильно говорить, будто при увеличении размера элемента, массивы будут работать медленее.


Как же не будут? Вот вставьте элемент в начало — придётся сдвинуть всё что после. Если там 30 элементов по 3 байта это не страшно, а если 30 элементов, по 262144 байт? 7 мегов копировать?

W>Тем, что в тесте с autoptr копировался целиком элемент, его ключ и его данные, а моем варианте копируется только 4 байта — указатель на элемент.


Ууу. Ну тогда надо на shared_ptr тестировать. По другому не выйдет.
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[7]: Двоичные деревья поиска
От: Wasilij  
Дата: 01.06.04 14:57
Оценка:
Здравствуйте, adontz, Вы писали:

A>Здравствуйте, Wasilij, Вы писали:


W>>Я имел в виду, что не совсем правильно говорить, будто при увеличении размера элемента, массивы будут работать медленее.


A>Как же не будут? Вот вставьте элемент в начало — придётся сдвинуть всё что после. Если там 30 элементов по 3 байта это не страшно, а если 30 элементов, по 262144 байт? 7 мегов копировать?


Так я и говорю, что если в массиве хранить элемент, то так оно и будет.
Но если в массиве хранить УКАЗАТЕЛЬ на элемент, то указатель будет всегда занимать 4 байта и не будет зависеть от размера элемента. Поэтому при вставке в начало массива из 30 элементов, по 262144 байт придется копировать только 4х30 байт, а не 7 мегов. 7 мегов будут спокойно лежать на своем месте.
Re[8]: Двоичные деревья поиска
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.06.04 15:24
Оценка: +1
Здравствуйте, Wasilij, Вы писали:



W>Так я и говорю, что если в массиве хранить элемент, то так оно и будет.

W>Но если в массиве хранить УКАЗАТЕЛЬ на элемент, то указатель будет всегда занимать 4 байта и не будет зависеть от размера элемента. Поэтому при вставке в начало массива из 30 элементов, по 262144 байт придется копировать только 4х30 байт, а не 7 мегов. 7 мегов будут спокойно лежать на своем месте.
А теперь 262144 элемента по 4 байта. В Б+ деревьях это будет около 0.1 сек. Сколько займет на массиве ?????
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[8]: Двоичные деревья поиска
От: Аноним  
Дата: 01.06.04 16:29
Оценка:
Здравствуйте, Wasilij, Вы писали:

W>Так я и говорю, что если в массиве хранить элемент, то так оно и будет.

W>Но если в массиве хранить УКАЗАТЕЛЬ на элемент, то указатель будет всегда занимать 4 байта и не будет зависеть от размера элемента. Поэтому при вставке в начало массива из 30 элементов, по 262144 байт придется копировать только 4х30 байт, а не 7 мегов. 7 мегов будут спокойно лежать на своем месте.

Да, но дело в том, что в массиве всё равно надо копировать (на вставке и удалении). И после какого-то количества элементов, деревья, где копировать практически не надо (только на удалении и очень редко), всё равно окажутся быстрее.
Re[3]: Двоичные деревья поиска
От: Sergeem Израиль  
Дата: 02.06.04 12:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Sergeem, Вы писали:


S>>а где ссылки на первоисточники?

А>Процентов на 80 это http://www.rsdn.ru/res/book/prog/basic_algorithms.xml
Автор(ы): Томас Кормен, Чарльз Лейзерсон, Рональд Ривест
Эта книга — перевод учебника по курсу построения и анализа эффективных алгоритмов, написанного в Массачусетском технологическом институте. В ней разбираются важнейшие классы быстрых алгоритмов и приемы их построения. Изложение подробное и математически строгое. Книгу можно использовать в качестве учебника и справочника; она будет полезна как студентам, так и профессионалам в области информатики и программирования.



тогда не понятен смысл статьи
может книжку лучше прочитать?
Serge.

Hасколько проще была бы жизнь, если бы она была в исходниках.
Re[4]: Двоичные деревья поиска
От: adontz Грузия http://adontz.wordpress.com/
Дата: 02.06.04 15:57
Оценка:
Здравствуйте, Sergeem, Вы писали:

S>

S>тогда не понятен смысл статьи
S>может книжку лучше прочитать?

В книге вопросы освещены не так подробно и уж точно нет кода на Си++.
А вообще, вы действительно хотели услышать что-то новое ?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: Двоичные деревья поиска
От: adontz Грузия http://adontz.wordpress.com/
Дата: 24.01.05 14:10
Оценка:
Здравствуйте, Роман Акопов, Вы писали:

В статье исправление

Способы обхода ДДП
Есть три способа обхода: Прямой (inorder), Поперечный (preorder), Обратный (postorder).

было заменено на

Способы обхода ДДП
Есть три способа обхода: Прямой (preorder), Поперечный (inorder), Обратный (postorder).


Большое спасибо MaximE за найденную ошибку

Прошу прощения за все причинённые данной ошибкой неудобства
A journey of a thousand miles must begin with a single step © Lau Tsu
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.