Cormackovo hašování: Porovnání verzí

Smazaný obsah Přidaný obsah
Ty-Dyt (diskuse | příspěvky)
m Stránka Perfektní hešovaní (Cormack) přemístěna na stránku Perfektní hašovaní (Cormack): Koukal jsem se do literatury, anglické HASH se počešťuje jako hašování ne jako hešování
Sebesta (diskuse | příspěvky)
Typos, nadbytečné řádky, dvojitý nadpis
Řádek 1:
=== Perfektní hešovaní (Cormack) ===
 
Cormakovo hašování je založeno na existenci primární hašovací funkce <math>h(k)</math>, a celé třídy sekundárních hašovacích funkcí <math>h_{i}(k,r)</math>. funkce <math>h(k)</math> musí mít [[obor hodnot]] roven velikosti adresáře.
Položky jsou ukládány do primárního souboru (pevné velikosti), způsobem, který bude popsán za pomoci adresáře (pevné velikosti). Protože je i primární soubor i adresář pevné velikosti, řadí se Cormacovo hašování do tzv. [[statické metody hešování|statických metod hešování]].
 
Primární soubor si jde představit jako pole pevné velikosti. Adresář vypadá následujícím způsobem:
 
{| border="1" cellpadding="2" cellspacing="2"
|+Adresář
|+Adresár
! pozice !! p !! i !! r
|-
Řádek 32 ⟶ 30:
'''pozice''' je index položky v adresáři.
 
=== Příklad 1. ===
<table border="0" cellpadding="20">
<tr><td>
 
{| border="1" cellpadding="2" cellspacing="2"
|+Adresář
|+Adresár
! pozice !! p !! i !! r
|-
Řádek 105 ⟶ 103:
* Adresář[<math>h(k)</math>].p = p<sub>new</sub>
 
=== Příklad 2.===
 
 
 
 
===Příklad 2.===
 
Zvolne velikost adresáře M=7.
Potom <math>h(k)</math> navrhneme ve tvaru <br>
Řádek 124 ⟶ 117:
 
{| border="1" cellpadding="2" cellspacing="2"
|+Adresář
|+Adresár
! pozice !! p !! i !! r
|-
Řádek 245 ⟶ 238:
* spočteme <math>h(k)</math>.
* podle Adresář[<math>h(k)</math>].r se buď podíváme na přímo příslušné místo do primárního souboru, nebo spočteme příslušnou (Adresář[<math>h(k)</math>].i) sekundární hašovací funkci, najdeme příslušný blok a v něm příslušnou položku.
 
 
Další často používanou sekundární funkcí je funkce
<math>h_{i}(k,r)=(k \quad mod \quad (2i + 100r +1))\quad mod \quad r</math>
Predpokladá se, že <math> k << 2i + 100r +1</math>.
 
 
=== Pseudokód ===
 
Zadefinujeme si ješte nějaké datové položky:
 
Řádek 263 ⟶ 253:
body_1 *body=new body_1[];
</code>
 
 
 
==== Vyhledávání ====
 
<code>
int h(int k, int s) {}
Řádek 284 ⟶ 271:
 
==== Vkládání ====
 
...je trošku zložitejšie, c-like algoritmus není kompletní, ale je názorný...
 
Řádek 305 ⟶ 291:
}
</code>
 
[[Kategorie:datovéDatové struktury]]