Konkrét példák segítségével bináris keresés fákat?

szavazat
14

Megértem, hogy a bináris keresés fák hajtanak végre, de nem vagyok biztos benne, mi az előnye a használat alatt a hash táblák, hogy a legtöbb programozási nyelvek építettünk a szabványos könyvtárak.

Tudna valaki kérem adjon példákat a valós problémákat megoldható bináris keresés fákat?

A kérdést 16/02/2011 00:44
a forrás felhasználó
Más nyelveken...                            


5 válasz

szavazat
1

Egy példa, ahol egy bináris fa van szükség bináris tér partíciók a számítógépes grafika

http://en.wikipedia.org/wiki/Binary_space_partitioning

A bináris fa van szükség, mert az algoritmus megköveteli a megőrzése a kapcsolatot a csomópontok közötti bináris fa. Sok más algoritmus, ahol a szerkezet a fa fontos, és ezért a hash tábla nem megfelelő szerkezet.

Egy másik jó ok egy bináris fa helyett egy hash tábla, ha nem tud könnyen létrehoz egy hatékony hash az adatok elem, de akkor létrehoz egy összehasonlító függvényt.

Gyakran az egyszerű tárolás és az adatok visszanyerését egy hash tábla optimálisabb, de bonyolultabb végrehajtani.

Válaszolt 16/02/2011 00:53
a forrás felhasználó

szavazat
0

Az egyik leginkább figyelmen kívül hagyott, hogy sok fájlrendszert használ bináris fák kezelése könyvtárlistázáskor. Ritkán használják egy sima bináris fát, de némi eltérés, mint a B-fa. Ez azért van, mert az a kérdés, on-lemezt, a fa nagyon fontos a végrehajtás részleteit. Az ok, hogy használja ezt a fajta szerkezet a hatékonyság és a gyorsaság. Ez lehetővé teszi számukra, hogy a dolgokat, mint a támogatás több ezer fájlokat egy könyvtárban. Összehasonlítások fájl létrehozása és törlése alkalommal kiemelni hatásfokainak ezt a szempontot a fájlrendszer.

Bináris fák is használnak sok játékot, amelyek miatt a 3D objektumokat. Ismét az oka a sebesség. Tény, hogy a sebesség annyira fontos, hogy néhány játék motorok, mint például a Quake motor ténylegesen a bináris fa előre generált és előre optimalizált részeként a térképen fordítást.

Válaszolt 16/02/2011 00:56
a forrás felhasználó

szavazat
0

Egy dolog megjegyezni, hogy a bináris keresés Fa helytakarékos. Például, akkor 10 egészek tárolására és van egy hash függvény, amely feltérképezi 0-99, majd u kell egy sor 100 egészek. Ha használt bináris keresés Tree akkor lenne kiosztani csak annyi memóriát által előírt 10 elem

Válaszolt 16/02/2011 00:57
a forrás felhasználó

szavazat
29

Van néhány elméleti előnye a bináris keresés fák felett hash táblák:

  1. Úgy tárolja azok elemeinek rendezett sorrendben . Ez azt jelenti, hogy ha azt akarjuk, hogy tárolja a tartály olyan módon, ahol könnyen látogasson el az értékeket sorba rendezett, a BST valószínűleg jobb választás, mint egy hash táblát. Például, ha azt szeretnénk, hogy tárolja a gyűjtemény a diákok, majd nyomtassa ki az összes diák alfabetikus sorrendben, a BST lényegében egy jobb választás, mint egy hash táblát.

  2. Ezek hatékonyan támogatja több lekérdezés. Mivel BSTs tárolják rendezett sorrendben, így könnyű válaszolni a kérdésekre az űrlap „milyen értékek vannak a tartományban [x, y]?” egy bináris keresési fa. Ehhez te egy keresési a fán a legkisebb elem nagyobb, mint x, és a legnagyobb eleme kisebb, mint y, majd végighaladni az elemeket a fa között. Mindkét lekérdezések futnak O (lg n) időben kiegyensúlyozott fa, így a teljes futási erre művelet O (lg n + k), ahol k a elemek száma a lekérdezésnek megfelelő.

  3. Ezek hatékonyan támogatja a legközelebbi szomszéd lekérdezéseket. Hash táblák kifejezetten úgy tervezték, hogy még némileg eltérő termék vadul különböző hash kódok. Ez adja a hashértékek diszperziós meg kell kerülni csoportosításával túl sok elemet egy helyen. Ugyanakkor ez azt is jelenti, hogy meg kell csinálni egy lineáris letapogatás a hash tábla, hogy megtalálja elemeket, hogy lehet „zárni”, hogy mit keres. A BST, akkor hatékonyan megtalálni az elődje és utóda értéket szeretne, akkor is, ha ez nem a fán.

  4. Ezek jobb legrosszabb garanciákat. A legtöbb hash tábla implementáció van valamilyen degenerált eset, amelyben egy művelet lebontására képes, hogy O (n) a legrosszabb esetben. Egy lineáris tapintási hash tábla vagy láncra fűzött hash tábla lehet, egy rossz elem készlettel, szükség O (n) idő egy keresés vagy igényel O (n) idő egy felmelegít. Beiktatás bizonyos típusú kiegyensúlyozott BSTs, mint a vörös / fekete fák, AVL fák, vagy AA fák, mindig legrosszabb O (lg n).

