Föreläsning 11. Giriga algoritmer

Relevanta dokument
Föreläsning 11. Giriga algoritmer

Föreläsning 13. Dynamisk programmering

Föreläsning 13. Dynamisk programmering

Föreläsning 12. Söndra och härska

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

Algoritmer, datastrukturer och komplexitet

Föreläsning 12. Söndra och härska

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim

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

Föreläsning 5: Dynamisk programmering

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

Tommy Färnqvist, IDA, Linköpings universitet

Glupska algoritmer. Kapitel Mynt och sedlar

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

Kaliningrad) låg vid bägge sidor av floden Pregel samt på

Algoritmer, datastrukturer och komplexitet

Tentamen Datastrukturer för D2 DAT 035

Föreläsning 8: Intro till Komplexitetsteori

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

Giriga algoritmer och dynamisk programmering

Föreläsning 12+13: Approximationsalgoritmer

Exempel: Förel Rekursion III Nr 14. Uno Holmer, Chalmers,

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Föreläsning 7+8: NP-problem. Begreppet effektiv algoritm är alltså synonymt med går i polynomisk tid i den här kursen. Är detta en rimlig uppdelning?

Frågan om P=NP? Är P=NP? Bakgrund. "Snabb lösning"?!

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

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

Föreläsning 5: Grafer Del 1

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Tentamensinstruktioner. När Du löser uppgifterna

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

Tentamensinstruktioner. När Du löser uppgifterna

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

Algoritmer, datastrukturer och komplexitet

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

Tentamensinstruktioner. När Du löser uppgifterna

Speciell användning av heltalsvariabler. Heltalsprogrammering. Antingen-eller-villkor: Exempel. Speciell användning av heltalsvariabler

Föreläsning 9: NP-fullständighet

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

N = {i}: noder (hörn) Graf: G = (N, B) Definitioner. Väg: Sekvens av angränsande bågar. Cykel: Väg som startar och slutar i samma nod.

Föreläsningsanteckningar F6

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

Parallella och rätvinkliga linjer

Föreläsningsanteckningar S6 Grafteori

Föreläsning 8+9: NP-problem. Begreppet effektiv algoritm är alltså synonymt med går i polynomisk tid i den här kursen. Är detta en rimlig uppdelning?

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

FÖRELÄSNING 11 DATALOGI I

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM

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

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP07/TEN1 OPTIMERINGSLÄRA GRUNDKURS för Y. Antal uppgifter: 7 Uppgifterna är inte ordnade efter svårighetsgrad.

Tentamen Datastrukturer D DAT 036/INN960

Dynamisk Programmering

729G04 - Diskret matematik. Lektion 4

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Tentamensinstruktioner. När Du löser uppgifterna

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM. Tentamensinstruktioner. När Du löser uppgifterna

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

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

Datastrukturer och algoritmer

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

Tentamen: Programutveckling ht 2015

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

Graärgning och kromatiska formler

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Tommy Färnqvist, IDA, Linköpings universitet

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Föreläsning 6. Slumptal Testa slumptal Slumptal för olika fördelningar Grafer Datastrukturen graf

COMPUTABILITY BERÄKNINGSBARHET. Källa: Goldschlager, Lister: Computer Science A Modern Introduction 2. upplaga 1988, Prentice Hall

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Dynamisk programmering. Dynamisk programmering. Dynamisk programmering. Dynamisk programmering

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS för D och C

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS för D och C. Tentamensinstruktioner. När Du löser uppgifterna

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

Grafer MST Top. sortering Starkt samm. komponenter Kortaste avstånd. Grafalgoritmer 1. Douglas Wikström KTH Stockholm

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Tentamen Datastrukturer D DAT 036/INN960

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Föreläsning 4: Kombinatorisk sökning

Tentamen Datastrukturer (DAT036)

TTIT33 Scenario för Tema 3 i Termin 3

Föreläsning Datastrukturer (DAT037)

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

ALGORITMER, OPTIMERING OCH LABYRINTER

Optimering. Optimering

