Presentation laddar. Vänta.

Presentation laddar. Vänta.

© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 13.

Liknande presentationer


En presentation över ämnet: "© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 13."— Presentationens avskrift:

1 © Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 13

2 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Innehåll  Hashtabeller igen  Den konstiga tabellen...  Sortering  Varför ska man sortera  Sortering vs sorterad datatyp  Stabilitet  Grundprinciper för sortering  Genomgång av några sorteringsalgoritmer  Hur fort går det att sortera en lista med n tal?  Kapitel

3 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Från: Linear prob = Sluten hashing med linjär teknik Chaining = Öppen hashing Double hash = Sluten hashing med kvadratisk teknik

4 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Misslyckad sökning, öppen hashing  Antag att det är lika sannolikt att det n:te värdet x hashas till var och en av listorna.  Eftersom den lista där x ska placeras måste genomsökas helt innan sökningen misslyckas så krävs det O(antal element i listan k) sökningar  I medelfall blir det

5 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Sluten hashing, linjär teknik  Medelantalet platser som måste prövas vid en insättning och misslyckad sökning är uppåt begränsad av (1+1/(1- ) 2 ) /2, ( = 0.5 ger 2.5)  Medelantalet platser för en lyckad sökning är uppåt begränsad av (1+1/(1- ))/2, ( = 0.5 ger 1.5)

6 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Sortering varför?  Snabba upp andra algoritmer  Sökning  Hantera stora datamängder

7 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Sortering vs Sorterad datatyp  Sortering  förändrar ordningen mellan objekten i en struktur efter en sorteringsordning (fallande, ökande)  Sorterad datatyp  de strukturförändrande operationerna i gränsytan (insert, delete) upprätthåller en sorteringsordning mellan de lagrade objekten

8 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Saker att beakta  Absolut komplexitet  Totala komplexiteten i alla implementationssteg oTabell->lista->dubbellänkad lista  Passar en viss typ av sortering för en viss typ av implementation?  Ska man sortera och sedan söka eller inte sortera och göra en linjär sökning?

9 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Stabilitet  Den inbördes relationen mellan två objekt med samma nyckel bibehålls vid sortering [(0,L),(2,C),(5,G),(8,A),(10,G) ] => [(8,A),(2,C),(5,G),(10,G),(0,L)]  Alla sorteringsalgoritmer går inte att göra stabila!!  Mer om detta senare…

10 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Olika grundprinciper  Insättnings – O(n 2 )  välj ut ett godtyckligt objekt och sätt in det på rätt plats  Urvals – O(n 2 )  välj ut det objekt som är på tur och sätt in det sist/först  Utbytes – O(n*log(n))  byt plats på objekt som ligger fel inbördes  Samsortering – O(n*log(n))  bygger på sammanslagning av redan sorterade strukturer  Nyckelsortering – O(m+n)…  kräver mer information/kunskap om objektmängden

11 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Mer principer…  Naiva sorteringar - O(n 2 )  Insticks, urvals, och vissa utbytes  ”Smarta” sorteringar - O(nlog(n))  Utbytes och samsorteringar  Ännu smartare sorteringar - O(n+m)…  Nyckelsorteringar…(nästa föreläsning)

12 Sammanfattande tabell baserad på tabellen på sidan Namn Bäst MedelSämstMinneStabil Insertion sortO(n)O(n + d)O(n 2 )O(1)X Selection sortO(n 2 ) O(1) Bubble sortO(n)—O(n 2 )O(1)X Merge sortO(n log n) O(n)X In-placeIn-place merge sortmerge sortO(n log n) O(1)X QuicksortO(n log n) O(n 2 )O(log n) HeapsortO(n log n) O(1) Bucket sortO(n·k) O(n 2 ·k)O(n·k)X LSD Radix sortRadix sortO(n·k/s) O(n)X MSD Radix sortRadix sortO(n·k/s) O(n·(k/s)·2 s )O((k/s)·2 s )

13 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Insertion sort - insättningssortering  Välj ett godt. objekt och sätt in det på rätt plats  O(n 2 )  Enkel att implementera  Effektivitet  bäst för mindre datamängder och datamängder som är nästan sorterade  i praktiken mer effektiv än selection sort och bubble sort  Stabil  Kan göras in-place  Konstant andel extra minne (motsv elementens storlek)  Kan sortera en lista allt eftersom den byggs upp.

14 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Selection sort - urvalssortering  Välj det objekt som är på tur och sätt in det sist/först  O(n 2 )  Enkel att implementera  Effektivitet  bäst på mindre datamängder  beter sig lika oavsett datamängdens utseende  i praktiken mer effektiv än bubble sort  Kräver mindre ”swaps” än insertion sort  Bra om ”dyrare” att skriva till minnet än att läsa från det.  Inte stabil  kan göras stabil men då tappar man fördelar jämfört med insertion sort (mer swaps).  Kan göras in-place  Konstant andel extra minne (motsv elementens storlek)

