KONTINUASJONSEKSAMEN

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

KONTINUASJONSEKSAMEN

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

KONTINUASJONSEKSAMEN

KONTINUASJONSEKSAMEN

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:

Høgskolen i Gjøvik. Avdeling for elektro- og allmennfag E K S A M E N. EKSAMENSDATO: 12. desember 1995 TID:

EKSAMEN. Algoritmiske metoder I KLASSE: 97HINDA / 97HINDB ( 2DA / 2DB )

KONTINUASJONSEKSAMEN

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. 04HBIND* / 04HBINFA / div. andre

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

Kontinuasjonseksamen

K O N T I N U A S J O N S E K S A M E N

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

ALGORITMER OG DATASTRUKTURER

E K S A M E N. Grunnleggende datakunnskap og programmering 02HIND*, 02HINE*, 02HDMU*, 02HING*, 02HGEOMAA, 02HSIV5

Kontinuasjonseksamen

Kontinuasjonseksamen

KONTINUASJONSEKSAMEN

Grunnleggende datakunnskap og programmering. EKSAMENSDATO: 16. desember 1997

Kontinuasjonseksamen

E K S A M E N. Grunnleggende datakunnskap og programmering 98HINDA / 98HINDB / 98HINEA 98HDMUA / 98HDMUB / 98HINGA

KONTINUASJONSEKSAMEN

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

E K S A M E N. - Kontroller at alle oppgavearkene er tilstede. - Les hele oppgaveteksten nøye, før du begynner å besvare noe som helst.

Algoritmer og Datastrukturer

KONTINUASJONSEKSAMEN

Grunnleggende datakunnskap, programmering og datastrukturer 97HINDA / 97HINDB / 97HDMUA

E K S A M E N. Grunnleggende programmering 03HBIND*, 03HBINFA, 03HBINE*, 03HBMETEA, 03HBMEMAA, 03HBGEOA

UNIVERSITETET I OSLO

E K S A M E N. Grunnleggende datakunnskap og programmering 99HINDA / 99HINDB / 99HINEA 99HDMUA / 99HDMUB / 99HINGA

GJØVIK INGENIØRHØGSKOLE

Høgskolen i Gjøvik Avdeling for informatikk og medieteknikk. Eksamen. Objekt-orientert programmering

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

KONTINUASJONSEKSAMEN

KONTINUASJONSEKSAMEN

KANDIDATEN MÅ SELV KONTROLLERE AT OPPGAVESETTET ER FULLSTENDIG

Kontinuasjonseksamen

E K S A M E N 96HINDA / 96HINDE (1 AA / AE)

E K S A M E N. Grunnleggende datakunnskap og programmering. EKSAMENSDATO: 7. desember HINDA / 00HINDB / 00HINEA 00HDMUA / 00HDMUB / 00HINGA

EKSAMENSOPPGAVE. IAI20102 Algoritmer og datastrukturer

Emnekode: LV121A Dato: Alle skrevne og trykte hjelpemidler

UNIVERSITETET I OSLO

KONTINUASJONSEKSAMEN

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer

Kontinuasjonseksamen

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

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

Høgskolen i Gjøvik E K S A M E N. FAGLÆRER: Frode Haug KLASSE: 1 AA / AE

Løsningsforslag EKSAMEN

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

MAT1030 Forelesning 30

Oppgave 1. Sekvenser (20%)

Eksamen. Objekt-orientert programmering KLASSE(R): 02HIND* 02HDMU* 02HINE* 02HING* 01HINGA 02HSIV5 02HGEOMAA

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

København 20 Stockholm

UNIVERSITETET I OSLO

ITF20006 Algoritmer og datastrukturer Oppgavesett 7

EKSAMENSOPPGAVE. INF-1101 Datastrukturer og algoritmer. Adm.bygget, rom K1.04 og B154 Ingen

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

KONTINUASJONSEKSAMEN

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: 8. august 1995 TID:

EKSAMEN med løsningsforslag

Eksamen. Grunnleggende programmering. EKSAMENSDATO: 6.desember 2016 TID: 16:00 20:00. (kalkulator er ikke tillatt)

A 1 B 1 D 1 H 1 H 2 D 2 B 2 E 1 E 2 I 1 I 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

Høgskolen i Gjøvik Avdeling for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

EKSAMEN. Emne: Algoritmer og datastrukturer

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

Høgskolen i Gjøvik Institutt for informatikk og medieteknikk E K S A M E N. Grunnleggende programmering

UNIVERSITETET I OSLO

Forelesning 28: Kompleksitetsteori

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1

Kontinuasjonseksamen

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. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

KONTINUASJONSEKSAMEN

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

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

G høgskolen i oslo. Emne: Algoritmer og datastrukturer. Emnekode: 80131A. Faglig veileder: UlfUttersrud. Gruppe(r) : Dato:

UNIVERSITETET I OSLO

Kontinuasjonseksamen

Korteste vei i en vektet graf uten negative kanter

GJØVIK INGENIØRHØGSKOLE

UNIVERSITETET I OSLO