Datastrukturer. föreläsning 10. Maps 1

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM. Tentamensinstruktioner. När Du löser uppgifterna

Eulercykel. Kinesiska brevbärarproblemet. Kinesiska brevbärarproblemet: Metod. Kinesiska brevbärarproblemet: Modell. Definition. Definition.

TAOP33/TEN 2 KOMBINATORISK OPTIMERING GRUNDKURS

Transkript:

Föreläsning 11 Giriga algoritmer

Föreläsning 11 Giriga algoritmer Användning Växelproblemet Kappsäcksproblemet Schemaläggning Färgläggning Handelsresandeproblemet

Giriga algoritmer (Greedy algorithms) En girig algoritm börjar med att lösa ett delproblem. Den löser detta delproblem genom att välja den lokalt bästa lösningen utan att ta hänsyn till det globala problemet. Den arbetar sedan vidare i steg med delproblem så att den till slut har löst hela problemet. För att verkligen klassificeras som en girig algoritm bör den inte heller omvärdera de lokala lösningar den gjort. Ex. från förra föreläsningen: Börja med en stad, anslut närmsta stad, anslut närmsta stad till de två städerna,

Användningsområden Beroende på problem ger en girig algoritm den optimala lösningen, en hyggligt bra lösning inom rimlig tid eller en helt usel lösning. När en girig algoritm fungerar är den ofta ett effektivt alternativ (jämfört t.ex med dynamisk programmering). Det finns problem där man inte får den optimala lösningen men där det tar för lång tid att hitta denna optimala lösningen (traveling salesman problem). Svåra och vanliga problem är normalt redan lösta och en ingenjör behöver kunna implementera, anpassa eller bara hitta implementeringar av redan skapade och välprövade algoritmer Däremot stöter man då och då på relativt enkla problem som kräver en lösning oftast behöver man inte hitta den bästa lösningen utan det räcker att man hittar en lösning Det är bl.a. för dessa problem man slipar sin problemlösningslåda giriga algoritmer är ett exempel på en sorts lösningar som ofta är effektiva nog i dessa situationer och som är ganska enkla att konstruera.

Växelproblemet Vad är det minsta antalet mynt och sedlar som krävs för att ge växel för ett givet belopp? Fundera ut hur en girig algoritm skulle se ut.

En girig algoritm för att ge växel Antag att vi vill ge x kr i växel n = 0 Medans x > 0 Sätt p = den största valören x Sätt x = x p Sätt n = n + 1 Svar: n Fungerar den? Ger den bästa resultat? Ex: 77 kr: 50, 20, 5, 1, 1: n = 5 Varför är algoritmen glupsk? Ex: Ge växel på 30 kr med valörerna 1, 10, 25 Vi återkommer till detta när det är dags för dynamisk programmering.

Kappsäcksproblemet (knapsack) Det finns ett visst antal olika sorters varor n vars värde är v i och vikt är w i. Hur ska vi packa en kappsäck som maximalt tar vikten W så att vi får med oss det maximala värdet? Det här gamla problemet med moderna tillämpningar såsom (schemaläggning, flygplansrutter och produktionsplanering) finns i flera olika versioner. Vi ska här titta på den version som kallas obegränsad: Av varje sorts vara finns det obegränsat antal. För denna version är en girig algoritm garanterad att få åtminstone halva det maximala värdet (om det endast finns en begränsad mängd av varje vara kan den lyckas mycket sämre). Även för detta problem kan man hitta den optimala lösningen med dynamisk programmering. Formulera en rimlig girig algoritm. 10kr 4kg 3kr 2kg 1kr 1kg 15kg

Girig algoritm för kappsäcksproblemet Fyll kappsäcken med så många som möjligt av den vara som har högst värde per viktenhet (kr/kg). Fyll kappsäcken med så många som möjligt av den vara som har näst högst värde per viktenhet. osv Försök konstruera ett exempel där algoritmen misslyckas. Ex: kappsäck 20kg 12 kr 11kg 10 kr 10kg.

