Ero sivun ”Hajautusalgoritmi” versioiden välillä

[arvioimaton versio][arvioimaton versio]
Poistettu sisältö Lisätty sisältö
Aibot (keskustelu | muokkaukset)
p Botti lisäsi: mk, sk, vi muokkasi: pl
Ei muokkausyhteenvetoa
Rivi 1:
'''Hajautusfunktio''' on [[algoritmi]], jota
käytetään [[tietorakenne|tietorakenteen]] ''hajautustaulun'', eli ''tiivisteen'', toteuttamisessa. Tyypillisesti hajautustauluja käytetään, kun halutaan indeksoida tietorakennetta käyttäen avaimina merkkijonoja numeeristen arvojen sijaan.
halutaan indeksoida tietorakennetta käyttäen avaimina merkkijonoja numeeristen arvojen sijaan.
 
Yksinkertainen ja nopea hajautusalgoritmi perustuu johonkin suurehkoon vakioon ja jakojäännökseen, joka lasketaan vakion ja merkkijonosta muodostetun lukuarvon perusteella. Esimerkiksi hajautustauluun voidaan varata tilaa 1000:lle alkiolle jolloin sisäinen toteutus indeksoi aina taulukon alkioita 0..999. ''Törmäyksistä'' johtuvat päällekkäisyydet voidaan ratkaista usealla tavalla, esim. käyttämällä ketjutusta. Ohessa yksinkertainen esimerkki pseudokoodina:
varata tilaa 1000:lle alkiolle jolloin sisäinen toteutus indeksoi aina taulukon alkioita 0..999. ''Törmäyksistä'' johtuvat päällekkäisyydet voidaan ratkaista usealla tavalla, esim. käyttämällä ketjutusta. Ohessa yksinkertainen esimerkki pseudokoodina:
 
<pre>
Rivi 66 ⟶ 64:
== Toteutukset ==
 
Nykyään hajautustauluja tarvitsee tai kannattaa toteuttaa harvoin itse. [[C++]]:n [[STL]] sisältää tietorakenteen <code>map</code> ja monet korkean tason ohjelmointikielet tarjoavat valmiit toteutukset (usein nimellä map, hash tai dictionary). Monesti hajautusfunktio on sisäisesti korvattu [[puu (graafiteoria)|tasapainotetulla puurakenteella]], jolloin haku pysyy edelleen nopeana, mutta tietorakennetta voidaan dynaamisesti kasvattaa ilman suurempia kustannuksia.
[[puu_(graafiteoria)|tasapainotetulla puurakenteella]], jolloin haku pysyy edelleen nopeana, mutta tietorakennetta voidaan dynaamisesti kasvattaa ilman suurempia kustannuksia.
 
== Katso myös ==