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

Like dokumenter
INF2220: Forelesning 7. Kombinatorisk søking

INF1010. Sekvensgenerering Alle mulige sekvenser av lengde tre av tallene 0, 1 og 2: Sekvensgenerering. Generalisering. n n n! INF1010 INF1010 INF1010

Om å lete gjennom «alle muligheter» Eller: Kombinatorisk søking, rekursjon og avskjæring 1 Innledning Problemer, instanser og løsningsalgoritmer

INF oktober Stein Krogdahl. Altså: Hva kan ikke gjøres raskt (med mindre P = NP)

Kompleksitet og Beregnbarhet

En algoritme for permutasjonsgenerering

Kombinatorisk søking, rekursjon, avskjæring

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

INF Stein Krogdahl. NB: Det som under forelesningen ble kalt et vitne er nå omdøpt til et sertifikat.

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

INF1010 Rekursjon. Marit Nybakken 1. mars 2004

INF2220: Time 8 og 9 - Kompleksitet, beregnbarhet og kombinatorisk søk

Kompleksitet. IN algoritmer og datastrukturer Plenumstime / repetisjon

Kompleksitetsteori reduksjoner

Backtracking som løsningsmetode

Maks Flyt og NPkompletthet

Avgjørbarhet / Uavgjørbarhet

UNIVERSITETET I OSLO

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

MAT1030 Diskret matematikk

Backtracking som løsningsmetode

UNIVERSITETET I OSLO

MAT1030 Diskret matematikk

København 20 Stockholm

UNIVERSITETET I OSLO

PG 4200 Algoritmer og datastrukturer Innlevering 1. Frist: 2.februar kl 21.00

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Norsk informatikkolympiade runde

Løsningsforslag for eksamen i fag TDT4120 Algoritmer og datastrukturer Tirsdag 9. desember 2003, kl

Norsk informatikkolympiade runde

UNIVERSITETET I OSLO. Med svar-forslag

NP-kompletthet. «Hvordan gjøre noe lett for å vise at noe annet er vanskelig»

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

Løsningsforslag til INF110 h2001

Eksamen iin115, 14. mai 1998 Side 2 Oppgave 1 15 % Du skal skrive en prosedyre lagalle som i en global character array S(1:n) genererer alle sekvenser

LO118D Forelesning 9 (DM)

UNIVERSITETET I OSLO

OPPGAVE 5b og 8b Java Kode

Innledning. IN2010/INF Algoritmer og datastrukturer. Tirsdag 27. november 2018 Kl (4 timer)

EKSAMEN med løsningsforslag

Algoritmer og Datastrukturer

INF1010 Sortering. Marit Nybakken 1. mars 2004

INF3/4130 PRØVE-EKSAMEN MED SVARFORSLAG Gjennomgås 1/ , (lille aud.)

Notater til INF2220 Eksamen

Backtracking: Kombinatorikk og permutasjoner

GRAFER. Hva er en graf? Det første grafteoretiske problem: Broene i Königsberg. Grafer vi har sett allerede

INF 3/ oktober : Avslutte Branch and Bound 23.6: Trær og strategier for spill med to spillere

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

Løsningsforslag 2017 eksamen

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2016

Plenumsregning 1. Kapittel 1. Roger Antonsen januar Velkommen til plenumsregning for MAT1030. Repetisjon: Algoritmer og pseudokode

EKSAMEN. Emne: Algoritmer og datastrukturer

Løsningsforslag. Oppgave 1.1. Oppgave 1.2

Oppgave 1. Løsningsforslag til eksamensoppgave. ITF20006 Algoritmer og datastrukturer Postorden traversering:

Løsningsforslag eksamen INF1020 høsten 2005

Matchinger i ikke-bipartite grafer

INF1020 Algoritmer og datastrukturer GRAFER

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

INF1020 Algoritmer og datastrukturer GRAFER

Obligatorisk oppgave 1 INF1020 h2005

INF Algoritmer og datastrukturer

UNIVERSITETET I OSLO

INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Repetisjon og mer motivasjon. MAT1030 Diskret matematikk. Repetisjon og mer motivasjon

INF1000: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006

Løsningsforslag for utvalgte oppgaver fra kapittel 3

Norsk informatikkolympiade runde

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

MAT1030 Diskret Matematikk

Grafalgoritmer: Korteste vei

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

Notat for oblig 2, INF3/4130 h07

Turingmaskiner en kortfattet introduksjon. Christian F Heide

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

De neste ukene. INF1000 Uke 12. Prøveeksamen. Nå - Prøveeksamen. Forelesning om IT og samfunn neste uke (13/11).

Eksamensoppgaver 2014

UNIVERSITETET I OSLO

MAT1030 Plenumsregning 1

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

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Forelesning 23. Grafteori. Dag Normann april Oppsummering. Oppsummering. Oppsummering. Digresjon: Firefarveproblemet

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

MAT1030 Forelesning 22

Kombinatorikk. MAT1030 Diskret Matematikk. Oppsummering av regneprinsipper

MAT1030 Diskret Matematikk

MAT1030 Diskret matematikk

Oppsummering. MAT1030 Diskret matematikk. Oppsummering. Oppsummering. Forelesning 23: Grafteori

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

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

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

Norsk informatikkolympiade runde

HØGSKOLEN I BERGEN Avdeling for ingeniørutdanning

INF1010 våren januar. Objektorientering i Java

Transkript:

IN2010: Forelesning 11 Kombinatorisk søking Beregnbarhet og kompleksitet

KOMBINATORISK SØKING

Oversikt Generering av permutasjoner Lett: Sekvens-generering Vanskelig: Alle tallene må være forskjellige Eksempel: Finne korteste reiserute Eksempel: Dronning-oppgaven Les notatet Om å lete gjennom «alle muligheter» av Stein Krogdahl og Arne Maus. 3

