INF 295 forelesning 14 - kap 8 Disjunkt mengde ADT Hans Fr. Nordhaug (Ola Bø)

Slides:



Advertisements
Liknende presentasjoner
Regning i alle fag Ungdomstrinnsatsningen
Advertisements

TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Kristian Veøy
Legemidler, naturlegemidler og helsekost
Øvingsforelesning 9 Flytnettverk, maksimum flyt og maksimum bipartitt matching Jon Marius Venstad Redigert og forelest av Gleb Sizov.
Forelesning nr.2 INF 1411 Elektroniske systemer
Maskin Læring Litt generelt Hva er maskin læring?
Forside Korteste sti BFS Modifikasjon Dijkstra Eksempel Korrekthet Analyse Øving Spørsmål Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no.
Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no
Øvingsforelesning 9 Flytnettverk, maksimum flyt og
Eksempel AOA (Activity On Arc)
1 Øvingsforelesning Andreas Knudsen Nils Grimsmo
Øvingsforelesning 3 Grafer, BFS, DFS og hashing
Alg. Dat Øvingsforelesning 5 Kompleksitetsanalyse Torbjørn Moralnd
Kompleksitetsanalyse
Øvingsforelesning 2 Trær og søking i dem, samt litt diverse emner Kristian Veøy
Alg. Dat Øvingsforelesning 3 Grafer, BFS, DFS og hashing Børge Rødsjø
Øvingsforelesning Magnus Haug
Om semesteroppgaven Krav til den avhengige variabelen
Forside Motivasjon Analyse Forside Motivasjon Analyse  -notasjon O og  Relasjoner Klasser Fallgruver Spørsmål Kompleksitetsanalyse Åsmund Eldhuset asmunde.
INF 295 Forelesning 15 - kap 9 Grafer Hans Fr. Nordhaug (Ola Bø)
Repetisjon kap 6,7,8.
Algoritmiske metoder Innhold: Effektivitetsbetraktninger Programmeringsteknikker Datastrukturer Algoritmer tilknyttet datastrukturene Lærebok: Hafting/Ljosland:
INF150 Programmering mandag 11.9
Algoritmer og Datastrukturer
1 Kap 08 Kø. 2 Kø - Definisjon En kø (eng queue) er en lineær struktur hvor elementer kan innsetttes kun i den ene enden av listen, kalt bak, og fjernes.
Kap 10 Graf.
Object Oriented Measurement
Oversikt Den delen av Standard C++ Library som tidligere var STL Konsepter i STL: –Iteratorer –Samlinger (containers) –Algoritmer –Funksjonsobjekter.
INF 295 Algoritmer og datastrukturer Forelesning 21 Merge, Quick og Bøtte, Radix og ekstern sortering Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 7 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 1 - kapittel 1 Introduksjon Hans F. Nordhaug (Ola Bø) (Ketil Danielsen, 2007)
INF 295 Algoritmer og datastrukturer Forelesning 9a Søketrær Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 8 Trær Hans Fr. Nordhaug (Ola Bø)
INF 295 forelesning 13 - kap 6 Prioritetskø (Heap) Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 16 - kap 9 Minimalt spenntre og korteste vei i grafer Hans Fredrik Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 11 Når RAM ikke strekker til - B-trær og Utvidbar hashing Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 17 - kap 9 Korteste vei i grafer Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 20 - Kapittel 7 Boble-, innstikk-, Shell-, Heap-, Quick-, Mergesortering Hans Fr. Nordhaug (Ola Bø)
Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 4 Algoritmeanalyse Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 2 - kapittel 1 Hans F. Nordhaug (Ola Bø)
INF 295 forelesning 13 - kap 6 Andre prioritetskøer Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 18 - kap 9 Aktivitetsgrafer
INF 295 Algoritmer og datastrukturer Forelesning 6 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 24 Repetisjon
INF 295 Algoritmer og datastrukturer Forelesning 9b Balanserte (binære) trær Hans Fr. Nordhaug.
INF 295 Forelesning 19 - Dynamisk programmering Korteste vei alle til alle (Floyd) Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 10 Invarianter og Hashing Hans Fr. Nordhaug (Ola Bø)
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Hovedfagspresentasjon
INF 4130 Eksamen 2008 Gjennomgang.
Magnus Haug Algoritmer og Datastrukturer
Page 1 WE MOVE THE INDUSTRY THAT MOVES THE WORLD RISK MANAGEMENT Fra operatørenes ståsted Solakonferansen 2014 Øivind Solberg, PhD.
INF 295 forelesning 12 Repetisjon per 17. februar Hans F. Nordhaug (Ola Bø)
Alg. Dat Øvingsforelesning 11 Dynamisk programmering, grådighet
INF 295 Algoritmer og datastrukturer Forelesning 5 Algoritmeanalyse Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 22 Teknikker for algoritmeutvikling Hans Fr. Nordhaug/ Ola Bø.
Sorterings- Algoritmer Algoritmer og Datastrukturer.
Sterke og 2-sammenhengende komponeneter, DFS
Prioritetskøer Binære heaper Venstrevridde heaper (Leftist) Skeive heaper (Skew) Binomialheaper Fibonacciheaper Prioritetskøer er viktige i bla. operativsystemer.
Trekkstrukturer Bygges opp fra en mengde trekk f,g,h,… og en mengde atomære verdier a,b,c,… Defineres som en DAG (directed acyclic graph), det vil si en.
INF 295 Algoritmer og datastrukturer Web-spider Oblig 3 Hans Fr. Nordhaug (Ola Bø)
Inf1000 (Uke 5) Arrayer, filer og tekst
WFF – Well formed formula Streng av utsagnsvariabler (P,Q,R…), sannhetssymboler, konnektiver og parenteser, bygd opp etter følgende induktive regler: 
LOG530 Distribusjonsplanlegging
Matematikk 1 årskurs 26. oktober 2009
Kapittel 12 Samlingar Samlingar og datastrukturar Ei samling (collection) blir brukt til å oppbevare og handtere andre objekt ArrayList – klassen.
§4. Irrasjonale og komplekse tall
INF 295 Algoritmer og datastrukturer Forelesning 23 Kompleksitet Hans Fr. Nordhaug/ Ola Bø.
1 Øvingsforelesning 4 Topologisk sortering Minimale spenntrær Håkon Jacobsen
Utskrift av presentasjonen:

