Notat for oblig 2, INF3/4130 h07

Like dokumenter
Diagnosekart for oblig 2, INF3/4130 h07

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

MAT1030 Forelesning 22

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

MAT1030 Diskret matematikk

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

Kombinatorikk. MAT1030 Diskret Matematikk. Oppsummering av regneprinsipper

MAT1030 Diskret Matematikk

MAT1030 Forelesning 22

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

MAT1030 Diskret matematikk

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

Grafteori. MAT1030 Diskret Matematikk. Repetisjon og mer motivasjon. Repetisjon og mer motivasjon. Forelesning 23: Grafteori.

MAT1030 Diskret Matematikk

Forelesning 23. MAT1030 Diskret Matematikk. Repetisjon og mer motivasjon. Repetisjon og mer motivasjon. Forelesning 23: Grafteori.

MAT1030 Forelesning 23

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

Kompleksitetsteori reduksjoner

MAT1030 Forelesning 24

Dersom spillerne ønsker å notere underveis: penn og papir til hver spiller.

Kap. 5, del 1: Parsering nedenfra-opp (Bottom up parsing) INF5110. Stein Krogdahl Ifi, UiO

Matchinger i ikke-bipartite grafer

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

Forelesning 30: Kompleksitetsteori

Vann i rør Ford Fulkerson method

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Dag Normann

MAT1030 Diskret Matematikk

Obligatorisk oppgave 2 i INF 4130, høsten 2009

Svarforslag til ukeoppgaver til INF 4130

Kap. 5, del 1: Parsering nedenfra-opp (Bottom-up parsering) INF / Stein Krogdahl Ifi, UiO

Grunnleggende Grafalgoritmer

Forelesning 14. Rekursjon og induksjon. Dag Normann februar Oppsummering. Oppsummering. Beregnbare funksjoner

Kompleksitet og Beregnbarhet

MAT1030 Diskret matematikk

Innledning. MAT1030 Diskret matematikk. Kapittel 11. Kapittel 11. Forelesning 33: Repetisjon

Grafteori. MAT1030 Diskret Matematikk. Oppsummering. Oppsummering. Forelesning 24: Grafer og trær. Dag Normann

MAT1030 Diskret Matematikk

Forelesning 29: Kompleksitetsteori

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Vektede grafer. MAT1030 Diskret matematikk. En kommunegraf. En kommunegraf. Oppgave

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

MAT1030 Forelesning 2

TMA4140 Diskret Matematikk Høst 2016

LP. Leksjon 7. Kapittel 13: Nettverk strøm problemer

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

MAT1030 Diskret matematikk

Kompleksitetsanalyse Helge Hafting Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder

MAT1030 Diskret Matematikk

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

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

Plenumsregning 1. MAT1030 Diskret Matematikk. Repetisjon: Algoritmer og pseudokode. Velkommen til plenumsregning for MAT1030

MAT1030 Diskret Matematikk

Teoriøving 7 + litt om Ford-Fulkerson. Magnus Lie Hetland

MAT1030 Forelesning 25

MAT1030 Diskret Matematikk

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

MAT1030 Diskret Matematikk

Karakteriseringen av like mengder. Mengder definert ved en egenskap.

MAT-INF 1100: Obligatorisk oppgave 1

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

MAT1030 Diskret matematikk

MAT1030 Diskret matematikk

Repetisjon. MAT1030 Diskret Matematikk. Oppsummering. Oppsummering. Forelesning 15: Rekursjon og induksjon. Roger Antonsen

6. oktober Dagens program: Første time: Andre time, gjesteforelesning: Uavgjørbarhet. Stein Krogdahl. (Ikke pensum, egne foiler legges ut)

INF5110 Kap. 5: Parsering nedenfra-og-opp (Bottom-up parsing) 21/ Stein Krogdahl Ifi, UiO. Angående Oblig 1:

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

Forelesning 33. Repetisjon. Dag Normann mai Innledning. Kapittel 11

UNIVERSITETET I OSLO

Kompleksitet. IN algoritmer og datastrukturer Plenumstime / repetisjon

Matematisk induksjon

Eksamen i tdt4120 Algoritmer og datastrukturer

MAT1030 Plenumsregning 1

MAT1030 Diskret Matematikk

Kapittel 5: Relasjoner

INF2220: Time 4 - Heap, Huffmann

Velkommen til plenumsregning for MAT1030. MAT1030 Diskret matematikk. Repetisjon: Algoritmer og pseudokode. Eksempel fra boka. Eksempel

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

LP. Leksjon 8: Kapittel 13: Nettverk strøm problemer, forts.1

UNIVERSITETET I OSLO

Grunnleggende Grafalgoritmer II

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

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

Kapittel 5: Relasjoner

Forelesning 24. Grafer og trær. Dag Normann april Vektede grafer. En kommunegraf

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Alle mot alle. Åttende forelesning. (eller eller Bellman-Ford, eller BFS, alt ettersom) fra alle noder.

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Forelesning 31. Dag Normann mai Informasjon. Kompleksitetsteori