Sekvens-generering Alle mulige sekvenser av lengde tre av tallene 0, 1 og 2: 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 4

Sekvens-generering: mulig implementasjon int[] sekv = new int[3]; Oppgave: Generaliser dette til å generere alle mulige sekvenser av lengde n av tallene fra 0 til n-1. // Startkall: gen(0); void gen(int pos) { for (int siffer = 0; siffer < 3; siffer++) { sekv[pos] = siffer; if (pos < 2) { gen(pos + 1); else { < Skriv ut innholdet i sekv. > 5

Generalisering Alle mulige sekvenser av lengde n av tallene fra 0 til n-1: class Gen { int[] sekv; int n; Gen(int i) { n = i; sekv = new int[n]; void gen(int pos) { for (int siffer = 0; siffer < n; siffer++) { sekv[pos] = siffer; if (pos < n - 1) { gen(pos + 1); else { < Skriv ut innholdet i sekv. > Oppgave: Hva må til for å endre dette slik at det bare genereres sekvenser hvor alle sifrene er ulike? 6

Permutasjoner Alle mulige kombinasjoner av tallene 1-3 slik at hvert tall bare er brukt en gang: 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 7

Permutasjoner Alle mulige permutasjoner av tallene fra 0 til n-1: class Gen { int[] sekv; int n; boolean[] brukt; Gen(int i) { n = i; sekv = new int[n]; brukt = new boolean[n]; for (int j=0; j<n; j++) { brukt[j] = false; void gen(int pos) { for (int siffer = 0; siffer < n; siffer++) { if (!brukt[siffer]) { brukt[siffer] = true; sekv[pos] = siffer; if (pos < n - 1) { gen(pos + 1); else { < Lever sekv til videre bruk. > brukt[siffer] = false; 8

Kombinatorisk søking Har: Et endelig antall elementer. Skal: Finne en rekkefølge, gjøre et utplukk, lage en oppdeling, Eksempler: Plassere 8 dronninger på et sjakkbrett slik at ingen av dronningene kan slå hverandre. Finne korteste rundtur blant n byer hvor hver by bare besøkes en gang (avstanden mellom ethvert par av byer er kjent). Vi har da problemer hvor vi må: 1. Lage alle interessante kombinasjoner. 2. Teste om en kombinasjon er en løsning på det aktuelle problemet. NB: Ofte slår vi disse sammen, slik at vi bare lager kombinasjoner som er potensielle løsninger. 9

Eksempel: Korteste reiserute 0 12 5 9 4 10 2 6 3 8 7 4 15 11 1 Korteste vei: 36.0 Korteste reiserute (by nr): 0 2 1 4 3 0 10

Korteste reiserute nytt navn kortestevei, variabelnavn by i stedet for siffer startkall: kortestevei(1); sekv[0] = 0 er startbyen void kortestevei(int pos) { for (int by = 1; by < n; by++) { if (!brukt[by]&& (lengde + avst[sekv[pos-1]][by] < bestelengde) ){ float brukt[by] = true; lengde += avst[sekv[pos-1]][by]; lengde: lengden på sekv[pos] = by; float[][] avst: nåværende if (pos < n - 1) { avstanden mellom rute kortestevei(pos + 1); ethvert par av byer else if (lengde + avst[by][0] < bestelengde) { bestelengde = lengde + avst[by][0]; < Lever sekv til videre bruk. > float bestelengde: brukt[by] = false; korteste hittil lengde -= avst[sekv[pos-1]][by]; 11

Dronningproblemet Hvordan plassere n dronninger på et nxn-sjakkbrett slik at ingen av dronningene kan slå hverandre? 12

BEREGNBARHET OG KOMPLEKSITET 13

Klasser av problemer Uavgjørbare Umedgjørlige Avgjørbare Medgjørlige

Et uavgjørbart problem: stoppeproblemet Algoritme/program A Mulig input x Stopper A med input x? Ja Nei 16

Klassene P og NP P = polynomial-time Et problem er i P dersom en løsning kan finnes i polynomisk tid. 17

Klassene P og NP P = polynomial-time Et problem er i P dersom en løsning kan finnes i polynomisk tid. NP = nondeterministic polynomial-time. Et problem er i NP dersom en gitt løsning kan sjekkes i polynomisk tid. 18

NP-kompletthet De NP-komplette problemene er de vanskeligste problemene i NP. Ethvert problem i NP kan reduseres til et NP-komplett problem i polynomisk tid. Eksempel: Hamiltonsk løkke Traveling Salesman 2 4 1 5 3 2 1 4 1 2 2 1 2 1 1 1 1 5 3 2 19

VERTEX-COVER Gitt en graf, finnes det et delmengde på max k noder slik at alle kanter har minst en node i delmengden. Eksempel: Gitt et nettverk hvor nodene representerer rutere og kantene fysiske forbindelser. Vi ønsker å oppgradere nettverket med (dyre) spesial-rutere for bedre monitorering av nettverket. Er det tilstrekkelig å kjøpe k nye rutere?

SUBSET-SUM Gitt et heltall k og en mengde S med n heltall, finnes det er delmengde av S slik at summen av tallene er lik k? Eksempel: Anta at vi har en Web-server og et antall downloadforespørsler. For hver forespørsel kan vi lett bestemme størrelsen på den aktuelle filen. Vi ønsker å finne et antall forespørsler slik at summen tilsvarer kapasiteten serveren har i løpet av ett minutt. NB: Siden problemet er NP-komplett, blir problemet vanskeligere å løse jo mer kapasitet serveren har! 22

P = NP??? 23

Neste forelesning: 16. november REPETISJON 25