Algoritmer og Datastrukturer

Like dokumenter
Algoritmer og Datastrukturer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer

EKSAMEN med løsningsforslag

EKSAMEN. Algoritmer og datastrukturer

UNIVERSITETET I OSLO

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

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

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

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

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

EKSAMEN. Emne: Algoritmer og datastrukturer

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

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

Løsningsforslag EKSAMEN

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

København 20 Stockholm

UNIVERSITETET I OSLO

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

Definisjon av binært søketre

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

Algoritmer og Datastrukturer

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

EKSAMEN. Algoritmer og datastrukturer. Eksamensoppgaven: Oppgavesettet består av 10 sider inklusiv vedlegg og denne forsiden.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Algoritmer og datastrukturer Eksamen

Algoritmer og Datastrukturer IAI 21899

LO118D Forelesning 12 (DM)

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

Algoritmer og datastrukturer Eksamen 22. februar 2011

Binære trær: Noen algoritmer og anvendelser

UNIVERSITETET I OSLO

Faglærerne prøver å besøker eksamenslokalet mellom klokka 15 og 16 for å oppklare eventuelle uklarheter og feil i oppgaveteksten.

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

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

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

Oppgave 1. Sekvenser (20%)

Emnekode: I-Dato: I ~ Antall oppgaver: I I Aiie -sk:i=rftlige - bme trykte og håndskrevne, samt alle typer

UNIVERSITETET I OSLO

Algoritmer og datastrukturer Løsningsforslag

Definisjon: Et sortert tre

UNIVERSITETET I OSLO

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre

EKSAMEN. Emne: Algoritmer og datastrukturer

Algoritmer og datastrukturer Eksamen

KONTINUASJONSEKSAMEN

UNIVERSITETET I OSLO

Lars Vidar Magnusson

Norges Informasjonsteknologiske Høgskole

Algoritmer og datastrukturer Løsningsforslag

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema

NORGES INFORMASJONSTEKNOLOGISKE HØGSKOLE PG4200 Algoritmer og datastrukturer

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes

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

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:

UNIVERSITETET I OSLO

EKSAMENSOPPGAVE. IAI20102 Algoritmer og datastrukturer

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:

Kap 9 Tre Sist oppdatert 15.03

UNIVERSITETET I OSLO

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamen IN1010/INF1010 våren 2018

UNIVERSITETET I OSLO

INF2220: Forelesning 1

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

EKSAMENSOPPGAVE. NB! Det er ikke tillatt å levere inn kladd sammen med besvarelsen

Algoritmer og datastrukturer Løsningsforslag

UNIVERSITETET I OSLO

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

Eksamen Objektorientert Programmering 2013

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.1

KONTINUASJONSEKSAMEN

UNIVERSITETET I OSLO

ALGORITMER OG DATASTRUKTURER

UNIVERSITETET I OSLO

Algoritmer og datastrukturer Eksamen

EKSAMEN. Algoritmer og datastrukturer. Eksamensoppgaven: Oppgavesettet består av 11 sider inklusiv vedlegg og denne forsiden.

INF1010 notat: Binærsøking og quicksort

KANDIDATEN MÅ SELV KONTROLLERE AT OPPGAVESETTET ER FULLSTENDIG

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

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

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

En implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {}

UNIVERSITETET I OSLO

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

Object [] element. array. int [] tall

UNIVERSITETET I OSLO

PG4200 Algoritmer og datastrukturer Forelesning 7

INF2220: Forelesning 1

Algoritmer og datastrukturer Eksamen

Dagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær

Oppgave 1. Oppgave 2. Høgskolen i Østfold Avdeling for informasjonsteknologi

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

Hvorfor sortering og søking? Søking og sortering. Binære søketrær. Ordnet innsetting forbereder for mer effektiv søking og sortering INF1010 INF1010

Transkript:

Eksamen i Algoritmer og Datastrukturer IAI 20102 Høgskolen i Østfold Avdeling for informatikk og automatisering Lødag 5. juni 2004, kl. 09.00-13.00 Hjelpemidler: Alle trykte og skrevne hjelpemidler. Kalkulator. Oppgavesettet består av i alt 6 sider, inkludert forside og vedlegg, og er delt i to hoveddeler som kan løses uavhengig av hverandre. Hver deloppgave er prosentvis vektet. Dette gjenspeiler ikke vanskelighetsgraden, men hvor mye hver enkelt oppgave kommer til å bidra til sluttkarakteren. Hvis ikke annet er angitt, betyr implementering å skrive programkode i Java eller et liknende programmeringsspråk. Koden bør være oversiktlig og godt kommentert. Du behøver ikke legge vekt på generelle prinsipper for tilgang til og beskyttelse av data, men kan anta at du har ubegrenset tilgang (friendly access) til alle data og metoder i alle klasseobjekter. Du behøver heller ikke legge vekt på å gjøre koden særskilt robust. Som et alternativ/kombinasjon eksakt kode kan du bruke godt strukturert pseudokode, men dette vil gi noe dårligere uttelling. Les oppgavetekstene nøye, planlegg arbeidet og disponer tiden før du begynner på besvarelsen. Skriv tydelig! Lykke til! 1

