Avancerad Problemlösning och Programmering i Praktiken

Relevanta dokument
Föreläsning Datastrukturer (DAT036)

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

Föreläsning Datastrukturer (DAT036)

Föreläsningsanteckningar F6

Föreläsning Datastrukturer (DAT037)

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

Föreläsning 5: Grafer Del 1

Föreläsning 6 Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037)

Efternamn förnamn pnr årskurs

Föreläsning Datastrukturer (DAT037)

I en matchning ligger varje hörn i högst en kant. I en stig ligger varje hörn i högst två kanter.

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

Föreläsning Datastrukturer (DAT036)

Datastrukturer. föreläsning 8. Maps 1

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.

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

Graphs (chapter 14) 1

Föreläsning 4: Kombinatorisk sökning

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

Algoritmer, datastrukturer och komplexitet

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

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

Datastrukturer. föreläsning 9. Maps 1

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

Trädstrukturer och grafer

Lösning till tentamensskrivning i Diskret Matematik för CINTE, CL2 och Media 1, SF1610 och 5B1118, onsdagen den 17 augusti 2011, kl

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

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

Föreläsning 5: Dynamisk programmering

Algoritmer, datastrukturer och komplexitet

TNK049 Optimeringslära

Kapitel 9: Grafalgoritmer

Algoritmer och datastrukturer, föreläsning 11

Lösningar Datastrukturer TDA

729G04 - Diskret matematik. Lektion 4

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

Algoritmer, datastrukturer och komplexitet

729G04 - Diskret matematik. Lektion 4

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

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Efternamn förnamn pnr kodnr

Föreläsning 7 Datastrukturer (DAT037)

Lösningar till KATT 2014

Föreläsning 6 Datastrukturer (DAT037)

DEL I. Matematiska Institutionen KTH

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

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

Agenda (obs! halvdag)

Föreläsning 12+13: Approximationsalgoritmer

Föreläsning 10. Riktade grafer. Viktade grafer. TDDC91,TDDE22,725G97: DALG. Innehåll. Innehåll Riktade grafer A 10.3

Algoritmer och komplexitet för SU

Näst nästa gång: Nästa gång: mer grafer (kap 10) Grafer 1 1. ! uppspännande träd. ! minimala uppspännande träd. ! Prims algoritm. !

n (log n) Division Analysera skolboksalgoritmen för division (trappdivision). Använd bitkostnad.

Datastrukturer och Algoritmer D0041D

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?

Undflyende delgrafer Några elementära bevis

TNSL05 Optimering, Modellering och Planering. Föreläsning 5

Ekvivalensrelationer

Datastrukturer. föreläsning 8. Lecture 6 1

Datastrukturer. föreläsning 9. Maps 1

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

Algoritmer, datastrukturer och komplexitet

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:15 19:15

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

, S(6, 2). = = = =

Lars-Daniel Öhman Lördag 2 maj 2015 Skrivtid: 9:00 15:00 Hjälpmedel: Miniräknare, lock till miniräknare

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

Föreläsning 11. Giriga algoritmer

Datastrukturer. föreläsning 7. Maps 1

Föreläsning Datastrukturer (DAT036)

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 09:00 14:00

Föreläsning 9: Talteori

träd dag graf båge och vikt Grafer definitioner och terminologi

Efternamn förnamn ååmmdd kodnr

Diskret Matematik A för CVI 4p (svenska)

1. (3p) Bestäm den minsta positiva resten vid division av talet med talet 31.

Föreläsning 11. Riktade grafer. Viktade grafer. TDDC70/91: DALG. Innehåll. Innehåll. 1 Riktade grafer A 11.3

JAVAUTVECKLING LEKTION 4

Grafer. 1 Grafer. Grunder i matematik och logik (2015) 1.1 Oriktade grafer. Marco Kuhlmann

Kap.6 Grafer. Egenskaper: Handskakningslemmat och Eulers formel Sats om eulerkrets/väg Isomorfi och representation av grafer Graffärgning

Föreläsning 2. Kortaste vägar i grafer.

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

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

Grundläggande datalogi - Övning 3

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

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Giriga algoritmer och dynamisk programmering

Grundkurs i programmering, 6 hp (725G61) Dugga 1 tillfälle 3

Tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, onsdagen den 20 augusti 2014, kl

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?

SF2715 Tillämpad kombinatorik, 6hp

Föreläsning 2: Grafer. Exempel på graf

Algebra och Diskret Matematik A (svenska)

Några saker till och lite om snabbare sortering

GOTO och lägen. Några saker till och lite om snabbare sortering. GOTO och lägen (3) GOTO och lägen (2)

Transkript:

Avancerad Problemlösning och Programmering i Praktiken Grafalgoritmer II High Performance Computing Center North (HPC2N)

Grafrepresentation Igår: Grafrepresentation DFS BFS Kortaste vägen MST Kortaste vägen alla par Transitiv omslutning

Grafrepresentation Idag: Eulerpromenad Topologisk sortering Bipartit matchning Flöde

Euler walk Givet en oriktad graf G=(V,E), hitta en sluten väg P så att den varje kant E återfinns i P exakt en gång. Steg 1: Lösningen finns om och endast om varje hörn har ett jämnt antal kanter

