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

Like dokumenter
Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Kontinuasjonseksamen i fag SIF8010 Algoritmer og Datastrukturer Torsdag 9. August 2001, kl

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

INF Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

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

Ekstra ark kan legges ved om nødvendig, men det er meningen at svarene skal få plass i rutene på oppgavearkene. Lange svar teller ikke positivt.

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Løsningsforslag til eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

INF1020 Algoritmer og datastrukturer GRAFER

ALGORITMER OG DATASTRUKTURER

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

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Øvingsforelesning 12 Maks flyt

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

INF Algoritmer og datastrukturer

Løsningsforslag for utvalgte oppgaver fra kapittel 9

Maks Flyt og NPkompletthet

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

KONTINUASJONSEKSAMEN I FAG ALGORITMER OG DATASTRUKTURER

Avanserte flytalgoritmer

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Studentnummer: Side 1 av 1. Løsningsforslag, Eksamen i TDT4120 Algoritmer og datastrukturer August 2005

Algdat - Øvingsforelesning. Maks flyt

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

IN Algoritmer og datastrukturer

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

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

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

INF Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

Rettede, ikke-sykliske grafer (DAG)

Korteste vei problemet (seksjon 15.3)

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

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

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

Korteste vei i en vektet graf uten negative kanter

INF Algoritmer og datastrukturer

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

Øvingsforelesning 9. Flytnettverk, maksimum flyt og maksimum bipartitt matching. Jon Marius Venstad

Vi skal se på grafalgoritmer for:

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamen i tdt4120 Algoritmer og datastrukturer

INF1020 Algoritmer og datastrukturer GRAFER

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

Notater til INF2220 Eksamen

Vi skal se på grafalgoritmer for:

Løsningsforslag: Deloppgave om heuristiske søkemetoder, ALGKON 2003, kontinuasjonseksamen

Grafalgoritmer: Korteste vei

Grunnleggende Grafalgoritmer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Dijkstras algoritme Spørsmål

Notat for oblig 2, INF3/4130 h07

Løsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006

INF1020 Algoritmer og datastrukturer GRAFER

IN Algoritmer og datastrukturer

Rundt og rundt og. Trettende forelesning

Anvendelser av grafer

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

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

Kompleksitet. IN algoritmer og datastrukturer Plenumstime / repetisjon

Avsluttende eksamen i TDT4125 Algoritmekonstruksjon, videregående kurs (løsningsforslag)

Vann i rør Ford Fulkerson method

INF Algoritmer og datastrukturer

INF2220: Time 12 - Sortering

Kompleksitetsteori reduksjoner

Lineær sortering. Radix sort

Først litt praktisk info. Sorteringsmetoder. Nordisk mesterskap i programmering (NCPC) Agenda

SIF8010 ALGORITMER OG DATASTRUKTURER

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Eksamen i Algoritmer og Datastrukturer Torsdag 12. januar 1995, Kl

København 20 Stockholm

Løsningsforslag: Deloppgave om heuristiske søkemetoder ALGKON 2002, ordinær eksamen

INF Algoritmer og datastrukturer

IN Algoritmer og datastrukturer

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

A study of different matching heuristics. Hovedfagspresentasjon Jan Kasper Martinsen

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

Live life and be merry

Norsk informatikkolympiade runde

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

EKSAMEN Løsningsforslag. med forbehold om bugs :-)

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

INF2220: Forelesning 2

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

Løsningsforslag - Korteste vei

INF Algoritmer og datastrukturer

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

UNIVERSITETET I OSLO

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

Transkript:

45011 Algoritmer og datastrukturer Løsningsforslag eksamen 13. januar 12 Oppgave 1 Idé til algoritme Benytter S n som betegn på en tallmengde med n elementer. For at et tall m skal være et majoritetstall blant n tall, må m (etter oppgavens definisjon) forekomme mer enn (n div 2) + (n mod 2) ganger. Dersom det finnes et majoritetstall m i S n, og det finnes to vilkårlige tall x i og x j hvor x i 6= x j x i 2 S n x j 2 S n,såmå m også være et majoritetstall i S n;2 = S n ;fx i x j g.sidenx i og x j er ulike, kan maksimalt ett av dem være lik majoritetstallet m i S n.når vi tar dem bort, kan antall reprensentanter for majoritetstallet reduseres, men samtidig reduseres også antall andre tall minst like mye. Et majoritetstall m vil derfor bevares. Ved åtaborttoogtouliketallis er vi derfor sikre på at et eventuelt majoritetstall vil bli igjen. Når det så til slutt er igjen ett eller flere like tall, vil denne verdien være det eneste mulige majoritetstall. Den opprinnelige tabellen testes derfor for å se om dette tallet faktisk er i majoritet. PASCAL-kode function majoritet ( x : Stabell; n: integer): integer; var m antall i : integer begin m := x[1] antall := 1 for i := 2 to n do if antall =0then begin m := x[i] f Ny majoritetskandidat g antall := 1 end if m<>x[i] then antall := antall ; 1 f Glemmer to forskjellige tall g antall := antall +1 f Øker antall m-kandidater g fm er nå eneste mulige kanditat g if antall =0then majoritet = ;1 Side1av6

end; begin antall := 0 for i := 1 to n do if x[i] = m then antall := antall + 1; if antall > ((n div 2) + (n mod 2)) then majoritet := m majoritet := ;1; end; Den foreslåtte algoritmen består av to iterasjoner over n, og er derfor opplagt (n). Alternative løsningsmetoder kunne være: Median Dersom det finnes et majoritetstall m vil dette også være medianen i tallmengden. Ved bruk av algoritmen SELECT (s. 10-11 i lærebok kan dette gjøres i (n) tid. Sortering Ved først å sortere tallene, vil eneste kandidat for medianverdi havne midt i intervallet. Sortering med radix-sort vil ta (n) tid, men vil praktisk sett være tregere enn algoritmen over siden det gjøres mye unødig arbeid. Ved bruk av Quicksort vil tidsforbruket økes til O(n 2 ). Oppgave 2 Siden sifferet 0 har større frekvens enn alle de andre til sammen, vil dette bli kodet med en bit. De resterende siffer vil kodes i et tilnærmet balansert binærtre. En mulig koding er: 0: 0 5: 1100 1: 1000 6: 1101 2: 1001 7: 1111 3: 1010 8: 11100 4: 1011 : 11101 Midlere kodelengde blir 0:6 1 1+ 0:4 4 7+0:4 5 2 = 2:288 ::: Side2av6

For at kodingen fra ( ikke lenger skal være optimal, må p bli så lav at 0 ikke lenger skal kodes med en bit. Dette vil skje når sifrene 1- ikke lenger danner et eget sub-tre i kodetreet. T T 1 2 4 5 p (1-p) (1-p) Figur 1: Delvis oppbygd kodetre Figur 1 viser situasjonen rett før sifrene 1- skal bli slått sammen til et eget tre. Tallene under hvert deltre angir total frekvens for dette deltreet. Dersom denne sammenslåingen skal være korrekt (T 1 og T 2 slås sammen) må p > 5 (1 ; p) + p > 5 14 0:36 Så lenge dette er oppfylt vil koden være optimal. c) Definerer f til å være frekvensen til tegnet med minst frekvens. Under oppbygging av kodetreet vil først de to tegnene med lavest frekvens velges. Summen av disse nodenes frekvenser vil være 2f. Siden enkelttegnet med høyest frekvens har en frekvens mindre enn 2f, vil dette havne på samme nivå i kodetreet som tegnet med minst frekvens. Kodetreet vil derfor bli perfekt balansert, og alle tegn får en 8-bits kode. Huffmannkoding vil derfor ikke være mer effektiv enn vanlig fast 8-bits tegnkode i dette tilfellet. Side3av6

Oppgave 3 Forslaget til endring støttes fordi det sparer ett gjennomløp samtidig som svaret fremdeles blir korrekt ut i fra følgende begrunn: Forandringen vil medføre at RELAX ikke vil bli utført når det bare er en node igjen i køen. Denne noden er den som har den lengste av alle korteste veier fra startnoden. Siden dette er tilfelle, kan heller ingen av de andre nodene nås raskere ved å gå via denne noden. Løsningen vil derfor fremdeles være korrekt. (Husk på at Dijkstra bare fungerer på grafer med positive vekter.) Dersom en betrakter Dijkstra-algoritmen som syklister som sendes ut fra startnoden, vil dette tilsvare at den som kommer til den siste noden ikke trenger å sende ut nye syklister. Siden alle andre noder allerede er nådd, kan det umulig være kortere ågå via den siste. Bellmann-Fords algoritme tillater negative kantlengder (til forskjell fra Dijkstras algoritme). La s være kildenode og v en vilkårlig node i en graf med V kanter. Bellmann-Fords algoritme består av to faser: Fase 1 1. gjennomløp finner den korteste vei fra s til v som består av maksimalt 1 kant. 2. gjennomløp finner den korteste vei fra s til v som består av maksimalt 2 kanter.. j V ;1 j. gjennomløp finner den korteste vei fra s til v som består av maksimalt j V ;1 j kanter. Merk at alle kanter forsøkes på nytt som skjøteelementer for hvert gjennomløp. Dette garanterer at alle max i-kants veier blir vurdert, også den korteste av disse. Fase 2 Fase 1 gir den korteste vei fra s til v som består av mindre enn V kanter. Det må derfor letes etter en vei som er enda kortere, men med flere kanter. I en korteste vei med V kanter eller mer vil minst én node inngå minst to ganger i den korteste veien. (Dersom V kanter skal forbinde noder i en liste trengs V +1noder.) En node som inngår to ganger i en korteste vei, måvære del av en løkke. Det må derfor være lønnsomt ågå i løkke på den korteste vei (s v). Forat så skal være tilfelle må løkken ha samlet negativ kostnad. Dersom en slik løkke eksisterer, vil korteste vei inneholde uendelig mange rundturer i løkken. Fase 2 begrenser seg derfor til å lete etter/finne slike løkker. Side4av6

Oppgave 4 Rømningsproblemet kan omformuleres til et flyt-problem hvor ikke bare kantene har kapasiteter, men der det også er en begrensning på hvor stor flyt som kan gå gjennom hver enkelt node. For å få problemet over på samme form som vanlige flyt-problem, må hver node i grafen omdannes som vist i figur 2. Den tidligere noden (stiplet sirkel) er delt i to, en node med alle inngående kanter fra den gamle noden, og en med alle utgående kanter. Mellom disse to nodene er det satt inn en kant med vekt n i, som tilsvarer den totale gjennomstrømmningskapasitet i den gamle noden. Figur2: Node med begrensning på total gjennomstrømning Løsningen på rømningsproblemet blir da som følger: Alle m startnoder som ikke ligger på randen av området tenkes å ha en kapasitet 1 fra en (virtuell) kildenode, samt kanter til alle fire nabonoder (også med kapasitet 1). Alle noder som ligger på randen av området får på samme måte en kant til et felles (virtuelt) sluk. De av disse som er startnoder har også en kant fra kilden. Figur3: Flytnettverk for løsing av rømningsproblemet Side5av6

Powered by TCPDF (www.tcpdf.org) Matrisen er dermed utvidet til et nettverk som vist i figur 3. De indre nodene som ikke er startnoder blir splittet i to som beskrevet over med en gjennomstrømningskapasitet på1. For å avgjøre om det finnes en rømningsvei for alle startnoder benyttes en maksimalflytalgoritme. Dersom en løsning finnes, vil enhver startnode finne en vei til sluket som ikke er i konflikt med en annen startnode. En løsning er derfor funnet om den totale flyten gjennom nettverket blir lik m. Rømningsveiene for startnodene finnes som de kantene som blir benyttet ved maksimum flyt. De neste flytforøkende veier som finnes blir: (D,5)(E,6),(F,2,B,4) Den siste flytforøkende vei består i at flyten fra B til 2 kanselleres, mens det opprettes ny flyt fra B til 4, og fra F til 2. Nettoflyten vil derfor øke. Oppgave 5 Antall utvalg av noder er oppgitt som n k i oppgaveteksten. Dette! er ment som en øvre grense, n og dessuten lettere å regne med enn den eksakte verdien ( n k k ). Dersom K skal være med i NP må en gjettet løsning kunne verifiseres i polynomisk tid. Det kan åpenbart testes i O(k 2 ) tid om et tilfeldig utvalg av k noder utgjør en klikk. Siden k n vil O(k 2 ) O(n 2 ). Testen kan derfor foretas i polynomisk tid, og problemet K er da pr. definisjon med i NP. Slik K er definert (G har n noder) har n ingen øvre grense, mens k har n som grense. A har derfor tidsforbruk som er O(n n n 2 )=O(n n+2 ), dvs. minst eksponentielt tidsforbruk. Men at algoritmen A har eksponentielt tidsforbruk betyr ikke nødvendigvis at problemet K må være med i NPC. (A kan være mer komplisert enn K, og en skyter spurv med kanon.) K kan derfor ikke klassifiseres ytterligere ut i fra opplysningene over. Det er imidlertid bevist ved reduksjon til NPC at K 2 NPC. Side6av6