Ladda ner presentationen
Presentation laddar. Vänta.
1
Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning
Datalogi, Föreläsning 6 Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning Vahid Mosavat, Nada, KTH
2
Datalogi, Föreläsning 6 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
3
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
4
Exempel Konstruera en klass som representerar en person, varje instans av klassen person ska ha ett namn och möjligtvis ett barn.
5
Exempel Använd klassen i föregående exemplet i ett program för släktforskning.
6
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
7
Att ta bort första posten ur listan
top 1 10 7 null top=top.next;
8
Att lägga till en post i början av listan
top 1 10 7 null n=Nod(3) n.nextPost = top top = n
9
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.
10
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.
11
Komplexitet Vilken är man oftast mest intresserad av tidskomplexitet eller rumskomplexitet ?
12
Komplexitet för summera alla tal i en lista
length=len(tallistan) while i<length: sum=sum+tallistan[i] i++
13
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
14
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
15
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
16
Vad är komplexitet för en linjärsökning
Det är nästan alltid värsta fallskomplexitet som är intressant
17
Vad är komplexitet för binärsökning
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.