Ha hajlandó általánosítani BSTs a bonyolultabb faszerkezetek, akkor sok helyen, ahol egy fa lehet használni, hogy megoldja a problémákat, sokkal hatékonyabban, mint egy hash tábla. Íme néhány példa:

  1. kd-fa teszi, hogy tárolja többdimenziós adatok, ugyanakkor támogatja a gyors tartománylekérdezések többdimenziós térben, valamint a hatékony legközelebbi szomszéd kereséseket. Akkor használja őket az osztályozás (lusta tanuló algoritmusok), illetve számítógépes geometria.

  2. Link / kivágott fák is használható, hogy megoldja a problémákat, max-flow sokkal hatékonyabban, mint a legtöbb hagyományos algoritmusok lehetővé tenné. Jó toló / újracímkézésére algoritmusokat használja ezt, hogy gyorsítsák fel a megvalósítások.

  3. Diszjunkt-beállított erdők lehet használni, hogy fenntartsák partícióját elemek aszimptotikusan a lehető leghatékonyabban (amortizálni α (n) per frissítés, ahol α (n) a Ackermann inverz függvény). Ők használják számos gyors minimális feszítőfa algoritmus, valamint néhány legnagyobb egyeztető algoritmusok.

  4. Bináris kupac lehet használni, hogy végre prioritásos sor hatékonyan. Bonyolultabb fák használható építeni binomiális kupacok és Fibonacci halmokat , amelyek nagy jelentőséggel bírnak az elméleti számítógép-tudomány.

  5. Döntési fák is használható gépi tanulási besorolás, valamint a modell az elméleti számítógép-tudomány bizonyítani korlátokat runtimes különböző algoritmusok.

  6. Háromkomponensű keresési fák alternatívája próbálkozás, amelyek alapján a némileg módosított BST. Ez lehetővé teszi a nagyon gyors keresést és beillesztése elemek és szórványos adathalmazok meglehetősen tömör.

  7. B-fák által használt számos adatbázis-rendszerek hatékony felnéz elemeit, ha lemez hozzáférés korlátozó tényező.

  8. Binary tér elválasztó fák egy általánosítása kd-fa lehet használni, hogy gyorsan tegye a számítógépes grafika (használták őket, hogy optimalizálják teszi az eredeti játék Doom), és nem az ütközés-érzékelés.

  9. BK-fák teszik, hogy gyorsan meghatározható az összes szó, hogy egy bizonyos szerkesztési távolság néhány más szó, és általánosságban, hogy megtalálja az összes pontot egy metrikus tér egy bizonyos távolságon belül valamely más pont.

  10. Fusion fák alternatívája hash táblákat egész kulcsokat, amelyek rendkívül gyors támogatást kereséseket, betoldások és törléseket.

  11. van Emde Boas fák egy másik alternatíva, hogy hash táblák integer kulcsok, amelyek támogatják a lookup, inszerció, deléció, utódja, és elődje O (lg lg n) időben elemenként. Néhány adatbázis rendszerek használata VEB fák a teljesítmény optimalizálása érdekében.

Nem vagyok benne biztos, hogy a témánál ez a válasz, de meg kell adni bizonyos értelemben, hogy milyen csodálatos és hatalmas BSTs és általánosabb fa szerkezet lehet.

Válaszolt 16/02/2011 01:05
a forrás felhasználó

szavazat
0

Ez valószínűleg egy megjegyzést, de önkiegyensúlyozó BST (ek) (log (n)) széles körben használják, nem pedig BSTs. Sima BSTs van legrosszabb O (N) behelyezés / eltávolítás időt.

Válaszolt 16/02/2011 03:14
a forrás felhasználó

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