Diferența între copaci AVL și arbori splay

voturi
31

Studiez despre diverse copaci, și a venit peste copaci AVL și copaci splay. vreau sa stiu

  1. Care este diferența dintre arbori AVL și arbori splay?
  2. Pe ce bază vom selecta aceste șuviță?
  3. Din ce sunt pozitive și negative ale lui acestor copaci?
  4. Care sunt performanțele acestor arbori în ceea ce privește notație mari O?
Întrebat 19/09/2011 la 07:12
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
3

1) Care este diferența dintre arbori AVL și arbori splay?

Ele sunt similare în structură și operațiunile pe care le numim pe ele. Diferența este că, în copaci splay, după fiecare operație, vom încerca să păstreze copac aproape perfect echilibrat, astfel încât operațiunile viitoare să ia mai puțin timp.

2) Pe ce bază vom selecta aceste șuviță?

copaci Splay sunt întotdeauna mai bune decât arbori de căutare binare când, se ocupă de aplicație cu o mulțime de date în copac, dar, va avea nevoie de acces la un subset de date foarte frecvent decât altele. În acest caz, datele pe care le accesați frecvent va veni aproape de rădăcină, ca urmare a splay. De asemenea, orice nod poate fi apoi accesate cu mai puțin timp decât înainte.

Ca regulă generală pentru selectarea acestor copaci, dacă aveți nevoie de log (n) „mediu“ pe o perioadă de operațiuni de copac, apoi utilizați copac splay. arbore binar nu poate garanta acest lucru.

3) Care sunt pozitive și a lui negative ale acestor copaci?

Pozitive pentru ambele este că veți obține în jurul valorii de log (n), în ambele aceste structuri de date teoretic.

Deoarece arborii splay menționați au log medii (n) peste un număr de operații. Acest lucru înseamnă că, poate ai luat n timp complexitatea pentru o operațiune atleast o dată în acel set. Dar acest lucru va fi compensată la accesarea elementelor frecvente.

Negativul arbore binar de căutare este că, trebuie să fie norocos să aibă log (n) întotdeauna. În cazul în care cheile nu sunt întâmplătoare, atunci arborele se va reduce la o listă ca formă cu o singură parte.

4) Care sunt performanțele acestor arbori în ceea ce privește notație mari O?

Splay tree Log (n) pe medie pentru un grup de operațiuni de copac. Binar Log arbore (n) numai în cazul în care cheile sunt merge în mod aleatoriu.

Rezultatele privind runtime sunt evidente aici evazați de rulare copac profilare Puteți vedea diferența de execuție în căutarea cu și fără splaying.

Publicat 18/01/2012 la 04:40
sursa de către utilizator

voturi
61

  1. Ambii arbori splay și arbori AVL sunt arbori de căutare binare cu garanții de performanță excelente, dar acestea diferă în modul în care atinge cele garanta că performanța. Într-un arbore AVL, forma copacului este constrânsă, în orice moment, astfel încât forma de copac este echilibrat, ceea ce înseamnă că înălțimea arborelui nu depășește niciodată O (log n). Această formă este menținută pe inserări și ștergeri, și nu se schimbă în timpul lookups. copaci splay, pe de altă parte, să mențină eficient prin remodelarea copac ca raspuns la interogarile pe ea. În acest fel, elementele de frecvent accesate deplasa spre partea de sus a copacului și au vremuri mai bune de căutare. Forma de arbori splay nu este constrânsă, și variază în funcție de ceea ce se efectuează căutări.

  2. Nu există nici o regulă greu și rapid cu privire la acest lucru. Cu toate acestea, o diferență esențială între structurile este că arborii AVL garantează o căutare mai rapidă (O (log n)) pe fiecare operațiune, în timp ce copaci splay poate garanta doar că orice secvență de n operații durează cel mult O (n log n). Acest lucru înseamnă că, dacă aveți nevoie de căutări în timp real, arborele AVL este probabil să fie mai bine. Cu toate acestea, arbori splay tind să fie mult mai rapid, în medie, deci, dacă doriți să reducă la minimum timpul de funcționare totală de arbori căutări, arborele splay este probabil să fie mai bine. In plus, arbori splay sprijină unele operații, cum ar fi divizarea și fuzionarea foarte eficient, în timp ce operațiunile corespunzătoare de arbori AVL sunt mai implicați și mai puțin eficiente. copaci Splay sunt mai mult de arbori AVL eficiente din punct de memorie, pentru că ei nu au nevoie pentru a stoca informații în echilibru nodurile. Cu toate acestea, arborii AVL sunt mai utile în medii multithreaded cu o mulțime de căutări, pentru că într-un copac interogarile AVL se poate face în paralel, în timp ce ei nu pot în copaci splay. Deoarece copaci splay remodela se bazează pe căutări, în cazul în care aveți nevoie pentru a avea acces la un mic subset de elemente ale arborelui sau numai dacă accesați unele elemente mult mai mult decât altele, arborele splay va depasi arborele AVL. În cele din urmă, arbori splay tind să fie mai ușor de implementat decât arbori AVL, deoarece logica de rotație este mult mai ușor.

  3. A se vedea (2)

  4. inserare AVL copac, ștergere și lookups luați O (log n) fiecare. copaci Splay au aceleași garanții, dar garanția este numai într-un sens amortizat. Orice secvență lungă de operații va dura cel mult O (n log n), dar operațiunile individuale ar putea dura ca O (n) timp mult.

Sper că acest lucru vă ajută!

Publicat 04/02/2012 la 23:06
sursa de către utilizator

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