PG4200 Algoritmer og datastrukturer forelesning 10. Lars Sydnes 21. november 2014

Like dokumenter
PG4200 Algoritmer og datastrukturer Forelesning 10

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

PG4200 Algoritmer og datastrukturer Forelesning 12

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

Grafalgoritmer: Korteste vei

Korteste vei i en vektet graf uten negative kanter

Anvendelser av grafer

Løsningsforslag til eksamen i PG4200 Algoritmer og datastrukturer 10. desember 2014

Løsningsforslag - Korteste vei

MED TIDESTIMATER Løsningsforslag

Norges Informasjonsteknologiske Høgskole

Algoritmer og Datastrukturer

Vi skal se på grafalgoritmer for:

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

Pensum: fra boken (H-03)+ forelesninger

Algoritmeanalyse. (og litt om datastrukturer)

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

Pensum: fra boken (H-03)+ forelesninger

PG4200 Algoritmer og datastrukturer Forelesning 7

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

PG4200 Algoritmer og datastrukturer forelesning 3. Lars Sydnes 29. oktober 2014

NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013

PG4200 Algoritmer og datastrukturer Forelesning 3 Rekursjon Estimering

Vi skal se på grafalgoritmer for:

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Algoritmer - definisjon

INF1020 Algoritmer og datastrukturer GRAFER

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

EKSAMEN. Algoritmer og datastrukturer. Eksamensoppgaven: Oppgavesettet består av 11 sider inklusiv vedlegg og denne forsiden.

INF oktober Dagens tema: Uavgjørbarhet. Neste uke: NP-kompletthet

Kompleksitetsteori reduksjoner

Korteste vei problemet (seksjon 15.3)

Notater til INF2220 Eksamen

INF Algoritmer og datastrukturer

Korteste Vei II. Lars Vidar Magnusson Kapittel 24 Bellman-Ford algoritmen Dijkstra algoritmen

INF Algoritmer og datastrukturer

Go with the. Niende forelesning. Mye matematikk i boka her ikke så komplisert, men mye å holde styr på.

Løsnings forslag i java In115, Våren 1998

IN2010: Forelesning 11. Kombinatorisk søking Beregnbarhet og kompleksitet

Oppgave 1. Sekvenser (20%)

INF Algoritmer og datastrukturer

Grunnleggende Grafteori

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer

Korteste Vei I. Lars Vidar Magnusson Kapittel 24 Hvordan finne korteste vei Egenskaper ved korteste vei

EKSAMEN med løsningsforslag

Rekursiv programmering

Hva er en algoritme? Har allerede sett på mange algoritmer til nå i IT1101. Forholdet mellom en algoritme og et program. Algoritme program prosess

INF Algoritmer og datastrukturer

Oppgave 1 a. INF1020 Algoritmer og datastrukturer. Oppgave 1 b

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

MAT1030 Forelesning 22

LØSNINGSFORSLAG, EKSAMEN I ALGORITMER OG DATASTRUKTURER (IT1105)

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Introduksjon. MAT1030 Diskret Matematikk. Introduksjon. En graf. Forelesning 22: Grafteori. Roger Antonsen

Introduksjon. MAT1030 Diskret matematikk. Søkealgoritmer for grafer. En graf

MAT1030 Diskret matematikk

IN Algoritmer og datastrukturer

GRAFER. Korteste vei i en vektet graf uten negative kanter. Korteste vei, en-til-alle, for: Minimale spenntrær

INF Algoritmer og datastrukturer

Løsningsforslag EKSAMEN

LO118D Forelesning 12 (DM)

Kombinatorikk. MAT1030 Diskret Matematikk. Oppsummering av regneprinsipper

MAT1030 Diskret Matematikk

IN Algoritmer og datastrukturer

MAT1030 Forelesning 22

INF Algoritmer og datastrukturer

Dagens plan: INF Algoritmer og datastrukturer. Grafer vi har sett allerede. Det første grafteoretiske problem: Broene i Königsberg

INF2220: Forelesning 1

INF Algoritmer og datastrukturer

Eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

Norges Informasjonsteknologiske Høgskole

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:

IN Algoritmer og datastrukturer

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

