Minimum Spenntrær - Kruskal & Prim

Like dokumenter
Minimum spenntrær. Lars Vidar Magnusson Kapittel 23. Kruskal Prim

Grunnleggende Grafalgoritmer III

Grunnleggende Grafalgoritmer

Heapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer

Korteste Vei II. Lars Vidar Magnusson Kapittel 24 Bellman-Ford algoritmen Dijkstra algoritmen

IN Algoritmer og datastrukturer

Øvingsforelesning Korteste vei: Alle til alle

INF Algoritmer og datastrukturer

Grunnleggende Grafalgoritmer II

GRAFER. Noen grafdefinisjoner. Korteste vei i en uvektet graf V 2 V 1 V 5 V 3 V 4 V 6

INF Algoritmer og datastrukturer

Øvingsforelesning 4. Topologisk sortering, Strongly Connected Components og Minimale spenntrær. Magnus Botnan

Heap og prioritetskø. Marjory the Trash Heap fra Fraggle Rock

Algdat - øvingsforelesning

Lars Vidar Magnusson

Høgskoleni østfold EKSAMEN. 4 dobbeltsidige ark med notater Lars Magnusson

Eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

Dijkstras algoritme Spørsmål

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

Prioritetskøer. Prioritetskøer. Binære heaper (vanligst) Prioritetskøer

GRAFER. Korteste vei i en vektet graf uten negative kanter. Korteste vei, en-til-alle, for: Minimale spenntrær

LØSNINGSFORSLAG, EKSAMEN I ALGORITMER OG DATASTRUKTURER (IT1105)

INF1020 Algoritmer og datastrukturer GRAFER

Teoriøving 7 + litt om Ford-Fulkerson. Magnus Lie Hetland

Prioritetskøer. Binære heaper Venstrevridde heaper (Leftist) Binomialheaper Fibonacciheaper

Grådige algoritmer. Lars Vidar Magnusson Kapittel 16. Aktivitetvelgingsproblemet Huffmankoder

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Ekstra ark kan legges ved om nødvendig, men det er meningen at svarene skal få plass i rutene på oppgavearkene. Lange svar teller ikke positivt.

Binær heap. En heap er et komplett binært tre:

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Øvingsforelesning 7. Dijkstras algoritme. Foiler: Fredrik Ludvigsen Foreleser: Jon Marius Venstad 10/4/09 1

O, what a tangled. Fjerde forelesning. Robot-eksemplet som ikke ble gjennomgått sist blir frivillig selvstudium (ut fra foilene :-)

Lars Vidar Magnusson Kapittel 13 Rød-Svarte (Red-Black) trær Rotasjoner Insetting Sletting

Korteste vei i en vektet graf uten negative kanter

PG4200 Algoritmer og datastrukturer Forelesning 10

INF Algoritmer og datastrukturer

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

IN Algoritmer og datastrukturer

Notater til INF2220 Eksamen

INF Algoritmer og datastrukturer

Grunnleggende Datastrukturer

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

Algdat Eksamensforelesning. Nils Barlaug

UNIVERSITETET I OSLO

KORTESTE STI. Vektede Grafer. Korteste Sti. Dijkstra s Algoritme. Vektet Urettet Graf

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Oppgave 1 LØSNINGSFORSLAG. Eksamen i INF desember Betrakt følgende vektede, urettede graf:

PQ: HEAP. Heap. Er disse heap er? Hvordan implementere heap:

Løsningsforslag til eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 14. Desember 1999, kl

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Lars Vidar Magnusson

INF Algoritmer og datastrukturer

Øvingsforelesning 6. Sorteringsalgoritmer. Martin Kirkholt Melhus Basert på foiler av Kristian Veøy 30/09/14 1

Vi skal se på grafalgoritmer for:

Algdat Oppsummering, eksamen-ting. Jim Frode Hoff

Fra A til B. Syvende forelesning

INF2220: Time 12 - Sortering

Grafalgoritmer: Korteste vei

Sortering i Lineær Tid

Algdat-ninja på 60 minutter: Et galskapsprosjekt. Magnus Lie Hetland

ALGORITMER OG DATASTRUKTURER

Pensum: fra boken (H-03)+ forelesninger

Grunnleggende Grafteori

UNIVERSITETET I OSLO

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Pensum: fra boken (H-03)+ forelesninger

INF Algoritmer og datastrukturer

Definisjon av binært søketre

INF Algoritmer og datastrukturer

Algdat Redux. Fjortende forelesning. Repetisjon av utvalgte emner.

Dagens plan: INF Algoritmer og datastrukturer. Eksempel. Binære Relasjoner

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

O, what a tangled. Fjerde forelesning. O, what a tangled web we weave / When first we practice to deceive! Sir Walter Scott, *Marmion*

LO118D Forelesning 12 (DM)

INF2220: Time 4 - Heap, Huffmann

All good things. Fjortende forelesning

INF Algoritmer og datastrukturer

Om Kurset og Analyse av Algoritmer

Vi skal se på grafalgoritmer for:

INF Algoritmer og datastrukturer

København 20 Stockholm

Studentnummer: Side 1 av 1. Løsningsforslag, Eksamen i TDT4120 Algoritmer og datastrukturer August 2005

Disjunkte mengder ADT

Innhold. Innledning 1

Datastrukturer for rask søking

Lineær sortering. Radix sort

Eksamen i tdt4120 Algoritmer og datastrukturer

Oppgave 1. Sekvenser (20%)

Løsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Transkript:

Minimum Spenntrær - Kruskal & Prim Lars Vidar Magnusson 4.4.2014 Kapittel 23 Kruskal algoritmen Prim algoritmen

Kruskal Algoritmen Kruskal algoritmen kan beskrives med følgende punkter. Vi har en en sammenkoblet urettet graf G = (V, E) og en vektfunksjon w : E R. Vi starter med at alle noder er sitt eget komponent. Vi slår sammen to komponenter ved å velge en lett kant som kobler de sammen. Vi søker gjennom kantene i monotonisk stigende rekkefølge i forhold til vekten til kanten. Vi bruker disjoint-sett datastrukturen bedømme om en kant knytter sammen to ulike komponenter.

Pseudokode for Kruskal Algoritmen Pseudokoden for Kruskal algoritmen er listet under.

Eksempelgraf Figuren under viser en graf med minimum spenntree merket med grå kanter. Vi skal se på hvordan Kruskal finner et MST for denne grafen.

Hvordan Kruskal Algoritmen Fungerer I

Hvordan Kruskal Algoritmen Fungerer II

Analyse av Kruskal Algoritmen Kruskal algoritmen er en sammensatt algoritme. Vi har V kall til Make-Set i.e Θ(V ) Sortering av kantene i monotonisk stigende rekkefølge tar O(E log E) Den andre for-løkken inneholder O(E) kall til Find-Set og Union. Hvis vi ser bort i fra den minste av disse, og hvis vi går utifra at vi bruker både union by rank og path compression, så sitter vi igjen med. O((V + E)α(V )) + O(E log E)

Analyse av Kruskal Algoritmen Uttrykket på forrige slide kan vi forenkles ytterligere. Siden G er sammenkoblet er E V 1 så da kan vi forenkle til O(Eα(V )) + O(E log E). α(v ) O(log V ) O(log E) Da har vi kjøretid på O(E log E). E V 2 som gir oss log E = O(2 log V ) = O(log V ). Den endelige kjøretiden blir derfor typisk oppgitt som O(E log V ). Merk at kjøretiden er O(E α(v )) hvis kantene allerede er sorterte.

Prim Algoritmen I motsetning til Kruskal algoritmen, som under kjøringen bygger på en skog, vil Prim algoritmen alltid bare bygge på et tre. A er alltid et tre Starter fra en tilfeldig rot r. For hvert steg så finner vi en lett kant mellom kuttet (V A, V V A ), hvor V A er de nodene som er sammenkoblet av A. Så hvordan finner vi en slik lett kant effektivt?

Hvordan Finne en Lett Kant i Prim Algoritmen Prim algoritmen bruker en prioritetskø for å finne en passende lett kant effektivt. Køen inneholder noder som er med i V V A. Prioritetskøen er ordnet i forhold til den minste vekten til en kant (u, v) slik at u V A Sorteringsnøkkelen til en node v er hvis v ikke er en nabo til en av nodene i V A. Når vi kaller Extract-Min får vi en node v slik at det eksisterer en node u V A og (u, v) er en lett kant som krysser (V A, V V A )

Andre Merknader med Prim Algoritmen Kantene i A er et tre med rot i r r blir gitt som input, men kan være hvilken som helst av nodene. Hver node v er klar over sin forelder via v.π (r.π = nil). Under kjørint så er A = {(v, v.π) : v V {r} Q}. Når algoritmen er ferdig er V A = V som impliserer at Q =, og da har vi et MST i A = {(v, v.π) : v V {r}}

Pseudokode for Prim Algoritmen Pseudokoden for Prim algoritmen er listet under. Merk at pseudokoden skiller litt fra boka i at den eksplisett kaller Insert og Decrease-Key for å arbeide med køen.

Hvordan Prim Algoritmen Fungerer Figuren under viser hvordan Prim algoritmen kjører på eksempelgrafen.

Hvordan Prim Algoritmen Fungerer II Figuren under viser hvordan Prim algoritmen kjører på eksempelgrafen.

Analyse av Prim Algoritmen Prim algoritmen er også en sammensatt algoritme. Kjøretiden er avhengig av hvordan prioritetskøen er implementert. Hvis vi antar at prioritetskøen er en binær heap så får vi følgende. Vi har V kall til Insert som gir oss O(V log V ). Minke nøkkelen til rotnoden er O(log V ). Vi har V kall til Extract-Min som gir oss O(V log V ). Vi har E kall til Decrease-Key som gir oss O(E log V ). Siden V E så får vi en total kjøretid på O(E log V ). Dette kan forbedres hvis vi i stedet for en binær heap hadde brukt en Fibonacci heap (O(V log V + E)).