Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

INF 295 forelesning 13 - kap 6 Prioritetskø (Heap) Hans Fr. Nordhaug (Ola Bø)

Liknende presentasjoner


Presentasjon om: "INF 295 forelesning 13 - kap 6 Prioritetskø (Heap) Hans Fr. Nordhaug (Ola Bø)"— Utskrift av presentasjonen:

1 INF 295 forelesning 13 - kap 6 Prioritetskø (Heap) Hans Fr. Nordhaug (Ola Bø)

2 Prioritetskø Behov for prioritering Printer-kø Prosess-kø Telefon-kø Alarm-kø Event-kø Effektiv implementering av prioritetskø Bruk av prioritetskø Elegante datastrukturer

3 Modell Operasjoner Comparable deleteMin() insert(Comparable o) (Comparable findMin())

4 Enkle implementeringer Lenket liste med gjennomsøking innsetting først i lista O(1) deleteMin med søk O(N) Sortert lenket liste innsetting på rett sted O(N) deleteMin() forrest O(1) Binært søketre O(log N) for begge operasjoner Søketre er overkill.

5 Binær heap Mye brukt for prioritetskøer En heap er et helt fylt binærtre (muligens unntatt nederste nivå som fylles fra venstre ) Kalles et komplett binærtre Et tre med høyden h har mellom 2 h og 2 h+1 -1 noder Høyden er log N Kan lagres i array uten lenker fra index 1. For element i er 2i venstre barn og 2i+1 høyre barn Foreldren til i er i/2 Ingen lenker 2*i og i/2 er meget raske operasjoner 2 >1 (svarer til deling og ganging med 10 i 10-tallsystemet.)

6

7 Heap ordningsregel Rota er mindre enn alle sine barn Hvert subtre skal være en heap Rota er det minste elementet og kan finnes i konstant tid

8

9 Innsetting Lag et hull i neste ledige plass Kan X plasseres i hullet (X større enn forelderen) er vi ferdig ellers flytte foreldrenoden ned i hullet og lager et nytt hull som vi prøver på nytt. Rotnoden Sentinel (skiltvakt) Kjøretid Worst case O(log N) Gjennomsnitt 2,607 sammenlikninginger dvs: O(1)

10

11

12 deleteMin() Minste er rota Fjerning gir hull Siste element må flyttes Kan siste element plasseres i hullet? Hvis ja er vi ferdig Ellers putter vi minste barn i hullet og hullet får ny plassering Gjenta til siste element får plass. Prosessen kalles perkolering Kjøretid avg og worst case O(log N)

13

14

15 Andre Heap-operasjoner Heap er begrenset til findMin i konstant tid Insert og deletMin er logaritmiske Alle andre operasjoner er lineære og egentlig ikke en del av Heap-ADT Dersom et gitt element kan finnes ved hjelp av en annen datastruktur er følgende logaritmiske decreaseKey increaseKey delete buildHeap O(N) avg and worst case

16 buildHeap

17

18 Anvendelser for prioritetskø Utvelgelsesproblemet Finne det k-te største elementet i en mengde av N elementer Forslag: Lese inn i array, sortere og skrive ut element k. O(N 2 ) med enkel sorteringsalgoritme Lese inn de k første i array, sortere og gå gjennom resten av elementene, erstatte elementer i arrayen hvis noen er store nok. O(Nk)  1 000 000 elementer og k=500 000 krever dagevis Lese inn i array, kjøre buildHeap, kjøre k deleteMin O(N+klogN) Lese inn k i array, kjøre buldHeap, sjekk resten mot findMin og insert de som er små nok. O(Nlogk)

19 Flere anvendelser Event-simulering Eksempel bank med luker Simulering Input: Liste med kundeankomsttider og betjeningstid Kunde stiller seg i kø ved skranke, blir betjent og går Hvor mange luker og kasserere er det behov for? Hendelser: Kunde kommer, Kunde ferdig, Kasse åpnes, Kasse stenges Kan styres fra ticknr eller med løpende behandling av hendelser etter tiden de skjer på. (prioritetskø)

20 Andre prioritetskøer d-heap Leftist (venstre) heap Skew heap Binomial køer


Laste ned ppt "INF 295 forelesning 13 - kap 6 Prioritetskø (Heap) Hans Fr. Nordhaug (Ola Bø)"

Liknende presentasjoner


Annonser fra Google