Håndterlige og uhåndterlige problemer

INF2220: Forelesning 1

PG4200 Algoritmer og datastrukturer Forelesning 2

INF Algoritmer og datastrukturer

Kap 9 Tre Sist oppdatert 15.03

Oppgave 3 a. Antagelser i oppgaveteksten. INF1020 Algoritmer og datastrukturer. Oppgave 3. Eksempelgraf

TOD063 Datastrukturer og algoritmer

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke?

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

PG 4200 Algoritmer og datastrukturer Innlevering 2

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Et eksempel: Åtterspillet

Dagens plan. INF Algoritmer og datastrukturer. Koding av tegn. Huffman-koding

Binære trær: Noen algoritmer og anvendelser

45011 Algoritmer og datastrukturer Løsningsforslag eksamen 13. januar 1992

ALGORITMER OG DATASTRUKTURER

Dijkstras algoritme Spørsmål

Vann i rør Ford Fulkerson method

GRAFER. Noen grafdefinisjoner. Korteste vei i en uvektet graf V 2 V 1 V 5 V 3 V 4 V 6

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

KANDIDATEN MÅ SELV KONTROLLERE AT OPPGAVESETTET ER FULLSTENDIG

KORTESTE STI. Vektede Grafer. Korteste Sti. Dijkstra s Algoritme. Vektet Urettet Graf

Transkript:

PG4200 Algoritmer og datastrukturer forelesning 10 Lars Sydnes 21. november 2014

I Grafer

Grafisk fremstilling av en graf D A B C Ikke-rettet graf

Grafisk fremstilling av en graf D A B C Rettet graf

Grafisk fremstilling av en graf D 1 A 2 B 4 3 1 C Ikke-rettet vektet graf

Grafisk fremstilling av en graf D 1 A 2 B 4 3 1 C Rettet vektet graf

Grafer I dagligtale : En visuell fremstilling. Her: Selve strukturen Man kan tegne opp en graf på mange måter Strukturen = det som er uavhengig av fremstillingen

Grafer I dagligtale : En visuell fremstilling. Her: Selve strukturen Man kan tegne opp en graf på mange måter Strukturen = det som er uavhengig av fremstillingen Mange interessante problemer kan uttrykkes ved grafer. Dette er grunnen til at grafer regnes som så viktige.

Grafer I dagligtale : En visuell fremstilling. Her: Selve strukturen Man kan tegne opp en graf på mange måter Strukturen = det som er uavhengig av fremstillingen Mange interessante problemer kan uttrykkes ved grafer. Dette er grunnen til at grafer regnes som så viktige. Grafer brukes gjerne til å fremstille relasjoner mellom objekter. Representasjon av struktur i datasettet.

Grafer Byggesteiner node kant rettet kant vektet kant 3.4 vektet rettet kant 3.4

Grafer Terminologi Ikke-rettet graf: Kantene har ikke retning. Rettet graf: Kantene har retning: Fra A til B. Kalles digraph. Ikke-vektet graf: Kantene har ikke vekt. Vektet graf: Kantene har vekt. Ulike kombinasjoner: Ikke-rettet vektet graf Rettet vektet graf Rettet ikke-vektet graf Ikke-vektet ikke-rettet graf

II Eksempler

Eksempel: Referanser en rettet graf Double another Object obj void main Integer number funksjon Object data

Eksempel: Referanser og Garbage Collector Sett obj = null i main: Double another Object obj void main Integer number funksjon Object data Søppelåndteringen (gc) kan nå gjøre jobben sin og slette obj. Men, den må unngå å slette number.

Eksempel: Funksjonskall Noder = funksjoner Kanter = funksjonskall void main mergesort merge

Datanettverk Andre eksempler

Andre eksempler Datanettverk Worldwide web

Andre eksempler Datanettverk Worldwide web Geometriske nettverk: Posisjoner og veier i en spill-verden. Vekt = avstand. Flyplasser og flyruter. Vekt = pris.

Andre eksempler Datanettverk Worldwide web Geometriske nettverk: Posisjoner og veier i en spill-verden. Vekt = avstand. Flyplasser og flyruter. Vekt = pris. Avhengighet mellom operasjoner: Rettet graf. Kant fra A til B når operasjonen B forutsetter at A er fullført.

