Algoritmer och problemlösning

Relevanta dokument
Problemlösning. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 10. Peter Dalenius Institutionen för datavetenskap

Algoritmer och datastrukturer TDA Fredrik Johansson

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

Innehåll. Mina målsättningar. Vad krävs för att nå dit? Obligatoriska uppgifter. Websajten. Datastrukturer och algoritmer

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

Programmering = modellering

TDDC74 Programmering, abstraktion och modellering. Tentamen

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.

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

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

Inledande programmering med C# (1DV402) Introduktion till programmering

Nätverksteknik A - Introduktion till Routing

Introduktion till programmering

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

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

TDDB56 DALGOPT Algoritmer och Optimering Tentamen , 8 13

Algoritmer, datastrukturer och komplexitet

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öreläsning 1. Introduktion. Vad är en algoritm?

Datastrukturer och algoritmer

Föreläsning 5 Innehåll

Algoritmer, datastrukturer och komplexitet

Introduktion till datateknik och datavetenskap

TDDC74 Programmering, abstraktion och modellering. Tentamen

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

Problemlösning och algoritmer

3. Toppkvinnor på hög Låt lådan och de två kvinnornas famnar utgöra stackarna L, K1 respektive K2. Från början finns alla kort i L.

samt lite algoritmer en kortfattad introduktion för studenter på Intro:DV

Datastrukturer. föreläsning 6. Maps 1

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Föreläsning 11 Datastrukturer (DAT037)

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

Tentamen Datastrukturer för D2 DAT 035

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

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

Tentamen Datastrukturer D DAT 035/INN960

Sökning och sortering

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

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

Algoritmer, datastrukturer och komplexitet

Hur kan programmering komma in i andra ämnen, som matematik och teknik?

Problemlösning. Planering av program. Konstruktion. Programmeringsmetaforer. Problemlösning. Programmering = Problemlösning

Föreläsning 9: Talteori

Komplexitetsklasser och repetition

TDDC74 Lab 02 Listor, sammansatta strukturer

Datastrukturer och algoritmer

I en matchning ligger varje hörn i högst en kant. I en stig ligger varje hörn i högst två kanter.

EDAA01 Programmeringsteknik - fördjupningskurs

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

TDDC74 Programmering, abstraktion och modellering. Tentamen

Tentamen: Programutveckling ht 2015

Tentamen Datastrukturer (DAT037)

Grundläggande Datalogi

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

Datalogi, grundkurs 1

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

Tentamen Datastrukturer D DAT 035/INN960

6. Ge korta beskrivningar av följande begrepp a) texteditor b) kompilator c) länkare d) interpretator e) korskompilator f) formatterare ( pretty-print

Datastrukturer och algoritmer

Tentamen Datastrukturer (DAT036)

Tentamen Datastrukturer D DAT 036/INN960

Tentamen, Algoritmer och datastrukturer

Grundläggande datavetenskap 4p

public static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } }

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

Magnus Nielsen, IDA, Linköpings universitet

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

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning 8 Innehåll

Tentamen i. TDDC67 Funktionell programmering och Lisp

Övningsmästarprov 2 + några NP-reduktioner. Algoritmer, datastrukturer och komplexitet

Problemlösning och funktioner Grundkurs i programmering med Python

Lennart Rolandsson, Uppsala universitet, Ulrica Dahlberg och Ola Helenius, NCM

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

Kursplan. System och programkonstruktion. Systems and Software Development

Signalflödesmodellen. Två (gamla) exempel: Kvadratera alla jämna löv.

Programmering II (ID1019) :00-11:00

Algoritmer, datastrukturer och komplexitet

Värmedistribution i plåt

Trädstrukturer och grafer

Datastrukturer och algoritmer

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

TDP Regler

Algoritmer. Två gränssnitt

Asymptotisk komplexitetsanalys

Algoritmer, datastrukturer och komplexitet

Teoretisk del. Facit Tentamen TDDC (6)

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Problemlösning, att ställa rätt frågor, hur man kan beskriva algoritmer och hur man skriver pseudokod.

Facit Tentamen TDDC (7)

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

Algoritmer, datastrukturer och komplexitet

SF2715 Tillämpad kombinatorik, 6hp

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

Datastrukturer och algoritmer. Innehåll. Tabell. Tabell - exempel. Gränsyta till Tabell. Tabell. Modell. Hashtabell Relation, lexikon.

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Algoritmer och datastrukturer TDA143

Programmering II (ID1019) :00-17:00

Transkript:

Algoritmer och problemlösning Perspektiv på datateknik/datavetenskap - Breddföreläsning 4 Peter Dalenius petda@idaliuse Institutionen för datavetenskap - Linköpings universitet 2005-11-04 Översikt Introduktion: Vad är en algoritm? (51) Representation: Hur ser en algoritm ut? (52) Problemlösning: Hur kommer man på en algoritm? (53) Exempel (54-55) Analys: Hur vet man att man gjort rätt? (56) Brookshear, JG (2004) Computer Science An Overview, 8th Ed Vad är en algoritm? Formell definition Ställa in klockan på mikrovågsugnen Baka en sockerkaka Bygga en grävskopa i LEGO Beräkna kontrollsiffran i ett personnummer Kontrollera om ett tal är ett primtal eller inte Sortera en uppsättning med namn i bokstavsordning An algorithm is an ordered set of unambiguous, executable steps, that defines a terminating process Beskrivning av hur man gör något Algoritmernas abstrakta natur Flödesdiagram för TV-kväll Algoritm START SLÅ PÅ TV PÅ KANAL 1 BRA? Ja TITTA EN STUND Nej F = 9C/5 + 32 (defun f (c) (+ 32 (* c 9/5))) ÖKA KANAL BRUS? Ja STÄNG AV TV Multiplicera grader Celsius med 9/5 och addera 32 Nej SLUT 1

Pseudokod för TV-kväll Pseudokod för TV-kväll (2) Slå på TV:n på kanal 1 Så länge det inte brusar Så länge programmet är intressant Titta en stund Byt till högre kanal Slå av TV:n switch(on); while isshowing() while isfun() watch(10); channel channel + 1; switch(off); Konsten att lösa problem Problemlösning 1 Förstå problemet! 2 Ta fram en algoritm för att lösa problemet! 3 Implementera algoritmen i ett program! 4 Utvärdera programmet och kontrollera om det är korrekt samt om det kan återanvändas för att lösa andra problem! Top-down och bottom-up Få in en fot, dvs börja på ett lätt ställe Jämför med liknande lösta problem Stegvis förfining Polya, George (1945) How to solve it Några enkla problem Vad är 217 + 23? 240 Exempel Tre teknologer på olika program tycker om glass Vad heter de, vad pluggar de och vilken favoritglass har de? Använd nedanstående ledtrådar 3x + 5 = 45-2x Definiera en funktion som summerar alla tal i en lista! x = 8 (defun summera (lista) ) 1 Pelle, som tycker bäst om 88:an, pluggar inte på D 2 Henrik Flod bodde i Finspång innan han började plugga 3 Studenten från Y-programmet, som för övrigt tycker bäst om Solero, heter inte Tornving 4 Det är i alla fall inte Carolina som tycker bäst om Magnum 2

Algoritm för att sy ett lapptäcke Algoritm 1 Vi ska sy ett lapptäcke med 64 rutor i fyra färger Hur gör vi det så rationellt som möjligt? 1 Sy ihop kvadraterna i en rad med varandra 2 Sy ihop de färdiga raderna med varandra Algoritm 2 klipp Algoritm 3 klipp 8 remsor 1 Konstruera fyra kvadrater av fyra remsor 2 Skär isär dem till remsor på andra ledden 3 Sy ihop remsorna 1 Sy ihop 8 remsor som är 8 kvadrater breda 2 Sy ihop remsorna till ett rör 3 Skär röret 7 gånger 4 Sprätta en söm i varje cirkel, men på olika ställen 5 Sy ihop de 8 olika remsorna Sökning i telefonkatalogen Sekvensiell sökning Andersson, Anders 174834 Bertilsson, Bertil 264918 Carlsson, Cecilia 265910 Eriksson, Erik 4760148 Fredriksson, Fredrik 174589 Hansson, Hans 4757812 Linghed, Louise 4761278 Malmström, Martin 174219 4750716 267812 204567 Svensson, Sara 4754923 Teknolog, Ture 238918 Uv, Urban 174938 Valfridsson, Vilhelm 4746717 Åkerström, Åke 173489 p 1 upprepa om p > listans längd eller målvärde < namn på position p sökning misslyckad om målvärde = namn på position p sökning lyckad p p+1 3

Sökning i telefonkatalogen (2) Binärsökning Andersson, Anders Bertilsson, Bertil Carlsson, Cecilia Eriksson, Erik Fredriksson, Fredrik Hansson, Hans Linghed, Louise Malmström, Martin Svensson, Sara Teknolog, Ture Uv, Urban Valfridsson, Vilhelm Åkerström, Åke Svensson, Sara Teknolog, Ture Uv, Urban Valfridsson, Vilhelm Åkerström, Åke om listan är tom så sökning misslyckad mittvärde <- mittersta värdet i listan om målvärde = mittvärde sökning lyckad om målvärde < mittvärde sök i första delen av listan sök i andra delen av listan Binärsökning (2) Komplexitet funktion Sök(Lista[1n], Målvärde) om Tom(Lista) så returnera Finns ej Mittvärde <- Lista[n/2] om Målvärde = Mittvärde returnera aktuellt telefonnummer om Målvärde < Mittvärde Sök(Lista[1n/2-1], Målvärde) Sök(Lista[n/2+1n], Målvärde) Tidskomplexitet Hur mycket längre tid tar algoritmen om vi ger den dubbelt så stora indata? Rumskomplexitet Hur mycket mer extra minne kräver algoritmen om vi ger den dubbelt så stora indata? Komplexitet mäts ungefärligt O(1) O(lg n) O(n) O(n 2 ) Tidskomplexitet för lapptäcken Tidskomplexitet för sökalgoritmer antal sömmar 12000 10000 8000 algoritm 1: n 2 6000 4000 2000 algoritm 3: 3n 0 0 10 20 30 40 50 60 70 80 90 100 antal lappar per sida antal jämförelser 60 50 40 sekvensiell: n/2 30 20 binär: lg n 10 0 0 10 20 30 40 50 60 70 80 90 listans längd 4

Framtida kurser TDDB56 Algoritmer och optimering (D) TDDB57 Datastrukturer och algoritmer (C) TDDA32 Konstruktion och analys av algoritmer TDDB41 Komplexitetsanalys 5