Kap.4, del 2: Top Down Parsering Kap. 5, del 1: Bottom Up Parsing INF5110, 7/ Legger ut en oppgave til kap. 4 (se beskjed).

UNIVERSITETET I OSLO

Kap. 5, del 1: Parsering nedenfra-opp (Bottom-up parsering) 16/ Stein Krogdahl Ifi, UiO

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

MAT1030 Forelesning 10

Vi var midt i et eksempel, som vi tar opp igjen her, da tiden var ute.

UNIVERSITETET I OSLO

MAT1030 Diskret Matematikk

MAT1030 Forelesning 11

UNIVERSITETET I OSLO. Med svar-forslag

Sammensatte utsagn, sannhetsverditabeller. MAT1030 Diskret matematikk. Sammensatte utsagn, sannhetsverditabeller

Transkript:

Notat for oblig 2, INF3/4130 h07 Dag Sverre Seljebotn 15. oktober 2007 Jeg har skrivd et noe langt notat for oblig 2 som interesserte kan se på. Merk at dette er kun for å gi et par tips (for oppgave 3 kanskje bare for spesielt interesserte), og det som står her skriver jeg for egen regning. Ting som står her har ingen innvirkning på hvordan en bør forstå obligen ved motsetninger er det den offisielle oppgaveteksten som skal følges! Oppgave 1 I oppgave 1 er det som nevnt bare ett riktig svar for hvert input. Det som kan være lurt for å sjekke svarene sine er å bruke en splaytresimulator som f.eks. http://webpages.ull.es/users/jriera/docencia/avl/avl%20tree% 20applet.htm (NB! Jeg gir ingen garanti for at algoritmen her er identisk med den i boka, ved eventuelle avvik er det den i boka som skal følges. Kom gjerne med tilbakemeldinger på om det korresponderer godt nok.) Oppgave 2 Som nevnt på forelesning og grupper har FordFulkerson-algoritmen den interessante egenskapen at den ikke bare gir en optimal løsning men et bevis for at denne er riktig, i form av et kutt der kapasiteten mellom delene er lik flyten (hvorfor dette beviser det kan en se i pensum). Da er det også, gitt et forsøk på løsning, ganske greit å validere hvorvidt det faktisk er en optimal løsning på O(m 2 ) tid (lineær med hensyn på input): Løsningen må angi en flyt (dvs. flyt inn og ut av hver node må stemme). 1

Flyten må passe med kapasitetsbegrensningene overalt. Flyten må være så stor som kuttet skulle tilsi. I alle fall, poenget er at en greit kan lage et program som gitt et output fra algoritmen finner ut av om det er riktig svar, uten å bruke Ford- Fulkerson eller noen annen konstruktiv algoritme i det hele tatt. Og det har jeg altså gjort..last ned oppgave2-validate.py fra kurssidene (under Ressurser for oblig 2 ). Bruk: $./oppgave2-validate.py myinput.txt mysolution.txt Not OK. Errors: flow from source (7)!= flow to sink (4) f does not obey capacity constraints of N flow size (7)!= capacity over cut (4) Ta en kikk på koden for detaljene. Oppgave 3 For denne oppgaven er det lov å levere drøftingen på papir til gruppelærer dersom en synes det blir mye enklere å skrive eller tegne for hånd. Når en skal løse oppgave 3 er det mulig å enten løse den med muntlig, uformell drøfting eller bruke en mer formell og matematisk notasjon. Det er selvfølgelig opplagte fordeler og ulemper med begge metoder. I denne oppgaven er det mye å holde rede på og som skal skilles på: Hva som ligger i tilstandsgrafen og hva som ligger i den egentlige grafen (som jeg vil kalle problemgrafen), ulikheten som skal vises for å vise monotonitet vil ha forskjellig n, k, p på hver side av ulikhetstegnet, og så videre. Matematisk notasjon er godt egnet til å eliminere slike problemer som en ellers kanskje må slite litt for å holde rede på. Til gjengjeld kan det jo være uvant og få ting til å se uforståelig ut (men det er i høyeste grad en treningssak, ikke ulikt å lese programmeringsspråk). Så, for de som vil bruke matematisk notasjon men ønsker litt drahjelp har jeg skrivd dette notatet. For de som bare vil drøfte oppgaven mer uformelt er det ikke sikkert at dette notatet vil gjøre annet enn å forvirre i såfall, bare overse det! Det inneholder ikke egentlig noen flere tips til oppgaven, bare omformulerer den enda mer presist og innfører en notasjon en kan benytte i besvarelsen. Tilsvarende kan det hende at dette er uinteressant for de som er godt vant til matematikk, fordi det egentlig ikke står noe her det er først og 2

fremst ment som et eksempel på hvordan en kan lage seg notasjoner, og notasjon i seg selv er innholdsløst inntil en bruker den til noe. Notasjon Først: Sørg for at du tilegner deg stoffet under slik at det blir ditt eget, for jeg garanterer på ingen måte at det ikke forekommer stygge feil. Det er obligteksten som skal følges. Dersom du bruker notasjonen under i besvarelsen kan du bare referere til dette notatet og trenger ikke definere alt på nytt. Det kan jo også hende at du synes en annen notasjon er naturlig og det er greit så lenge en forklarer det i matematikk finnes det ikke gal notasjon, bare gale resonnementer (og forsåvidt mer eller mindre praktisk notasjon). Først har en problemgrafen bestånde av byene en kan reise til, som jeg vil bruke standard notasjon på: G = (V, E) der V er nodene og E er kantene. E er kanskje ikke så interessant, for i denne oppgaven er grafen komplett (alle noder er forbundet med alle andre noder). Videre er grafen også urettet (samme avstand begge veier mellom to noder). Noder i grafen vil jeg bruke vanlige symboler for: u V. Algoritmen en så bruker for å løse problemet består fundamentalt av å sjekke alle kombinasjoner av veier, men forhåpentligvis sjekke de i en smart rekkefølge og gjøre mange avskjæringer underveis. En bruker derfor en tilstandsgraf. Denne består av mulige tilstander en er i i algoritmen, og har størrelse som er eksponentiell i forhold til problemgrafen. Mengden av nodene i tilstandsgrafen kaller jeg T. Hver tilstand i T er en foreløpig vei gjennom problemgrafen som beskrevet i oppgaven, og jeg vil notere en slik vei med vektornotasjon: p T. Det er viktig å holde tunga rett i munnen her: Hver eneste node i T representerer en unik delvis travel handelsreisende-vei gjennom G. (Om en skulle tegne det opp kunne en tegnet opp en litt stor sirkel for hver node i T, og så tegnet opp hele G med en vei oppå inne i hver sirkel.) Tilstandsgrafen er ikke komplett, en kan egentlig nå ganske få andre tilstander fra hver tilstand. Videre er tilstandsgrafen rettet: Selv om en kan komme seg til r fra p og r derfor er en nabo til p kan en ikke komme seg fra p til r så p er ingen nabo av r (mer under om lovlige overganger). Som sagt kan en betrakte en tilstand som verken mer eller mindre enn en foreløpig vei gjennom grafen (som oppfyller kravene til en foreløpig travelling salesman-vei), så en p T representerer da både en tilstand og et vei-objekt. En kan dermed snakke både om første og siste node av p (p-som-vei, og en tenker i G) og av tilstander en kan nå fra p (p-somtilstand, og en tenker i T). Videre vil en slik vei bestå av en mengde noder, 3

så av og til vil jeg bruke p som bare mengder av noder i veien, slik: p V. Det vil gå fram av sammenhengen hva en mener. (Om en synes dette er rotete kan en evt. bare innføre funksjoner: m(p) er mengden av noder som veien v(p) til tilstanden p består av.) Definerer så noen funksjoner: p er lengden på veien i antall noder n(p) er antallet steg igjen på rundturen: n(p) = V p + 1 l(p) er siste node i veien p. (l skrives \ell i LATEX). En heuristikk blir h(p), og tar altså inn tilstander, p T. Dvs h : T R La p T. Andre lovlige tilstander i T en kan komme til fra p kaller en da naboer til p; og disse er: Dersom n(p) = 0 er en i en måltilstand og en har ingen naboer. Dersom n(p) = 1 er eneste nabotilstand den som framkommer om en legger til s på slutten av veien p. Dersom n(p) > 1 er nabotilstander de som framkommer om en tar veien p og legger til en vilkårlig v V \ p. Dersom r, p T og r er en nabo-tilstand til p kan en snakke om kostnaden det har å gå fra p til r (ikke motsatt vei!), denne kaller vi c(p, r) og når den er definert vil den ha verdi c(p, r) = d(l(p), l(r)) Henger en med til hit burde det være forholdsvis greit å løse oppgaven matematisk. Så til oppgavedefinisjonen: Finn ut hvorvidt heuristikken gitt i hver tilfelle har monotonitetsegenskapen, det vil si at dersom p, r T og r kan nåes fra p så skal en finne ut om alltid holder. Heuristikk 1 Definerer først h(p) h(r) + c(p, r) I(p) = p \ {s, l(p)}. Altså gir I(p) mengden av det indre av p (mengden som framkommer om en fjerner første og siste element i p). Så får vi: h 1 (p) = lengde av korteste vei fra l(p) til s i G som ikke er innom noder i I(p). 4

Heuristikk 2 Q(p) = {d(u, v) : u V, v V \ p} q(p) = min Q(p) h 2 (p) = n(p) q(p) Den første linja er altså en funksjon som gitt en tilstand returnerer en mengde med reelle tall, og er definert for seg fordi...vel, det kan jo være greit å ha... Heuristikk 3 Definerer først (gjør bruk av I fra heuristikk 1): U(p) = V \ I(p) Så får vi h 3 (p) = min u U(p) v V\{u} {d(u, v)} 5