Datastrukturer och algoritmer Frelsning 16 Anders Broberg Lena
Datastrukturer och algoritmer Föreläsning 16 © Anders Broberg, Lena Kallin Westin, 2007
Do. A VT -07 Innehåll u Snabbrepetition u Exempeltentamen u Kursutvärdering 2
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 3 Mina målsättningar u Rolig och viktig kurs u Bli en bättre programmerare och inse att man blivit det ØKänna till kända lösningar på typiska problem ØKonstruera robusta och korrekta program ØKonstruera och beskriva algoritmer och datatyper ØPlanera sitt arbete så att projekt blir klar i tid u Förstå komplexitetsbegreppet ØTid och rum u Bli bättre på att kommunicera resultat skriftligt
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 4 Kursens mål: u Kursdeltagarna ska förvärva förtrogenhet med grundläggande element och konstruktioner/tekniker för att organisera data och lösa problem. Detta inbegriper Øformell och informell beskrivning av grundläggande abstrakta datatyper, Øgrundläggande algoritmer och effektivitetsanalys Ø paradigmer/tekniker för algoritmkonstruktion.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 5 Kursens mål FSR: u Efter avslutad kurs ska studenten kunna: Ø känna till grundläggande begrepp relaterade till datastrukturer och algoritmer Ø känna till grundläggande abstrakta datatyper såsom lista, stack, kö, träd, mängd, graf och tabell Ø välja datatyper för ett givet problem Ø välja implementation av datatyper Ø känna till grundläggande algoritmer, deras komplexitet och karakteristiska egenskaper för typiska problem Ø analysera algoritmer praktiskt och teoretiskt med avseende på prestanda Ø använda sig av grundläggande problemlösningsstrategier, som till exempel divide and conquer, brute force, greedy, dynamisk programmering, på nya problem Ø tillämpa den objektorienteringsparadigmen på ett större programmeringsprojekt Ø strukturerat dokumentera algoritmer och datatyper
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 6 Innehållsöversikt u Algoritmer ØTids- och rumsfrågor ØDesignprinciper u Abstrakta u Sökning u Sortering datatyper
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 7 Innehållsöversikt – Algoritmer u Tids och rumsfrågor ØExekvering, implementering, underhåll ØTid vs rumskomplexitet ØAnalys av exekveringstider o o o Olika sätt, vad de står för och +/– Experimentell – Asymptotisk T(n) för en alg => O(n) – Primitiva operationer – Okulärbesiktning Att beskriva algoritmer
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 8 Innehållsöversikt – Algoritmer u. Designprinciper ØIdéer till 4 olika algoritmtyper o o Brute force, D&C, Greedy och dynamisk programmering Exempel på varje +/Typiska användningar
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 9 Innehållsöversikt – Abstrakta Datatyper (ADT) u u Stack, Kö, Listor, Träd, Graf, Prioritetskö, Heap, Tabell, Sträng, Mängd, Sökträd, Tries, mm Beskrivningssätt Ø Organisation, Modell, Gränsytan (formell, informell) u Grundbegrepp Ø Vad är en organisation, sorterad ADT, mm Ø Primär vs. sekundär struktur Ø Absolut vs. relativ komplexitet u Sätt att implementera Ø +/-, när var hur Ø Komplexitet för de viktigaste operationerna u Vart hittar vi ADT typiskt Ø Hur olika ADT hänger ihop med varandra Ø Algoritmer på ADT
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 10 Innehållsöversikt – Sökning (traversering) u Vad är traversering u Olika metoder för sökning i sekvenser ØLinjär & Binär Ø+/ØStäller de några krav på implementationen av ADTn?
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 11 Innehållsöversikt – Sortering u Varför sorterar vi? ØSorterad ADT vs sortering av data ØSökningen blir snabbare…ibland u Hur kan vi sortera (olika former) Ø+/ØNär passar dom? ØStabil sortering u 5 -6 olika algoritmer, analys
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 12 Tentan u Ska kontrollera att de förväntade studieresultaten uppfyllts. u Definitionsfrågor Ø Begrepp Ø Definiera, beskriv, ge exempel, . . . u Förståelsefrågor Ø Visa hur en algoritm fungerar Ø Vilken datatyp passar bäst för detta problem, varför? Ø Jämför, analysera, förklara, . . . u Resultaten kommer att skickas via mail (@cs. umu. se)
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 13 Exempeltenta 030321 u Enbart skissartade svar Ødessa svar skulle inte ge full poäng på en tentamen! u Tanken är att man ska få en hum vad som krävs och se hur vi tänkte när vi rättade. u Utöver kriterierna för varje uppgift gör man som rättare alltid en helhetsbedömning (av varje enskild uppgift och tentan i stort).
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 14 Uppgift 1. (20 p) (0. 5 p/ begrepp) Förklara 40 stycken av följande begrepp med avseende på kursinnehållet. Använd bifogad tabell (sist i tentan), (fler än 40 förklaringar räknas som gardering och de första 40 kommer att rättas). (Det krävs att man har minst 15 poäng på denna uppgift för att kunna bli godkänd på tentan).
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 15 Uppgift 1. (20 p) (0. 5 p/ begrepp) u Typisk definitions/fakta fråga u Ges/gavs inga lösningsförslag på detta. u Varje definition kunde få upp till 4/8 p u Kommer INTE att vara med på årets tentor ØDäremot kan naturligtvis frågor om enstaka begrepp finnas med.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 16 Uppgift 2 - 13 p (4+6+1+2) Du arbetar på ett företag som skall konstruera ett system på uppdrag av SMHI samlar dagligen in fakta från alla världens väderstationer till en stor databas som innehåller följande: namn (på väderstationen), temperatur, luftfuktighet och vindstyrka samt longitud och latitud (för platsen). Meteorologerna vill kunna sortera datat på godtyckligt fält i databasen. Det är extremt viktigt att programmet är snabbt för att man ska kunna göra en tillförlitlig prognos. Samtidigt är applikationen tänkt att köras på handdatorer därför är minnesutrymmet begränsat.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 17 Uppgift 2 - 13 p (4+6+1+2) a) b) c) d) Föreslå en lämplig sorteringsalgoritm som klarar av kraven på bästa sätt, motivera och redovisa ditt val. (Om du måste ge avkall på något av kraven för att kunna leverera systemet i tid så motivera varför). Föreslå en lämplig standarddatatyp, beskriv datatypen med modell, organisation, informell gränsyta samt implementation. Motivera ditt val av implementation. Skriv en algoritmbeskrivning (pseudokod) för den valda sorteringen, där du utnyttjar gränsyteoperationerna.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 18 a) Föreslå sorteringsalgoritm u Denna del får poäng efter hur mycket man har med i sin beskrivning: Ø Nämna en algoritm överhuvutaget Ø Nämna rätt algoritm (i detta fall in-place quicksort eller ev. radix exchange sort) Ø Diskutera minnesåtgång för vald algoritm Ø Diskutera snabbhet för vald algoritm Ø Nämna minst en annan algoritm som jämförelse och nämna dess minnesåtgång och snabbhet
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 19 b) Föreslå och beskriv en datatyp u Även här ges poäng efter vad och vilka saker man tar upp Ø Ø Modell Organisation Implementation Gränsytan o o o u Korrekta metoder Korrekta parametrar Beskrivning av metoderna De vanligaste (och bästa) valen är lista eller fält. Ø Väljer man tabell får man avdrag eftersom man inte kan sortera en tabell. u I gränsytan behöver man inte ange exakt rätt namn på metoderna Ø Blandar man ihop metoder och tar tabellmetoder i listan eller tvärtom så ger det avdrag. Ø Likaså om man inte har med alla parametrar eller inte beskriver vad metoden ska göra. u Med implementation avses hur man väljer att realisera sin datatyp. Ø Tex Lista kan man välja att implementera som array eller länkad lista.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 20 c) Motivera val av implementation u Här ska man motivera sitt val av implementation och förklara varför man tex valt en array och inte en lista. u Om man i a) har sagt att databasen varierar i storlek bör man motivera en dynamisk datatyp här.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 21 d) Ge en algoritmbeskrivning u Här finns det två tydliga krav: Øalgoritmen ska skrivas i pseudokod Øman ska använda sig av gränsyteoperationerna från b)
Do. A VT -07 Uppgift 3 - 9 p (3+1+5) © Anders Broberg, Lena Kallin Westin, 2007 I ett kassasystem vill vi kunna ge tillbaka växel till en kund. Mynten vi har att tillgå är på 1, 5, 10 respektive 25 enheter. Problemet är nu att för ett godtyckligt växelbelopp välja ett antal mynt av de olika valörerna så att: u myntens sammanlagda värde exakt uppgår till det eftersökta växelbeloppet u ett så litet antal mynt som möjligt används. Vi antar att det finns tillräckligt många mynt av varje valör. 22
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 23 Uppgift 3 - 9 p (3+1+5) a) b) c) Använd pseudokod för att ge en utförlig beskrivning av en girig algoritm som löser ovanstående problem. Antag att vi förutom valörerna ovan också har mynt som är värda 12 enheter. På vilket sätt påverkar det din giriga lösning från a)? Har vi situationen som beskrivs i b) är det bättre att försöka lösa växlingsproblemet m. h. a. söndra och härska (divide-and -conquer). Använd pseudokod för att ge en utförlig beskrivning av en algoritm som löser växlingsproblemet med denna teknik. Ledning: Tänk rekursivt! Antingen så kan vi växla hela beloppet med endast ett mynt eller så kan vi (på något lämpligt sätt) dela upp växelbeloppet, växla delbeloppen med minimalt antal mynt rekursivt och sedan konstruera en fullständig lösning från dellösningarna.
a) Girig algoritm i pseudokod © Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 24 (Finns många varianter!!) Algoritm Greedy(v, amount) amount beloppet som ska ges tillbaka med minimalt antal mynt. v = [cn, cn-1, . . . , c 0] vektor med de olika myntslagen i vårt fall v = [25, 10, 5, 1] rest = amount for i = 0 to length(v) do begin // hur många mynt av valör(i) ryms i // beloppet? change[i] = rest div v[i] // hur mycket finns kvar sen? rest = rest mod v[i] end return change
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 25 b) Vad händer om myntet 12 läggs till? u u Algoritmen blir inte längre optimal! Om man lägger till myntet 12 och sedan försöker växla 15 kronor så ger algoritmen i a) svaret 1 st 12 -krona och 3 st 1 -kronor, dvs totalt 4 mynt medan en optimal lösning skulle vara 1 tia och 1 femma.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 26 c) Lös växlingsproblemet m. h. a. söndra och härska. u u 1. 2. Många trodde att det räckte att skriva om a) rekursivt. . . Förslag på algoritm Om vi kan växla beloppet med exakt ett mynt så gör vi det. Annars delar vi upp problemet i två delproblem som löses var för sig och vars resultat sedan kombineras ihop till en fullständig lösning: u För något i beräknar vi det minsta antal växelmynt som behövs för att växla i respektive amount - i och summerar sedan de två delresultaten. u För att få en minimal lösning måste vi upprepa detta för varje värde på i och välja det i som minimerar summan. u Till ovanstående strategi måste vi lägga en strategi för att generera tänkbara uppdelningar. Enklast är att pröva alla i från 1 till k/2. Här följer en beskrivning av en sådan lösning:
// v = [cn, cn-1, . . . , c 0] är en vektor med de olika myntslagen // från största, cn , till minsta, c 0. Antag att c 0 = 1. make. Change(v, amount) © Anders Broberg, Lena Kallin Westin, 2007 // STEG 1 change = [] // Titta efter en exakt lösning med ett enda mynt. i = 0 while (i <= n) if (v[i] equals amount) return v[i] i = i + 1 // STEG 2 Ingen exakt lösning, lös rekursivt. min = amount //Sämsta fallet är lika många mynt som amount j = 1 while (j <= (amount / 2)) c 1 = make. Change(v, j) c 2 = make. Change(v, amount - j) if ((length of c 1 + length of c 2) < min) change = append c 2 to the end of c 1 min = length of change j = j + 1 return change 27
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 28 Uppgift 4 – 8 p (4+1+3) Nu har du (förhoppningsvis) gjort färdigt sorteringsmodulen i uppgift 2, så företaget du jobbar åt har fått ett nytt uppdrag där ni skall skriva en modul som skall användas för att konstruera ett nytt datornät där våra byar i glesbygden skall kopplas upp med hjälp av ett fibernät. Kraven är att alla byar som är med i projektet skall kunna nås från vilken annan by som är med i projektet direkt eller indirekt via någon annan by. Givetvis så är det en kostnad förknippad med att dra fiber mellan två byar som beror dels på avståndet men också på markförhållandena, etc. Beställarna (staten) vill ha den billigaste lösningen för fiberdragningen.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 29 a) och b) a) Beskriv en algoritm som löser detta problem. u Prims eller Kruskals algoritm b) Går det att härleda problemet till något känt typproblem? u Minimalt uppspännande träd
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 30 c) Visa hur din algoritm från a) fungerar på nedanstående nätverk. (Obs! Även om din algoritm i a) skulle råka vara fel så kan du få poäng på denna om du visar hur den funkar. )
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 31 Uppgift 5 - 7 p (4+2+1) Sätt in följande tal (i given ordning) i en hashtabell: 3, 4, 29, 16, 42, 6, 55, 0, 13, 2, 26, 130, och 19. a) Använd hashfunktionen h(x)= x mod y, välj ett lämpligt y. Gör detta både för öppen hashing och sluten hashing. För sluten hashing, använd linjär teknik (linear probing) för att hantera kollisioner. Redogör på ett tydligt sätt för alla kollisioner som uppkommer. b) Motivera valet av y i hashfunktionen! c) Hur kan man gå till väga om det var namn på personer (anders, bo, aron, arne, östen, sune, bertil, david, åsa, nisse, karin, berit, ada) som skulle lagras i hashtabellen? Förklara principen, dvs du behöver inte skapa hashtabellen?
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 32 Sluten hashing: u Fyllnadsgraden ska inte överstiga 75 % och y ska vara ett primtal för att få bättre spridning. Ø Ett lämpligt y kan då i detta fall vara 17. u Vid sluten hashing är hashtabellen en cirkulär vektor och när man använder linjär probing vid kollisioner sätter man in elementet på första lediga plats. u 3%17 = 3, 4%17 = 4, 29%17 = 12, 16%17 = 16, 42%27 = 8, 6%17 = 6, 55%17 = 4, 0%17 = 0, 13%17 = 13, 2%17 = 2, 26%17 = 9, 130%17 = 11, 19%17 = 2
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 33 Öppen hashing: u Tabellen är en vektor av lista u Hashtabellen ska ha max fyllnadsgrad 2*y, där y är storleken på hashtabellen. Ø I detta fall räcker det med y = 7.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 34 Uppgift 6 – 3 p u Under kursen har vi stött på flera olika typer av sökträd: Binärt sökträd, AVL, flervägssökträd (m-tree) och B-träd (2 -4 träd). Ge en tumregel till en implementatör som tar hänsyn till för- och nackdelar samt likheter och skillnader mellan de olika typerna av sökträd.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 35 Uppgift 6 u Här måste man formulera sitt svar som en tumregel annars blir det avdrag. Viktiga saker att nämna: ØAVL är den balanserade formen av Binära sökträd och B-träd är den balanserade formen av flervägssökträd. ØBinära träd har ett värde i varje nod (0 -2 barn) och flervägssökträd har flera etiketter i varje nod och kan ha/brukar ha mer än 2 barn. ØDet tar längre tid inuti noderna i ett flervägssökträd.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 36 Kursutvärdering
- Slides: 36