Föreläsning 13 Innehåll



Relevanta dokument
Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Föreläsning 13 Innehåll

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

Tentamen, EDA501 Programmering M L TM W K V

Seminarium 13 Innehåll

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 5 Innehåll

Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

Föreläsning 14 Innehåll

EDAA01 Programmeringsteknik - fördjupningskurs

Föreläsning 11 Innehåll

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Föreläsning 4 Datastrukturer (DAT037)

13 Prioritetsköer, heapar

Föreläsning 1. Introduktion. Vad är en algoritm?

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Tentamen i Algoritmer & Datastrukturer i Java

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Föreläsning 11 Innehåll. Sortering. Sortering i Java. Sortering i Java Comparable. Sortering. O(n 2 )-algoritmer: urvalssortering insättningssortering

Introduktionsmöte Innehåll

Algoritmer, datastrukturer och komplexitet

Tentamen, EDA690 Algoritmer och Datastrukturer, Helsingborg

Tentamen Datastrukturer (DAT037)

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

Algoritmer, datastrukturer och komplexitet

Tentamen, Algoritmer och datastrukturer

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Programkonstruktion och. Datastrukturer

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

Teoretisk del. Facit Tentamen TDDC (6)

Föreläsning 5: Giriga algoritmer. Kruskals och Prims algoritmer

Datastrukturer och algoritmer

Föreläsning 6 Innehåll. Rekursion. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursiv problemlösning. Rekursion. Rekursivt tänkande:

Fredag 10 juni 2016 kl 8 12

Föreläsning 5: Grafer Del 1

Föreläsning 1 Datastrukturer (DAT037)

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Föreläsning 5 Datastrukturer (DAT037)

TIDS- OCH RUMSKOMPLEXITET

Föreläsning 9 Innehåll

Datastrukturer. föreläsning 3. Stacks 1

Exempeltenta GruDat 2002/2003

Lösningsförslag till tentamen Datastrukturer, DAT037,

Algoritmer. Två gränssnitt

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen Datastrukturer för D2 DAT 035

Facit Tentamen TDDC kl (6)

Föreläsning REPETITION & EXTENTA

Föreläsning 10 Innehåll

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

Föreläsning 10 Innehåll. Diskutera. Hashtabeller. Hashfunktion. hashfunktion. hashkod (ett heltal)

Operativsystem ID2206 Tentamen TEN1 4.5 hp :00-18:00

::= HIHI HIHIHI ::= HAHA HAHAHA

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning 12+13: Approximationsalgoritmer

Föreläsning ALGORITMER: SÖKNING, REGISTRERING, SORTERING

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Sökning och sortering

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.

Föreläsning 12 Innehåll

Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Grafer, allmänt. Med datastrukturen graf menas vanligen: en mängd av noder (vertices) och en mängd av bågar (edges).

Föreläsning 11 Datastrukturer (DAT037)

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.

Föreläsning 12 Innehåll

Föreläsning 1: Dekomposition, giriga algoritmer och dynamisk programmering

Algoritmer, datastrukturer och komplexitet

Föreläsning Datastrukturer (DAT037)

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Algoritmer, datastrukturer och komplexitet

Föreläsning 4 Innehåll

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

Datastrukturer och algoritmer

Teoretisk del. Facit Tentamen TDDC (6)

Operativsystem (IS1350) :00-12:00

Sortering. Föreläsning 12 Innehåll. Sortering i Java. Sortering i Java Exempel. Sortering

Tentamen Datastrukturer (DAT036)

Innehåll. Mina målsättningar. Vad krävs för att nå dit? Obligatoriska uppgifter. Websajten. Datastrukturer och algoritmer

Föreläsning Datastrukturer (DAT036)

Försättsblad till skriftlig tentamen vid Linköpings Universitet

DD1321, Tentamen i tillämpad programmering och datalogi Lördagen den 18 dexember 2010 kl 13 18

Tentamen Datastrukturer, DAT037 (DAT036)

Datastrukturer. Föreläsning 5. Maps 1

Programkonstruktion och Datastrukturer

Tentamen Datastrukturer D DAT 035/INN960

Lösning av några vanliga rekurrensekvationer

Transkript:

Föreläsning 13 Innehåll Exempel på problem där materialet i kursen används Hitta k största bland n element Histogramproblemet Schemaläggning PFK (Föreläsning 13) VT 2013 1 / 15

Hitta k största bland n element Algoritm 1: Sortera Problem: Givet en vektor a med n tal, tag reda på de k största. Ex: Talen är 4, 1, 9, 5, 2, 6 och k = 3 ger svaret 5, 6, 9 Algoritm: Lagra talen i en vektor och sortera dem. Sedan är det enkelt att avläsa de k största: 1, 2, 4, 5, 6, 9 Välj en lämplig sorteringsalgoritm. Tidskomplexitet? PFK (Föreläsning 13) VT 2013 2 / 15

Hitta k största bland n element Algoritm 2: Håll reda på de k hittills största Gå igenom de n talen och försök hålla reda på de k största bland de tal vi hittills betraktat. Gå igenom k av talen i vektorn a och sätt in dem i R För varje tal t av de övriga (n - k) ur a om t > minsta talet i R tag bort minsta talet ur R sätt in t i R De k största talen finns nu att hämta i R Välj en lämplig datastruktur för R. Tidskomplexitet? PFK (Föreläsning 13) VT 2013 3 / 15

