Legjobb önkiegyensúlyozó BST gyors beillesztése nagy csomópontok száma

szavazat
8

Voltam képes megtalálni részletei több önkiegyensúlyozó BSTs- több forrásból, de én nem találtam olyan jó leírásai melyik a legjobb, ha a különböző helyzetekben (vagy ha ez tényleg nem számít).

Szeretnék egy BST, amely optimális tárolására meghaladó tízmillió csomópontokat. Az, hogy behelyezését csomópont alapvetően véletlenszerű, és én soha nem kell törölni csomópontokat, így behelyezés idő az egyetlen dolog, ami kell optimalizálni.

Kívánom használni, hogy tárolja a korábban meglátogatott játék államok egy kirakós játék, hogy tudok gyorsan ellenőrizni, ha egy korábbi konfiguráció már találkozott.

A kérdést 05/08/2008 16:40
a forrás felhasználó
Más nyelveken...                            


4 válasz

szavazat
3

Miért használjunk BSTegyáltalán? A saját leírása a szótárban is működik ugyanúgy, ha nem jobban.

Az egyetlen ok, amiért egy BSTlenne, ha akarta dől ki a tartály tartalmát kulcssorrendben. Ez persze nem hangzik szeretné tenni, hogy ebben az esetben megy a hash tábla. O(1)behelyezése és a keresés, nem aggódik törlés, mi lehet jobb?

Válaszolt 29/08/2008 01:10
a forrás felhasználó

szavazat
3

Piros-fekete jobb, mint AVL beiktatási nehéz alkalmazásokhoz. Ha előre viszonylag egységes look-up, akkor Vörös-fekete az út. Ha előre egy viszonylag kiegyensúlyozatlan look-up, ahol újabban megtekintett elemek nagyobb valószínűséggel ismét megnézheti, a használni kívánt ferde fákat .

Válaszolt 05/08/2008 16:59
a forrás felhasználó

szavazat
0

A két önkiegyensúlyozó BSTs vagyok legismertebb piros-fekete AVL, így nem tudok mondani, bizonyos, ha bármilyen más megoldások jobbak, de ha jól emlékszem, piros-fekete pedig gyorsabb és lassabb behelyezés lehívása képest AVL.

Tehát, ha a behelyezés magasabb prioritást lehívása, piros-fekete lehet a jobb megoldás.

Válaszolt 05/08/2008 16:50
a forrás felhasználó

szavazat
-2

[Hash táblázatok] O (1) behelyezését és keresési

Azt hiszem, ez rossz.

Először is, ha korlátozzák a kulcstérnek hogy véges, akkor tárolja a tömb elemeinek és nem egy O (1) lineáris scan. Vagy lehetne shufflesort a tömböt, majd csinál egy lineáris letapogatást O (1) várható időpontját. Amikor a dolog véges, dolog könnyen O (1).

Tehát mondjuk a hash tábla tárolja tetszőleges bitsorozat; ez nem sokat számít, amíg van egy végtelen kulcscsomót, amelyek mindegyike véges. Ezután meg kell olvasni az összes bit minden lekérdezés és beillesztő bemenet, mást beilleszteni y0 egy üres hash és lekérdezés y1, ahol y0 és y1 különböznek egyetlen bit pozíció, amely nem nézni.

De tegyük fel, hogy a legfontosabb értékek nem egy paramétert. Ha a behelyezés és keressen O (1), különösen tördelő O (1) időben, ami azt jelenti, hogy csak megnézi véges mennyiségű kimenet a hash függvény (ahonnan valószínű, hogy lesz csak véges kimeneti nyújtott ).

Ez azt jelenti, hogy véges sok kanalak, ott kell lennie egy végtelen halmazának, amelyek mind azonos hash értékét. Tegyük fel, hogy helyezzen be egy csomó, azaz ω (1), az említett, és elkezd lekérdezéséhez. Ez azt jelenti, hogy a hash tábla esik vissza egy másik O (1) behelyezése / keresési mechanizmust, hogy válaszoljon a kérdésekre. Melyiket, és miért nem csak használni, hogy közvetlenül?

Válaszolt 01/02/2009 13:49
a forrás felhasználó

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