Подтвердить что ты не робот

Разница между деревьями AVL и деревьями

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

  • В чем разница между деревьями AVL и деревьями?
  • На каком основании мы выбираем эти tress?
  • Что такое положительные и отрицательные из этих деревьев?
  • Каковы характеристики этих деревьев в терминах большой записи O?
4b9b3361

Ответ 1

  • И деревья деревьев, и деревья AVL - это двоичные деревья поиска с превосходными гарантиями производительности, но они отличаются тем, как они достигают тех, которые гарантируют эту производительность. В дереве AVL форма дерева всегда ограничена, так что форма дерева сбалансирована, что означает, что высота дерева никогда не превышает O (log n). Эта форма поддерживается при вставках и удалениях и не изменяется во время поиска. С другой стороны, деревья Splay сохраняют эффективность, изменяя дерево в ответ на запросы на него. Таким образом, часто используемые элементы перемещаются вверх к вершине дерева и имеют лучшие времена поиска. Форма деревьев splay не ограничена и зависит от того, какие поисковые запросы выполняются.

  • В этом нет жесткого правила. Однако одно ключевое различие между структурами заключается в том, что деревья AVL гарантируют быстрый поиск (O (log n)) для каждой операции, тогда как деревья splay могут гарантировать, что любая последовательность n операций занимает не более O (n log n). Это означает, что если вам понадобятся поиски в режиме реального времени, дерево AVL, вероятно, будет лучше. Тем не менее, деревья трассировки, как правило, намного быстрее в среднем, поэтому, если вы хотите свести к минимуму общую продолжительность поиска дерева, дерево воспроизведения будет лучше. Кроме того, деревья splay поддерживают некоторые операции, такие как разделение и слияние очень эффективно, в то время как соответствующие операции дерева AVL более активны и менее эффективны. Деревья Splay более эффективны с точки зрения памяти, чем деревья AVL, поскольку им не нужно сохранять информацию о балансе в узлах. Однако деревья AVL более полезны в многопоточных средах с большим количеством поисковых запросов, поскольку поиск в дереве AVL может выполняться параллельно, в то время как они не могут обрабатывать деревья. Поскольку splay-деревья изменяются на основе поиска, если вам нужно только получить доступ к небольшому подмножеству элементов дерева, или если вы получаете доступ к некоторым элементам намного больше, чем другие, дерево воспроизведения будет превосходить дерево AVL. Наконец, splay деревья, как правило, легче реализовать, чем деревья AVL, поскольку логика вращения намного проще.

  • См. (2)

  • Вставка, удаление и поиск в AVL-деревьях принимают O (log n) каждый раз. У деревьев Splay есть те же гарантии, но гарантия только в амортизированном смысле. Любая длинная последовательность операций будет занимать не более O (n log n), но отдельные операции могут занять до O (n) времени.

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

Ответ 2

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

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

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

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

В качестве общего правила для выбора этих деревьев, если вам нужно "Среднее" время журнала (n) в течение периода деревных операций, используйте дерево splay. Двоичное дерево не может гарантировать это.

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

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

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

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

4) Каковы характеристики этих деревьев в терминах большой записи O?

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

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