Andre eksempler Datanettverk Worldwide web Geometriske nettverk: Posisjoner og veier i en spill-verden. Vekt = avstand. Flyplasser og flyruter. Vekt = pris. Avhengighet mellom operasjoner: Rettet graf. Kant fra A til B når operasjonen B forutsetter at A er fullført. Problemer som vi ønsker å løse med algoritmer.

Eksempel: Modell av flyplassnettverk Ålesund Trondheim 399 579 645 599 Bergen 549 Oslo Hvordan kan vi reise fra Ålesund til Trondheim? Hva er den billigste veien fra Ålesund til Trondheim?

III Graf-algoritmer

Traversering Vi ønsker å besøke alle nodene i en graf. Hvor skal vi starte? Rekkefølge? public Iterator<Node> iterator(){ /*...*/ } Trær er eksempler på grafer, og vi har Bredde først = Level order Dybde først = preorder, postorder

Traversering Bredde først Vi starter i en villkårlig utvalgt node. Besøk alle naboene til startnoden (avstand = ett steg). Besøk naboene til naboene (avstand = to steg) Besøk alle nodene i avstand 3, avstand 4, et.c.

Traversering Dybde først Vi starter i en villkårlig utvalgt node. Vi går til det første barnet. Vi går til det første barnebarnet... Vi går til det andre barnet Vi går til det andre barnets første barnebarn... Dybde først vs Bredde først Et uhyre viktig begrepspar!

Traversering Kode Å forstå et dataprogram. Rettet graf av referanser (Objekter, funksjoner) som det gjøres operasjoner på. Ulike deler av koden skrives, presenteres og leses sekvensielt (av mennesker og maskin) Tenker du dybde først eller bredde først når du skriver kode?

Konkretisering: Representasjon av grafer Tegninger / Grafikk Naboskapsmatriser Naboskapslister. Graph.java EdgeWeightedDigraph.java

Konkretisering: Traversering DepthFirstPaths.java BreadthFirstPaths.java

Finn korteste vei (Pathfinding) Finn korteste vei fra A til B. Bruk bredde først-traversering med utgangspunkt i A. Første gangen B dukker opp, har vi funnet den korteste veien. Dijkstras algoritme: Variant av bredde først-søk. Bygg alle mulige veier med utgangspunkt i A. Arbeid på det korteste alternativet. Fortsett arbeidet helt til det dukker opp en vei som ender i B. A -algoritmen: Forbedret variant av Dijkstras algoritme. Brukes når vi kan estimere avstandene.

Dijkstras algoritme: Ålesund til Trondheim 399 Ålesund 579 645 Trondheim 599 Bergen 549 Oslo

Dijkstras algoritme: Ålesund til Trondheim 399 Ålesund 579 645 Trondheim 599 399 Ålesund 579 645 Trondheim 599 Bergen 549 Oslo Bergen 549 Oslo

Dijkstras algoritme: Ålesund til Trondheim 399 Ålesund 579 645 Trondheim 599 399 Ålesund 579 645 Trondheim 599 Bergen 549 Oslo Bergen 549 Oslo 399 Ålesund 579 645 Trondheim 599 Bergen 549 Oslo

Dijkstras algoritme: Ålesund til Trondheim 399 Ålesund 579 645 Trondheim 599 399 Ålesund 579 645 Trondheim 599 Bergen 549 Oslo Bergen 549 Oslo 399 Ålesund 579 645 Trondheim 599 399 Ålesund 579 645 Trondheim 599 Bergen 549 Oslo Bergen 549 Oslo

Dijkstras algoritme: Implementasjon Hvilke noder har vi allerede besøkt? Hva er den korteste tilgjengelige veien? Alternativene kan legges i en prioritetskø (heap). Køoperasjoner med logaritmisk kjøretid.

Konkretisering: Implementasjon DijkstraSP.java

Worst case-analyse Når vi må vurdere alle kantene. La V være antall noder i grafen og E antallet kanter. Vi undersøker maksimalt V veier. Heap kjøretid O(log V ) for lagring og henting av veier. Dette skjer maksimalt E ganger kjøretid O(E log V ) // TODO: KONTROLLER DETTE EN GANG TIL

