Problemlösning och algoritmer
|
|
- Ulla Gunnarsson
- för 8 år sedan
- Visningar:
Transkript
1 Problemlösning och algoritmer Human Centered Systems Inst. för datavetenskap Linköpings universitet
2 Översikt Stegvis förfining Pseudokod Flödesdiagram Dekomposition KISS regeln Procedurell dekomposition DRY regeln Algoritmer Sortering och sökning
3 Att konstruera ett program... Vi skulle vilja ha... Iterera 1. Förstå och beskriv problemet/kraven/behoven 2. Gör en principiell lösning för problemet 3. Skriv källkod som implementerar lösningen 4. Testa och utvärdera/verifiera din lösning Uppgift Lösning Ok jag fixar!
4 Stegvis förfining Metod för att skapa ett program från ett analyserat problem ingen garanti det är ett kreativ process Formulera programmet på en enkel informell nivå Börja i vanlig svenska Förfina olika steg tills en mekanisk nivå är nådd Formalisera din svenska gradvis så att den blir alltmer källkodslik Kallas även top down design Pseudokod: mix av svenska och programmeringstermer Flödesdiagram: schematisk bild av programmet
5 Exempel: skriv ut x² i tabell Uppgift: skapa en tabell med uträkning av x² för varje x mellan 1 och 20. Informell lösning för lösning i konsol: 1 > 1 2 > 4 3 > 9 etc 1. Skriv ut tabellrubrik för tvåkolumntabell 2. För varje tal x mellan 1 och 20: skriv ut värdet på x i kolumn ett och värdet på x² i kolumn 2 3. Skriv ut tabellfot
6 Exempel 2: flödesschema Start Skriv ut rubrik x = 1 false x <= 20 true Skriv ut x och x² x = x + 1 Skriv ut fot Slut
7 Exempel 2: implementation table_size = 10; print 'x\tx^2\n' for x in range(1,table_size): print x + '\t' + x*x print ' ' x x^
8 Programmeringens hantverk Controlling complexity is the essence of computer programming Brian Kernighan
9 Dekomposition Uppdelning av ett uppgift/program i delar Uppdelningen gör varje del enklare Varje del bör ha ett tydligt och enkelt syfte Komposition av delarna ger helheten Exempel på dekomposition: Variabler lagrar delresultat Varje sats löser en liten avgränsad uppgift Funktioner separerar ut delar av programmet under nya namn
10 KISS regeln: Keep It Simple, Stupid! Komplex uppgift = kombination av flera enkla deluppgifter Genom att dela upp programmets totala uppgift i delar håller vi varje deluppgift avgränsat och enkelt. Vi löser större uppgifter genom att kombinera lösningar på flera enklare uppgifter. Skriv aldrig komplex källkod fel sätt att lösa komplexa uppgifter! Kumulativ lösning: systematiskt nerifrån och upp
11 Dekomposition på satsnivå exempel 1 Komplex lösning: print 'Uträknat svar är ' + str((x + y) / 4.3) Uppdelad lösning: result = (x + y) / 4.3 response = 'Uträknat svar är ' + str(result) print response
12 Dekomposition på satsnivå exempel 2 Uppgift: vi vill göra en uträkning för varje tal 0..9, samt en annan uträkning för varje jämnt tal. Komplex smart lösning: results_1 = [] result_2 = [] for x in range(10): results_1.append(x * 3 / 5.0) if (x % 2 == 0): results_2.append(x * 4 / 3.0)
13 Dekomposition på satsnivå ex 2 (forts) Uppdelad lösning: results_1 = [] for x in range(10): result = x * 3 / 5.0 results_1.append(result) results_2 = [] for x in range(0,10, 2): result = x * 4 / 3.0 results_2.append(result) Delproblemen tydligare Ev lite mindre effektiv Mer läsbara segment Vi skulle kunna införa två funktioner... OBS: vi slipper en if sats
14 Procedurell dekomposition def calculate_results_1(): results_1 = [] for x in range(10): result = x * 3 / 5.0 results_1.append(result) return results_1 def calculate_results_2(): results_2 = [] for x in range(0,10, 2): result = x * 4 / 3.0 results_2.append(result) return results_2 results_1 = calculate_results_1() results_2 = calculate_results_2() present_results(results_1) present_results(results_2) Ortogonalitet: en funktion ett syfte Håll isär presentation och innehåll T ex I/O och uträkningar Göm information i olika funktioner Kort och abstrakt/läsbar källkod. Liknar pseudokoden!
15 DRY regeln: Don't Repeat Yourself DRY = Varje bit av information ska finnas representerad endast en gång i ett program. Exempel på information: namn på användare, färger i gränssnittet, storlek på fonter, utträkningar, format, etc. Motivering: Duplicering av information gör det svårt att underhålla ett program. Vid ändring av ett program vill man ändra enbart på ett ställe.
16 DRY genom att införa en funktion Hej värld! Hej värld! En lösning med två förekomster: print 'Hej Värld!' print '++++++' print 'Hej Värld!' Vi skriver ut Hej värld två gånger Däremellan skriver i Hur få uskriften att bara finnas på ett? ställe i källkoden?
17 DRY genom att införa en funktion (forts) def hello_world() print 'Hej värld!' helloworld() print '++++++' helloworld() två anrop görs till samma funktion 'Hej värld' står bara på ett ställe i programmet Hej värld! Hej värld!
18 Algoritmer Sortering, sökning och att göra egna
19 Att skapa och studera algoritmer Hitta rätt uppgift systemdesign Ett bra användargränssnitt rätt program det som ofta behövs... Hitta rätt lösning skapa en algoritm Rätt och bra lösningar för kända uppgifter/problem. Det finns normalt flera bra lösningar för en viss uppgift Algoritmer är (i princip) oberoende av programmeringsspråk Vi lär oss skapa algoritmer bl a genom att studera kända sådana, t ex sökning och sortering I Laboration 5 6 finns uppgifter att arbeta med liststrukturer som är algoritmiskt svåra
20 Linjär sökning i osorterad vektor 99? Träff! Index=4 [15, 3, 4, 9, 99, 81, 5, 78] def linear_search(x, seq): for index in range(len(seq)): if x == seq[index]: return index return -1 5 jämförelser: värsta fallet 8 dvs linjärt i termer av antal element
21 Trädstrukturer vanligt begrepp inom programmering Trädstrukter används Uttryck/term: Trädstruktur: (1 + ( 3 * 4)) / 2 / + 2 t ex för att beskriva uttryck/termer Hur program arbetar Grafer består av noder och bågar Träd är en graf där vi har 1 * 3 4 En nod utan ingående bågar, roten Riktade pilar utan loopar och flätor T ex som lista av listor: [[1, '+', [3, '*', 4]], '/', 2]
22 Binär sökning i sorterad vektor Hitta 99? [3, 4, 5, 9, 15, 78, 81, 99, 101] (0,1) 3 4 (0,3) 5 15 (2,3) (0,8) (4,6) (5,8) 99 (6,8) Intervallhalvering testa mot elementet i mitten Skär bort den halva där elementet inte kan finnas 9 (3,3) 101 (8,8) 2 jämförelser värsta fallet log_2(9) dvs logaritmiskt i termer av antal element Sluta när elementet är nått eller arrayen tom
23 Implementation bin_search def bin_search(x, seq): low = 0 high = len(seq) - 1 while low <= high : mid = (low + high) / 2 if seq[mid] < x: low = mid + 1 elif seq[mid] > x: high = mid - 1 else: return mid; return -1;
24 Sortering Givet en osorterad vektor sortera dess element Ex: oordnat datamaterial sortera upp det tidsmässigt + områdesmässigt Sorterar ofta på nyckel dvs en specifik kolumn in place : utan att införa hjälpvektorer swap: byta plats på två element i en array I praktiken: ofta bra att hålla data sorterat enklare att hitta både för algoritmer och människor specialfall: ett nytt element i sorterad vektor
25 Bubble Sort Exempel: :: :: :: :: :: :: :: :: :: Iterera vä höger För varje loop låt det parvis minsta elementet bubbla åt vänster Upprepa tills alla element bubblat Nackdel: många swaps
26 Selection Sort Exempel: :: :: :: :: :: :: :: :: :: Input: array av längd n Hitta minsta elementen och lägg det först Efter i steg är de i första sorterade. Upprepa för arrayen i+1 till n
27 Implementation av selection sort def selection_sort(seq): for i in range(0, len (seq)): low = i for j in range(i + 1, len(seq)): if seq[j] < seq[low]: low = j seq[i], seq[low] = seq[low], seq[i]
28 Quicksort Pivotvärdet [8, 6, 11, 9, 3, 6, 2, 7, 4] [4, 7, 2, 6, 3, 6]::[8]::[9, 11] [3, 2]::[4]::[6, 6, 7] [2]::[3]::[] []::[2]::[] []::[6, 6]::[7] []::[7]::[] []::[9]::[11] []::[11]::[] [2, 3, 4, 6, 6, 7, 8, 9, 11] Hitta ett pivot värde och sortera runt det Upprepa för varje dellista Snabbare i genomsnitt än Bubble och Selection Naturligt en rekursiv lösning Funktionen anropar sig själv för varje dellista mindre än::lika med::större än
29 Beräkningskomplexitet Ordo funktionen: antal exekveringssteg i termer av indatas storlek 1) Vad beskriver variabel storlek på indata? 2) Räkna steg givet en viss obekant storlek n summa index/arraylängd möjliga variable indatastorheter Exempel på Ordo: Linjär sökning: O(n) Binärsökning: O(log n) Bubblesort, Selectionsort och Quicksort är i värsta fallet O(n²) Quicksort: O(n log(n)) i medelfallet (vilket är bäst) Delmängd problem är O(2^n)
30 Summering Stegvis förfining: från uppgift till lösning med pseudokod och flödesdiagram Dekomposition: att konstruera program på rätt sätt KISS och DRY regeln: håll det enkelt och duplicera inte Lär dig algoritmer genom att studera sökning och sortering komplexitet
Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem
Översikt Stegvis förfining Pseudokod Flödesdiagram Dekomposition KISS-regeln Procedurell dekomposition DRY-regeln Algoritmer Sortering och sökning Stegvis förfining Metod för att skapa ett program från
Sortering. Brute-force. Sortering Ordna element enligt relation mellan nyckelvärden
Sortering Brute-force Sortering Ordna element enligt relation mellan nyckelvärden Flera olika algoritmer med olika fördelar Brute-force Gå igenom alla permutationer och hitta den där elementen ligger i
Sökning och sortering
Sökning och sortering Programmering för språkteknologer 2 Sara Stymne 2013-09-16 Idag Sökning Analys av algoritmer komplexitet Sortering Vad är sökning? Sökning innebär att hitta ett värde i en samling
Magnus Nielsen, IDA, Linköpings universitet
Föreläsning 7 Introduktion till sortering TDDC91,TDDE22,725G97: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 24 september 2018 Magnus Nielsen, IDA, Linköpings universitet 7.1 1
Programmering för språkteknologer II, HT2014. Rum
Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Sökalgoritmer
TDDI16 Datastrukturer och algoritmer. Algoritmanalys
TDDI16 Datastrukturer och algoritmer Algoritmanalys 2017-08-28 2 Översikt Skäl för att analysera algoritmer Olika fall att tänka på Medelfall Bästa Värsta Metoder för analys 2017-08-28 3 Skäl till att
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Sortering Selectionsort, Bubblesort,
Algoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 9 oktober 2015 Anton Grensjö ADK Övning 6 9 oktober 2015 1 / 23 Översikt Kursplanering Ö5: Grafalgoritmer och undre
Föreläsning 5 Innehåll
Föreläsning 5 Innehåll Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Datavetenskap (LTH) Föreläsning 5 VT 2019 1 / 39 Val av algoritm och datastruktur
Algoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 4 oktober 2017 1 Idag Algoritmkonstruktion (lite blandat) Redovisning och inlämning av labbteori 3 2 Uppgifter Uppgift
Föreläsning 11 Datastrukturer (DAT037)
Föreläsning 11 Datastrukturer (DAT037) Fredrik Lindblad 1 4 december 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Prioritetskö Heap Representation som
Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016
Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016 Algoritmanalys Inledning Exempel 1: x n När vi talade om rekursion presenterade vi två olika sätt att beräkna x n, ett iterativt: x n =
Laboration: Whitebox- och blackboxtesting
Tilda11 höstterminen 2011 Laboration: Whitebox- och blackboxtesting Mål med laborationen Du ska lära dig begreppen white-box testing och black-box testing Du ska öva dig på att konstruera testfall Du ska
Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista
Sökning och sortering Sökning i oordnad lista Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man mycket data
Teoretisk del. Facit Tentamen TDDC (6)
Facit Tentamen TDDC30 2014-08-29 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är skillnaden mellan synligheterna public, private och protected? (1p) Svar:public: Nåbar för
Tommy Färnqvist, IDA, Linköpings universitet
Föreläsning 8 Sortering och urval TDDC70/91: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 1 oktober 2013 Tommy Färnqvist, IDA, Linköpings universitet 8.1 Innehåll Innehåll 1 Sortering
Lösningar Datastrukturer TDA
Lösningar Datastrukturer TDA416 2016 12 21 roblem 1. roblem 2. a) Falskt. Urvalssortering gör alltid samma mängd av jobb. b) Sant. Genom att ha en referens till sista och första elementet, kan man nå både
Föreläsning 1: Dekomposition, giriga algoritmer och dynamisk programmering
2D1458, Problemlösning och programmering under press Föreläsning 1: Dekomposition, giriga algoritmer och dynamisk programmering Datum: 2007-09-04 Skribent(er): Anders Malm-Nilsson och Niklas Nummelin Föreläsare:
Problemlösning och funktioner Grundkurs i programmering med Python
Hösten 2009 Dagens lektion Problemlösningsstrategier Repetition av funktioner Mer om funktioner 2 Problemlösningsstrategier 3 PROBLEMLÖSNINGSSTRATEGIER Strategier Det finns ett flertal olika ansatser till
Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6
Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6? DAGENS AGENDA Komplexitet Ordobegreppet Komplexitetsklasser Loopar Datastrukturer Några nyttiga regler OBS! Idag jobbar
Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap
Hur man programmerar TDDC66 Datorsystem och programmering Föreläsning 3 Peter Dalenius Institutionen för datavetenskap 2014-09-05 Översikt Problemlösning: Hur ska man tänka? Datatyper Listor (forsätter
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 7 Innehåll Rekursion Rekursivt tänkande: Hur många år fyller du? Ett år mer än förra året! Rekursion Rekursiv problemlösning Binärsökning Generiska metoder Rekursiv problemlösning: Dela upp
Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek
Föreläsning 5 Innehåll Val av algoritm och datastruktur Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Det räcker inte med att en algoritm är korrekt
Programmering för språkteknologer II. OH-serie: Sökning och sortering. Algoritm
Programmering för språkteknologer II OH-serie: Sökning och sortering Mats Dahllöf Sökning och sortering Sökning: lokalisera objekt i samlingar. Finns ett visst värde? I så fall: var? Sortering: placera
Algoritmer och datastrukturer TDA Fredrik Johansson
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.
Föreläsning 5: Dynamisk programmering
Föreläsning 5: Dynamisk programmering Vi betraktar en typ av problem vi tidigare sett: Indata: En uppsättning intervall [s i,f i ] med vikt w i. Mål: Att hitta en uppsättning icke överlappande intervall
Tentamen Datastrukturer, DAT037 (DAT036)
Tentamen Datastrukturer, DAT037 (DAT036) Datum och tid för tentamen: 2017-01-11, 14:00 18:00. Ansvarig: Fredrik Lindblad. Nås på tel nr. 031-772 2038. Besöker tentamenssalarna ca 15:00 och ca 17:00. Godkända
Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)
Objektorienterad programmering Föreläsning 8 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda (halvdag) Objektorienterad programutveckling Algoritmer Algoritmkonstruktionerna Relationer
Föreläsning 1. Introduktion. Vad är en algoritm?
Några exempel på algoritmer. Föreläsning 1. Introduktion Vad är en algoritm? 1. Häll 1 dl havregryn och ett kryddmått salt i 2 1 2 dl kallt vatten. Koka upp och kocka gröten ca 3minuter. Rör om då och
6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:
6 Rekursion 6.1 Rekursionens fyra principer Problem löses genom: 1. förenkling med hjälp av "sig själv". 2. att varje rekursionssteg löser ett identiskt men mindre problem. 3. att det finns ett speciellt
Lösningsförslag för tentamen i Datastrukturer (DAT037) från
Lösningsförslag för tentamen i Datastrukturer (DAT7) från --9 Nils Anders Danielsson. Träd- och köoperationerna har alla tidskomplexiteten O(log s), där s är antalet element i trädet/kön (notera att jämförelser
Algoritmer och problemlösning
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:
Föreläsning 5: Grafer Del 1
2D1458, Problemlösning och programmering under press Föreläsning 5: Grafer Del 1 Datum: 2006-10-02 Skribent(er): Henrik Sjögren, Patrik Glas Föreläsare: Gunnar Kreitz Den här föreläsningen var den första
Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1
Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut
Tentamen med lösningsförslag Datastrukturer för D2 DAT 035
Tentamen med lösningsförslag Datastrukturer för D2 DAT 035 17 december 2005 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.)
Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4
Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa
Vad har vi pratat om i kursen?
Vad har vi pratat om i kursen? Föreläsning 1 & 2 Systemminnet och systemstacken Rekursion Abstrakta datatyper Föreläsning 3 ADT:n Länkad lista Föreläsning 4 ADT:n Kö ADT:n Stack Föreläsning 5 Komplexitet
Dekomposition och dynamisk programmering
Algoritmer, datastrukturer och komplexitet, hösten 2016 Uppgifter till övning 3 Dekomposition och dynamisk programmering Max och min med dekomposition I vektorn v[1..n] ligger n tal. Konstruera en dekompositionsalgoritm
Träd Hierarkiska strukturer
Träd Hierarkiska strukturer a 1 a 2 a 3 a 4 a 2 a 5 a 6 a 7 Hierarki: Korta vägar till många Hur korta? Linjär lista: n 2 Träd: Antal element på avståndet m: g m a 1 a 3 a 8 a 12 m = log g n a 9 a 10 Väglängden
Datalogi för E Övning 3
Datalogi för E Övning 3 Mikael Huss hussm@nada.kth.se AlbaNova, Roslagstullsbacken 35 08-790 62 26 Kurshemsida: http://www.csc.kth.se/utbildning/kth/kurser/2d1343/datae06 Dagens program Att skapa egna
Fredag 10 juni 2016 kl 8 12
KTH CSC, Alexander Baltatzis DD1320/1321 Lösningsförslag Fredag 10 juni 2016 kl 8 12 Hjälpmedel: En algoritmbok (ej pythonkramaren) och ditt eget formelblad. För betyg E krävs att alla E-uppgifter är godkända,
Föreläsning 4 Datastrukturer (DAT037)
Föreläsning 4 Datastrukturer (DAT07) Fredrik Lindblad 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat07 1 Innehåll
Läsöversikt. Föreläsningar 2-6. Genomförande av laborationer
Läsöversikt LP Part I Part IV, kap 18 PL: kap 1, 2 (Sem 1), 3 (Sem 3), 5.1-5.3, 5.8 intro, 6.1-6.3, 7.1-7.3, 8.1-8.3, 9.1-9.2 Wikipedia kan användas som stöd för PL-avsnitten. Föreläsningar 2-6 Genomförande
Lösningsförslag till tentamen Datastrukturer, DAT037,
Lösningsförslag till tentamen Datastrukturer, DAT037, 2018-01-10 1. Båda looparna upprepas n gånger. s.pop() tar O(1), eventuellt amorterat. t.add() tar O(log i) för i:te iterationen av första loopen.
public static void mystery(int n) { if (n > 0){ mystery(n-1); System.out.print(n * 4); mystery(n-1); } }
Rekursion 25 7 Rekursion Tema: Rekursiva algoritmer. Litteratur: Avsnitt 5.1 5.5 (7.1 7.5 i gamla upplagan) samt i bilderna från föreläsning 6. U 59. Man kan definiera potensfunktionen x n (n heltal 0)
Datastrukturer och algoritmer
Innehåll Föreläsning 5 Algoritmer Experimentell komplexitetsanalys Kapitel 2.1-2.2, Kapitel 12.1-12.4 Algoritmer Algoritm Definition: Algoritm är en noggrann plan, en metod för att stegvis utföra något
Tentamen i Algoritmer & Datastrukturer i Java
Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2008-05-27 Skrivtid: 4 timmar Kontakt person: Nicolina Månsson, tel. 035-167487 Poäng / Betyg:
Datastrukturer och algoritmer
Datastrukturer och algoritmer Föreläsning 5 Algoritmer & Analys av Algoritmer Algoritmer Vad är det? Innehåll Mer formellt om algoritmer beräkningsbarhet Att beskriva algoritmer Analysera algoritmer Exekveringstid,
Sökning och sortering. Sökning och sortering - definitioner. Sökning i oordnad lista. Sökning med vaktpost i oordnad lista
Sökning och sortering Sökning och sortering - definitioner Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man
Sökning och sortering
Sökning och sortering Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man mycket data och många sökningar måste
Tentamen Datastrukturer D DAT 035/INN960
Tentamen Datastrukturer D DAT 035/INN960 22 december 2006 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser,
Algoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 7 Anton Grensjö grensjo@csc.kth.se 14 oktober 2015 Anton Grensjö ADK Övning 7 14 oktober 2015 1 / 28 Översikt Kursplanering Ö6: Algoritmkonstruktion F19:
F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander
F9 - Polymorfism ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Polymorfism - flerformighet Vi vet vad metoden heter (signaturen) Men vi vet inte vid anropet exakt vilken metod som faktiskt
Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):
Översikt Motivering Syntax och semantik Imperativa språkets byggstenar och Python Datatyper Tilldelning och uttryck Kontrollstrukturer (på satsnivå) Subprogram Relaterade avsnitt: PL 3.1-3.2, 5.1-5.3,
Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet
Föreläsning 5 Innehåll Algoritmer och effektivitet Algoritmer och effektivitet Att bedöma, mäta och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Undervisningsmoment: föreläsning 5, övningsuppgifter
Sätt att skriva ut binärträd
Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer
Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)
Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag) 21 december 2007 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng
if (n==null) { return null; } else { return new Node(n.data, copy(n.next));
Inledning I bilagor finns ett antal mer eller mindre ofullständiga klasser. Klassen List innehåller några grundläggande komponenter för att skapa och hantera enkellänkade listor av heltal. Listorna hålls
Föreläsning 11 Innehåll
Föreläsning 11 Innehåll Sortering O(n 2 )-algoritmer: urvalssortering insättningssortering O(n log n)-algoritmer: Mergesort Quicksort Heapsort behandlades i samband med prioritetsköer. Undervisningsmoment:
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Algoritmanalys Tidskomplexitet, Rumskomplexitet
Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python
Repetition i Python 3 Exemplen fac Orginalet I Scheme använde vi rekursion för all slags repetition. Efterom Scheme är ett funktionellt språk återsänder alla språkkonstruktioner ett värde men i Python
Tentamen kl Uppgift 4. Uppgift 5
2D344 Grundläggande Datalogi för F Tentamen 2003-03-0 kl 4.00 9.00 Inga hjälpmedel. Endast ett svarsalternativ på varje fråga är korrekt. Felaktigt svar eller felaktigt antal ikryssade svarsalternativ
Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.
Programmering för Språkteknologer II Markus Saers markus.saers@lingfil.uu.se Rum -040 stp.lingfil.uu.se/~markuss/ht0/pst Innehåll Associativa datastrukturer Hashtabeller Sökträd Implementationsdetaljer
String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning
Dagens Agenda String [] argv String [] argv Arrayer och Strängar fortsättning Booleska operatorer if, for, while satser Introduktion till algoritmer public static void main(string [] argv) argv är variabelnamnet
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 10 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 10 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Lägre gräns för sortering Count sort,
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
Innehåll Föreläsning 12 Sökträd Sökning Sökning och Sökträd 383 384 Binärt sökträd Används för sökning i linjära samlingar av dataobjekt, specifikt för att konstruera tabeller och lexikon. Organisation:
Föreläsning 2 Datastrukturer (DAT037)
Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-02 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Tidskomplexitet
DAI2 (TIDAL) + I2 (TKIEK)
TNTMN KURSNMN PROGRM: KURSTKNING XMINTOR lgoritmer och datastrukturer I2 (TIL) + I2 (TKIK) 2017/2018, lp 4 LT75 Uno Holmer TI ÖR TNTMN redagen den 1/8 2018, 08.0-12.0 HJÄLPML NSVRIG LÄRR atastrukturer
Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?
Föreläsning 1. Introduktion och sökning i graf Vad är en algoritm? Först: Vad är ett problem? Består av indata och ett mål. Indata: [En beskrivning av en struktur.] Mål: [Kan vara Ja/Nej, ett tal eller
Grundläggande datalogi - Övning 1
Grundläggande datalogi - Övning 1 Björn Terelius October 30, 2008 Python är ett tolkat språk som kan köras interaktivt. tcs-ray:~/grudat08>python >>> 11+3*4 23 >>> a = 15 >>> b=a >>> print "a =", a, "b
Grundläggande datalogi - Övning 4
Grundläggande datalogi - Övning 4 Björn Terelius November 21, 2008 Definitioner Olika mått på komplexitet Definition En funktion f sägs vara O(g) om det existerar konstanter c, N så att f (n) < cg(n) för
Föreläsning ALGORITMER: SÖKNING, REGISTRERING, SORTERING
Föreläsning 11 12 ALGORITMER: SÖKNING, REGISTRERING, SORTERING Seminarier: Fredagsklubben för dig som tycker att programmering är svårt (0 eller möjligen 1 poäng på delmålskontrollen) inte avsedda för
Föreläsning 8 Datastrukturer (DAT037)
Föreläsning 8 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-23 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Förra
DD1314 Programmeringsteknik
Skolan för Datavetenskap och kommunikation DD1314 Programmeringsteknik Föreläsning 1 o print o variabler o reserverade ord o input o kommentarer o beräkningar o datatyper o if-satser Kursinformation Programmering:
Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for
Inför provet Provet skrivs för hand och är uppdelad i två delar. Den första delen är på E-nivå och den andra delen är på C- och A-nivå. För att det ska bli enklare för er att träna inför provet så har
Tommy Färnqvist, IDA, Linköpings universitet
Föreläsning Metoder för algoritmdesign TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 7 december 015 Tommy Färnqvist, IDA, Linköpings universitet.1
Programmering I Tobias Wrigstad fredag, 2009 augusti 28
Programmering I Tobias Wrigstad tobias@dsv.su.se Vad är programmering? Lågnivåspråk och högnivåspråk Kompilering och interpretering Variabler Notation för flödesschema (flow chart) Kontrollstrukturer (conditionals,
Innehåll. Mina målsättningar. Vad krävs för att nå dit? Obligatoriska uppgifter. Websajten. Datastrukturer och algoritmer
Innehåll Datastrukturer och algoritmer Föreläsning 1! Introduktion och begrepp Kurspresentation! - Målsättning! - Kursutvärdering! - Upplägg! - Översikt! Viktiga begrepp "1 "2 Mina målsättningar Alla ska
Tentamen Datastrukturer D DAT 035/INN960
Tentamen Datastrukturer D DAT 035/INN960 21 december 2007 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.) Betygsgränser,
Trädstrukturer och grafer
Översikt Trädstrukturer och grafer Trädstrukturer Grundbegrepp Binära träd Sökning i träd Grafer Sökning i grafer Programmering tillämpningar och datastrukturer Varför olika datastrukturer? Olika datastrukturer
Föreläsning 13. Rekursion
Föreläsning 13 Rekursion Rekursion En rekursiv metod är en metod som anropar sig själv. Rekursion används som alternativ till iteration. Det finns programspråk som stödjer - enbart iteration (FORTRAN)
Programmering = modellering
Programmering = modellering Ett datorprogram är en modell av en verklig eller tänkt värld. Ofta är det komplexa system som skall modelleras I objektorienterad programmering består denna värld av ett antal
Föreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-13 Idag Grafer: Terminologi. Datastrukturer. Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. (Vi får
Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00
1 ( 7) Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00 Tillåtna hjälpmedel: Dator, penna, papper, linjal, suddgummi, godkänd(a) bok/böcker/kompendier (ej anteckningar,
Konvexa höljet Laboration 6 GruDat, DD1344
Konvexa höljet Laboration 6 GruDat, DD1344 Örjan Ekeberg 10 december 2008 Målsättning Denna laboration ska ge dig övning i att implementera en algoritm utgående från en beskrivning av algoritmen. Du ska
Föreläsning 9 Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT07) Fredrik Lindblad 27 november 207 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/20/course/dat07 Innehåll 2
ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar
Föreläsning 1 Innehåll ADT Prioritetskö Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util ar Implementering av prioritetskö med heap Sortering med hjälp
Tentamen: Programutveckling ht 2015
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:
Exempeltenta GruDat 2002/2003
Exempeltenta GruDat 2002/2003 Endast ett svarsalternativ på varje fråga är korrekt. Felaktigt svar eller felaktigt antal ikryssade svarsalternativ ger noll poäng på uppgiften. Obs: Den riktiga tentan kommer
Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod
Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer
Föreläsning 13 Datastrukturer (DAT037)
Föreläsning 13 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-12-14 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Sammanfattning
Lösningsförslag för tentamen i Datastrukturer (DAT036) från
Lösningsförslag för tentamen i Datastrukturer (DAT036) från 2011-12-16 Nils Anders Danielsson 1. Låt oss benämna indatalistan strängar. Vi kan börja med att beräkna varje strängs frekvens genom att använda
Föreläsning 8 Datastrukturer (DAT037)
Föreläsning 8 Datastrukturer (DAT037) Fredrik Lindblad 1 22 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037
7 Programmeringsteknik
7 Programmeringsteknik Att skriva ett program innebär att man skriver en plan för hur bearbetningen av data ska utföras. Vilken typ av data och vilken typ av bearbetning, som ska göras, ska vara bestämt
Föreläsning Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-20 Idag Grafer: Terminologi. Datastrukturer. Topologisk sortering. Kortaste vägen. Bredden först-sökning. Dijkstras algoritm. (Vi får
Objektorienterad programmering Föreläsning 10. Copyright Mahmud Al Hakim Sorteringsalgoritmer
Objektorienterad programmering Föreläsning 10 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Fält fort. Fält som parametrar Parameterfält params Parametrar till Main Listor ArrayList
Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen
Datastrukturer och algoritmer Föreläsning 15 Inför tentamen 1 Innehåll Kursvärdering Vi behöver granskare! Repetition Genomgång av gammal tenta 2 Första föreläsningen: målsättningar Alla ska höja sig ett
Asymptotisk komplexitetsanalys
1 Asymptotisk komplexitetsanalys 2 Lars Larsson 3 4 VT 2007 5 Lars Larsson Asymptotisk komplexitetsanalys 1 Lars Larsson Asymptotisk komplexitetsanalys 2 et med denna föreläsning är att studenterna skall: