Grafy a tabuľky

Vyhľadávanie pri metóde Separate chaining

Priemerné počty porovnaní vybraných implementácií

//najdenie zadanej hodnoty "hodnota" v rozptylovej tabulke
//so zretazenym rozptylovanim metodou separate chaining
//funkcia vracia ukazovatel na najdeny zaznam
CZaznam_JZ* CTabulka_ZR_SCH::najdi(int hodnota) {
	int riadok = funkcia_1(hodnota);
	if (tabulka_[riadok].nasl_z()==0) {
		return 0;
	}
	else {
		CZaznam_JZ* aktualny=tabulka_[riadok].nasl_z();
		if (++p_pokusov_ && aktualny->hodnota()==hodnota) 
			{++p_najdeni_; return aktualny;}
		while (++p_posunuti_ && aktualny->dalsi()!=0) {
			aktualny=aktualny->dalsi();
			if (++p_pokusov_ && aktualny->hodnota()==hodnota) 
				{++p_najdeni_; return aktualny;}
		}
	}
	return 0;
}
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 13,00 3,000 10,00 1,300 0,2864
101 146,0 51,00 95,00 1,537 0,2946
997 1369,0 422,0 947,0 1,446 0,3036
10.007 12454,0 2948,0 9506,0 1,310 0,3149
Z tabuľky môžeme vidieť, že počet pokusov kolíše v pomere k počtu nájdení a drží sa približne v rovnakom pomere (1,3 až 1,54) k nemu pre všetky veľkosti tabuliek. Odchýlky sú spôsobené rozptylovou funkciou.
 
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 10,00 2,000 8,000 1,250 0,2629
101 104,0 29,00 75,00 1,387 0,2895
997 1023,0 276,0 747,0 1,37 0,2753
10.007 9376,0 1871,0 7505,0 1,2493 0,3095
Z tabuľky môžeme vidieť, že počet pokusov kolíše v pomere k počtu nájdení a drží sa približne v rovnakom pomere (1,24 až 1,39) k nemu pre všetky veľkosti tabuliek. Odchýlky sú spôsobené rozptylovou funkciou.
 
 

Závislost dĺžky času trvania algoritmu od veľkosti vstupného pola

Z nameraných hodnôt vidíme že čas vyhľadávania závisí od veľkosti tabuľky len minimálne a nemal by závisieť vôbec. Pre niektoré riadky tabuľky však môžu vzniknúť pri väčšom vkladanom množstve hodnôt dlhšie zoznamy a preto môže prísť z tohoto dôvodu k predĺženiu vyhľadávania. V najväčšej miere závisí čas vyhľadávania od zaplnenosti tabuľky.
  11 101 997 10.007
zaplnenie tabuľky je 95% 0,2864 0,2946 0,3036 0,3149
zaplnenie tabuľky je 75% 0,2629 0,2895 0,2753 0,3095
 
 
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.