15 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Bubble sort - utbytessortering  byta plats på objekt som ligger fel inbördes  O(n 2 )  Enkel (enklast?) att implementera  Effektivitet  bäst på mindre datamängder och nästan sorterade mängder  i praktiken sämre än både insertion sort och selection sort  Kräver mer ”swaps” än insertion sort  Stabil  Kan göras in-place  Konstant andel extra minne (motsv elementens storlek)

16 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Divide and Conquer  Rekursiv algoritmprincip  Grundidén är att dela upp problemet i mindre och mindre problem  Lös problemen för basfallet  Slå ihop dem till en totallösning  Mergesort och Quicksort är av denna algoritmtyp  O(n*log(n))

17 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Mergesort – samsortering  Bygger på sammanslagning av redan sorterade strukturer  O(n log n)  Effektivitet  snabbare och gör mindre jämförelser än quicksort  gör fler rekursiva anrop än quicksort men kan skrivas iterativt  Stabil  Kan göras in-place  Speciellt om listan är konstruerad som länkad lista  Oftast inte in-place, minnesutrymmet kan påverka ett val!

18 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Mergesort – samsortering  Algoritm för att sortera sekvensen S  Divide: Om S har 2 eller flera element dela S i två lika stora delsekvenser S1 och S2  Recurse: Sortera sekvenserna S1 och S2 rekursivt  Conquer: Sätt tillbaka elementen i S genom att slå samman S1 och S2 till en sorterad sekvens

19 Ihopslagning av två sekvenser Agorithm merge(S1,S2,S) while S1 is not empty and S2 is not empty do if S1.first().element() ≤ S2.first().element() then S.insertLast(S1.remove(S1.first())) else S.insertLast(S2.remove(S2.first())) while S1 is not empty do S.insertLast(S1.remove(S1.first())) while S2 is not empty do S.insertLast(S2.remove(S2.first()))

20 DoA VT -07 © Anders Broberg, Lena Kallin Westin, S S S Exempel på sammanslagning

21 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Analys av exekveringstiden  Höjden på sorteringsträdet kopplat till sorteringen av en sekvens med n element blir log 2 (n)  Antag att insättning och borttagning är av O(1)  Tiden i varje nod i trädet exkluderat tiden för det rekursiva jobbet nedanför är O(n/2 i ) där i är djupet på noden ligger på, ty storleken på sekvensen är n/2 i  Det är exakt 2 i noder på djupet i => totala tiden på djupet i i trädet är O(2 i n/2 i ) vilket är O(n) och höjden på trädet är log 2 (n)  Så den totala tidskomplexiteten är O(nlog 2 (n))

22 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Quicksort  Algoritm  Välj ut ett pivoelement  Dela upp listan i tre delar Less, Equal, Greater  Sortera Less och Greater rekursivt  Slå ihop Less+Equal+Greater

23 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Inplace variant av quicksort  Algoritm  Traversera parallellt från båda hållen i S, gå bakåt från början av S tills man hittar ett element som är >= PE, traversera från slutet mot början till man hittar ett element som är < PE  Skifta plats på dessa två element  Upprepa till traverseringarna mötes  Skifta in PE på rätt plats  Rekursivt anropa på Less och Greater

24 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Quicksort - val av pivoelement  O(nlog(n)) i bästa fallet  Valet av pivoelement kritiskt  Vill ha ett pivoelement som ligger i mitten  Vid sned fördelning får man insticks/urvals sortering med O(n 2 )  Alternativ (eftersträvar en enkel tilldelning) oVälj första/sista, slumpmässigt oMedel/median mellan några stycken oStörsta av de två första som skiljer sig åt

25 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Exempel… LRR

26 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Hur snabbt kan man sortera?  Jämförelsebaserad sortering  Ω(nlog(n)) undre gräns  Nyckelsortering snabbare…  Nästa föreläsning

27 DoA VT -07 © Anders Broberg, Lena Kallin Westin, Ω(nlog(n)) – bevis…  Exekveringstiden för en jämförelsebaserad sortering måste vara lika med eller större än djupet på det beslutsträd som är associerad med algoritmen  Varje nod i detta träd är kopplat till en jämförelse som bestämmer ordningen mellan två element i S  Därav, varje extern nod i T representerar en unik permutation av elementen i S, och det måste finnas n! noder i T, och höjden är log(n!)  Eftersom n! har åtminstone n/2 termer som är större än eller lika med n/2 => log(n!) = log(n/2)n/2= (n/2)log(n/2) => Ω(nlog(n))


Ladda ner ppt "© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 13."

Liknande presentationer


Google-annonser