© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 16.

Slides:



Advertisements
Liknande presentationer
Att förstå anonymiteten (översättning från
Advertisements

Talföljder formler och summor
Att söka till högskolan
Access med Sebastian och Robert
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 4.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Vecka 47 Måndag Onsdag Vecka 48 Måndag Torsdag Fredag Vecka 49 Måndag Onsdag Torsdag Vecka 51 Onsdag 19 dec Här och nu! tenta.
Acando föreläsning Uppsala caseakademi
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 5: CPU-schemaläggning.
Sökning och sortering Linda Mannila
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
Studenter Lär Av Studenter ”SLAS”
Föreläsning 7 Analys av algoritmer T(n) och ordo
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 4.
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
Algoritmer och datastrukturer
Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning
Välkommna! till kursen HI1024 Programmering, grundkurs 8,0 hp
C-programmering ID120V William Sandqvist Länkad lista
DoA VT -07 © Anders Broberg, Lena Kallin Westin, P = ((C,F,3), (B,D,3), (C,G,4),(A,F,4), (A,R,4), (C,D,5), (E,G,6), (B,R,6), (A,E,6), (A,C,8)) A.
MEDELVÄRDE, MEDIAN & TYPVÄRDE
Datastrukturer och algoritmer
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 1.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 1.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 6 Asymtotisk analys.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 7 Träd.
Algoritm analys och rekursiva metoder kap 5,7
Växjö 15 april -04Språk & logik: Reguljära uttryck1 DAB760: Språk och logik 15/4: Finita automater och 13-15reguljära uttryck Leif Grönqvist
Studenter Lär Av Studenter ”SLAS” Karim Daho Januari 2007.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning l5 Abstrakta datatyper och algoritmdesign.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Programmering B PHP Lektion 2
1 Funktioner Nr 3 Funktionstyper, högre ordningens funktioner och polymorfism.
Från binära till hexadecimala
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Programmering B PHP Lektion 3
Vektorer (klassen Vector) Sortering
Felkalkyl Ofta mäter man inte direkt den storhet som är den intressanta, utan en grundläggande variabel som sedan används för att beräkna det som man är.
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
Listor En lista är en föränderlig ordnad samling objekt.
Känna till och ha provat metoder och verktyg för processledning
Grundläggande programmering
Problemlösning Veckodagsproblemet Gissa talet Siffersumman.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Marknadsförarens mall för att skapa köpares persona!
För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Föreläsning 11 J-uppgiften. Nästa period ägnas åt J-uppgiften. Den är individuell, dvs man jobbar på egen hand med uppgiften (inte tillsammans med labbkompisen).
Högskoleverkets kvalitetskonferens i Umeå 2007
En mycket vanlig frågeställning gäller om två storheter har ett samband eller inte, många gånger är det helt klart: y x För en mätserie som denna är det.
Logikprogrammering 21/10 Binära träd
En guide för arbeten i SO
Prioritets Köer (Priority Queues ), Graph Data Structures & Problem Solving using Java --Kap 21,14.
Ingenjörsmetodik IT & ME 2008
Välkommna! till kursen HI1024 Programmering, grundkurs 8,0 hp
Datastrukturer och algoritmer
Vara kommun Grundskoleundersökning 2014 Föräldrar 2 Levene skola årskurs 5 Antal svar 2014 för aktuell årskurs i skola: 12 Antal svar 2014 för årskurs.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 13.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
Föreläsning 16 Logik med tillämpningar Innehåll u Information kring kursvärdering och tentagenomgång u Genomgång av övningstenta 2.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 14.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14.
Anders Sjögren Data (i primärminnet) som en länkad lista datatypen för varje element i listan är en struktur, post ( struct )
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Algoritm för insättning av ett tåg i en befintlig tidtabell
Presentationens avskrift:

© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 16

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Innehåll  Snabbrepetition  Exempeltentamen  Kursutvärdering

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Mina målsättningar  Rolig och viktig kurs  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  Förstå komplexitetsbegreppet  Tid och rum  Bli bättre på att kommunicera resultat skriftligt

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Kursens mål:  Kursdeltagarna ska förvärva förtrogenhet med grundläggande element och konstruk- tioner/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.

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Kursens mål FSR:  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

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Innehållsöversikt  Algoritmer  Tids- och rumsfrågor  Designprinciper  Abstrakta datatyper  Sökning  Sortering

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Innehållsöversikt – Algoritmer  Tids och rumsfrågor  Exekvering, implementering, underhåll  Tid vs rumskomplexitet  Analys av exekveringstider oOlika sätt, vad de står för och +/- –Experimentell –Asymptotisk oT(n) för en alg => O(n) –Primitiva operationer –Okulärbesiktning oAtt beskriva algoritmer

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Innehållsöversikt – Algoritmer  Designprinciper  Idéer till 4 olika algoritmtyper oBrute force, D&C, Greedy och dynamisk programmering oExempel på varje o+/- oTypiska användningar

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Innehållsöversikt – Abstrakta Datatyper (ADT)  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)  Grundbegrepp  Vad är en organisation, sorterad ADT, mm  Primär vs. sekundär struktur  Absolut vs. relativ komplexitet  Sätt att implementera  +/-, när var hur  Komplexitet för de viktigaste operationerna  Vart hittar vi ADT typiskt  Hur olika ADT hänger ihop med varandra  Algoritmer på ADT

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Innehållsöversikt – Sökning (traversering)  Vad är traversering  Olika metoder för sökning i sekvenser  Linjär & Binär  +/-  Ställer de några krav på implementationen av ADTn?

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Innehållsöversikt – Sortering  Varför sorterar vi?  Sorterad ADT vs sortering av data  Sökningen blir snabbare…ibland  Hur kan vi sortera (olika former)  +/-  När passar dom?  Stabil sortering  5-6 olika algoritmer, analys

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Tentan  Ska kontrollera att de förväntade studieresultaten uppfyllts.  Definitionsfrågor  Begrepp  Definiera, beskriv, ge exempel,...  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,...  Resultaten kommer att skickas via mail

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Exempeltenta  Enbart skissartade svar  dessa svar skulle inte ge full poäng på en tentamen!  Tanken är att man ska få en hum vad som krävs och se hur vi tänkte när vi rättade.  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).

DoA VT -07 © Anders Broberg, Lena Kallin Westin, 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).

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Uppgift 1. (20 p) (0.5 p/ begrepp)  Typisk definitions/fakta fråga  Ges/gavs inga lösningsförslag på detta.  Varje definition kunde få upp till 4/8 p  Kommer INTE att vara med på årets tentor  Däremot kan naturligtvis frågor om enstaka begrepp finnas med.

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Uppgift p ( ) Du arbetar på ett företag som skall konstruera ett system på uppdrag av SMHI. 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.

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Uppgift p ( ) a) 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). b) Föreslå en lämplig standarddatatyp, beskriv datatypen med modell, organisation, informell gränsyta samt implementation. c) Motivera ditt val av implementation. d) Skriv en algoritmbeskrivning (pseudokod) för den valda sorteringen, där du utnyttjar gränsyteoperationerna.

DoA VT -07 © Anders Broberg, Lena Kallin Westin, a) Föreslå sorteringsalgoritm  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

DoA VT -07 © Anders Broberg, Lena Kallin Westin, b) Föreslå och beskriv en datatyp  Även här ges poäng efter vad och vilka saker man tar upp  Modell  Organisation  Implementation  Gränsytan oKorrekta metoder oKorrekta parametrar oBeskrivning 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.  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.  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.

DoA VT -07 © Anders Broberg, Lena Kallin Westin, c) Motivera val av implementation  Här ska man motivera sitt val av implementation och förklara varför man tex valt en array och inte en lista.  Om man i a) har sagt att databasen varierar i storlek bör man motivera en dynamisk datatyp här.

DoA VT -07 © Anders Broberg, Lena Kallin Westin, d) Ge en algoritmbeskrivning  Här finns det två tydliga krav:  algoritmen ska skrivas i pseudokod  man ska använda sig av gränsyteoperationerna från b)

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Uppgift 3 - 9p (3+1+5) 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:  myntens sammanlagda värde exakt uppgår till det eftersökta växelbeloppet  ett så litet antal mynt som möjligt används. Vi antar att det finns tillräckligt många mynt av varje valör.

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Uppgift 3 - 9p (3+1+5) a) Använd pseudokod för att ge en utförlig beskrivning av en girig algoritm som löser ovanstående problem. b) 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)? c) 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.

DoA VT -07 © Anders Broberg, Lena Kallin Westin, a)Girig algoritm i pseudokod (Finns många varianter!!) Algoritm Greedy(v, amount) amount beloppet som ska ges tillbaka med minimalt antal mynt. v = [cn,cn-1,...,c0] 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

DoA VT -07 © Anders Broberg, Lena Kallin Westin, b) Vad händer om myntet 12 läggs till?  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.

DoA VT -07 © Anders Broberg, Lena Kallin Westin, c) Lös växlingsproblemet m.h.a. söndra och härska.  Många trodde att det räckte att skriva om a) rekursivt...  Förslag på algoritm 1. Om vi kan växla beloppet med exakt ett mynt så gör vi det. 2. 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:  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.  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.  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,..., c0] är en vektor med de olika myntslagen // från största, cn, till minsta, c0. Antag att c0 = 1. makeChange(v, amount) // 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)) c1 = makeChange(v, j) c2 = makeChange(v, amount - j) if ((length of c1 + length of c2) < min) change = append c2 to the end of c1 min = length of change j = j + 1 return change

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Uppgift 4 – 8p (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.

DoA VT -07 © Anders Broberg, Lena Kallin Westin, a) och b) a) Beskriv en algoritm som löser detta problem.  Prims eller Kruskals algoritm b) Går det att härleda problemet till något känt typproblem?  Minimalt uppspännande träd

DoA VT -07 © Anders Broberg, Lena Kallin Westin, 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.)

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Uppgift 5 - 7p (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?

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Sluten hashing:  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.  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.  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

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Öppen hashing:  Tabellen är en vektor av lista  Hashtabellen ska ha max fyllnadsgrad 2*y, där y är storleken på hashtabellen.  I detta fall räcker det med y = 7.

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Uppgift 6 – 3 p  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.

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Uppgift 6  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.

DoA VT -07 © Anders Broberg, Lena Kallin Westin, Kursutvärdering