E K S A M E N. Grunnleggende datakunnskap og programmering. EKSAMENSDATO: 5. desember HIND*, 01HINE*, 01HDMU*, 01HING* TID:

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

Kontinuasjonseksamen

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

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

EKSAMEN. TILLATTE HJELPEMIDLER: John Haugan: Formler og tabeller. Rottmanns formelsamling (tillatt som overgangsordning)

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

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.

Norsk informatikkolympiade runde

Flerveis søketrær og B-trær

Transkript:

Høgskolen i Gjøvik Avdeling for teknologi KONTINUASJONSEKSAMEN FAGNAVN: FAGKODE: Algoritmiske metoder I L 189 A EKSAMENSDATO: 15. august 00 KLASSE(R): 00HINDA / 00HINDB / 00HINEA ( DA / DB / EA ) TID: 09.00-14.00 FAGLÆRER: Frode Haug ANTALL SIDER UTLEVERT: TILLATTE HJELPEMIDLER: 5 (inkludert denne forside) Alle trykte og skrevne. - Kontroller at alle oppgavearkene er tilstede. - Innføring med penn, eventuelt trykkblyant som gir gjennomslag. Pass på så du ikke skriver på mer enn ett innføringsark om gangen (det blir uleselige gjennomslag når flere ark ligger oppå hverandre). - Ved innlevering skilles hvit og gul besvarelse, som legges i hvert sitt omslag. - Oppgavetekst, kladd og blå kopi beholder kandidaten til klagefristen er over. - Ikke skriv noe av din besvarelse på oppgavearkene. Men, i oppgavetekst der du skal fylle ut svar i tegning/tabell/kurve, skal selvsagt dette innleveres sammen med hvit besvarelse. - Husk kandidatnummer på alle ark. Ta vare på dette nummeret til sensuren faller.

Oppgave 1 (teori, 5%) Denne oppgaven inneholder tre uavhengige oppgaver fra kap. 16, 11 og 9 i læreboka. a) Vi har hash-funksjonen: hash(k) = k mod 13 der k står for bokstavens nummer i alfabetet (1-9). Vi har også en array med indeksene 0-1. Tegn opp arrayen hver gang key'ene D U N D R E K L U M P E N (i denne rekkefølge fra venstre til høyre, blanke regnes ikke med) legges inn i den vha. linear probing. b) Følgende prioritetskø, organisert som en heap, er gitt: 38 9 6 7 8 5 6 3 1 6 5 Utfør etter tur følgende operasjoner på denne heap: insert(9), insert(39), remove(), remove() og replace(5). Skriv opp heapen etter at hver av operasjonene er utført. NB: For hver av operasjonene skal du operere videre på den heapen som ble resultatet av den forrige operasjonen. c) Du skal utføre Quicksort på teksten S O P P K O K E R (blanke regnes ikke med). Lag en figur tilsvarende fig. 9.3 side 119 i læreboka, der du for hver rekursive sortering skriver de involverte bokstavene og markerer/uthever hva som er partisjonselementet. Oppgave (teori, 5%) Denne oppgaven inneholder tre uavhengige oppgaver fra kap. 15 & 31 i lærebok og om FSM. a) Legg teksten D U N D R E K L U M P E N (i denne rekkefølge fra venstre til høyre, blanke regnes ikke med) inn i et -3-4 tre. Tegn opp treet etterhvert som bokstavene legges inn. Gjør også om sluttresultatet til et Red-Black tre. b) Følgende vektede (ikke-rettede) graf er gitt: B C 1 F 3 D 4 3 E A

Hver nodes naboer er representert i en naboliste. Alle listene er sortert alfabetisk. Tegn opp minimums spenntreet for denne grafen, etter at koden s.455 i læreboka er utført (der "priority" er lik "t->w"). Tegn også opp innholdet i prioritetskøen etterhvert som konstruksjonen av minimums spenntreet pågår (jfr. fig.31.4 i læreboka). NB: Husk at ved lik prioritet så vil noden sist oppdatert (nyinnlagt eller endret) havne først i køen. c) Følgende ikke-deterministiske endelige tilstandsmaskin (FSM) er gitt: M = ( {q0, q1, q, q3, q4, q5 }, { a, b },, q0, { q0 } ) Transisjonstabellen: ( q0, a ) = q1 ( q1, a ) = q4 ( q1, b ) = q4 ( q1, b ) = q ( q, a ) = q3 ( q, b ) = q4 ( q4, b ) = q0 ( q4, b ) = q5 ( q5, a ) = q0 Tegn tilstandsmaskinen. Hvilke av følgende fem ulike uttrykk vil den godta: 1) aba ) abba 3) abbba 4) abbaab 5) aabaabbb Oppgave 3 (koding, 0%) Denne oppgaven omhandler binære trær, der hver node i treet er definert på følgende måte: struct node { char id; // Nodens ID/navn. node *left, *right; // Pekere til venstre og høyre subtre/barn. int rightref; // = 0 dersom høyre subtre finnes. // = 1 dersom tomt høyre subtre. // right peker da til noe annet (se oppg.3b). }; (Nodene i treet ligger ikke sortert etter noe spesielt kriterie, dvs. treet er ikke noe binært søketre.) En algoritme som besøker hver node to ganger (dobbeltorder) kan skrives på følgende måte: void dobbeltorder(node* t) { if (t!= z) { // Treet er ikke tomt. cout << t->id << 1 ; // Besøker/skriver noden for første gang. dobbeltorder(t->left); // Traverserer venstre subtre dobbeltorder. cout << t->id << ; // Besøker/skriver noden for andre gang. dobbeltorder(t->right); // Traverserer høyre subtre dobbeltorder. } } 3

Vi har følgende tre: A B C D E F G H I J Starten på utskriften fra en dobbeltorder-traversering av dette treet vil være: A1 B1 B D1 G1 I1 I a) Fullfør utskrifts-sekvensen ved dobbeltorder-traverseringen av treet ovenfor. Hva kalles ordningen av nodene du får hvis du fjerner alle utskriftene inneholdende? Hva kalles ordningen av nodene du får hvis du fjerner alle utskriftene inneholdende 1? b) I denne deloppgaven skal du lage funksjonen node* neste(node *x, int d) som for en gitt node x og en indeks d (som alltid har verdien 1 eller ), returnerer med x besøkt for d te gang sin etterfølger i dobbeltorder-sekvensen. (Anta at x aldri peker til z.) Eksempel: Dersom noden er D og d =1 vil den etterfølgende noden være G. Dersom noden er B og d =1 vil den etterfølgende noden være B selv. For noden H og d = vil den etterfølgende noden være F. Forklar først kort hvorfor det er umulig for en kodebit å sette opp datastrukturen korrekt ved å bruke en representasjon av nodene uten rightref inni. For å realisere dette bruker vi right og rightref på følgende måte: Medlemmet rightref har verdien 1 for alle noder i treet som ikke har noe ekte høyre subtre, og verdien 0 for alle andre noder (som altså har et ekte høyre subtre). For alle noder som ikke har noe ekte høyre subtre, vil deres right peke på den neste noden vi skal gå til etter å ha besøkt noden for andre gang i dobbeltordertraverseringen. right peker til z-noden i den aller siste noden i dobbeltorder-traverseringen. Lag en tegning av treet ovenfor der du også tegner inn hvordan right vil peke i de nodene som har tomt høyre subtre. Sett også et kryss i de nodene der rightref er lik 1. Vi forutsetter nå at alt dette er korrekt satt i alle nodene. Programmer neste - funksjonen. 4

Oppgave 4 (koding, 30%) I en rettet graf definerer vi til-alle-kjernen (TA-kjernen) og fra-alle-kjernen (FA-kjernen) som følgende nodemengder: En node A er med i TA-kjernen til en rettet graf hvis og bare hvis det går rettede veier/stier fra A til alle andre noder i grafen. En node A er med i FA-kjernen til en rettet graf hvis og bare hvis det går rettede veier/stier til A fra alle andre noder i grafen. Hver node er representert på følgende måte: struct node { char id; // Nodens ID/navn. int ant_naboer; // Antall reelle naboer (et tall mellom 0 og 10 stk.). node* nabo[11]; // Peker til naboene. Vi antar at 10 stk. holder! int merke; // 1 eller 0, alt ettersom om noden er SEEN/UNSEEN. }; Vi har også en global array med pekere direkte til hver av nodene i hele grafen: node* G[101]; a) Lag funksjonen void skriv_tak(); Funksjonen skal, ved hjelp av den rekursive funksjonen (som du også skal/må lage) void visit(node* x), gjøre et dybde-først-søk fra hver av nodene i grafen for å avgjøre, og skrive ut, hvilke noder som er med i TA-kjernen for grafen. Funksjonene får bare lov til å endre på medlemmet merke i hver node. Dennes verdi er ukjent/udefinert ved oppstart av skriv_tak -funksjonen. Angi også tidsforbruket til funksjonene ved O-notasjon i forhold til antall noder V og antall kanter E i grafen. Begrunn/forklar kort ditt svar. b) Anta at en node A er med i både TA- og FA-kjernen. Forklar kort hva som da mer kan sies om de to kjernene og hele grafen. Anta nå i stedet at grafen er løkkefri/uten cykler. Forklar kort hva som da kan sies om størrelsen på TA- og FA-kjernen. c) Vi antar nå at grafen er løkkefri. Lag funksjonen bool er_i_fak(node* x); Funksjonen skal undersøke om noden x er med i FA-kjernen for grafen. I så fall skal den returnere true (ellers false ). Som i oppgave 4a, skal denne funksjonen også fungere ved at den gjør dybde-først-søk gjennom grafen vha. en rekursiv funksjon (som du også skal/må lage): bool visit(node* t, node* x); Denne funksjonen sjekker og returnerer true / false til om det finnes en vei/sti fra akkurat node t til node x. Funksjonene bør avslutte søket så fort det eventuelt blir klart at svaret blir negativt ( false ). Funksjonene får også her bare lov til å endre på medlemmet merke i hver node. Dennes verdi er også ukjent/udefinert ved oppstart. Lykke til! frode@haug.com 5