Tentamen: Programutveckling ht 2015



Relevanta dokument
Datastrukturer och algoritmer

Sätt att skriva ut binärträd

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

Dugga Datastrukturer (DAT036)

Tentamen Datastrukturer D DAT 036/DIT960

Föreläsning 6: Introduktion av listor

Föreläsning 4: Kombinatorisk sökning

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Tentamen TEN1 HI

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT037)

SORTERING OCH SÖKNING

Föreläsning 1. Introduktion. Vad är en algoritm?

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.

Några svar till TDDC70/91 Datastrukturer och algoritmer

TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 11. Giriga algoritmer

Datastrukturer och algoritmer

Tentamen TEN1 HI

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Tentamen Datastrukturer (DAT036)

Föreläsning 8 Datastrukturer (DAT037)

Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa

Algoritmer, datastrukturer och komplexitet

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 8: Intro till Komplexitetsteori

Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4

Fortsättningskurs i programmering F 2. Algoritmer i Programutveckling Hugo Quisbert Problemexempel 1

Föreläsning 6 Innehåll. Rekursion. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursiv problemlösning. Rekursion. Rekursivt tänkande:

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 27 maj 2008

Tentamen Datastrukturer D DAT 035/INN960

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

Tentaupplägg denna gång

Omtentamen i OOSU2, 21 augusti 2014

Sökning och sortering

Föreläsning Datastrukturer (DAT037)

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215

Ickelinjära ekvationer

Tommy Färnqvist, IDA, Linköpings universitet

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 13. Dynamisk programmering

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Rekursion och induktion för algoritmkonstruktion

Föreläsning Datastrukturer (DAT037)

TAOP61/TEN 1 OPTIMERING AV REALISTISKA SAMMANSATTA SYSTEM. Tentamensinstruktioner. När Du löser uppgifterna

Grafer. 1 Grafer. Grunder i matematik och logik (2015) 1.1 Oriktade grafer. Marco Kuhlmann

Fredag 10 juni 2016 kl 8 12

Magnus Nielsen, IDA, Linköpings universitet

Föreläsning 8 Datastrukturer (DAT037)

Tentamen Datastrukturer, DAT037 (DAT036)

Lösningar Datastrukturer TDA

Tentaupplägg denna gång

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

Föreläsning Datastrukturer (DAT036)

Automater. Matematik för språkteknologer. Mattias Nilsson

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

Tentamen Datastrukturer för D2 DAT 035

Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret Lektion 1

Tentamen Datastrukturer D DAT 036/INN960

Föreläsning 1: Dekomposition, giriga algoritmer och dynamisk programmering

Introduktion till algoritmer - Lektion 3 Matematikgymnasiet, Läsåret Lektion 3

TDP Regler

Föreläsning Datastrukturer (DAT036)

Teoretisk del. Facit Tentamen TDDC (6)

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Datastrukturer. föreläsning 3. Stacks 1

Datastrukturer D. Föreläsning 2

Föreläsning 5 Innehåll

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15-13:15

Tentamen Datastrukturer (DAT036)

DE FYRA RÄKNESÄTTEN (SID. 11) MA1C: AVRUNDNING

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Uppgift 1 ( Betyg 3 uppgift )

Algoritmer, datastrukturer och komplexitet

Komplexitetsklasser och repetition

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Tentamen Datastrukturer (DAT036)

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

Rekursiva algoritmer sortering sökning mönstermatchning

Algoritmer och datastrukturer H I HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Grundläggande programmering med C# 7,5 högskolepoäng

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Transkript:

Tentamen: Programutveckling ht 2015 Datum: 2015-11-04 Tid: 09:00-13:00 Sal: Ansvarig: Resultat: Hjälpmedel: Maxpoäng: Betygsgränser: Anslås inom 3 veckor. Inga 40 p 20 p för G, 32 p för VG. Iakttag följande: Skriv tydligt. Börja varje ny uppgift på ett nytt blad. Använd bara en sida av varje papper. Motivera dina svar väl. Om du anser att en fråga är svår att förstå eller felaktigt ställd, skriv ner din tolkning av frågan tillsammans med svaret. Skriv din tentakod (som används för att anonymisera tentan) på varje blad som lämnas in.

1) Redogör kortfattat för följande begrepp, dvs. ge korta och koncisa förklaringar till dem i relation till algoritmer och algoritmdesign: a) Loop b) Minneskomplexitet c) Brute force d) Stack (4 p) 2) Quicksort och Mergesort är två exempel på sorteringsalgoritmer. a) Välj en av algoritmerna och beskriv utförligt hur den fungerar (gärna med pseudokod). b) Ange en likhet samt en skillnad i de två algoritmernas arbetssätt. c) Vilken worst-case tidskomplexitet har de båda algoritmerna? Motivera ditt svar. (2+1+1 p) 3) Antag att du måste frakta en hund, en katt och en guldfisk från en lägenhet i Göteborg till en lägenhet i Borås. Ditt enda transportmedel är bussen som går mellan städerna. Dessutom kan du endast frakta ett djur åt gången i bussen (i vardera riktningen). Problemet är att du inte kan lämna hunden och katten i samma lägenhet utan din tillsyn, annars äter hunden upp katten. Samma sak gäller för katten och guldfisken, dvs. att katten äter upp guldfisken om du lämnar dem i samma lägenhet utan tillsyn. Hur skall du bära dig åt för lösa detta dilemma? General Problem Solver (GPS) 1. Placera initialtillståndet S i en tom lista OPEN. 2. Skapa en tom lista CLOSED. 3. Om OPEN är tom, avsluta med misslyckande. 4. Avlägsna den första noden N i OPEN och placera i CLOSED. 5. Om N är en målnod, avsluta med lyckats. 6. Expandera N, dvs använd produktionsreglerna för att hitta en mängd NEW av noder som kan nås från N. Av dessa noder, lägg noderna i OPEN om de inte redan finns i OPEN eller CLOSED. 7. Loopa tillbaka till steg 3. a) Formulera problemet som en sökning i en tillståndsrymd. Hur ser representationen av tillstånden ut? Vilket är starttillståndet samt måltillståndet? Hur ser produktionsreglerna ut, dvs. vilka är de möjliga (tillåtna) förflyttningarna från ett tillstånd till ett annat? b) Bredden först och djupet först är två vanliga sökstrategier. Förklara med egna ord hur dessa sökstrategier fungerar, samt jämför deras för- och nackdelar. Förklara även hur OPEN listan i sökalgoritmen ovan (General Problem Solver) implementeras (datastruktur) för respektive sökstrategi.

c) Vilken funktion fyller CLOSED listan, dvs. vad är syftet med att ha en CLOSED lista i ovanstående sökalgoritm? (2+2+1 p) 4) Dynamisk Programmering kan ses som en intelligent brute-force algoritm. a) Vad menas med detta, dvs. hur arbetar dynamisk programmering för att åstadkomma detta? b) Nämn tre kriterier som måste vara uppfyllda för att kunna applicera dynamisk programmering som lösningsmetod för ett problem. c) Skriv pseudokod för en rekursiv lösning av fibonacci-tal (se formel nedan) med hjälp av dynamisk programmering (dvs. rekursion + memorization). (1+1+2 p) 5) Nedan finns pseudokod för algoritmen selection sort, vilken sorterar en vektor ALGORITHM SelectionSort(A[0..n-1]) // The algorithm sorts a given array by selection sort // Input: An array A[0..n-1] of orderable elements // Output: Array A[0..n-1] sorted in ascending order for i from 0 to n 2 do min i for j from i + 1 to n 1 do if A[j] < A[min] min j swap A[i] and A[min] a) Förklara i ord hur algoritmen arbetar. För att bevisa att selection sort är partiellt korrekt, så måste man formulera invarianter för både den yttre och den inre loopen. Loopinvarianten för den inre loopen kan formuleras på följande sätt variabeln min innehåller index för det minsta värdet mellan index i+1 och n-1 b) Formulera en lämplig loopinvariant för den yttre loopen. c) Förklara hur loopinvarianten för den yttre loopen från b) används för att visa att selection sort är partiellt korrekt. d) Var skulle du placera en konvergent för att bevisa att selection sort alltid terminerar och hur skulle denna formuleras? (1+1+1+1 p)

6) a) Vad innebär begreppet NP-komplett? Ge en utförlig, men generell, beskrivning, dvs. en teoretisk redogörelse som inte baseras på ett specifikt problem. b) Vilka av följande problem är NP-kompletta? Motivera! Towers of Hanoi Haltproblemet Minimalt uppspännande träd SAT (2+2 p) 7) Följande uppgifter handlar om att konstruera Turingmaskiner som arbetar med strängar ur alfabetet {A, B}. Maskinerna kan läsa och skriva tecknen A, B och blank (#). För båda uppgifterna gäller att läshuvudet får stå på valfri plats vid terminering och det är tillåtet att förstöra inputsträngen under arbetet. Maskinerna skall ange sin output genom att terminera i ett tillstånd YES eller NO. a) Konstruera en Turingmaskin som avgör om en sträng bestående av en obruten följd av A och B följer mönstret att ha exakt varannat tecken A och B. Strängen kan börja och sluta på vilket av tecknen som helst. Exempel: Om maskinen startas längst till vänster i inputsträngen ABABAB, så stannar den i ett tillstånd som heter YES. Om maskinen startas längst till vänster i inputsträngen AABABAB, så stannar den i ett tillstånd som heter NO. Svara på uppgift a) genom att ge en kort beskrivning i ord av hur din Turingmaskin arbetar och specificera maskinen i detalj med tillståndsdiagram. b) Beskriv i ord hur du skulle modifiera din Turingmaskin från uppgift a) till att istället avgöra om strängen följer mönstret att ha två av varje tecken och sedan två av det andra. Exempel: Om maskinen startas längst till vänster i inputsträngen AABBAABBAABB, så stannar den i ett tillstånd som heter YES. Om maskinen startas längst till vänster i inputsträngen AABAABBAABB, så stannar den i ett tillstånd som heter NO. (3+1 p) 8) Vid en Vigenèrekodning har nyckelordet valts till SAM. a) Kryptera följande meddelande: to be or not to be b) Förklara principen bakom att använda coincidence index för att bestämma nyckelordets längd vid knäckning av Vigenèrekrypton. Observera att ni inte skall beskriva hur beräkningarna görs rent praktiskt utan fokusera på den övergripande proceduren och motivera varför den fungerar. (2+2 p)

9) Det agila manifestet beskriver vad som skall känneteckna agil programutveckling. a) Beskriv de fyra värden som man primärt eftersträvar inom agil programutveckling. b) Ge ett exempel på en agil utvecklingsmetod och beskriv den kortfattat. (2+1 p) 10) 1950 publicerade Alan Turing artikeln Computing Machinery and Intelligence, i vilken han beskrev Turingtestet. a) Förklara vad syftet är med Turingtestet, hur testet går till samt kriterier för ett lyckat resultat. b) Edward Feigenbaum betonar ett specifikt problem som först måste lösas innan Turingtestet kan klaras. Vilket problem är detta? c) 2003 presenterade Edward Feigenbaum ett alternativ till Turingtestet - det så kallade Feigenbaumtestet. Vad är den största skillnaden mellan Turingtestet och Feigenbaumtestet? (2+1+1 p)