Euler walk - algoritm Skapa en sluten väg P (DFS). Ta bort alla kanter i G som ingår i P => G G består nu av en eller flera sammanhängande grafer. (Identifiera dessa med DFS) För varje del, skapa en Eulerpromenad (rekursivt), P1,P2,...,Pk Sätt ihop delarna. Traversera P. Så fort man kommer ett hörn som finns med i en av P1,P2,...,Pk, följer man den vägen istället.

Chinese postman Givet en oriktad graf G=(V,E), hitta en sluten väg P så att den varje kant E återfinns i P minst en gång. Algoritm (utan alla detaljer ): lägg till virtuella kanter mellan udda hörn. Se sidan 292 i boken.

Topologisk sortering Används till exempel vid schemaläggning. Givet en riktad graf G=(V,E) utan cykler, numrera hörnen 1 till n, så att om hörnet v har etiketten k, så kan alla hörn som kan nås från v har etikett >k

Topologisk sortering Algoritm: initiera v.ingrad för alla hörn (tex med DFS) label = 1 för alla hörn v med v.ingrad=0, lägg in dessa i kön Q så länge som Q inte är tom ta ut v ur Q v.label = label++; för alla kanter (v,w) if (!--w.ingrad), lägg in w i Q

Bipartit matchning Rätt vanligt problem. En bipartit graf är en (oriktigad) graf G=(V,E) där alla kanter går från en mängd U till en mängd W. U W=E, U V= En bipartit matchning går ut på att hitta E E så att inga par av kanter i E har några gemensamma hörn.

Bipartit matchning Används också vid schemaläggning och liknande problem. pojke flicka tex. En girig algoritm hittar inte maximum En naiv algoritm är för långsam (2 E ) Som tur var är en effektiv algoritm enkel!

Bipartit matchning Bipartit graf 1 2 3 4 5 6 A B C D E F Matchning

Bipartit matchning Matchning 1 2 3 4 5 6 A B C D E F Förbättring

Bipartit matchning Alternerande väg En alternerande väg är en väg som börjar i u U, där u inte är med i matchningen slutar i w W, där w inte är med i matchingen varannan kant är inte med i matchningen, och varannan kant är med i matchningen. Hittas genom att rikta kanterna + DFS

Bipartit matchning Rikta grafen 1 2 3 4 5 6 A B C D E F

Bipartit matchning Algoritm repetera Hitta en alternerande väg P mha DFS Om ingen väg hittas, avbryt Byt medlemskap på kanterna i P

Max-flow, min-cut Givet en graf G=(V,E), där varje kant e har en kapacitet c(e), hitta det maximala flödet från hörnet s (source, ingrad=0), till hörnet t (sink, utgrad=0) Dvs hitta ett flöde f(e) genom varje kant 0 f(e) c(e) för alla hörn v V-{s,t}, Σ u f(u,v) = Σ w f(v,w) maximera Σ w f(s,w)

Max-flow, min-cut Exempel: c(e) / f(e) 4/3 5/5 3/2 3/3 s 7/3 v 4/2 u 7/7 t 6/5 1/1 4/3 6/3 5/5 w

Max-flow, min-cut slack s v 4/2 u slack v u = c(v,u) -f(v,u) slack u v = f(v,u) man får följa en kant åt fel håll om den har ett flöde!

Max-flow, min-cut Utökande väg (augmenting path) 4/3 5/5 3/2 3/3 s 7/3 v 4/2 u 7/7 t 6/5 1/1 4/3 6/3 5/5 w

Max-flow, min-cut Algoritm repetera hitta väg P från s till t där slack h > 0 för alla kanter om väg saknas, avbryt, maximum funnet uppdatera grafen genom att öka flow med h för alla kanter i vägen P

struct stackentry { int vertex, maxflow; list<edge *> path; } while (1) { stack<struct stackentry> vertexstack; struct stackentry se; se.maxflow = MAX_INT; // se.vertex = 0; // s for (vertexstack.push(se);!vertexstack.empty(); vertexstack.pop()) { se = vertexstack.top(); if (v[se.vertex].visited) continue; else v[se.vertex].visited = true; if (se.vertex == t) break; // Väg funnen! för alla framåtkanter e if (slack(e) > 0) { se.maxflow = MIN(se.maxflow, slack(e)); se.vertex = e.next; se.path.pushback(e); vertexstack.push(se); } samma för bakåtkanterna } if (vertexstack.empty()) break; loopa igenom se.path, uppdatera med se.maxflow }

Max-flow, min-cut slack för oriktad graf v 4/2 u slack v u = c(v,u) -f(v,u) slack u v = c(v,u) + f(v,u)

Max-flow, min-cut De kanter som DFSen når, men har slack=0, utgör min-cut 4/3 5/5 3/2 3/3 s 7/5 v 4/4 u 7/7 t 6/5 1/1 4/1 6/5 5/5 w

Bipartit matchning Bipartit matchning är specialfall av flöde s t

Dagens problem En av: 563 Crimewave (tänk implicit flöde) 10307 Killing Aliens in Borg Maze Förövning: 820 Internet bandwidth