Presentation laddar. Vänta.

Presentation laddar. Vänta.

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

Liknande presentationer


En presentation över ämnet: "1 Föreläsning 6 Länkade lista Komplexitet –Linjärsökning & binärsökning."— Presentationens avskrift:

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

2 2 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

3 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 4 Exempel Konstruera en klass som representerar en person, varje instans av klassen person ska ha ett namn och möjligtvis ett barn.

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

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

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

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

9 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 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 11 Komplexitet Vilken är man oftast mest intresserad av tidskomplexitet eller rumskomplexitet ?

12 12 Komplexitet för summera alla tal i en lista sum=0 i=0 length=len(tallistan) while i

13 13 Komplexitet för summera … Om det finns N tal i listan så har vi följande: Operationantal Tilldelning till sumN+1 AdditionerN Tilldelning till iN+1 i < lengthN+1 length=len(tallistan)1

14 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 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 16 Vad är komplexitet för en linjärsökning Det är nästan alltid värsta fallskomplexitet som är intressant

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


Ladda ner ppt "1 Föreläsning 6 Länkade lista Komplexitet –Linjärsökning & binärsökning."

Liknande presentationer


Google-annonser