A -algoritmen: Korteste vei fra A til B Ny ingrediens: Estimat min(a, B) for korteste mulige avstand mellom A og B. Dijkstras algoritme bedømmer en vei kun etter lengden. A D W E A*-algoritmen bedømmer denne veien etter Lengde(A-D-W-E) + min(e, B).

A -algoritmen: Eksempel. 399 Ålesund 579 645 Trondheim 599 Bergen 249 Stavanger 549 369 Oslo Estimat basert på geografisk avstand: Minstepris Stavanger - Trondheim = 500kr. A*-algoritmen vil ikke ta Stavanger i betraktning

IV Fagevaluering

Fagevaluering Gå på it s learning. Ta gjerne opp ting dere har nevnt før, så vi har det dokumentert.

V Travelling salesman problem

Travelling salesman problem (TSP) Konkret problem Handelsmannen besøke 20 byer. Hva er den korteste/rimeligste/raskeste rundreisen?

Travelling salesman problem (TSP) Konkret problem Handelsmannen besøke 20 byer. Hva er den korteste/rimeligste/raskeste rundreisen? Abstrakt problem Finn den korteste rundreisen i en vektet graf.

Uttømmende søk int[] tsp(graph graph){ int[] shortestcircuit double minimallength = DOUBLE.MAX_VALUE; for (int[] circ: permutations(graph.vertices())) if (ispath(circ)) continue; } } if (path.length() < minimallength){ shortestpath = path; minimallength = path.length(); }

Analyse Vi itererer over alle permutasjoner av nodene. Permutasjon = Omstokking. Kan du permutere kortstokken?

Hvor mange permutasjoner finnes det Name and conquer: P n = Antall permutasjoner av n elementer 1, 2, 3,..., n P n 1 permutasjoner med 1 først P n 1 permutasjoner med 2 først. P n 1 permutasjoner med n først P n = n P n 1 = n(n 1)P n 2 = = n(n 1)(n 2) 2 1 = n! ulike permutasjoner av de n tallene.

Kjøretidsanalyse n = antall noder i grafen. (Antall byer) Antall iterasjoner i den indre løkka $ = P_n =n!$. n! Kjøretid n!

Kjøretidsanalyse n = antall noder i grafen. (Antall byer) Antall iterasjoner i den indre løkka $ = P_n =n!$. n! vokser ekstremt raskt. n! Kjøretid n! Når n vokser fra 99 til 100 100-dobles verdien. Når n vokser fra 999 999 til 1 000 000 milliondobles verdien.

Kjøretidsanalyse n = antall noder i grafen. (Antall byer) Antall iterasjoner i den indre løkka $ = P_n =n!$. n! vokser ekstremt raskt. n! Kjøretid n! Når n vokser fra 99 til 100 100-dobles verdien. Når n vokser fra 999 999 til 1 000 000 milliondobles verdien. 2 n vokser også utrolig raskt, men Når n vokser fra 99 til 100 dobles verdien. Når n vokser fra 999 999 til 1 000 000 dobles verdien.

Konsekvens Hvis det tar handelsmannen 1 time å lage en plan for 99 byer, tar det 100 timer å planlegge for 100 byer. ( 5 døgn) 10,000 timer å planlegge for 101 byer ( 1.5 år)

Konsekvens Hvis det tar handelsmannen 1 time å lage en plan for 99 byer, tar det 100 timer å planlegge for 100 byer. ( 5 døgn) 10,000 timer å planlegge for 101 byer ( 1.5 år) Altså: Kjøretiden er ekstremt følsom.

Spørsmål Det finnes vel noe mer effektivt enn brute-force-metoden?

Spørsmål Det finnes vel noe mer effektivt enn brute-force-metoden? Bedre løsninger av problemet: Bedre worst-case kjøretid. (Ikke så viktig) Bedre kjøretid på typiske datasett. (Veldig viktig)

Spørsmål Det finnes vel noe mer effektivt enn brute-force-metoden? Bedre løsninger av problemet: Bedre worst-case kjøretid. (Ikke så viktig) Bedre kjøretid på typiske datasett. (Veldig viktig) Raske løsninger av lignende problemer: Finn en vei som ikke er mer enn dobbelt så lang som den korteste. Dette kan gjøres veldig effektivt.

VI Uhåndterlige problemer

Uhåndterlige problemer Vi har sett mange problemer som vi kan løse innenfor akseptabel kjøretid.

Uhåndterlige problemer Vi har sett mange problemer som vi kan løse innenfor akseptabel kjøretid. Men i mange tilfeller har vi ingen kjent akseptabel løsning. ingen kan bevise at det ikke finnes noen akseptabel løsning.

Uhåndterlige problemer Vi har sett mange problemer som vi kan løse innenfor akseptabel kjøretid. Men i mange tilfeller har vi ingen kjent akseptabel løsning. ingen kan bevise at det ikke finnes noen akseptabel løsning. Praktisk problem: Lage effektive algoritmer Teoretisk problem: Finne ut hva som er mulig.

Polynomisk kjøretid Polynomisk kjøretid i n: der k er en konstant. Kjøretid n k

Polynomisk kjøretid Polynomisk kjøretid i n: Kjøretid n k der k er en konstant. Eksponentiell kjøretid: Hvis Kjøretid A n er det lavest mulige estimatet.

Polynomisk kjøretid Polynomisk kjøretid i n: Kjøretid n k der k er en konstant. Eksponentiell kjøretid: Hvis Kjøretid A n er det lavest mulige estimatet. Faktoriell kjøretid: Hvis Kjøretid n! er det lavest mulige estimatet.

Søkeproblemer: NP Et problem tillhører klassen NP derssom en løsning kan verifiseres innenfor polynomisk kjøretid.

Søkeproblemer: NP Et problem tillhører klassen NP derssom en løsning kan verifiseres innenfor polynomisk kjøretid. opplagt brute-force-løsning: Undersøk alle mulige alternativer. (Søk)

Søkeproblemer: NP Et problem tillhører klassen NP derssom en løsning kan verifiseres innenfor polynomisk kjøretid. opplagt brute-force-løsning: Undersøk alle mulige alternativer. (Søk) Fra et praktisk synspunkt: Alle problemene vi kan håpe på å håndtere med en datamaskin tilhører klassen NP.

Problemklassen P Dette er problemer som har kjente løsninger med polynomisk worst case-kjøretid.

Problemklassen P Dette er problemer som har kjente løsninger med polynomisk worst case-kjøretid. Fra et praktisk synspunkt: Dette er de problemene vi kan håndtere med en datamaskin.

P = NP? Dette er et spørsmål vi ikke har svar på.

P = NP? Dette er et spørsmål vi ikke har svar på. Finnes det noen problemer i klassen NP som ikke ligger i P?

P = NP? Dette er et spørsmål vi ikke har svar på. Finnes det noen problemer i klassen NP som ikke ligger i P? Et åpent (og meget vanskelig) forskningsspørsmål.

Reduksjon Anta at vi kan løse problemet A innen rimelig kjøretid.

Reduksjon Anta at vi kan løse problemet A innen rimelig kjøretid. Metode for å løse en instans b av et problem B: 1 Transformer om til instans a av problemet a. 2 Finn løsningen s a av a. 3 Transformer s a om til s b. løsning s b av problemet B.

Reduksjon Anta at vi kan løse problemet A innen rimelig kjøretid. Metode for å løse en instans b av et problem B: 1 Transformer om til instans a av problemet a. 2 Finn løsningen s a av a. 3 Transformer s a om til s b. løsning s b av problemet B. Her har vi redusert B til A Vi kan skrive: B A

Reduksjon Anta at vi kan løse problemet A innen rimelig kjøretid. Metode for å løse en instans b av et problem B: 1 Transformer om til instans a av problemet a. 2 Finn løsningen s a av a. 3 Transformer s a om til s b. løsning s b av problemet B. Her har vi redusert B til A Vi kan skrive: B A Problemet A er minst like vanskelig som problemet B.

Reduksjon Det finnes en algoritme som transformerer instanser av B om til instanser av A. Innen rimelig tid