Del 1-60% Denne delen handler om ulike aspekter av innsettingssortering. Oppgave 1.1-10% Forklar kort (helst ved hjelp av passende figurer) hvordan innsettingssortering virker. Angi algoritmens orden med O-notasjon og gi en kort vurdering av metodens brukbarhet. Oppgave 1.2-5% Anta at du har en standard metode for innsettingssortering av heltallstabeller. Metoden bruker én og samme tabell (dvs. ingen ekstra hjelpestrukturer). Vis hvert steg i algoritmen (dvs. hvordan tabellen ser ut i hver iterasjon) brukt på sekvensen 45 12 8 13 97-83 De følgende deloppgavene referer til javakode i vedlegget. Oppgave 1.3-5% Implementerer metoden Del1.skriv(Node liste) som skriver ut verdiene av tallene i en enkeltlenket liste som starter med noden liste. Oppgave 1.4-5% Implementerer metoden Del1.tilfeldigListe(int n) som genererer en enkeltlenket liste med n noder med tilfeldige tallverdier mellom 0 og 1 (du kan gjerne bruke Math.random() som returnerer en tilfeldig double verdi mellom 0 og 1). Oppgave 1.5-10% Implementer metoden Del1.settInn(Node sortert, Node inn) som plasserer noden inn på rett plass i den lenkede listen som starter med noden sortert, og som vi antar er korrekt sortert på stigende verdi av tall. Metoden returnerer en referanse til den første noden i den nye listen (som da også vil være sortert). Du kan anta at alle verdier er distinkte (ingen duplikater). 2

Oppgave 1.6-10% Implementer den rekursive metoden Del1.sorterRekursivt(Node usortert, Node sortert), som blir kalt i driverrutinen Del1.sorter(Node liste). Driverrutinen skal returnere en referanse til den første noden i en sortert versjon av listen (med stigende tallverdi). Oppgave 1.7-15% En medstudent forteller deg at han har funnet en måte som han tror kanskje kan gjøre innsettingssortering mer effektiv. Når man skal sette inn et element i den ferdig sorterte delen, mener han det er mulig å bruke prinsippet for binærsøk. Diskuter kort denne ideen, både anvendt på innsettingssortering av tabeller (arrays) og referansestrukturer. Angi kompleksiteten i O-notasjonen i de modifiserte metodene.. Slutt på del 1 3

Del 2-40% Denne delen handler om binære trær. Oppgave 2.1-5% Vi har følgende binærtre: A / \ / \ B C / \ / D E F Skriv ut rekkefølgen på nodene slik de blir behandlet i en postorder traversing. Oppgave 2.2-10% Ved en inorder traversering av et tre får vi følgende rekkefølge: D E B F C - A Tegn et binærtre som kan generere denne sekvensen. Oppgave 2.3-10% Høyden i et tre er definert som den største av avstandene fra rota til bladnodene. Høyden til et tre som består av kun rota er 0. Et komplett binærtre er kjennetegnet ved at for enhver node i treet, så gjelder det at enten har nodens venstre og høyre subtre lik høyde, eller så er det venstre subtreet ett nivå høyere enn det høyre subtreet. Implementer metoden Del2.komplett(TreNode rot) som sjekker om treet representert ved noden rot er komplett eller ikke. Oppgave 2.4-15% I et komplett binærtre kan nodene indekseres ifølge levelorder traversering, slik at for enhver node med indeks i, vil det venstre barnet ha indeks 2*i +1, og det høyre 2*i +2. Dermed kan et slikt tre representeres i en tabell med referanser til (eller verdier av) innholdet i nodene med korresponderende indeks. Det første elementet i en slik tabell (indeks = 0) representerer altså rota i dette treet. Implementer metoden Del2.skrivUtPreOrder(char[] tabell, int index) som skriver ut subtreet med rot som korresponderer med index (i preorder rekkefølge). Slutt på del 2 4

Vedlegg De følgende klassene og metodene skal brukes i noen deloppgaver. Metoder som er angitt som allerede implementerte, skal ikke implementeres, men kan brukes i andre metoder. Du står fritt i å legge til ekstra funksjonalitet i form av datamedlemmer og metoder. Husk at metodene som skal implementeres kan brukes i andre metoder selv om du ikke har klart å implementere de! Del 1: class Node og class Del1 Objekter av klassen Node brukes som elementer i enkeltlenkede lister. class Node { Node(double verdi) { tall = verdi; Node neste; double tall; Klassen Del1 inneholder metoder som skal implementeres i ulike deloppgaver. class Del1 { // Skal implementeres i 1.3 void skriv(node liste) { // Skriver ut alle tallverdiene i nodene i lista // der første node er liste. // Skal implementeres i 1.4 Node tilfeldigliste(int n) { // Lager en liste med noder med tilfeldige // tallverdier, og returnerer den første noden. // Verdiene skal ligge mellom 0 og 1, // og du kan gjerne bruke Math.random() til dette. // Skal implementeres i 1.5 Node settinn(node sortert, Node inn) { // Plasserer noden inn i lista med noden sortert // som første element. Denne lista er sortert på // stigende verdi av tallverdiene. // Skal returnere referansen første node i den nye // sorterte lista. // Fortsetter neste side 5

// Ferdig implementert Node sorter (Node liste) { if (liste == null) return null; Node usortert Node sortert sortert.neste = liste.neste; = liste; = null; return sorterrekursivt(usortert, sortert); // Skal implementeres i 1.6 Node sorterrekursivt (Node usortert, Node sortert) { // Her antar vi at vi har en liste som er usortert, // med start i usortert, og en liste som er sortert, // med start i sortert. // Metoden setter inn rekursivt nodene i den usorterte // delen på rett plass i den sorterte. Del 2: class TreNode og class Del2 Objekter av klassen TreNode brukes som elementer i enkeltlenkede lister. class TreNode { TreNode venstre; TreNode høyre; char tegn; Klassen Del2 inneholder metoder som skal implementeres i ulike deloppgaver. class Del2 { // Skal implementeres i 2.3 boolean komplett(trenode rot) { // Returnerer true hvis subtreet representert // ved noden rot er komplett, ellers false. // Skal implementeres i 2.4 void skrivutpreorder(char[] tabell, int index) { // Skriver ut innholdet av subtreet // med noden som korresponderer med den gitt indeksen i treet // som rot. Slutt på oppgavesettet 6