Färgläggning av karta Om man vill färglägga en karta med länder så att varje landområde inte angränsar till något område med samma färg klarar man sig oftast med tre färger. Matematiskt har man (med stor möda) lyckats bevisa att det aldrig behövs mer än fyra färger (förutsatt att varje land sitter ihop). Det finns ingen algoritm som garanterat hittar den bästa lösningen. En girig algoritm kommer på kort tid (och som så ofta med giriga algoritmer med O(n)) hitta en ganska bra lösning. Kom ihåg: länderna representeras av noder och att de angränsar av en båge i grafteori

Tillämpningar Noderna (länderna) representerar kurser och bågarna (gränser) representerar att två klasser har gemensamma studenter. Olika färger motsvarar då att två klasser inte kan schemaläggas samtidigt. (Detta problem kan ge grafer som inte motsvaras av en karta och där lösningen kan behöva fler än 4 färger.) Noderna representerar radiostationer, och bågarna att de är nära nog att interferera med varandra och olika färg att de behöver använda olika frekvensband. Noderna representerar trafikljus i en korsning och bågarna att två ljus inte kan vara gröna samtidigt.

En girig algoritm för färgläggning av karta Ordna färgerna (kalla dem 1,2,3,4, ) Så länge det ännu finns icke färglagda länder Välj ett land Ge landet den första färgen som inget angränsande land har Algoritmen är inte nödvändigtvis den bästa giriga algoritmen (jämför välj en färg, färglägg så många som möjligt). Hur bra den presterar beror också på i vilken ordning man väljer länderna. I snitt presterar den bättre om länderna väljs så att länder som angränsar i hög grad behandlas efter varandra. Följande precisering av välj ett land skulle förbättra algoritmen: Välj det land som angränsar till flest av de redan valda länderna.

Implementeringsdetaljer För en någorlunda enkel implementering Indata: Låt oss kalla länderna 0, 1, 2,, n-1 och låt gränser[i][j] vara true om det finns en gräns mellan land i och land j och annars false. Utdata: Kalla färgerna 1, 2, 3,, m. Låt land[i] vara den färg land i har fått. Intern data: färg[i] är true om ett visst land angränsar till ett land med färg i Algoritm: Sätt land[i] = 0 för alla i För i = 0 till n-1//går igenom länderna så att vi hanterar land i nedan: Sätt färg[j]= false för alla j För j = 0 till n-1//går igenom länderna för att hitta grannar till land i om gränser[i][j] och land[j]!=0 Sätt färger[land[j]]=true //markerar angränsande färger För j = 1 till m //går igenom färgerna för att hitta första lediga om inte färger[j] land[i] = j avbryt for-loopen

Ett schemaläggningsproblem Vi har en sal och ett antal aktiviteter under en dag. Varje aktivitet har en starttid och en sluttid. Målet är att schemalägga så många aktiviteter som möjligt. En girig algoritm: V mängden av alla aktiviteter Medans det finns aktiviteter i V Schemalägg den aktivitet i V som slutar först. Tag bort vald aktivitet ur V Tag bort alla aktiviteter ur V som överlappar med vald aktivitet Är lösningen den optimala lösningen? Om inte kan du hitta ett motexempel?

Handelsresandeproblemet Givet ett antal städer och avståndet mellan varje par av städer. Vilken väg ska en handelsresande välja för att minimera resvägen och besöka alla städer. Problemet berör inte bara ren logistik utan uppkommer även t.ex inom nätverksanalyser. Att hitta den optimala lösningen är ett mycket krävande problem för stora system. En girig algoritm är inte garanterad att hitta den bästa lösningen men går väldigt fort. Formulera en girig algoritm.

En girig algoritm för handelsresandeproblemet Välj en startstad Medans det finns obesökta städer Res till den stad som ligger närmast den du befinner dig i Problem: Den lägger inte upp en rutt och de sista resorna blir lätt väldigt långa. Den passar inte på att ta alla städer där den är utan åker vidare om det ger tillfälligt kortare resa.