Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

1 TDT4110 Informasjonsteknologi grunnkurs: Algoritmer for søk og sortering Førsteamanuensis Alf Inge Wang TDT4110 Informasjonsteknologi grunnkurs:

Liknende presentasjoner


Presentasjon om: "1 TDT4110 Informasjonsteknologi grunnkurs: Algoritmer for søk og sortering Førsteamanuensis Alf Inge Wang TDT4110 Informasjonsteknologi grunnkurs:"— Utskrift av presentasjonen:

1 1 TDT4110 Informasjonsteknologi grunnkurs: Algoritmer for søk og sortering Førsteamanuensis Alf Inge Wang TDT4110 Informasjonsteknologi grunnkurs:

2 2 Læringsmål og pensum •Læringsmål: –Lære om tabellstrukturer –Lære algoritmer for søk og sortering av data •Pensum: –Læreboka

3 3 Algoritme = oppskrift / fremgangsmåte for å løse en oppgave Algoritmer •Definisjon av algoritmer i boka ( s.431 tidligere utgaver): –”En sekvens av utvetydige, utførbare skritt som leder til en løsning av et gitt problem.” •Vi har allerede sett på mange algoritmer –Algoritme for å summere en tabell –Algoritme for å finne gjennomsnitt i en tabell –Med flere –I dag skal vi se på algoritmer for søking og sortering

4 4 Først litt om tabeller •Kan som kjent lagre flere verdier (tekst, tall, sannhetsverdier) i en tabell •Tabellen har en maxstørrelse og index som angir plassnummer i tabellen Tallet 45 ligger på index 1 Max- størrelsen er 3 (4 elementer)

5 5 Tabeller lagret i minne •Elementene i en tabell lagres etter hverandre i primærminnet •Hvis hvert element tar 3 minneplasser og tabellen har 4 celler blir adressen til: Element 0: A 0 Element 1: A 0 +3 Element 2: A 0 +6 osv… når A 0 er der første celle i tabellen ligger Elem2Elem1Elem0 A0A0 A 0 +3A 0 +6

6 6 Tabeller i minne (generelt) •Plasseringen i minnet for en tilfeldig indexplass (i) når hver har en fast størrelse (S) og første celle ligger på plass A 0 blir: •Adresse til element i = A 0 + i * S •Dette betyr: Når vi har data i en tabell kan vi aksessere hvilket som helst element direkte –Siden vi kan beregne adressen internt i minne –Tar like lang/kort tid uansett

7 7 Enkel algoritme for søking (usortert liste) •Anta at følgende lag ligger etter hverandre i en tabellen lag[14]: –Vålerenga –Start –Tromsø –Lillestrøm –Viking –Brann –Odd Grenland –Rosenborg –... •Når vi søker etter noe kan vi få to utfall: –Suksess: ”XXX ligger på plass nummer Y” –Fiasko: ”XXX befinner seg ikke i elitedivisjon” Oppgave1: Tenk ut en algoritme for å søke etter et angitt lag i listen og finne posisjonen til laget i tabellen. oppgave1.html oppgave1.jsp

8 8 Oppgave2: Tenk ut en smartere algoritme for å søke etter et angitt lag i den sorterte listen Enkel algoritme for søking (sortert liste) •Anta at følgende lagene ligger etter hverandre i en liste: –Aalesund –Brann –Haugesund –Hønefoss –Kongsvinger –Lillestrøm –Molde –Odd Grenland –... •Algoritmen skal fortsatt gå steg for steg

9 9 Løsning på sortert liste •Algoritmen kan undersøke underveis om vi har passert det stedet der verdien kunne ha befunnet seg i datamengden: –Eks: Søker etter ”Bryne” i elitedivisjonstabellen. Kan avslutte søket etter har passert ”Brann”. •Kan bruke int streng1.compareTo(streng2) •Returnerer 0 hvis strenger er like •Returnerer negativt tall hvis streng1 har høyere leksikalsk verdi enn streng2 (og motsatt) oppgave2.html oppgave2.jsp

10 10 Metoder for å håndtere store/små bokstaver i strenger • int compareToIgnoreCase(String str) –Compares two strings lexicographically, ignoring case differences. • String toLowerCase() –string.toLowerCase(); // Gjør om streng til små bokstaver • String toUpperCase() –string.toUpperCase(); // Gjør om streng til store bokstaver

11 11 Tenk ut en ”smartere” algoritme som bruker mindre tid for å søke etter et angitt lag i listen. Avansert algoritme for søking (sortert liste) –Aalesund –Brann –Haugesund –Hønefoss –Kongsvinger –Lillestrøm –Molde –... •Tips: hva gjør vi når vi slår opp i telefonkatalogen?

12 12 Binærsøk (forutsetter sortert tabell) •Går midt i tabellen, sjekker verdi mot det vi søker etter •Sjekker videre i enten venstre eller høyre halvdel av tabellen •Går midt i halvdelen som er igjen å sjekke •Halverer videre til vi finner det vi leter etter, eller det ikke er flere elementer å sjekke

13 13 Binært søk: illustrasjon Halverer liste hele tiden – enten over eller under:

14 14 Likt antall elementer i en liste (eller en subliste) •F.eks en liste med 6 elementer •Vi må bestemme oss for om vi runder ned eller opp

15 15 Oppgave •Gitt en tabell med 200 elementer. Hvor mange sammenligninger må vi gjøre ved søk etter noe som ikke ligger i tabellen? –Med sekvensiellt søk? •Usortert •Sortert –Med binært søk?

16 16 Dersom vi søker etter Åberg vil søk i sortert liste være tilnærmet like treg som i en usortert Løsning til sekvensielt søk •Sortert: –200 sammenligninger i verste fall. Men kan ofte være mindre enn 200. •Usortert: 200

17 17 Løsning til binært søk •Binært søk: i verste fall 8 sammenligninger før vi kan være sikre på at elementet ikke finnes i lista. •Vi får lister med størrelse: –200 –100 (100 eller 99 avh. av hva vi søker etter - i verste fall 100) –50 (49 eller 50, i verste fall 50) –25 (24 eller 25, i verste fall 25) –12 (12 uansett) –6 (5 eller 6, i verste fall 6) –3 (2 eller 3, i verste fall 3) –1 (1 uansett) •Merk at vi må sjekke den siste lista med 1 element før vi kan være sikre på at elementet ikke eksisterer i lista

18 18 Antall sammenligninger ved binærsøk: Log 2 •Rent generelt så kan man ta 2-logaritmen til lengden på lista og runde oppover. •2-logaritmen til et tall n er det tallet vi må opphøye 2 i for å få tallet n. •Eller sagt på en annen måte: Hvor mange ganger må vi gange 2 med seg selv for å få (minst) n. •2 7 =128 og 2 8 =256

19 19 Kjøretiden proporsjonal med Kjøretidskompleksitet •(n = lengde på lista) •Sekvensielt søk: n •Binært søk: log 2 n –log 2 n = (ln n / ln 2) •For mange av dere: Mer om dette i TDT4120 Algoritmer og datastrukturer

20 20 Oppgave (kunne vært gitt til eksamen) •Vil binærsøk alltid være raskere enn sekvensielt søk? Forklar hvorfor/hvorfor ikke. (3 %) •LF: Dersom det vi søker etter ligger tidlig i lista vil sekvensielt søk være raskere (færre sammenligninger må utføres). Generelt så vil binærsøk være raskere i de aller fleste tilfellene. Binærsøk er relativt sett raskere jo lengre lista er. (Gitt sortert liste)

21 21 Algoritme for sortering av liste •Anta at følgende lag ligger etter hverandre i en tabellen lag[14]: –Rosenborg –Vålerenga –Tromsø –Haugesund –Aalesund –Odd Grenland –Start –... •Utskrift til skjerm: –Utskrift av lag[] usortert –Utskrift av lag[] sortert Oppgave3: Tenk ut en algoritme for å sortere lista alfabetisk

22 22 Sortering ved å bytte plass (bobblesortering) •Traverser tabellen. Om to naboelementer står feil: bytt plass •Traverser tabellen så mange ganger som det er elementer i tabellen –I verste fall skal verdi i index 0 flyttes til index N (N=tabellens lengde) –Denne algoritmer er TREG! oppgave3.jsp

23 23 Sortering ved innsetting •Start på element 2, sørg for at de to første elementene er sortert ved å sette inn nr 2 riktig •Gå til element 3, sørg for at de tre første elementene er sortert ved å sette inn nr 3 riktig •Generelt: Gå til element N, sørg for at de N første elementene er sortert ved å sett inn nr N riktig •Når hele lista er gått gjennom er hele lista sortert!

24 24 Sortering ved innsetting •Sortering ved å flytte internt •Starter på andre element og sjekker første •Fortsetter nedover lista og sjekker/bytter alle ovenfor Første gang: 1.Vålerenga 2.Start 3.Lyn 4.Lillestrøm 5.Viktig 6.Brann 7.Odd Grenland 8.Rosenborg 9.Tromsø 10.Ham-Kam 11.Molde 12.Fredrikstad 13.Aalesund 14.Bodø/Glimt Andre gang: 1.Start 2.Vålerenga 3.Lyn 4.Lillestrøm 5.Viktig 6.Brann 7.Odd Grenland 8.Rosenborg 9.Tromsø 10.Ham-Kam 11.Molde 12.Fredrikstad 13.Aalesund 14.Bodø/Glimt Bytt om: 1.Start 2.Lyn 3.Vålerenga 4.Lillestrøm 5.Viktig 6.Brann 7.Odd Grenland 8.Rosenborg 9.Tromsø 10.Ham-Kam 11.Molde 12.Fredrikstad 13.Aalesund 14.Bodø/Glimt Bytt om: 1.Lyn 2.Start 3.Vålerenga 4.Lillestrøm 5.Viktig 6.Brann 7.Odd Grenland 8.Rosenborg 9.Tromsø 10.Ham-Kam 11.Molde 12.Fredrikstad 13.Aalesund 14.Bodø/Glimt Bytt om: 1.Start 2.Vålerenga 3.Lyn 4.Lillestrøm 5.Viktig 6.Brann 7.Odd Grenland 8.Rosenborg 9.Tromsø 10.Ham-Kam 11.Molde 12.Fredrikstad 13.Aalesund 14.Bodø/Glimt oppgave4.jsp

25 25 Talleksempel Stadig større del av tabellen blir sortert! usortert utg.pkt 1. steg 2. steg Ferdig = sortert

26 26 Oppsummering •Les mer om disse algoritmene i boka kap 10/11 (kap 12 i tidligere utgaver av boka) •Det finnes –Sekvensielle og –Binære søkealgoritmer –De binære er stort sett alltid mer effektive, men krever at dataene er sorterte


Laste ned ppt "1 TDT4110 Informasjonsteknologi grunnkurs: Algoritmer for søk og sortering Førsteamanuensis Alf Inge Wang TDT4110 Informasjonsteknologi grunnkurs:"

Liknende presentasjoner


Annonser fra Google