Opspannende bomen - TELIN

advertisement
Didactisch materiaal bij de cursus
Optimalisatietechnieken
http://telin.UGent.be/~philips/optimalisatie/
Academiejaar 2010-2011
Prof. dr. ir. W. Philips
[email protected]
Tel: 09/264.33.85 Fax: 09/264.42.95
UNIVERSITEIT
GENT
Telecommunicatie en
Informatieverwerking
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Copyright notice
This powerpoint presentation was developed as an educational aid to the renewed course “Optimisation Techniques” (Optimalisatietechnieken), taught at the
University of Gent, Belgium as of 1998.
This presentation may be used, modified and copied free of charge for non-commercial purposes by individuals and non-for-profit organisations and
distributed free of charge by individuals and non-for-profit organisations to individuals and non-for-profit organisations, either in electronic form on a physical
storage medium such as a CD-rom, provided that the following conditions are observed:
1. If you use this presentation as a whole or in part either in original or modified form, you should include the copyright notice “© W. Philips, Universiteit
Gent, 1998” in a font size of at least 10 point on each slide;
2. You should include this slide (with the copyright conditions) once in each document (by which is meant either a computer file or a reproduction
derived from such a file);
3. If you modify the presentation, you should clearly state so in the presentation;
4. You may not charge a fee for presenting or distributing the presentation, except to cover your costs pertaining to distribution. In other words, you or
your organisation should not intend to make or make a profit from the activity for which you use or distribute the presentation;
5. You may not distribute the presentations electronically through a network (e.g., an HTTP or FTP server) without express permission by the author.
In case the presentation is modified these requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the
presentation, and can be reasonably considered independent and separate works in themselves, then these requirements do not apply to those sections
when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the presentation, the
distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every
part regardless of who wrote it. In particular note that condition 4 also applies to the modified work (i.e., you may not charge for it).
“Using and distributing the presentation” means using it for any purpose, including but not limited to viewing it, presenting it to an audience in a lecture,
distributing it to students or employees for self-teaching purposes, ...
Use, modification, copying and distribution for commercial purposes or by commercial organisations is not covered by this licence and is not permitted without
the author’s consent. A fee may be charged for such use.
Disclaimer: Note that no warrantee is offered, neither for the correctness of the contents of this presentation, nor to the safety of its use. Electronic
documents such as this one are inherently unsafe because they may become infected by macro viruses. The programs used to view and modify this software
are also inherently unsafe and may contain bugs that might corrupt the data or the operating system on your computer.
If you use this presentation, I would appreciate being notified of this by email. I would also like to be informed of any errors or omissions that you discover.
Finally, if you have developed similar presentations I would be grateful if you allow me to use these in my course lectures.
Prof. dr. ir. W. Philips
Department of Telecommunications and Information Processing
University of Gent
St.-Pietersnieuwstraat 41, B9000 Gent, Belgium
E-mail: [email protected]
Fax: 32-9-264.42.95
Tel: 32-9-264.33.85
05d.2
Opspannende bomen
Inleiding: te bestuderen problemen
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
1. Zoek een opspannende boom
Probleem: Een aantal boorplatformen moeten onderling en
met de kust worden verbonden via een pijpleidingennet;
men wenst zo weinig mogelijk verbindingen te leggen
Het optimaal net is een willekeurige opspannende boom
•Opspannend: all knopen moeten aanwezig zijn
•Geconnecteerd: minstens één pad tussen elk paar knopen
•Zo weinig mogelijk verbindingen Boom
mogelijke leidingen
mogelijke oplossing
05d.4
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Opmerking
Voor een geconnecteerde graaf met n knopen
•bestaat een opspannende boom altijd
•heeft een opspannende boom n-1 takken
Voor een niet-geconnecteerde graaf met k componenten
•bestaat er geen opspannende boom, maar kan men zoeken
naar een opspannend bos met zo weinig mogelijk bomen
•dat bos heeft dan n-k takken (bewijs zelf)
mogelijke leidingen
minimaal opspannend bos
05d.5
versie: 28/3/2011
© W. Philips, Universiteit Gent, 1998-2011
Toepassing: is graaf geconnecteerd?
Probleem: In een dorpje spreken sommige mensen met
elkaar en andere niet; Als meneer A een roddel vertelt tegen
zijn buren, zal die roddel zich dan over het hele dorp
verspreiden?
Modellering: construeer een graaf met als knopen de
inwoners; twee knopen zijn verbonden als ze communiceren
Oplossing: antwoord is “ja”
 de graaf is geconnecteerd
 de graaf heeft een opspannende boom
