www.all2know.com Google WWW All2know fi
  Etusivu Etusivu | Tietoja Tietoja 
  Navigaatio
» Etusivu
» Artikelkategorier
» Luettelo luetteloista
» Aakkosellinen hakemisto
» Kalenteri
» Arvottu artikkeli
» Muokkaa Aiheesta muualla
Viimeisimmät muutokset: 2007-09-22
  Tänne linkitetyt sivut 
Hakualgoritmi
  Muut kielet 
daLineær søgning
deLineare Suche
Luokka: Algoritmit

Peräkkäishaku

Tietojenkäsittelytieteessä peräkkäishaku eli lineaarihaku on yksinkertainen hakualgoritmi, joka etsii arvoa taulukosta käymällä sen läpi alkio alkiolta. Toisin kuin puolitushaku tai interpolaatiohaku, peräkkäishaku ei vaadi, että alkiot ovat suuruusjärjestyksessä.

Peräkkäishaku yleistyy jokaiselle tietorakenteelle, jonka alkiot voidaan luetella yksi kerrallaan (iteroituva tietorakenne) ja jonka alkioille on määritelty yhtäsuuruus.

1 Algoritmi
2 Suorituskyky
3 Erityissovelluksia
4 Katso myös

Algoritmi

Peräkkäishaun periaate voidaan muotoilla seuraavasti:
  • Jos taulukon ensimmäinen alkio on etsitty arvo, palautetaan sen indeksi eli 0.
  • Jos taulukon toinen alkio on etsitty arvo, palautetaan sen indeksi eli 1.
  • Toistetaan vastaavasti kolmannelle alkiolle, neljännelle alkiolle...
  • Jos viimeinenkään alkio ei ole etsitty arvo, palautetaan ”ei löytynyt” eli –1.

Seuraava on pseudokoodina toteutettu peräkkäishakualgoritmi, joka kertoo arvon x indeksin taulukossa T:
T: taulukko [0 ... n – 1]
n: taulukon pituus eli alkioiden lukumäärä
x: etsittävä arvo

Palauttaa:
 * indeksin i ensimmäiseen alkioon, joka on yhtä suuri kuin x  (eli jos x = T[i])
 * –1, jos arvoa ei löydy

function peräkkäishaku(T, n, x)
    for i := 0 to n – 1 do
        if T[i] = x then
            return i
        end if
    end for
    return –1
end function

Suorituskyky

Peräkkäishaun asymptoottinen suoritusaika on kertaluokkaa O(n). Jos oletetaan että haettava alkio esiintyy taulukossa, niin sen etsimiseen satunnaisesti järjestetystä n:n pituisesta taulukosta tarvitaan keskimäärin n / 2 vertailua. Parhaimmassa tapauksessa, jossa etsitty alkio on taulukon ensimmäinen alkio, tarvitaan yksi vertailu. Pahimmassa tapauksessa, jolloin etsitty alkio ei esiinny taulukossa lainkaan, algoritmi tekee syötteen pituuden verran eli n kappaletta vertailuja.

Samat luvut pätevät jokaiselle tietorakenteelle, jossa seuraavaan alkioon siirtyminen vie aina saman verran aikaa.

Erityissovelluksia

Peräkkäishaku yhdistettynä tietuealkioihin mahdollistaa ajassa O(n) toimivan hakurakenteennn eli assosiaatiotaulu toteuttamisen lähes minkä tietorakenteen avulla tahansa. Esimerkkitoteutus taulukkona:

record Alkio
    key: avain, jonka perusteella arvoja noudetaan ja jolle on määritelty yhtäsuuruus
    value: arvo, varsinainen tietoalkio
end record

T: taulukko, jonka alkiot ovat tyyppiä Alkio
n: taulukon pituus
k: haettava avain

function lookup(T, n, k)
    for i := 0 to n – 1 do
        if T[i].key = k then
            return T[i].value
        end if
    end for
    return ei löytynyt
end function

Tehokkaampia hakurakennetoteutuksia ovat hajautustaulu ja tasapainoinen hakupuu.

Katso myös

Hakualgoritmeja

Peräkkäishakuun soveltuvia tietorakenteita

Tehokkaampia hakuja mahdollistavia rakenteita

Tarjoaa Wikipedia, vapaa tietosanakirja. Aiheesta muualla. Kaikki teksti on saatavilla GNU Free Documentation License Aiheesta muualla.