Algoritmer och datastrukturer TDA Fredrik Johansson

Relevanta dokument
Algoritmer och datastrukturer TDA143

Algoritmer och problemlösning

Lösningar Datastrukturer TDA

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

Datastrukturer. föreläsning 3. Stacks 1

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

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

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

Föreläsning Datastrukturer (DAT037)

Datastrukturer och algoritmer. Föreläsning 4 Test, Stack och Kö

Tommy Färnqvist, IDA, Linköpings universitet

Tentamen Datastrukturer för D2 DAT 035

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT036)

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

Lösningsförslag till tentamen Datastrukturer, DAT037,

Magnus Nielsen, IDA, Linköpings universitet

Några svar till TDDC70/91 Datastrukturer och algoritmer

Föreläsning 8 Datastrukturer (DAT037)

Datastrukturer. föreläsning 9. Maps 1

Föreläsning Datastrukturer (DAT037)

Föreläsning 11 Datastrukturer (DAT037)

Föreläsning 8 Datastrukturer (DAT037)

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?

Tentamen i Algoritmer & Datastrukturer i Java

Datastrukturer. föreläsning 9. Maps 1

Datastrukturer och algoritmer

Sökning och sortering

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT036)

Lösningsförslag till tentamen Datastrukturer, DAT037,

Föreläsning 3 Datastrukturer (DAT037)

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

Föreläsning 9 Innehåll

Träd Hierarkiska strukturer

Föreläsning 6 Datastrukturer (DAT037)

Programmering för språkteknologer II, HT2014. Rum

Algoritmer, datastrukturer och komplexitet

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

Lösning av några vanliga rekurrensekvationer

Datastrukturer och algoritmer

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd

Tentamen Datastrukturer D DAT 036/INN960

Datastrukturer och algoritmer

Problemlösning och algoritmer

Tentamen, Algoritmer och datastrukturer

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:

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Föreläsning 7 Datastrukturer (DAT037)

Föreläsning 13 Datastrukturer (DAT037)

Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på

Tentamen Datastrukturer D DAT 036/INN960

Tentamen Datastrukturer (DAT036)

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

Sortering. Brute-force. Sortering Ordna element enligt relation mellan nyckelvärden

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

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

Tentamen i Algoritmer & Datastrukturer i Java

Fredag 10 juni 2016 kl 8 12

Föreläsning 13 Datastrukturer (DAT037)

DAI2 (TIDAL) + I2 (TKIEK)

Vad har vi pratat om i kursen?

Tentamen: Programutveckling ht 2015

Föreläsning 10 Datastrukturer (DAT037)

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

Datastrukturer och algoritmer

Datastrukturer och algoritmer

Föreläsning 7. Träd och binära sökträd

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2

Ordnad lista. Listor... Ordnad lista... Ordnad lista typer

Föreläsning Datastrukturer (DAT037)

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014

Tentamen Datastrukturer (DAT036)

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

Programmering i C++ EDAF30 Dynamiska datastrukturer. EDAF30 (Föreläsning 11) HT / 34

SORTERING OCH SÖKNING

Tentamen Datastrukturer D DAT 035/INN960

Tentamen Datastrukturer (DAT037)

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

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

Programmering i C++ EDA623 Dynamiska datastrukturer. EDA623 (Föreläsning 11) HT / 31

Föreläsning 6 Datastrukturer (DAT037)

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

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

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer, DAT037 (DAT036)

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

Tentamen TEN1 HI

Dugga Datastrukturer (DAT036)

Algoritmer. Två gränssnitt

Tentamen Datastrukturer, DAT037 (DAT036)

Trädstrukturer och grafer

Transkript:

Algoritmer och datastrukturer TDA143 2015-02- 18 Fredrik Johansson

Algoritmer Informell beskrivning E" antal steg som beskriver hur en uppgi5 görs. A set of steps that defines how a task is performed. Formell beskrivning: En algoritm är e" ordnat sä" av entydiga, u@örbara steg som beskriver en terminerande process Brookshear: Computer Science, An overview

Exempel: Sortering 1. Antag första siffran sorterad 2. HiRa första osorterade siffra 3. HiRa rär plats i sorterad del 4. Upprepa med resten av listan 5 2 6 1 3 5 6 1 3 2 2 5 6 1 3 2 5 1 3 6

Algoritmer & representaxoner Algoritm: abstrakt idé för ar lösa er problem RepresentaCon: formulering av den abstrakta idén som Xll exempel: Program Engelska Diagram Pseudokod Formel

RepresentaXon: Fahrenheit a) MulXply the temperature in Celcius by 9/5 and add 32 to the product b) F = 9/5*C + 32 c) funcxon fahrenheit(c) { return 9/5*c + 32; }

Liknelse: bakning Algoritm RepresentaXon Idé om hur man bakar äpplepaj Recept Implementering Bageri

Pseudokod Vanligaste representaxonen MellanXng mellan naturligt och programspråk procedure SeqSearch (List, Value) while ( entries lek to be considered) do TestEntry <- next entry from List if ( Value = TestEntry ) then return success return search failed

Analys av algoritmer Korrekthet: löser algoritmen problemet? EffekCvitet: hur lång Xd tar det ar köra algoritmen?

Tidskomplexitet Algoritmers körxd mäts i antal operaconer: addiconer Clldelningar Inte i sekunder! Varför? För en given input- storlek (t ex antal element i lista), hur många operaxoner upörs?

Exempel: SeqSearch procedure SeqSearch (List, Value) while ( entries lek to be considered) do TestEntry <- next entry from List if ( Value = TestEntry ) then return success return search failed Om listan har n element behövs (i värsta fallet) n uppslag n Xlldelningar n jämförelser 1 returnering = 3n + 1 operaxoner! Kan vi göra bärre?

Binärsökning Om listan är sorterad procedure BinSearch (List, Value) if( List empty ) return failed else TestEntry <- middle entry of List if( Value = TestEntry ) return success if( Value > TestEntry ) return BinSearch( RightHalfofList, Value) if( Value < TestEntry ) return BinSearch( LekHalfofList, Value)

Binärsökning (forts.) Antalet halveringar av n saker = log 2 n Binärsökning kräver bara 5 log 2 n + 2 operaxoner i värsta fallet

Komplexitet och Big- O Vanligen räknar man inte exakta antal. Istället beräknar man den asymptocska komplexiteten hur antalet växer med data! Exempel: Om vi dubblar antalet element, hur mycket längre Xd tar det?

Big- O En funkxon g(n) är O(f(n)) om det finns en konstant c>0 så ar för alla n n 0 0 g(n) c f(n) f(n) g(n) n 0

InsäRningssortering procedure Inser-onSort( List ) N <- 2 while ( N LengthOfList ) do Select the N:th entry in the List as the pivot Move pivot to a temporary locaxon leaving a hole while( (exists entry lek of the hole ) and (entry > pivot) do Move the entry down into the hole Move the pivot into the remaining hole N <- N + 1

Sortering: Xdskomplexitet InsäRningssortering, grov analys Två nästlade for- loopar med som mest n iteraxoner => O(n 2 ) operaxoner Merge sort: O(n log n)

Algorithmer och problemlösning Förstå problemet UppräRa en plan för ar lösa problemet (få en idé) Upör planen (designa en algoritm och programmera) George Polya s 4 faser av problemlösning Utvärdera

Algoritmer och problemlösning Vissa problem är olösbara (undecidable) och vissa problem är hopplöst svåra (NP- complete)! Andra problem är redan lösta standardproblem!

Exempel: Schemaläggning Du har får n stycken händelser ar schemalägga under en dag. Inga händelser får ske samxdigt, så några måste hoppas över. DiR jobb är nu ar schemalägga så många händelser som möjligt

Schemaläggning 6:00 7:00 8:00 9:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00

Idé: kortast händelser först: 3! 6:00 7:00 8:00 9:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00

Idé: Xdigast slu d först: 4! 6:00 7:00 8:00 9:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00

Idé: Xdigast slu d först: 4! OpXmal strategi! 6:00 7:00 8:00 9:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00

AR angripa problem Hur hirar man rär algoritm? Top- down: förfina lösningen gradvis BoRom- up: lös delar och kombinera HiRa liknande problem med kända lösningar

Exempel: Travelling salesman HiRa den kortaste vägen mellan alla städer så ar varje stad endast besöks en gång 10 5 km 6 5 6 4 7 8 9

Exempel: Travelling salesman Urtypen för er svårt problem. TSP är er så kallat NP- kompler problem NP- komplera problem är lika på flera sär Inget problem har en effekxv algoritm (än) Om er problem löses effekxvt kan alla göra det * EffekXvt betyder ar det kan lösas på Xd som växer polynomiellt med antalet städer, i motsats Xll exponencellt

Designprinciper för algoritmer URömmande sökning (brute- force) Giriga algoritmer Divide- and- conquer Dynamic programming (HeurisXker)

Datastrukturer Mål: UnderläRa dataåtkomst för algoritmer för ökad effekcvitet Exempel: Fält Listor Köer

Datastrukturer & algoritmer Algoritm + passande ds. => Snabbt program Algoritm + dålig ds. => Långsamt program Ibland designas algoritmer runt en specifik datastruktur Ibland uppfinns nya datastrukturer för ar hjälpa en algoritm

Datastrukturer Fält Listor Köer Träd Grafer Stack DicXonaries Mängder KombinaXoner

Stack OperaXoner push lägg Xll överst pop ta bort och returnera översta Exempel: Skriva ut listor baklänges

Kö OperaXoner Enqueue lägg Xll första dequeue ta bort och returnera sista Exempel: Verkliga köer

Träd Väldigt allmän datastrukturer Rotnod Noder och länkar Intern nod Föräldrar och barn Löv Subträd Löv Löv

Binära sökträd Vanligt form av träd Snabb insärning och borragning i självsorterande strukture Max 2 barn per nod Vänster = mindre, Höger = större 5 2 7

Binärsökning igen! procedure BinSearch( Tree, Value ) if( root pointer == null ) return Search failed else TestEntry <- value of root node if ( Value = TestEntry ) return Search successful if ( Value > TestEntry ) BinSearch( RightSubtree, Value ) else BinSearch( LekSubtree, Value )

SammanfaRning Algoritmer är en vikxg del av problemlösning Datastructures är nödvändiga verktyg för ar implementera effekxva algoritmer Många problem har standardiserade lösningar Många (andra) problem är väldigt svåra Använd designprinciper