Różnica między drzewami AVL i drzewami splay

Studiuję o różnych drzewach i natknąłem się na drzewa AVL i splay. Chcę wiedzieć

  1. Jaka jest różnica między drzewami AVL i splay?
  2. Na jakiej podstawie wybieramy te tresy?
  3. Jakie są pozytywne i negatywne z tych drzew?
  4. Jakie są występy tych drzew pod względem notacji big O?
Author: templatetypedef, 2011-09-19

2 answers

  1. Zarówno drzewa splay, jak i Drzewa AVL są drzewami wyszukiwania binarnego z doskonałymi gwarancjami wydajności, ale różnią się one sposobem osiągnięcia tych gwarancji wydajności. W przypadku drzewa AVL kształt drzewa jest zawsze ograniczony tak, że kształt drzewa jest zrównoważony, co oznacza, że wysokość drzewa nigdy nie przekracza O (log n). Ten kształt jest utrzymywany podczas wstawiania i usuwania i nie zmienia się podczas wyszukiwania. Drzewa Splay, z drugiej strony, utrzymanie wydajne przez zmiana kształtu drzewa w odpowiedzi na poszukiwania na nim. W ten sposób często dostępne elementy przesuwają się w górę w kierunku wierzchołka drzewa i mają lepsze czasy wyszukiwania. Kształt drzew splay nie jest ograniczony i różni się w zależności od tego, jakie są wykonywane poszukiwania.

  2. Nie ma w tym żadnej twardej i szybkiej Zasady. Jednak kluczową różnicą między strukturami jest to, że drzewa AVL gwarantują szybkie wyszukiwanie (o (log n)) przy każdej operacji, podczas gdy drzewa splay mogą zagwarantować tylko, że dowolna Sekwencja n operacje trwają co najwyżej O (n log N) czas. Oznacza to, że jeśli potrzebujesz wyszukiwania w czasie rzeczywistym, drzewo AVL prawdopodobnie będzie lepsze. Jednak drzewa splay wydają się być znacznie szybsze średnio, więc jeśli chcesz zminimalizować całkowity czas trwania wyszukiwania drzew, drzewo splay prawdopodobnie będzie lepsze. Dodatkowo drzewa splay bardzo efektywnie wspierają niektóre operacje, takie jak dzielenie i scalanie, podczas gdy odpowiednie operacje drzewa AVL są bardziej zaangażowane i mniej wydajne. Drzewa Splay są bardziej pamięć wydajna niż drzewa AVL, ponieważ nie muszą przechowywać informacji o balansie w węzłach. Jednak drzewa AVL są bardziej przydatne w środowiskach wielowątkowych z dużą ilością wyszukiwań, ponieważ wyszukiwania w drzewie AVL mogą być wykonywane równolegle, podczas gdy nie mogą być wykonywane w drzewach splay. Ponieważ drzewa splay przekształcają się w oparciu o Wyszukiwanie, jeśli potrzebujesz tylko dostępu do małego podzbioru elementów drzewa lub jeśli uzyskasz dostęp do niektórych elementów znacznie więcej niż inne, drzewo splay przewyższy AVL drzewo. Wreszcie, drzewa splay wydają się być łatwiejsze do wdrożenia niż drzewa AVL, ponieważ logika rotacji jest znacznie łatwiejsza.

  3. Zobacz też (2)

  4. Wstawianie, usuwanie i wyszukiwanie drzewa AVL zajmuje O(log n) czas. Drzewa Splay mają te same gwarancje, ale gwarancja jest tylko w sensie amortyzowanym. Każda długa sekwencja operacji zajmie co najwyżej O(n log n) czas, ale poszczególne operacje mogą zająć tyle samo co O (n) czas.

Mam nadzieję, że to pomoże!
 64
Author: templatetypedef,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-04 22:06:39

1) Jaka jest różnica między drzewami AVL i splay?

Są podobne w strukturze i operacjach, które na nich wzywamy. Różnica polega na tym, że w drzewach splay po każdej operacji staramy się utrzymać drzewo prawie idealnie zrównoważone, aby przyszłe operacje zajmowały mniej czasu.

2) na jakiej podstawie wybieramy te tresy?

Drzewa Splay są zawsze lepsze niż drzewa wyszukiwania binarnego, gdy aplikacja zajmuje się wieloma danymi w drzewie, ale będzie potrzebować dostępu do podzbioru danych bardzo często niż inne. W takim przypadku dane, do których często uzyskujesz dostęp, znajdą się w pobliżu katalogu głównego w wyniku splay. Ponadto dostęp do dowolnego węzła można uzyskać w krótszym czasie niż wcześniej.

Jako ogólna zasada wyboru tych drzew, jeśli potrzebujesz "średniego" czasu log (n)w okresie operacji na drzewie, użyj drzewa splay. Binary tree nie może tego zagwarantować.

3) Jakie są pozytywne i negatywne z tych drzew?

Pozytywy dla obu jest to, że ty obejść log (n) w obu tych strukturach danych teoretycznie.

Jak wspomniano drzewa splay mają średni log (n) w wielu operacjach. Oznacza to, że może masz N złożoność czasową operacji przynajmniej raz w tym zestawie. Ale zostanie to zrekompensowane przy dostępie do częstych przedmiotów.

Minusem binarnego drzewa wyszukiwania jest to, że trzeba mieć szczęście, aby mieć log(N) zawsze. Jeśli klucze nie są losowe, to drzewo zmniejszy się do listy takiej jak FORMULARZ z tylko jednym bok.

4) Jakie są osiągnięcia tych drzew pod względem notacji big O?

Splay tree Log (N) średnio dla grupy operacji na drzewie. Binary tree Log(N) tylko wtedy, gdy twoje klucze są losowe.

Wyniki na runtime są oczywiste tutaj splay tree Runtime profilowanie Możesz zobaczyć różnicę czasu trwania w wyszukiwaniu z i bez splaying.

 3
Author: Harisankar Krishna Swamy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-18 03:40:56