![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Stream |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 29.10.2005 Репутация: нет Всего: нет |
Подскажите, как можно реализовать объединение двух Б деревьев.?!
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
а это от задачи зависит... можно тупо создать одну общую родительскую ноду к которой прилепить оба дерева...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Stream |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 29.10.2005 Репутация: нет Всего: нет |
Каждое дерево находится в отдельном файле, затем новое располагается также в одном файле.
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
и что?
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Stream |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 29.10.2005 Репутация: нет Всего: нет |
"И что ?" написано немного ранее, если кто-то ещё не заметил.
|
|||
|
||||
| blackofe |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 29.11.2005 Репутация: 4 Всего: 4 |
под "и что?", имхо, подразумевалось: "считай одно дерево из одного файла, считай другое дерево из другого файла, создай ноду, прилепи к нему оба считанных дерева и сохрани полученное общее дерево в третий файл".
так доступно? |
|||
|
||||
| Stream |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 29.10.2005 Репутация: нет Всего: нет |
такой вопрос: "А определение Б дерева вы хоть знаете, а то, что оно сбалансированное вам не о чём не говорит?".
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
я думаю супер эффективный merge это на докторскую потянет... a на пальцах:
каждый нод создается на основе предыдущих данного дерева. поэтому в общем случае ты не можешь надеяться, что сохраняется неравенство {n1_i < n2_j: по всем i в t1 и j в t2 } (т.е. все ветви t1 меньше, чем все ветви t2) т.е. нужно найти индексы in1,in2,in3,in4...in5 для превращения деревьев t1,t2 в Т, так что t1,t2 - отдельные ветки этого B-tree, а это невозможно. поэтому по моему тебе надо: выбрать дерево побольше и к нему то что поменьше нод за нодом вставлять. в принципе, если дерево не содержит своей величины, то придется тебе надеяться на авось, потому что меньшее дерево определить и вставить займет 2*О(|t_min|), a просто вставить одно в другое O(|вставляемое дерево|) времени. вопрос что дольше: 2*О(|t_min|) или O(|вставляемого дерева|) если же величина известна, то вставляй меньшее в большее. у тебя файлы. если оба дерева - в файлах, и информация - числовая, то можно предположить, что величина файла указывает на величину дерева, и этим воспользоваться для "интеллигентного" угадывания. |
|||
|
||||
| Stream |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 29.10.2005 Репутация: нет Всего: нет |
А если выбрать дерево с наибольшей степенью вершин, а затем просто дабовлять в него ключи второго дерева?
Или это ерунда? |
|||
|
||||
| dwr_budr |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 11.4.2004 Репутация: нет Всего: 2 |
Если предположить что входные деревья были построенны по правилу типа "большее число вправо, меньшее число влево", то в лоб можно сделать вот так:
1. Из каждого из деревьев получить по отсортированному массиву за O(n) 2. Из 2х отсортированных массивов сделать один за O(n) 3. Отсортированный массив запихнуть в новое дерево за O(nlogn). Запихивать надо понятное дело с умом. Центральный элемент массива - корень. Цетральный элемент правого подмассива - правый потомок. Центральный элемент левого подмассива - левый потомок. И т.п. В итоге получим сбалансированное выходное дерево за O(nlogn). Если же входные деревья просто бинарые и не используют никаких правил для построения (кроме того что у каждой ноды по два потомка), то в первый шаг нужно еще добавть сортировку выходных массивов руками. |
|||
|
||||
| pablo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 12.2.2005 Где: Вильнюс, Литва Репутация: 4 Всего: 6 |
http://www.semaphorecorp.com/btp/algo.html
Добавлено @ 14:14 Думаю будет полезно Добавлено @ 14:16 глянька сюда: http://cis.stvincent.edu/carlsond/swdesign/btree/btree.html -------------------- Первый блин всегда похож на сферу, иногда бывает и куб. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
там не написано про сбалансированность.
согласен. особенно если учесть твои ( MastEdm ) и твои ( Stream ) посты. -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| pablo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 12.2.2005 Где: Вильнюс, Литва Репутация: 4 Всего: 6 |
Hарод что же вы так ..., смотрели хоть те ссылки которые приведены ?
Там же реализация тоже прилагается. http://cis.stvincent.edu/carlsond/swdesign/btree/btree.html -------------------- Первый блин всегда похож на сферу, иногда бывает и куб. |
|||
|
||||
| Stream |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 29.10.2005 Репутация: нет Всего: нет |
Большое спасибо за ссылку, но в Кормене всё выглядит намного понятнее.............
Я ведь спрашиваю не про реализацию Б дерева (добавление, удаление и тд - это мне понятно), а конкретно про объединение двух таких деревьев, причём я бы хотел получить просто идею, а уж реализовать я попытаюсь сам. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Stream я на первой странице вроде как изложил рабочую идею.
|
|||
|
||||
| dwr_budr |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 11.4.2004 Репутация: нет Всего: 2 |
Энто был я. Забыл залогиниться.
|
|||
|
||||
| Stream |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 29.10.2005 Репутация: нет Всего: нет |
А других случаем нет?
|
|||
|
||||
| dwr_budr |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 11.4.2004 Репутация: нет Всего: 2 |
А чем тебе эта не нравится то? Что то неясно или где то недочеты? Она простая, довольно эффективная и еще и сбалансированное дерево на выходе дает. Ничего сверхсложного писать не нужно. Все что нужно у тебя наверняка уже готово: обход дерева и добавление элемента в дерево. Тебе лишь необходимо правильно этими базовыми операциями воспользоваться.
|
|||
|
||||
| pablo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 12.2.2005 Где: Вильнюс, Литва Репутация: 4 Всего: 6 |
Stream А в раздел Алгоритмы обращался ?
-------------------- Первый блин всегда похож на сферу, иногда бывает и куб. |
|||
|
||||
| MastEdm |
|
|||
![]() Master ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 3.12.2005 Где: Москва, МГИУ Репутация: 1 Всего: 2 |
Если я не ошибаюсь, то Б-деревья сбалансированы по определению, или не так? |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
таки ошибаешся
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| MastEdm |
|
||||
![]() Master ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 3.12.2005 Где: Москва, МГИУ Репутация: 1 Всего: 2 |
Таки, бл*, не ошибаюсь!
|
||||
|
|||||
| ToshaCh |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 555 Регистрация: 10.11.2005 Где: Москва, РФ Репутация: нет Всего: 26 |
Скажу больше Б-деревья это подвид сбалансированых деревьев. И ещё, кто не врубается "Б" НЕ ЗНАЧИТ бинарное дерево (дерево, каждый узел которого содержит два потомка) это именно "Б - дерево". Кто не верит вот вам ссылка:
http://tid.com.ua/scripts/ishop.exe/addonres?id=31 Добавлено @ 18:01 Смотрите самые первые строки. -------------------- Slackware 12.2 | Linux 2.6.27 | Fluxbox 1.1.1 | Wmii 3 | Opera 9.63 -- Oracle это не только способ отмывания денег, но и вполне себе преличная база данных. |
|||
|
||||
| _hunter |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
и
( http://cis.stvincent.edu/carlsond/swdesign/btree/btree.html ) ни слова про обязательную сбалансированность я не вижу... -------------------- Tempora mutantur, et nos mutamur in illis... |
||||
|
|||||
| ToshaCh |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 555 Регистрация: 10.11.2005 Где: Москва, РФ Репутация: нет Всего: 26 |
Еп****
_hunter Перевод твоей последней цитаты: Б-дерево это чётко сбалансированое дерево, достоинство которого состоит в том, что все листья находятся внизу. Перевод немного не дословный, но смысл верен. Здесь главное слово fairly - это чётко, а не довольно, как его иногда переводят. В значение довольно это слово становится рядом с прилагательным (например fairly easy - довольно легко), а с глаголом, как здесь переводится как чётко. Добавлено @ 18:27 Блин не с прилагательным, а с другим наречием. easy - это наречие. -------------------- Slackware 12.2 | Linux 2.6.27 | Fluxbox 1.1.1 | Wmii 3 | Opera 9.63 -- Oracle это не только способ отмывания денег, но и вполне себе преличная база данных. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
fairly well-balanced
"четко хорошо-сбалансированное"??? как-то не звучит... а вот "довольно хорошо сбалансированное" имеет смысл. + как ты правильно заметил: ставится рядом с прилагательным. а что такое well? ;) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| ToshaCh |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 555 Регистрация: 10.11.2005 Где: Москва, РФ Репутация: нет Всего: 26 |
Господин хороший возьмите учебник английского.
wel-balanced это глагол в данном случае в страдательном залоге (вы про такой слыхали - это когда действие происходит над существительным) Перевожу дословно: Б-дерево есть чётко сбалансировали (кто?) достоинство факта что все листья находятся внизу. Как видите здесь wel-balanced глагол. В сочитании с окончанием ed и глаголом to be в настоящем времени 3 лица, единственного числа (is) этот глагол означает, что не дерево кого-то балансировало, а его балансировали, причем чётко. Добавлено @ 19:35 wel - это наречие или прилагательное в зависимости от контекста. Но здесь не отдельное well, здесь глагол, который пишется через дефиз - well-balanced и переводится он в данном контексте на русский как прилогательное, но ЭТО ГЛАГОЛ!!!!! Добавлено @ 19:36 Просто по русский без прилогательного эту фразу фиг скажешь. -------------------- Slackware 12.2 | Linux 2.6.27 | Fluxbox 1.1.1 | Wmii 3 | Opera 9.63 -- Oracle это не только способ отмывания денег, но и вполне себе преличная база данных. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
опять же не факт. ( особенно учитывая наличие двух равноприоритетных существительных )
перевожу ( тоже ) дословно: Б-дерево ( что? ) есть [является] деревом _довольно хорошо-сбалансированным_ ( каким? ) ( дальше -- не важно ) + well c дефисом ( как и любое прилагательное ) применяется только к прилагательным -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| blackofe |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 29.11.2005 Репутация: 4 Всего: 4 |
не рекомендую пользоваться онлайновыми переводчиками. иначе можно до такой абракадабры допереводиться мой перевод: A B-tree is a fairly well-balanced tree by virtue of the fact that all leaf nodes must be at the bottom. Б-дерево является довольно хорошо сбалансированным деревом в силу того, что все его листья обязаны находиться внизу. Это сообщение отредактировал(а) blackofe - 7.12.2005, 21:15 |
|||
|
||||
| dwr_budr |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 11.4.2004 Репутация: нет Всего: 2 |
Никогда бы не подумал что Б дерево это не бинарное дерево. Ув. автор темы мою рекомендацию стало быть отправляй в топку. Она именно для бинарных деревьев.
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Смотрите вот определение сбалансированности, классическое причём. Вы его можете найти по адресу.
http://khpi-iip.mipk.kharkiv.edu/library/d...book/prt06.html
Теперь то определение про которое мы спорим: "...все его листья обязаны находиться внизу." Связи никто не видит? А может все-таки подумаете? Или крутые программисты не думают? Им нечем. |
|||
|
||||
| ToshaCh |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 555 Регистрация: 10.11.2005 Где: Москва, РФ Репутация: нет Всего: 26 |
Предидущие 2 поста мои.
-------------------- Slackware 12.2 | Linux 2.6.27 | Fluxbox 1.1.1 | Wmii 3 | Opera 9.63 -- Oracle это не только способ отмывания денег, но и вполне себе преличная база данных. |
|||
|
||||
| _hunter |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
ToshaCh, перед тем как брать учебник, возмите словарь:
( взято из лингво ) + не wel-balanced ( глубинный, погружной ) а, все-таки, well ++ после прочтения словаря, таки возьми(те) учебник англицкого и почитай(те) про способы комбинации прилагательных. в частности про то, зачем там всунут дефис. P.S. я предпочитаю читать первоисточники а не плохие переводы P.P.S. ты привел не полное определение:
( http://www.mstu.edu.ru/education/materials...kov/ch_1_2.html ) ( если уж переводами пользуемся ) а кто-то говорил что b-дерево -- это совсем не бинарное дерево... -------------------- Tempora mutantur, et nos mutamur in illis... |
||||
|
|||||
| MastEdm |
|
|||
![]() Master ![]() Профиль Группа: Участник Сообщений: 178 Регистрация: 3.12.2005 Где: Москва, МГИУ Репутация: 1 Всего: 2 |
На мой взгляд, вы сейчас не о том ведёте дискуссию. В определении Б-дерева (по Кормену, чей авторитет для меня неоспорим) чётко сказано, что все листья дерева расположены на одной высоте... А тренироваться в переводах лучше где-нибудь в другом месте.
А бред типа "все листья находятся внизу" - это, извините конечно, детский сад. Это сообщение отредактировал(а) MastEdm - 8.12.2005, 12:57 |
|||
|
||||
| ToshaCh |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 555 Регистрация: 10.11.2005 Где: Москва, РФ Репутация: нет Всего: 26 |
_hunter
При чём здесь бинарное дерево? Б-дерево это не бинарное дерево. Или вы ещё не поняли? Почитайте собственную ссылку, а не выдерайте оттуда понравившееся место. Там следующее определение как раз про Б-дерево. Почитайте хотябы пару абзацев, после той фразы, которую вы привели. -------------------- Slackware 12.2 | Linux 2.6.27 | Fluxbox 1.1.1 | Wmii 3 | Opera 9.63 -- Oracle это не только способ отмывания денег, но и вполне себе преличная база данных. |
|||
|
||||
| ToshaCh |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 555 Регистрация: 10.11.2005 Где: Москва, РФ Репутация: нет Всего: 26 |
Это более большой кусок той цитаты которую приводил _hunter -------------------- Slackware 12.2 | Linux 2.6.27 | Fluxbox 1.1.1 | Wmii 3 | Opera 9.63 -- Oracle это не только способ отмывания денег, но и вполне себе преличная база данных. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
при том, что единственное определение сбалансированности что ты привел касается бинарных деревьев ( хотя ты постоянно твердиш что ,-деревья и бинарные деревья это не одно и то же )
следующее определение то про б-деревья, но там ( опять же ) ни слова про сбалансированность -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| ToshaCh |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 555 Регистрация: 10.11.2005 Где: Москва, РФ Репутация: нет Всего: 26 |
Да лохонулся вместо:
Надо было сказать: вот определение сбалансированности для бинарного дерева. А дальше, в том же посте, я предлагал подумать. Вы подумали? Дело в том, что как такового определения сбалансированности нет (лично я не знаю). Есть сбалансированые бинарные деревья (AVL) и сбалансированые прочие (B). Они вместе и составляют класс сбалансированных деревьев. И действительно в определениях, что я приводил нет прямого указания на сбалансированность, но ведь я предлагал подумать. -------------------- Slackware 12.2 | Linux 2.6.27 | Fluxbox 1.1.1 | Wmii 3 | Opera 9.63 -- Oracle это не только способ отмывания денег, но и вполне себе преличная база данных. |
|||
|
||||
| _hunter |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
ооо!!! наконец-то...
предложения подумать я не заметил:
есть только громкие заявления и введение класса сбалансированных деревьев ( которого ( класса ) по-сути то и нет... ) + б-дерево не значит сбалансированное дерево ( по крайней мере информации об этом нет ):
-------------------- Tempora mutantur, et nos mutamur in illis... |
||||
|
|||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
это был первый пост, в котором вы пытались доказать что б-деревья суть сбалансированные деревья
насчет последнего поста под гостем... а с чего ты взял что утверждения/определения справедливые для бинарных деревьев справедливы и для б-деревьев ( особенно если учесть что б\деревья -- совсем не бинарные деревья )? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| chipset |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
--------------------
|
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |