• No results found

itf20006 algoritmer og datastrukturer ny utsatt eksamen 06.01.2017

N/A
N/A
Protected

Academic year: 2022

Share "itf20006 algoritmer og datastrukturer ny utsatt eksamen 06.01.2017"

Copied!
6
0
0

Laster.... (Se fulltekst nå)

Fulltekst

(1)

Høgskoleni østfold

Nyfutsatt

EKSAMEN

Emnekode: ITF20006 Dato: 6. januar 2016

Hjelpemidler: Alle trykte og skrevne

Emne: Algoritmer og datastrukturer Eksamenstid: 09:00 —13:00

Faglærer: Jan Høiberg Om eksamensoppgavene:

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

Oppgavesettet består av 4 oppgaver med i alt 15 deloppgaver. Innen hver oppgave vektes alle deloppgaver likt. Les oppgavetekstene nøye før du begynner på besvarelsen.

Legg vekt på å skrive en ryddig og lett forståelig besvarelse.

Sensurfrist: 27. januar 2017

Karaktereneer tilgjengelige for studenter på studentwebsenest 2 virkedager etter oppgitt sensurfrist.

hi no

(2)

Oppgave 1: Algoritmeanalyse (25%)

I deloppgavene a) —e) nedenfor er det gitt i alt fem metoder. Gjør følgende for hver metode:

Beskriv kort hva metoden utfører og evt. hva slags verdi den returnerer når den kjøres.

Angi metodens arbeidsmengde med 0-notasjon. Gi en kort begrunnelse for svaret.

int metode_a(int A[], int x) int antall = 0, n = A.length;

for (int i = 0; i < n; i++) if (A[i] == x)

antall++;

return antall;

Her skal du angi virkemåte og arbeidsmengde når parameteren i har verdien null (0):

int metode_b(int A[], int x, int i) int n A.length;

if (i < n)

if (A[i] == x)

return 1 + metode b(A, x, 1+1);

return metode_b(A, x, i+1);

1 else

return 0;

Merk at metoden her kaller metode b fra forrige deloppgave:

boolean metode_c(int A[], int x) int antall = metode_b(A, x, 0);

return antall == 0 ? false : true;

(Oppgave 1 fortsetterpå neste side) Eksamen i Algoritmer og datastrukturer, 6. januar 2017

(3)

d) void metode_d(int A[]) {

int tmp, n = A.length;

for (int i = 0; i < n; i++) {

for (int j = n - 1; j > i; j--) if (A[j] < A[j - 1])

{

tmp =

A[j] = A[j - 1];

A[j - 1] = tmp;

I.

}

}

Merk at metoden her kaller metode_d fra forrige deloppgave:

boolean metode_e(int A[], int x) {

int n = A.length;

int min = 0, max = n-1, mid = 0;

metode_d(A);

while (max >= min)

{

mid = (min + max) / 2;

if (A[mid] == x) return true;

if (x < A[mid]) max = mid - 1;

else

min = mid + 1;

}

return false;

}

De to metodene som er angitt i deloppgave c) og deloppgave e) ovenfor, løser det samme problemet. De er begge lite effektive, spesielt gjelder dette formetodee.

Foreslå en enkel algoritme kan brukes til å løse det samme problemet mer effektivt.

Det er tilstrekkelig at du bare angir navnet/betegnelsen på algoritmen.

(Sluttpå oppgave 1)

(4)

Oppgave 2: Kø (20%)

Denne oppgaven dreier seg om vanlige (First-In-First-Out) køer.

En kø implementeres med bruk av en array, slik at det

første

elementet i køen affiid ligger lagret på indeks 0 (null) i arrayen. Det andre elementet i køen ligger lagret på indeks 1, det tredje elementet på indeks 2 osv.

Hva er da arbeidsmengden, uttrykt med 0-notasjon, for de to operasjonene enqueue og dequeue ? Gi en kort begrunnelse for svaret ditt.

En kø implementeres med bruk av en array, slik at det

siste

elementet i køen alltid ligger lagret på indeks 0 (null) i arrayen. Det nest siste elementet i køen ligger lagret på indeks 1, elementet foran det neste siste på indeks 2 osv.

Hva er da arbeidsmengden, utrykt med 0-notasjon, for de to operasjonene enqueue og dequeue ?Gi en kort begrunnelse for svaret ditt.

Hvorfor brukes vanligvis ikke de to implementasjonene av kø som er beskrevet i deloppgavene a) og b) ovenfor? Beskriv kort to alternative implementasjoner av kø som begge er mer effektive.

(Sluttpå på oppgave2)

Eksamen i Algoritmer og datastrukturer, 6. januar 2017

(5)

Oppgave 3: Datastrukturer (30%)

a)

Beskriv kortfordeler og ulemper med følgende datastrukturer når det gjelder søking, innsetting og fjerning av data:

Lenket liste Hashtabell Binært søketre Array

b) En hashtabell med hashlengde 11 skal brukes til å lagre heltall. Tabellen er i utgangspunktet tom. Følgende hashfunksjon brukes:

hash(x) = x % 10

Det brukes åpen adressering med lineær probing ved kollisjon. Vis hvordan hashtabellen ser ut etter innsetting av følgende verdier i denne rekkefølgen:

6 , 5 , 28 , 17 , 18 , 115 , 16 , 7 , 71 , 60

c)

I et komplett binært tre med 20 noder der roten er definert til å være på nivå 0, hvor mange noder er det på nivå 4?

(Sluttpå opppgave3)

(6)

Oppgave 4: Grafer (25%)

Følgende graf er gitt:

2 1 3

v1 v2 v3 v4

3

3 2

3

1 2

v5 v6 v7 V8

2 3

6 9

2 6

v9 6 v10 v11 2 V12

2

3 4 5

2

v13 v14 2 v15 3 V16

Figur1 - En rettetvektetgraf

Hvor lang er den korteste veien fra node vi til node v16 ? Hvilke noder ligger langs denne korteste veien?

Sett opp en oversiktlig tabell som viser stegene som gjøres i Dijkstra's algoritme for denne grafen med start i node vi, frem til vi har funnet korteste vei til node v16.

Hver rad i tabellen skal vise tilstanden etter en iterasjon og skal angi:

Hvilke noder som vi kjenner garantertkorteste vei til, og hvor lang denne veien er.

Hvilke andre noder som er oppsøkt og som vi kjenner enmuligkorteste vei til, og hvor lang denne veien er.

Hvilke noder som ennå ikke er oppsøkt.

c)

Anta at figur 1 er et representativt utsnitt av en mye større graf som består av 20000 noder. Hvordan ville du lagret dataene om denne store grafen? Begrunn svaret.

(Sluttpå opppgave4)

2

Eksamen i Algoritmer og datastrukturer, 6. januar 2017

Referanser

RELATERTE DOKUMENTER

Det forelå på dette tidspunktet ingen kjente kontraindikasjoner for trombolytisk behand- ling, og begrunnet i sterk mistanke om et akutt infarkt i fremre cervikale del av rygg-

Hypertrofisk pakymeningitt er en sjelden tilstand karakterisert ved aseptisk, kronisk inflammasjon som forårsaker pakymenin- geal fortykkelse. Etter innføringen av CT- og

Returns the index of the first occurrence of the specified element in this list, or -1 if this list does not contain the element. int lastIndexOf(Object o)

Alle matriser er ekvivalent til en matrise p˚ a trappeform (bytt rader slik at ingen andre rader har elementer ulik 0 lengre til venstre for det første elementet ulik 0 i første

Alle matriser er ekvivalent til en matrise p˚ a trappeform (bytt rader slik at ingen andre rader har elementer ulik 0 lengre til venstre for det første elementet ulik 0 i første

For personer med samme etternavn, ligger fornavn og alder for hver person lagret i en sortert, lenket liste, sortert alfabetisk på fornavn. Det er én slik liste for hver node

Hvis verdi finnes i arrayen A, skal metoden returnere indeksen i A der denne verdien ligger lagret.. Indeksen er heltall større eller lik null og mindre enn antall elementer

I denne oppgaven skal det brukes vanlige binære søketrær (ikke AVL-trær), der hver node i treet bare inneholder et enkelt heltall i tillegg til pekere/referanser til nodens venstre