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

Like dokumenter
UNIVERSITETET I OSLO

Eksamen iin115 og IN110, 15. mai 1997 Side 2 Oppgave 1 Trær 55 % Vi skal i denne oppgaven se på en form for søkestrukturer som er spesielt godt egnet

Eksamen i IN 110, 18. mai 1993 Side 2 Del 1 (15%) Vi skal se på prioritetskøer av heltall, der vi hele tiden er interessert i å få ut den minste verdi

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

København 20 Stockholm

A 1 B 1 D 1 H 1 H 2 D 2 B 2 E 1 E 2 I 1 I 2...

Del 1(8%) 5 h. Del 2(42%)

Merk: Olav Lysne og Anne Salvesen

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID:

UNIVERSITETET I OSLO

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

Algoritmer og Datastrukturer

Oppgave 1. Sekvenser (20%)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

Løsningsforslag til INF110 h2001

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

UNIVERSITETET I OSLO

Definisjon av binært søketre

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

Algoritmer og Datastrukturer

Algoritmer og datastrukturer Eksamen 22. februar 2011

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

Definisjon: Et sortert tre

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

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013

Definisjon. I et binært tre har hver node enten 0, 1 eller 2 barn

EKSAMEN med løsningsforslag

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Obligatorisk oppgave 1 INF1020 h2005

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

KONTINUASJONSEKSAMEN

UNIVERSITETET I OSLO

E K S A M E N. EKSAMENSDATO: 15. desember 1994 TID: Kladd og oppgavearkene leveres sammen med besvarelsen. Kladd merkes med "KLADD".

1-b. integer array frd; begin. integer x; for x:= 1step 1 until N do. end; 1-c

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 99HINDB / 99HINEA / 00HDESY ( 2DA / 2DB / 2EA / DESY )

Norsk informatikkolympiade runde

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Høgskolen i Gjøvik. Avdeling for elektro- og allmennfag K O N T I N U A S J O N S E K S A M E N. EKSAMENSDATO: 11. august 1995 TID:

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

EKSAMEN. Algoritmer og datastrukturer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

ALGORITMER OG DATASTRUKTURER

KONTINUASJONSEKSAMEN I FAG ALGORITMER OG DATASTRUKTURER

KONTINUASJONSEKSAMEN

Korteste vei i en vektet graf uten negative kanter

EKSAMEN. Emne: Algoritmer og datastrukturer

Notater til INF2220 Eksamen

MAT1030 Diskret matematikk

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

Algoritmer og Datastrukturer

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

Høgskolen i Agder. Institutt for matematiske fag EKSAMEN

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

UNIVERSITETET I OSLO

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

UNIVERSITETET I OSLO

Vi skal se på grafalgoritmer for:

8(1) 5(1) g 2 (0) 5(2)

Disjunkte mengder ADT

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Vi skal se på grafalgoritmer for:

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

UNIVERSITETET I OSLO

Algoritmer og Datastrukturer

KONTINUASJONSEKSAMEN

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

"behrozm" Oppsummering - programskisse for traversering av en graf (dybde først) Forelesning i INF februar 2009

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

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2017

UNIVERSITETET I OSLO

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

Anvendelser av grafer

UNIVERSITETET I OSLO

Oppgave 1 LØSNINGSFORSLAG. Eksamen i INF desember Betrakt følgende vektede, urettede graf:

Transkript:

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 115 Algoritmer og datastrukturer Eksamensdag: 14. mai 1998 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 8 sider. Vedlegg: Tillatte hjelpemidler: Ingen Alle skrevne og trykte Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene. Merk: Oppgavesettet består av 4 deler som kan løses helt uavhengig av hverandre. Oppgavene innenfor hver del kan også stort sett løses i en vilkårlig rekkefølge, men du må ha lest de foregående deloppgavene nøye. Prosenten indikerer hvor stor vekt det blir lagt på denne delen under sensureringen. Merk at det kan være ere enkeltspørsmål under hvert punkt, pass på å svare på alle. Programmene skal skrives i Simula. Du behøver ikke gi noen fullstendig dokumentasjon av programmene, men du skal skrive noen få linjer som gir leseren nøkkelen til forståelse av programmene. Du kan anta at leseren kjenner problemstillingen meget godt. Alle steder der det er spørsmål etter et program (eller en programbit) skal du skrive dette fullt ut, ikke bare henvise til liknende programmer f.eks i læreboka. Les oppgavene nøye, og lykke til! Stein Krogdahl og Anne Salvesen (Fortsettes på side 2.)

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 av en bestemt type (se under). Tallet n er også gitt globalt, og for hver sekvens som er generert skal prosedyren bruks kalles. De sekvensene du skal generere skal alle være av lengde n, ogskal bygges opp av tegnene: '(', ')' og '*'. I tillegg skal de være velformede parentetiske strukturer, men slik at tegnet '*' kan forekomme innimellom så mye det passer. For n =5vil altså f.eks. følgende være lovlige sekvenser: * * * * * * ( * * ) ( ) ( * ) ( * ( ) ) Følgende eksempler er derimot ulovlige: * ( * * * ( ) * ) ( Velg parameterene til lagalle selv, og angi også kallet som starter genereringen. Legg vekt på god avskjæring. HINT: Du kan i en halvferdig sekvens holde greie på hvordan du er i forhold til parentesstrukturen med ett eneste tall. Oppgave 2 35 % Vi skal se på binære trær, og er bare interessert i treets form, ikke i nodenes innhold. Nodene vil være representert med objekter av klassen class node; begin ref(node) vsub, hsub;! Venstre og høyre subtre ;...;! Eventuelle andre data uten interesse for oss ; end; (Fortsettes på side 3.)

Eksamen iin115, 14. mai 1998 Side 3 For et slikt binært tre skal vi se på den sekvensen som dannes når vi går gjennom nodene i innks rekkefølge, og skriver ut dybden for hver node. Denne sekvensen skal vi kalle treets DI-sekvens (for dybde-innks-sekvens). Eksempel: For følgende tre vil DI-sekvensen bli som angitt under: DI sekvensen: 2 1 3 2 0 3 2 1 2 2-a Skriv en rekursiv prosedyre: procedure DIsekvens(rot,...); ref(node) rot;... ; Denne skal skrive ut DI-sekvensen for treet med angitt rot. (Du kan bruke outint på enkleste måte til utskriften.) Prosedyren skal virke også om treet er tomt. 2-b Vi skal her gjøre det omvendte, nemlig å rekonstruere treet fra DI-sekvensen. Dette skal gjøres med en rekursiv prosedyre rekbygg, og for behagelighets skyld skal vi la det være en ytre prosedyre byggtre som brukeren skal kalle, og som skal levere roten til det ferdige treet som resultat. Det hele kan ha følgende skjelett: ref(node) procedure byggtre(di, n); integer array DI; integer n;! DI er en integer array dimensjonert (1:n), og den inneholder DI-sekvensen til et tre med n noder ; begin ref (node) procedure rekbygg(fra, til,...); integer fra, til;... ;... end; Her skal parameterene fra og til til rekbygg angi det segmentet av arrayen DI som den skal bygge et (sub)tre av, og den skal levere roten til dette. Dette (Fortsettes på side 4.)

Eksamen iin115, 14. mai 1998 Side 4 skal den gjøre ved å søke (lineært) forfra i segmentet etter det tallet i DIsekvensen som tilsvarer roten i subtreet, og så kalle rekbygg rekursivt for å bygge de to subtrærne til denne rotnoden. Når du skriver prosedyren byggtre kan du anta at det som ligger i DI er en legal DI-sekvens til et tre. Prosedyren skal virke også for et tomt tre (n =0). Angi etterpå hvilke ekstra tester du må legge inn i programmet for at prosedyren også skal kunne gi feilmelding dersom innholdet av DI ikke er en legal DI-sekvens. 2-c Vi er interessert i tiden prosedyren fra 2-b tar, uttrykt i O-notasjon som funksjon av lengden n av DI-sekvensen. Du skal angi dette for de to tilfellene nedenfor. Begrunn svaret, eventuelt ved å vise til liknende tilfeller i pensum. Dersom treet er rimelig balansert. Det verst mulige tilfellet for hver n. 2-d MERK: Denne deloppgaven kan være litt vanskelig, så det kan lønne seg å ta den til slutt. Problemstillingen er her den samme som i oppgave 2-b, men denne gangen skal du bygge treet ved å lese DI-sekvensen fra venstre mot høyre og danne treet etter hvert. Helst skal hele prosessen gå i tid O(n). Du skal skrive en prosedyre byggtre2 (med samme parametere etc. som byggtre) som utfører denne bygge-prosessen, og leverer roten av treet som svar. Du kan anta at DI-sekvensen er riktig. Begrunn at prosedyren virker. Du skal også angi med O-notasjon hvor mye tid din algoritme vil bruke, og begrunne dette kort. HINT: Flere metoder kan brukes. Man kan benytte en rekursiv prosedyre eller man kan feks. ha en ref(node) hjelpearray, som er indeksert med dybdene 0, 1, 2,... Grovt sett kan denne arrayen brukes til å holde tak i de nodene som ikke har fått på plass alle sine naboer (altså vsub, hsub og foreldren), og kanskje noen er. (Fortsettes på side 5.)

Eksamen iin115, 14. mai 1998 Side 5 Oppgave 3 40 % Vi skal i denne oppgaven ta for oss en spesiell form for urettede grafer og noen av deres subgrafer. I tillegg til informasjon om hvilke to noder en kant forbinder vil kantene også ha en farge. En kant kan enten ha farge blå, gul eller rosa. For hvert par av noder u og v kan det da nnes tre kanter, én for hver farge. Som vanlig vil en subgraf G i avengraf G inneholde et subsett av nodene i G og et subsett av kantene i G. En fargesubgraf G i med farge f av en graf G er en subgraf G i der: Alle kantene i G i har farge f. G i er forbundet (sammenhengende). Det vil si at for hvert par av noder u og v i G i så nnes det en vei fra u til v i G i. G i er komplett. Det vil si at hvis det nnes en kant igmed farge f der den ene endenoden er med i G i så vil også både denne kanten og den andre endenoden være med i G i. Merk at en node kan inngå i ere fargesubgrafer hvis disse grafene har forskjellig farge, mens en kant bare vil inngå i én. Merk også at en singel node er en fargesubgraf med farge f hvis det ikke nnes noen kanter med farge f i G som forbinder denne noden med andre noder. Vi skal anta at fargen i kantene er kodet som: blå = 1, gul = 2, rosa = 3. Videre skal vi anta at nodene i grafen er nummerert fra 1 til N. Grafen skal være på naboliste-representasjon, og vi kan benytte oss av en ref(node) array G[1:N] til å holde alle nodene. Med denne representasjonen er det naturlig at en kant mellom node u og v i G vil være representert av to kantobjekter, ett objekt i nabolisten til u og ett objekt i nabolisten til v. I de programmene som du blir bedt om å skrive i de påfølgende deloppgaver må du selv angi de attributtene du trenger i nodene og kantene. 3-a Merk først at hvis det går ere kanter mellom to noder, feks. både en rosa og en blå, kan vi tegne opp dette på følgende måte: u 1,3 v (Fortsettes på side 6.)

Eksamen iin115, 14. mai 1998 Side 6 Finn alle rosa fargesubgrafer i grafen nedenfor: 1,2,3 1 2,3 3 1,2 5 3 2 1,3 4 6 Svaret skal du angi ved at du for hver rosa fargesubgraf skriver ut alle kantene. Kantene kan du angi som et trippel (u,v,f). Hvis du nner en rosa fargesubgraf med bare en singel node skal du skrive ut nodenummeret. 3-b Du skal nå programmere en: procedure fargesubgrafer(g,f,n); ref(node) array G; integer f,n; som nner alle fargesubgrafer i G med farge f, der antall noder i G er gitt av N. Resultatet av et kall på fargesubgrafer skal være en utskrift som for hver av disse fargesubgrafene skriver ut en passende ledetekst og deretter alle kantene i denne fargesubgrafen. Hvis du nner en fargesubgraf med farge f som bare har en singel node skal du skrive ut nodenummeret. Du kan anta at du allerede har en prosedyre: skrivkant(k);ref(kant) k; som skriver ut en kantk. Andre (lokale) prosedyrer som du eventuelt vil trenge må du programmere selv. 3-c Vi skal så se på følgende problem for G: Gitt en farge f, en node u og en node v så skal man nne ut om det nnes en fargesubgraf med farge f som inneholder både u og v. Vi skal anta at det blir svært mange slike forespørsler for G (med forskjellige farger f og noder u og v) så det er viktig å kunne avgjøre dette raskt og eektivt. Videre skal vi anta at man innimellom slike forespørsler stadig utvider G med nye kanter (men ikke nye noder). (Fortsettes på side 7.)

Eksamen iin115, 14. mai 1998 Side 7 Gi et forslag til en datastruktur som gjør det lett å nne ut om to noder er i samme fargesubgraf med farge f og som også er enkel og eektiv å vedlikeholde med hensyn til at G stadig blir utvidet med nye kanter. Legg vekt på både plass og tidsforbruk. Begrunn svaret ditt kort. Du skal nå anta at du har datastrukturen du foreslo. Lag en boolsk prosedyre som tar to noder og en farge som parameter, og som returnerer med true hvis det nnes en fargesubgraf med den oppgitte farge-parameteren der de begge er med, ellers returneres false. Lag en prosedyre som oppretter datastrukturen du foreslo for G. Hva blir tidsforbruket for et kall på denne prosedyren? 3-d Vi skal nå se på noen spesielle veier mellom noder i G. Enpolyfarget vei er en vei der det ikke nnes to påfølgende kanter med samme farge. For eksempel vil en vei på tre kanter med først to blå kanter og så en rosa ikke være en polyfarget vei, men en vei med først en rosa, så en gul og så en rosa vil være det. Skriv en boolean procedure polyvei(u,v,...); ref(node) u,v;...; som returnerer med true hvis det nnes en enkel polyfarget vei mellom node u og v, ellers returneres false. Veien skal altså ikke ha løkker. Gi en kort begrunnelse for at hvis det nnes en enkel polyfarget vei fra u og v så vil algoritmen din faktisk nne den. 3-e Vi skal nå se på tilsvarende problem som i oppgave 3-d men for rettede grafer med fargede kanter, der grafene ikke kan ha løkker. Skriv en boolean procedure rpolyvei(u,v,...);ref(node) u,v;...; som returnerer med true hvis det nnes en polyfarget vei fra u til v, ellers returneres false. Prosedyren skal ikke ha større orden enn O(E), der E er antall kanter i grafen. Begrunn at denne prosedyren virkelig virker. (Fortsettes på side 8.)

Eksamen iin115, 14. mai 1998 Side 8 Oppgave 4 10 % Et rma som leverer TV-kabler til boligfelt har to typer kabler, A og B. Kablen av type A er litt billigere, men til gjengjeld kan den ikke kuttes opp, men må legges i EN sammenhengende sløyfe som er innom alle husene, og som til slutt går tilbake til det punket der den startet. Kablen av type B kan derimot deles opp og legges i stykker mellom husene. Kabel-stykkene må legges fra hus til hus slik at alle husene er forbundet med hverandre (direkte eller indirekte). For å kunne gi gode tilbud vil rmaet bruke så lite kabel som mulig, og også beregne om det lønner seg å bruke kabeltype A eller B. Som en forberedelse til en leveranse vil de alltid dra ut på det aktuelle hus-feltet og måle opp for hvert par av hus hvor mye kabel det vil gå med for å strekke kabel direkte fra det ene huset til det andre. Vi lar n angi antall hus på feltet. Ola og Kari jobber i rmaet. Ola påstår at han har en algoritme med tidsforbruk O(n 3 ) som kan nne hvordan man kan legge kabel av type A slik at man bruker kortest mulig kabel. Kari påstår tilsvarende at hun har en algoritme med tidsforbruk O(n 2 ) som nner hvordan man kan legge kabel B for å bruke minst mulig av denne. Vurder påstandene til Ola og Kari. Begrunn svaret.