|
Grafy a tabuľky |
Vyhľadávanie pri metóde Coalesced chaining
|
Priemerné počty porovnaní vybraných implementácií |
//najdenie zadanej hodnoty "hodnota" v rozptylovej tabulke
//so zretazenym rozptylovanim metodou coalesced chaining
//funkcia vracia index polozky v ktorej bola hodnota najdena (v pripade neuspechu vracia -1)
int CTabulka_ZR_CCH::najdi(int hodnota) {
int riadok = funkcia_1(hodnota);
if (++p_pokusov_ && tabulka_[riadok].prazdna()) return -1;
else if (++p_pokusov_ && tabulka_[riadok].hodnota()==hodnota)
{++p_najdeni_; return riadok;}
while (++p_posunuti_ && (riadok = tabulka_[riadok].nasl_p())!=-1) {
if (++p_pokusov_ && tabulka_[riadok].hodnota()==hodnota)
{++p_najdeni_; return riadok;}
}
return -1;
} |
Počet porovnaní, cyklov a času trvania algoritmu pre 95% zaplnenie tabuľky. |
počet prvkov v tabuľke |
p_pokusov_ |
p_posunuti_ |
p_najdeni_ |
p_pok/p_naj |
čas |
11 |
16,00 |
6,000 |
10,00 |
1,600 |
0,2433 |
101 |
170,0 |
65,00 |
95,00 |
1,684 |
0,2567 |
997 |
1621,0 |
674,0 |
947,0 |
1,712 |
0,2769 |
10.007 |
14708,0 |
5202,0 |
9506,0 |
1,547 |
0,2949 |
|
Pomer počtu pokusov k počtu vyhľadávaní sa pohybuje v rozmedzí 1,54 až 1,72. Odchýlky sú opäť spôsobené len náhodnosťou generovania čísiel. |
|
Počet porovnaní, cyklov a času trvania algoritmu pre 75% zaplnenie tabuľky. |
počet prvkov v tabuľke |
p_pokusov_ |
p_posunuti_ |
p_najdeni_ |
p_pok/p_naj |
čas |
11 |
11,00 |
3,000 |
8,000 |
1,375 |
0,2190 |
101 |
115,0 |
40,00 |
75,00 |
1,533 |
0,2423 |
997 |
1111,0 |
364,0 |
747,0 |
1,487 |
0,2513 |
10.007 |
10343,0 |
2838,0 |
7505,0 |
1,378 |
0,2789 |
|
Pomer počtu pokusov k počtu vyhľadávaní sa pohybuje v rozmedzí 1,38 až 1,54. Odchýlky sú opäť spôsobené len náhodnosťou generovania čísiel. |
|
|
Závislost dĺžky času trvania algoritmu od veľkosti vstupného pola |
Pri tomto druhu rozptyľových tabuliek by tiež nemal čas vyhľadávania závisieť od veľkosti tabuliek, ale keďže použitá rozptyľová funkcia a ani generátor náhodných čísiel nebol ideálny, mohlo dochádzať v niektorých častiach tabuľky k vysokej miere zaplnenosti a mohli tak vznikať dlhé reťaze vkladaných hodnôt. Čas vyhľadávania opäť závisí najmä od zaplnenosti tabuľky |
|
|
11 |
101 |
997 |
10007 |
zaplnenie tabuľky je 95% |
0,2433 |
0,2567 |
0,2769 |
0,2949 |
zaplnenie tabuľky je 75% |
0,2190 |
0,2423 |
0,2513 |
0,2789 |
|
|
|
Poznámka: Algoritmy boli testované na počítači s procesorom AMD Athlon(tm) XP 1700+ a s 256 MB operačnou pamäťou pod operačným systémom Windows XP. Všetky časy uvedené v tabuľke sú v mikrosekundách. |