Lajittelualgoritmin jakauma

Yleisesti lajittelualgoritmien (parhaiden)
aikavaatimus on aikaluokkaa O(n log n) missä n lajiteltavien objektien määrä ja aika lasketaan vertailujen lukumääränä.

Tämä on siis pahimman tapauksn aikavaatimus.
Mutta onko kukaan tehnyt laajempia tutkimuksia jonkin tietyn algoritmin kulutetuista ajoista.

Helppo on itsekin tehdä pienen n arvoilla n==100, se vaatisi 100! eri permuutaation järjestämistä ja ajan mittaamista. Tähän ei vain aika riitä ja permutaatioidenkin läpikäyminen on mahdotonta (brute forcella).

Eli onko menetelmää analyyttiseen jakauman selvittämiseen (approksimaatiokin kelpaa, eli jos keskeinen raja-lause on käyttökelpoinen niin..). Mutta tässä loppuu oma tietämys aiheesta!!!

Eli kiinoiistaisi jakaumat jollekin algoritmille, esim. 6 alkion mittaisen listan järjestykseen kuluva aika vertailuina. 6!=720 permutaatiosta selvisi

Vertailujen Kappaletta
määrä permutaatioista
1 2
2 3
3 8
jne.
(luvut hatusta!!!!)
2236
Äänestä

Muut lukivat myös

Vastaukset 2

Vanhimmat

Aikooko täti kehittää uuden algoritmin vai vertailla olemassaolevia?

Googlettamalla luulisi löytyvän vertailutietoa. Ja voihan valmiita ohjelmia imuroida ja kokeilla itse, paljonko aikaa kuluu. Testitiedot voi tallentaa ja katsoa, noudattavatko ne esim. normaalijakaumaa.

Tuontyyppisten taksonomisten tehokkuusvertailujen tekemiseen ei taida löytyä oikotietä: ne permutaatiot/kombinaatiot on laskettava läpi, ellei jotain pysty etukäteen rajoittamaan eliminoitavaksi. Tällöin laskentatehokkuden ratkaiseen ohjelmoijan taito ja masiinan suorituskyky.

Äänestä

"Eli onko menetelmää analyyttiseen jakauman selvittämiseen (approksimaatiokin kelpaa, eli jos keskeinen raja-lause on käyttökelpoinen niin..)."

Niin, olikos se niin, että quick sortille tyypillinen aika on O(n* log(n)), mutta jos sille tyrkkää ilkeästi jo järjestetyn aineiston niin aika onkin O(n*n) :-; No nyt sitten joku haluaa tietää, miten vino lajitteluoperaatioiden lukumäärien jakauma on.

Suosittelen Monte Carloa eli heität vaan "satunnaista" aineistoa "riittävän" monta kertaa lajiteltavaksi ja mittaat, montako kertaa vertailuoperaatio piti suorittaa. Mitattu jakauma lähenee sitä todellista jakaumaa otoksen kasvaessa. Tosin jos menetelmällä on joku heikko kohta, anomalia, kuten quick sortilla, niin se ei välttämättä tule esille pienellä testillä. Tai jos menetelmä käyttäytyy hyvin suurella aineistolla täysin eri tavalla, niin sekään ei tule esille.

Sitten sinun täytyy vielä päättää, mistä jakaumasta se lajittelualgoritmille syötettävä satunnainen aineisto tulee. Satunnaisluvuilla mittaamista voi tehostaa toisinaan quasisatunnaisluvuilla.

Jos tutkittava algoritmi on kovin kinkkinen niin saatat joutua tarkistamaan tulokset eri satunnaislukugeneraattoreilla.

Äänestä

Kommentoi aloitusta


Kirjastontäti kirjoitti:

Yleisesti lajittelualgoritmien (parhaiden)
aikavaatimus on aikaluokkaa O(n log n) missä n lajiteltavien objektien määrä ja aika lasketaan vertailujen lukumääränä.

Tämä on siis pahimman tapauksn aikavaatimus.
Mutta onko kukaan tehnyt laajempia tutkimuksia jonkin tietyn algoritmin kulutetuista ajoista.

Helppo on itsekin tehdä pienen n arvoilla n==100, se vaatisi 100! eri permuutaation järjestämistä ja ajan mittaamista. Tähän ei vain aika riitä ja permutaatioidenkin läpikäyminen on mahdotonta (brute forcella).

Eli onko menetelmää analyyttiseen jakauman selvittämiseen (approksimaatiokin kelpaa, eli jos keskeinen raja-lause on käyttökelpoinen niin..). Mutta tässä loppuu oma tietämys aiheesta!!!

Eli kiinoiistaisi jakaumat jollekin algoritmille, esim. 6 alkion mittaisen listan järjestykseen kuluva aika vertailuina. 6!=720 permutaatiosta selvisi

Vertailujen Kappaletta
määrä permutaatioista
1 2
2 3
3 8
jne.
(luvut hatusta!!!!)

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu