Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning

Slides:



Advertisements
Liknande presentationer
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 4.
Advertisements

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Klasser och objekt.
2D1311 Programmeringsteknik med PBL
Algoritmer och data strukturer -Länkade listor
Programmeringsteknik
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik Föreläsning 6 Skolan för Datavetenskap och kommunikation.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Repetition inför provet
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
DAB752: Algoritmteori Leif Grönqvist
Fortsättningskurs i Programmering lektion 6
Programmeringsteknik Föreläsning 4 Skolan för Datavetenskap och kommunikation.
© 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.
Föreläsning 4 Python: mera om funktioner och parametrar
2D1311 Programmeringsteknik med PBL Föreläsning 6 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
Föreläsning 9 Sökning, sortering, grafikprogrammering.
C-programmering ID120V William Sandqvist Länkad lista
Välkommen Vahid Mosavat
Programmeringsteknik K och Media
Tar fram v ur kön v = R(true,0,Null) och q = (). d = 0 Leta sedan fram grannarna = {A, B} För granne A: newDist = 0+4 = 4. Ej besökt. q = (A(true,4,R))
1 Föreläsning 3 Datalogi för E1 / 2D1343 Repetition List List operationer Stränghantering For-slingor.
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Algoritm analys och rekursiva metoder kap 5,7
i olika programmeringsspråk
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Föreläsning 5.  Idag  Kap 7 i Dawson  Filer  Felhantering med try…except.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
PROCESSPROGRAMMERING
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Vektorer (klassen Vector) Sortering
Programmeringsteknik för Media1 & K1
Problemlösning Veckodagsproblemet Gissa talet Siffersumman.
DD1311 P ROGRAMMERINGSTEKNIK MED PBL Föreläsning 9 Skolan för Datavetenskap och kommunikation.
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.
Namnrum, räckvidd och rekursion Linda Mannila
Föreläsning 10 Stränghantering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Datastrukturer och algoritmer
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
Föreläsning 4 Listor, tupler, och for-loopar. Listor En lista är en föränderlig ordnad samling objekt. Listor skapas med hakparenteser. lista = [12,13,14,15]
Graph och graph-algoritmer. Några enkla graph teorier Hur IP trafik hittar destinationen i Internät ? GPS-system ? Sociala nätverk. Vanligaste frågeställningar:
Programmeringsteknik Föreläsning 8 Skolan för Datavetenskap och kommunikation.
Länkade listor Binära träd
Föreläsning 7 Programmeringsteknik och Matlab DD1315 Kommandotolk parametrar Klass Instans Metod konstruktor.
Access 1 ITDA 2 Kurs Namn Klass Betyg En elev (namn) kommer att läsa många kurser och få ett betyg i varje kurs. Försök modellera om till funktionella.
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
1 Föreläsning 8 Mer om klasser och objektorientering.
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
Programmeringsteknik
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
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, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 4.
Algoritmer och loopar Algoritmer, beräkningsbarhet
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Länkade listor á la C/C++
Presentationens avskrift:

Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning Datalogi, Föreläsning 6 2017-04-06 Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning Vahid Mosavat, Nada, KTH

Datalogi, Föreläsning 6 2017-04-06 Länkad lista … Där varje post har en länk till en annan post av samma typ. Exempel: varuvagnar, tåg-vagnar o.s.v. … En post Vahid Mosavat, Nada, KTH

Länkad lista i Python Följande är definition av en klass som kan användas för att skapa en länkad lista. class Nod : value = None nextPost =None def __init__(self,v): self.value = v

Exempel Konstruera en klass som representerar en person, varje instans av klassen person ska ha ett namn och möjligtvis ett barn.

Exempel Använd klassen i föregående exemplet i ett program för släktforskning.

Att gå igenom listan top 1 10 7 p p=top while p!=None : print p.value null p p=top while p!=None : print p.value p = p.nextPost

Att ta bort första posten ur listan top 1 10 7 null top=top.next;

Att lägga till en post i början av listan top 1 10 7 null n=Nod(3) n.nextPost = top top = n

Algoritm En detaljerad beskrivning som kan lösa ett visst problem kallar man algoritm. En korrekt algoritm är en algoritm som fungerar för alla instans av problemet. En algoritm är inte korrekt om det finns en instans av problemet som inte går att lösa med algoritmen.

Komplexitet Det finns oftast många olika algoritmer för att lösa ett problem. Då är det intressant att analysera algoritmen för att t.ex se vilken av de är mest eller minst effektiv. När man pratar om effektivitet hos en algoritm menar man hur mycket tid eller minne krävs för att lösa en instans av problemet. När det är minne vi är intresserad av så är det rumskomplexitet. När det är tid vi intresserad av så är det tidskomplexitet.

Komplexitet Vilken är man oftast mest intresserad av tidskomplexitet eller rumskomplexitet ?

Komplexitet för summera alla tal i en lista length=len(tallistan) while i<length: sum=sum+tallistan[i] i++

Komplexitet för summera … Om det finns N tal i listan så har vi följande: Operation antal Tilldelning till sum N+1 Additioner N Tilldelning till i N+1 i < length N+1 length=len(tallistan) 1

Komplexitet för summera … Vi antar följande tidsenheter för varje operation: Tilldelning tar t Addition tar a Jämförelse tar j i++ tar i Då får vi följande: 3*t+N*t+(N-1)*j+N*(s+i)=N(j+t+s+i)+3t-j=N*K1+K2 Där K1 & K2 är konstanter

Komplexitet för summera … För att beräkna komplexiteten: Strunta i konstanter och multiplikation med konstanter Ta bara den term som växer snabbare än andra termer Med avseende på ovanstående kommer komplexiteten bli N från N*K1+K2

Vad är komplexitet för en linjärsökning Det är nästan alltid värsta fallskomplexitet som är intressant

Vad är komplexitet för binärsökning