INF 295 forelesning 14 - kap 8 Disjunkt mengde ADT Hans Fr. Nordhaug (Ola Bø)

Disjunkt mengde ADT Mange anvendelser i grafteori Enkelt å implementere raske løsninger Forståelse krever at man kjenner til det matematiske begrepet ekvivalensrelasjon

Ekvivalensrelasjoner En ekvivalensrelasjon er en sammenheng R mellom elementer i en mengde S som er: refleksiv: a R a for alle a i S symmetrisk: Hvis a R b, så b R a transitiv: Hvis a R b og b R c, så er a R c Eksempel på relasjoner: a R b betyr at du kan kjøre fra a til b med bil a R b betyr at a og b bor i samme land a R b betyr at a er koplet til samme nett som b a R b betyr at a og b gir samme rest ved divisjon med 7

Ekvivalensrelasjoner Disjunkte mengder og ekvivalensrelasjoner En ekvivalensrelasjon deler S i disjunkte (ikke overlappende) delmengder {{Oslo, Bergen, Stavanger},{Longyearbyen},{Keflavik, Reykjavik}} Ekvivalensklassen til et element a er alle elementer x slik at a R x For å sjekke om x R a er det nok å sjekke at de er i samme ekvivalensklasse

Ekvivalensrelasjoner kan være dynamiske Normalt får vi oppgitt S = {{a 1 },{ a 2 },{ a 3 },{ a 4 }} I utgangspunktet er ingen elementer relatert til hverandre. Bare ett element i hver ekvivalensklasse Vi får oppgitt par av elementer som er relatert til hverandre: a 1 R a 3 og a 4 R a 3 er nok til å si at {a 1, a 3, a 4 } er en ekvivalensklasse. (Hvorfor?) En datatype for å håndtere denne dynamikken greier seg med to operasjoner: finn(a) som returnerer navnet på ekvivalensklassen der a deltar. a R b hvis finn(a)==finn(b) union(a,b) som slår sammen ekvivalensklassen til a med ekvivalensklassen til b

Mulige implementeringer Kjøretidsberegninger ser på totalt tidsforbruk i strukturens levetid – maksimalt N-1 union-operasjoner boolean ekvivalent[N][N] finn blir O(1), union O(N) per operasjon totalt O(N 2 ) Lenket liste Raskere Union fordi full gjennomsøking ikke er nødvendig, men fortsatt O(N 2 ) array som for hvert element inneholder navnet på ekvivalensklassen finn blir O(1), union blir O(N) og union totalt O(N 2 ), men akseptabelt ved N 2 find tilsvarende, men med kjent medlemstall og alltid navneskifte på minste ekvivalensklasse gir union totalt O(Nlog N)

Grunnleggende datastruktur - Tre Nok at find returnerer samme resultat for to elementer i samme ekvivalensklasse Alle elementer i samme tre har samme rot - så da kan ekvivalensklassen representeres av et tre. Ekvivalensklassen får navn etter rota Det eneste en node trenger er en peker til foreldrenoden finn() følger foreldrepekerne til rota og returnerer den union(a,b) lar a være rota med nytt barn b. (b peker på a) Kan implementeres i en array, der: Hvert element har peker til foreldrenoden. Rota har negativ peker. Alle elementer er røtter i starten - vi starter med en skog

Mer om treimplementering av disjunkte set union(a,b) går i konstant tid find(x) avhenger av dybden til x O(N) worst case O(MN) for M find/union operasjoner Gjennomsnittskjøretider er vanskelige: Avhenger av hva du mener med gjennomsnitt O(M), O(MlogN) eller O(MN) Kvadratisk kjøretid er uakseptabelt

Smarte Union-algoritmer Union på størrelse Det minste treet barn av det største treet Rota har -nodeantall som pekerverdi O(M) for M operasjoner Union på høyde Det laveste treet barn av det høyeste treet Rota har -høyde-1 som pekerverdi

Smart Unionalgoritme

Sti-komprimering Worst case find kan bli dårlig for union by size/height Stikomprimering løser problemet Ved find endres alle noder som gjennomløpes slik at de peker på rota Effekten er at find blir raskere ved senere aksess til disse nodene Gjøres ved forelder=forelder.find() Stikomprimering og union by height Ikke kompatibelt ettersom stikomprimering kan endre høyden og endringsberegning for kostbar Løsning: Like effektivt: Høyde korrigeres ikke for komprimering. Kalles da RANK. Stikomprimering+union by rank gir worst case nesten O(M) der m er antall union eller findoperasjoner