Разница между AVL деревьев и расширяющихся деревьев

голоса
31

Я учусь о различных деревьев, и наткнулся на AVL деревья и расширяющихся деревьев. я хочу знать

  1. В чем разница между AVL деревьев и расширяющихся деревьев?
  2. На каком основании мы выбираем этот локон?
  3. Каковы положительные и отрицательные-х-х этих деревьев?
  4. Каковы характеристики этих деревьев в условиях большого нотации O?
Задан 19/09/2011 в 07:12
источник пользователем
На других языках...                            


2 ответов

голоса
3

1) В чем разница между AVL деревьев и расширяющихся деревьев?

Они сходны по структуре и операций, которые мы называем их. Разница заключается в том, что в расширяющихся деревьев, после каждой операции, мы пытаемся сохранить дерево почти идеально сбалансирован так, что будущие операции занимают меньше времени.

2) На каком основании мы выбираем этот локон?

Расширяющиеся дерева всегда лучше, чем бинарные дерева поиска, когда ваше приложение имеет дело с большим количеством данных в дереве, но будет иметь доступ к подмножеству данных очень часто, чем другие. В этом случае данные, которые вы доступ к часто будет приближаться к корню в результате Splay. Кроме того, любой узел может затем быть доступен с меньшими затратами времени, чем раньше.

Как правило, для выбора этих дерев, если вам нужно «Average» журнала (п) в течение периода операций дерева затем использовать расставленное дерево. Binary дерево не может этого гарантировать.

3) Каковы положительные и отрицательные-х-х этих деревьев?

Положительные для обоего является то, что вы получаете вокруг журнала (N) в обеих этих структурах данных теоретически.

Как упоминалось расширяющееся дерево имеют средний журнал (п) на протяжении ряда операций. Это означает, что, может быть, вы получили н трудоемкость на операцию по крайней мере один раз в этом наборе. Но это будет компенсировано при доступе к часто пунктов.

Отрицательная бинарного дерева поиска является то, что вам нужно быть счастливым, чтобы иметь журнал (п) всегда. Если ключи не являются случайными, то дерево будет свести к списку как формы только с одной стороны.

4) Каковы характеристики этих деревьев в условиях большого нотации O?

Splay дерево Log (п) в среднем по группе операций дерева. Binary дерево Log (п) только тогда, когда ваши ключи собираются в случайном порядке.

Результаты по времени выполнения очевидны здесь скошенное дерево выполнения профилирования Вы можете увидеть разницу во время выполнения в поиске и без splaying.

Ответил 18/01/2012 в 04:40
источник пользователем

голоса
61

  1. Оба распущенных дерев и AVL дерева двоичное дерево поиска с отличной гарантией исполнения, но они отличаются тем, как они достигают тех гарантируют, что производительность. В дереве AVL, форма дерева ограничена во все времена таким образом, что форма дерева сбалансирована, а это означает, что высота дерева не превышает O (журнал N). Эта форма поддерживается на вставках и удалениях, и не изменяется в процессе поиска. Расширяющиеся деревья, с другой стороны, поддерживать эффективный путем изменения формы дерева в ответ на просмотр на нем. Таким образом, часто доступны элементы перемещаются вверх по направлению к верхней части дерева и имеют лучшее время поиска. Форма расширяющихся деревьев не ограничен, и варьируется в зависимости от того, что выполнения поиска.

  2. Там нет твердого правила об этом. Тем не менее, одна ключевая разница между структурами является то, что AVL деревья гарантирует быстрый поиск (O (журнал N)) на каждой операции, в то время как расширяющееся дерево может только гарантировать, что любая последовательность из п операций принимает не более O (N журнал N) времени. Это означает, что если вам нужно в режиме реального времени Lookups, дерево AVL, вероятно, будет лучше. Тем не менее, распущенные дерева, как правило, гораздо быстрее, в среднем, так что если вы хотите, чтобы минимизировать общее время выполнения дерева поисков, то расставленное дерево, вероятно, будет лучше. Кроме того, распущенные дерева поддерживают некоторые операции, такие как расщепление и слияние очень эффективно, в то время как соответствующие операции дерева AVL более вовлеченные и менее эффективные. Расширяющиеся деревья больше памяти, чем AVL деревья, потому что они не должны хранить информацию о балансе в узлах. Однако, AVL деревья являются более полезными в многопоточных средах с большим количеством выборок, поскольку поиски в дереве AVL может быть сделано параллельно, пока они не могут в расширяющихся деревьев. Потому что распущенные дерева перекроить себя на основе поиска, если вам нужно получить доступ небольшого подмножества элементов дерева только, или если доступ к некоторым элементам гораздо больше, чем другие, расставленное дерево будет опережать дерево AVL. Наконец, распущенные деревья, как правило, легче реализовать, чем AVL деревья, так как логика вращения намного проще. расставленное дерево будет опережать дерево AVL. Наконец, распущенные деревья, как правило, легче реализовать, чем AVL деревья, так как логика вращения намного проще. расставленное дерево будет опережать дерево AVL. Наконец, распущенные деревья, как правило, легче реализовать, чем AVL деревья, так как логика вращения намного проще.

  3. См (2)

  4. Вставка АВЛ дерево, удаление, и поиски принять O (журнал п) каждый. Расширяющиеся деревья имеют те же гарантии, но гарантия только в амортизационной смысле. Любая длинная последовательность операций будет принимать самое O (п журнал п), но отдельные операции могут занять столько же, сколько O (п).

Надеюсь это поможет!

Ответил 04/02/2012 в 23:06
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more