Praktisch: gebruik een algoritme dat
• indien mogelijk een opspannende boom construeert
• en zoniet een minimaal opspannend bos
en onderzoek of het resultaat een boom is of een bos
(dit kan door aantal takken te tellen!)
05d.6
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
2. Zoek optimale opspannende graaf
Probleem: Een aantal boorplatformen moeten onderling en
met de kust worden verbonden via een zo goedkoop
mogelijk pijpleidingennet
Men kent de kost van elke mogelijke leiding
Resultaat: het optimaal net is de opspannende graaf met
kleinste kost
5
6
7
7
6
4
8
9 11
12 2
3
10
mogelijke leidingen (met kost)
3 3
optimaal leidingennet
05d.7
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
… Zoek optimale opspannende boom
Graafformulering vorig probleem: verbind alle knopen
onderling maar met de goedkoopste verzameling takken
 zoek een minimum-kost opspannende graaf
Als alle takkosten positief zijn is dit probleem equivalent met
“zoek een minimum-kost opspannende boom”
Zoniet is de optimale oplossing niet noodzakelijk boom!
5
6
7
8
9 11
12 2
3
10
optimale graaf = boom
3 3
6
-7
7
6
4
-5
-4
8
7
6
9 11
12 2
3
10
optimale graaf  boom
3 3
05d.8
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
3. Het Steinerprobleem
Probleem: Een aantal computers (verplichte knopen) moet worden
verbonden door een zo goedkoop mogelijk netwerk (takken)
Men mag (maar moet niet) eventueel ook verbindingen via
gegeven routers (optionele knopen) leggen
Oplossing: het optimaal netwerk is een boom (bij positieve kosten)
De rekentijd nodig om een optimale oplossing te zoeken
neemt zeer snel toe met de probleemgrootte; het Steiner
algoritme zoekt veel sneller een suboptimale oplossing
1
7
1
computer
3
5
1
2
6
2
5
mogelijke verbinding
router (optioneel)
optimaal netwerk
05d.9
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Samenvatting
Te bestuderen problemen:
1. Zoek een opspannende boom of een opspannend bos
met zo weinig mogelijk bomen
 het boom- en het bosalgoritme
2. Zoek een minimumkost opspannende boom (of graaf)
 de algoritmen van Prim en Kruskal
3. Zoek een Steiner-boom
 het algoritme van Steiner (dit levert echter maar
een sub-optimale oplossing!)
05d.10
Opspannende bomen
Constructie opspannende boom
versie: 28/3/2011
© W. Philips, Universiteit Gent, 1998-2011
Constructie van opspannende boom...
Gegeven een graaf G, zoek een opspannende boom B
Principiële oplossing: construeer een maximale subgraaf B
zonder circuits die alle knopen omvat
1. start met een B die alle knopen bevat maar geen takken
2. kies een nog niet-onderzochte tak T die geen lus is
voeg T toe aan B tenzij hierdoor een circuit wordt gevormd
3. ga naar 2 tenzij alle takken reeds onderzocht zijn
Het resultaat is de gezochte boom of een
bos als de graaf niet geconnecteerd is
(bewijs is triviaal)
Opmerking: Dit is een gulzig (greedy)
algoritme: iedere tak wordt maar één
maal onderzocht
Probleem: hoe circuitvorming detecteren?
05d.12
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Voorzieningen voor circuitdetectie
K: nog niet “bezochte” knopen
Boom B1
Boom B2
Herkleuring nodig (= Samenvoeging bomen)
Na herkleuring
Boom B1
Boom B2 (nu leeg!)
Besluit: we kunnen circuitvorming detecteren d.m.v. enkel lokale informatie
(de kleur van de takuiteinden)
05d.13
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Bosalgoritme met circuitdetectie...
Schematische samenvatting van het algoritme
Context
Vervangen door
Nieuwe boom
(nieuwe kleur)
Nieuwe boomtak
alle
takken
Verbinding bomen
of
Koorde
(Tak niet opnemen)
Besluit:
•het kleuren van knopen vergemakkelijkt circuitdetectie
•de kleuring moet wel consistent worden gehouden (alle
knopen van een boom in dezelfde kleur)
05d.14
versie: 28/3/2011
© W. Philips, Universiteit Gent, 1998-2011
...Bosalgoritme met circuitdetectie...
Datastructuren
• De lijsten K1, K2,… houden de knopen van de bomen bij
• De lijst B houdt de gevonden boomtakken bij
• De lijst K houdt de “nog niet bezochte” knopen bij
• Voor iedere knoop a: i(a)=j als aKj of i(a)=0 als aK
• n is de index van de eerste nog vrije lijst
Opmerking: de takken van de bomen worden dus in 1 lijst B
bijgehouden, maar de knopen in verschillende lijsten K1, K2,…
1. Initialisatie:
K bevat alle knopen; voor alle knopen a: i(a)=0 (kleur=wit)
K1, K2,… zijn leeg;
B is leeg
n=1
05d.15
versie: 28/3/2011
© W. Philips, Universiteit Gent, 1998-2011
...Bosalgoritme met circuitdetectie
2. Kies een willekeurige nog niet-onderzochte tak T=(a,b)
2.a. Circuitdetectie:
•Als i(a)=i(b) 0 dan kan T geen boomtak zijn
•Zoniet, voeg T toe aan de lijst B
2.b. Aanpassing hulplijsten:
•Als i(a)=i(b)=0: creatie: a en b uit K naar Kn; stel n=n+1
•Als i(a)=i(b) 0: circuit: doe niets
•Als i(a)=0 en i(b)=j 0: uitbreiding: a uit K naar Kj
Als i(a)=j 0 en i(b)=0: uitbreiding: b uit K naar Kj
samenvoeging: verplaats alle
•Als i(a)=k 0 en i(b)=l 0:
knopen van Kk naar Kl (of omgekeerd)
2.c. Indien nodig, pas de knoopindices i(a) en i(b) aan
3. Ga naar 2 tenzij alle takken onderzocht zijn
05d.16
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Efficiëntere stopvoorwaarde
Opmerking: men mag niet stoppen vooraleer alle takken
onderzocht zijn, zelfs al zijn alle knopen al gekleurd
Nu is K leeg, maar we
mogen niet stoppen
Correct stoppen
Men moet dus doorgaan tot alle takken onderzocht zijn … tenzij:
• (a) er maar één lijst Kj niet leeg is ( er is maar 1 boom!)
• (b) én K leeg is ( alle knopen werden al bezocht)
 het gevonden bos is dan immers een opspannende boom!
We kunnen dus “Ga naar 2 tenzij alle takken onderzocht zijn”
vervangen door “Ga naar 2 tenzij (a) en (b) voldaan zijn
 sneller algoritme
of alle takken onderzocht zijn”
Nog steeds nodig om het algoritme te doen stoppen in het
geval dat er geen opspannende boom bestaat!
05d.17
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Complexiteit
Complexiteit voor een graaf met m takken en n knopen
Stap 2 wordt maximaal m maal uitgevoerd
Elke keer dat stap 2 wordt uitgevoerd moeten we
1. bepalen tot welke lijsten a en b behoren; omdat we voor elke
knoop de lijstindex bijhouden is dit triviaal
2. individuele knopen x verplaatsen (triviaal met gelinkte lijsten)
en indices i(x) aanpassen
Soms moeten we bomen samenvoegen:
1. lijsten Ki en Kj samenvoegen (triviaal met gelinkte lijsten)
2. de knopen van Ki of Kj een nieuwe index geven: dit vraagt
in totaal nooit meer dan n/2 log2 n operaties als we steeds de
indices van de knopen in de kleinste lijst aanpassen
Besluit: complexiteit: c m+ n/2 log2 n  O(m) als m>>n
05d.18
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Kernpunten
1. de filosofie van het algoritme begrijpen: “takken een voor
een toevoegen tenzij er circuits gevormd worden”
2. het algoritme waar nodig aanpassen om een redelijk
efficiënte implementatie mogelijk te maken: “uiteinden
kleuren om circuitdetectie mogelijk te maken’’
3. algoritme nauwkeurig definiëren: datastructuren
definiëren, pseudocode neerschrijven en nagaan of het
algoritme in alle omstandigheden werkt (b.v., bij nietgeconnecteerde grafen, als er lussen zijn, … )
05d.19
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Vragen…
1. verander de implementatie van het algoritme voor het
zoeken van een opspannende boom zodat “herkleuringen”
veel sneller kunnen; tip: gebruik “pointers” i.p.v. getallen i(x)
om de knopen “te kleuren”; wat is nu het voornaamste
nadeel?
2. We zouden de gelinkte lijsten K1, K2, … ook kunnen
vervangen door arrays; wat zouden de voor- en nadelen zijn?
3. geef een algoritme dat, gegeven een bepaalde tak T in een
graaf G, een opspannende boom vindt voor de component
van G waartoe T behoort; mogelijke opl.: cfr. Prim (zie verder)
05d.20
Download