Histogramproblemet Man har n element i en samling. Man vill veta vilka olika element som förekommer och hur många gånger de förekommer. Ex: En text med ord. Vi vill kartlägga vilka ord som förekommer och antal förekomster av resp. ord. Ex: Vi har ett register över hela befolkningen. Vi vill ta reda på vilka olika förnamn som förekommer och hur många som har dessa namn. Ex: Kasta tärning många gånger. Hur många 1:or, 2:or...? Namnet på problemet beror på att man kan presentera resultatet i form av ett histogram om man vill. Se nästa bild. PFK (Föreläsning 13) VT 2013 4 / 15

Histogramproblemet Exempel: kasta tärning En tärning kastades 10 gånger: {4, 2, 3, 2, 4, 2, 2, 6, 2,4} Resultat som en lista av par (element,frekvens): (2,5) (3,1) (4,3) (6,1) Resultat som histogram: frekvens 5 4 3 2 1 1 2 3 4 5 6 element PFK (Föreläsning 13) VT 2013 5 / 15

Histogramproblemet lösning för ett specialfall Specialfall: elementen är heltal i ett begränsat intervall 0..s. skapa en heltalsvektor a av storlek s + 1; för vart och ett av elementen e: a[e]++; a 0 1 2 3 4 5 6 0 0 5 1 3 0 1 PFK (Föreläsning 13) VT 2013 6 / 15

Histogramproblemet generell lösning Algoritm 1: Sortera Elementen kan ha godtycklig typ. T ex typen String om det är namn som räknas. Algoritm: Sortera elementen element som är lika hamnar då intill varandra Iterera genom den sorterade samlingen och räkna frekvenser Välj en lämplig sorteringsalgoritm. Tidskomplexitet? PFK (Föreläsning 13) VT 2013 7 / 15

Histogramproblemet generell lösning Algoritm 2: Map Man kan använda en map, t.ex. HashMap. Hur? Tidskomplexitet? PFK (Föreläsning 13) VT 2013 8 / 15

Problemexempel: schemaläggning av maskiner Vi har m identiska maskiner och n jobb att utföra. Tiden för att utföra jobb i är t i. En maskin kan bara göra ett jobb i taget. Ett enskilt jobb kan inte delas mellan olika maskiner. Ett jobb som en maskin börjat utföra görs färdigt utan avbrott. Hur ska jobben allokeras till maskinerna för att tiden det tar att göra alla klara ska bli så kort som möjligt? PFK (Föreläsning 13) VT 2013 9 / 15

Schemaläggning av maskiner Man känner inte till någon effektiv algoritm som löser problemet: Att prova alla möjligheter går men kostar exponentiell exekveringstid. Approximativa algoritmer måste användas i praktiken för stora probleminstanser. En sådan är LPT-algoritmen Longest Processing Time first. PFK (Föreläsning 13) VT 2013 10 / 15

LPT-algoritmen Jobben allokeras till maskiner efter avtagande tidsåtgång. Jobbet allokeras till den maskin som har minst att göra (blir ledig tidigast). Ex: 3 maskiner M 1..M 3 och 7 jobb j 1..j 7 med tidsåtgång 2, 14, 4, 16, 6, 5, 3. 16 ( j ) M 1 4 M 2 M 3 14 ( j ) 2 6 ( j ) 5 ( j ) 3 ( j ) 7 4 ( j ) 2 ( j ) 5 6 3 1 Total tidsåtgång för att avsluta alla jobb: 17 PFK (Föreläsning 13) VT 2013 11 / 15

LPT-algoritmen Ger inte alltid den optimala lösningen Ex: 2 maskiner och 5 jobb med tidskrav 6, 6, 5, 5, 5. Total tidsåtgång för att avsluta alla jobb blir 16: M 1 6 5 5 M 2 6 5 Men bättre lösning finns tidsåtgång 15: M 1 5 5 5 M 2 6 6 PFK (Föreläsning 13) VT 2013 12 / 15

LPT-algoritmen Implementering Man kan implementera LPT-algoritmen med hjälp av prioritetskö. Maskinerna sätts in i prioritetskön. Maskinerna innehåller attributen prio = tidpunkt då maskinen blir ledig och ett heltalsattribut nbr = maskinnummer. Alla maskiner är från början lediga. De har då prioritet = 0. Givet en vektor t med n element, där t[i] = tidsåtgång för jobb i. sortera vektorn t i avtagande ordning skapa en prioritetskö q låt alla maskiner få prioritet 0 och sätt in dem i q för i = 0..n-1 Machine m = q.poll(); m.prio = m.prio + t[i]; q.offer(m); PFK (Föreläsning 13) VT 2013 13 / 15

LPT-algoritmen Fallet antal jobb antal maskiner I specialfallet antal jobb antal maskiner (n m) kan algoritmen förenklas: Alla jobb kan då sättas igång samtidigt på var sin maskin. Det blir det längsta jobbet som bestämmer tidsåtgången. Vi behöver alltså bara söka maximum av elementen i vektorn t. PFK (Föreläsning 13) VT 2013 14 / 15

LPT-algoritmen tidskomplexitet Allmänna fallet Vi antar att antal jobb > antal maskiner (n > m). Sortera jobben efter avtagande tidsåtgång kostar O(n log n) med en effektiv metod Bygga en heap och sätta in de m maskinerna kostar O(m) eftersom alla maskinernas prioritet är lika initialt poll n gånger och offer n gånger i heapen av storlek m kostnad O(n log m) Totalt: O(n log n) PFK (Föreläsning 13) VT 2013 15 / 15