Reduksjon Det finnes en algoritme som transformerer instanser av B om til instanser av A. Innen rimelig tid Det finnes en algortime som transformerer løsninger av A om til løsninger av B. Innen rimelig tid

Kartlegging av problemer Noder = Problemer

Kartlegging av problemer Noder = Problemer Kanter = Reduksjoner.

Kartlegging av problemer Noder = Problemer Kanter = Reduksjoner. Eksempel: Finne like par i en liste

Kartlegging av problemer Noder = Problemer Kanter = Reduksjoner. Eksempel: Finne like par i en liste overgi listen til sortering finne like par reduksjon sortere listen sammenligne naboer

Kartlegging av problemer Noder = Problemer Kanter = Reduksjoner. Eksempel: Finne like par i en liste overgi listen til sortering finne like par reduksjon sortere listen sammenligne naboer Vi reduserer problem B til problem A for å løse B.

Reduksjon og tunge problemer Anta at vi har en reduksjon B A.

Reduksjon og tunge problemer Anta at vi har en reduksjon B A.... løsning av A Løsning av B Problem A er minst like vanskelig som problem B.

Reduksjon og tunge problemer Anta at vi har en reduksjon B A.... løsning av A Løsning av B Problem A er minst like vanskelig som problem B. Dersom vi er rimelig sikre på at B er et vanskelig problem så kan vi være like sikre på at A er et vanskelig problem.

NP-komplette problemer: Teori NP-komplett problem A Et NP-problem som er slik at ethvert NP-problem B kan reduseres til A.

NP-komplette problemer: Teori NP-komplett problem A Et NP-problem som er slik at ethvert NP-problem B kan reduseres til A. NP-hardt problem A Et problem som er slik at ethvert NP-problem B kan reduseres til A. (Nå kan A være ikke-np)

NP-komplette problemer: I praksis Vi kan ikke regne med at det finnes algoritmer med akseptabel worst case-kjøretid.

NP-komplette problemer: I praksis Vi kan ikke regne med at det finnes algoritmer med akseptabel worst case-kjøretid. Eksempel: To fjell: A,B Det finnes en farbar vei mellom A og B. Vi vet at ingen har lykkes med å bestige A. Bør vi prøve å bestige B?

NP-komplette problemer: Botemidler Algoritmer med akseptabel kjøretid i typiske tilfeller. Worst case-kjøretid kan fortsatt være uakseptabel. Løs et enklere problem. Sørg for at rundreisen ikke er mer enn dobbelt så lang som nødvendig. Finn tilnærmede løsninger Matematikk gir mer effektive avisbud

Eksempel: Ryggsekkproblemet Problem: Handelsmannen kan ta 1000 kg med last i bilen sin. Han har n gjenstander G 1, G 2,..., G n. Hver gjenstand har salgsverdi v i og vekt w i.

Eksempel: Ryggsekkproblemet Problem: Handelsmannen kan ta 1000 kg med last i bilen sin. Han har n gjenstander G 1, G 2,..., G n. Hver gjenstand har salgsverdi v i og vekt w i. Han ønsker å velge ut gjenstander G i1, G i2,..., G ik slik at w i1 + w i2 + + w ik 1000 kg. Målsetningen er at den totale prisen skal være så høy som mulig. v i1 + v i2 + + v ik

Sprint-planlegging i Scrum Diskusjon

Mer lesning 1 Læreboka 910-917. 2 Notatet hardproblems.pdf Dette er på norsk og forhåpentligvis lettlest.

Fremover Mandag 8.12 Gjennomgang av eksamensoppgave om NP-harde problemer Spørretime/Repetisjon Eksamensoppgaver. Onsdag 10.12 Eksamen

Oppgave Funksjonskallgrafen Ta for dere en del av løsningen av innlevering 1, og tegn opp funksjonskallgrafen. Politikergrafen Filen politikergraf.txt representerer en graf der nodene er politikere. Grafen inneholder en kant mellom to politikere dersom det finnes en avisartikkel som omtaler begge politikerne. Bruk SymbolGraph og BreadthFirstPaths til å rangere stortingspolitikerne etter deres Solberg-tall (Hvor stor er avstanden til Erna Solberg i politikergrafen?) Datane er høstet hos aftenposten.no.