O (logn) mindig egy fa?

szavazat
6

Mindig látni műveleteket egy (bináris keresés) fát O (logn) legrosszabb esetben a futási idő, mert a fa magassága LOGn. Kíváncsi vagyok, ha azt mondják, hogy az algoritmus futási ideje függvényében logn, pl m + nlogn, akkor arra a következtetésre jutunk, hogy be kell vonni a (kiegészített) fát?

EDIT: Hála meg észrevételeit, most már látom osztják uralkodj és bináris fa annyira hasonlóak vizuális / fogalmilag. Én még soha nem tett a kapcsolat a kettő között. De azt hiszem, az az eset, amikor az O (logn) nem szakadék uralkodj algo, amely magában foglalja a fa, amely nem tulajdona a BST / AVL / piros-fekete fa.

Ez a diszjunkt halmaz adatstruktúra Keresés / uniós műveleteket, melynek futási ideje O (N + MlogN), ahol N a # elemek és M száma Find műveleteket.

Kérem, tudassa velem, ha én vagyok a hiányzó sth, de nem tudom, hogyan oszd uralkodj kerül szóba itt. Csak látni ebben a (diszjunkt halmaz) esetében, hogy van egy fa nélkül BST tulajdon és a működési idő a függvénye logN. Szóval a kérdés az, hogy miért / miért nem tudom, hogy egy általánosítás ebben az esetben.

A kérdést 22/02/2010 05:25
a forrás felhasználó
Más nyelveken...                            


7 válasz

szavazat
7

Nem, akkor is bináris keresés egy rendezett tömbben (például). De nem veszem a szót, hogy http://en.wikipedia.org/wiki/Binary_search_algorithm

Válaszolt 22/02/2010 05:26
a forrás felhasználó

szavazat
3

Mint egy ellenpélda:

given array 'a' with length 'n'
y = 0
for x = 0 to log(length(a))
    y = y + 1
return y

A futási idő O (log (n)), de nem fa itt!

Válaszolt 22/02/2010 05:28
a forrás felhasználó

szavazat
0

Algoritmusok figyelembe logaritmikus idő általában megtalálható műveletek bináris fák.

Példák az O (logn):

  • Finding egy elemet egy rendezett tömbben egy bináris keresés, vagy a kiegyensúlyozott keresési fa.

  • Nézz fel egy értéket rendezve bemeneti tömböt kettéosztott.

Válaszolt 22/02/2010 05:40
a forrás felhasználó

szavazat
7

Mi van pontosan hátra. O(lg N)általában azt jelenti, valami oszd meg és uralkodj algoritmust és egy közös utat végrehajtási oszd meg és uralkodj egy bináris fa. Míg bináris fák jelentős része az összes oszd meg és uralkodj algoritmusok, amelyek egy részét egyébként.

Bizonyos esetekben, akkor át más oszd meg és uralkodj algoritmus meglehetősen közvetlenül bináris fákat (pl észrevételek másik választ már kísérletet tett arra hivatkozva bináris keresés hasonló). Csak egy másik nyilvánvaló példája azonban egy többutas fát (pl B-fát, B + fa vagy B * fa), miközben egyértelműen a fa ugyanolyan nyilvánvalóan nem egy bináris fa.

Ismét, ha azt szeretnénk, hogy rosszul lenne elég, akkor nyúlik a lényeg, hogy a többutas fát is képviselteti magát egyfajta eltorzult változata egy bináris fa. Ha azt szeretnénk, hogy akkor valószínűleg nyúlik az összes kivételt a pont azt mondja, hogy mindegyik (legalábbis valami hasonló) bináris fák. Legalábbis nekem, de minden nem az, hogy a „bináris fa” szinonimája „oszd meg és uralkodj”. Más szóval, minden, amit véghez is megsérüljön szókincs és lényegében eltörölte a kifejezés, ami mind különböző és hasznos.

Válaszolt 22/02/2010 06:45
a forrás felhasználó

szavazat
2

A válasz: nem. Bináris keresés egy rendezett tömbben nem O(log(n)).

Válaszolt 22/02/2010 06:48
a forrás felhasználó

szavazat
0

Ahogy O (log (n)) csak egy felső is kötődik az összes O (1) algoritmusokat tetszik function (a, b) return a+b;kielégítik azt a feltételt.

De egyet kell értenem minden Theta (log (n)) algoritmus kicsit úgy néz ki mint a fa algoritmus, vagy legalábbis elvonható egy fához.

Válaszolt 22/02/2010 07:26
a forrás felhasználó

szavazat
0

Rövid válasz:

Csak azért, mert egy algoritmus log (n) részeként az elemzés nem jelenti azt, hogy egy fa van szó. Például, a következő egy nagyon egyszerű algoritmust, amelyO(log(n)

for(int i = 1; i < n; i = i * 2)
  print "hello";

Mint látható, nincs fa volt szó. John is egy jó példa arra, hogyan bináris keresés elvégezhető rendezett tömböt. Ezek mind O (log (n)) idő, és vannak más kód példák, hogy létre lehetne hozni vagy hivatkozott. Tehát ne hogy feltételezések alapján az aszimptotikus futási ideje, nézd meg a kódot, hogy tudja, az biztos.

Bővebben a fák:

Csak azért, mert egy olyan algoritmust magában „fa” nem jelenti O(logn)sem. Meg kell tudni, hogy a fa típusától és a működés befolyásolja a fa.

Néhány példa:

  • 1. példa)

Behelyezése, vagy keres a következő kiegyensúlyozatlan fa lenne O(n).

írja kép leírása itt

  • 2. példa)

Behelyezése vagy keressen az alábbi kiegyensúlyozott fák lenne mind O(log(n)).

Kiegyensúlyozott bináris fa:

írja kép leírása itt

Kiegyensúlyozott fája képzés 3:

írja kép leírása itt

További megjegyzések

Ha a fák használata nem olyan módon, hogy „egyensúly”, mint van egy jó esély, hogy a művelet lesz O(n)ideje nem O(logn). Ha a fák, amelyek önkiegyensúlyozást, majd behelyezi általában több időt vesz igénybe, mint a kiegyensúlyozó a fák során rendszerint fellépnek a betét fázisban.

Válaszolt 27/04/2016 00:55
a forrás felhasználó

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