Optimale 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
06b.2
Optimale opspannende bomen
Vervolg
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Optimale opspannende boom
Gegeven een graaf G, zoek een opspannende boom B (of
een bos als er geen boom bestaat) waarvoor de som van de
takkosten minimaal is
Voorbeeld: aanleggen van een
computernetwerk
5
6
7
4
6
7
Opmerkingen:
8
9 11
• er kunnen meerdere “even
3 3
12 2
optimale” opspannende
bomen zijn
3
10
• ook bij negatieve takkosten kan men zoeken naar een
optimale boom, maar natuurlijk is die optimale boom
dan niet noodzakelijk gelijk aan de optimale graaf
• men kan ook zoeken naar een duurste opspannende
boom of graaf
06b.4
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Constructie van de optimale boom...
T
deel Qk van optimale boom B
snede bepaald door Qk
T, een beste tak uit die snede
Qk
Stel we kennen een deelboom Qk van de (of een) optimale boom
Beschouw alle takken die een knoop van Qk verbinden met een
knoop niet in Qk (dit is de snede bepaald door de knopen van Qk )
Kies hieruit de (of een) tak T met minimale kost
Eigenschap: de (of een) optimale boom bevat T
 we kunnen Qk uitbreiden tot een groter deel Qk +1=Qk+T
06b.5
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Bewijs uit het ongerijmde
P
T
T’
a
Qk
b
Stel dat er geen optimale
boom bestaat die naast Qk
ook T bevat ….
 er bestaat er wel een
(tegenstrijdigheid)
Beschouw de (of een) optimale boom B die Qk omvat
In deze boom is er een uniek pad P van a naar b (opspannend!)
Er bestaat een tak T’ op dit pad die tot de snede behoort
Vervang tak T’ door T in de boom nieuwe boom B’
C (T )  C (T ' )  C ( B' )  C ( B)  C (T ' )  C (T )  C ( B)
 B’ is niet slechter dan de optimale boom B en dus optimaal
06b.6
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Herformulering
• Als je een deel Qk van een optimale boom kent
• en je de goedkoopste tak T kiest uit de snede bepaalt
door de knopen van Qk
 Dan is Qk+T een groter deel van een optimale boom
06b.7
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
...Constructie optimale boom
Principe: “kweek” een reeks bossen of bomen B1 B2 B
Bosalgoritme (Kruskal): doet een bos groeien
• B1 B2  is een groeiend bos
• B1 bestaat uit een goedkoopste tak en de uiteinden ervan
Boomalgoritme (Prim): doet 1 boom groeien
• B1 B2  is een groeiende boom
• B1 bevat één willekeurig gekozen knoop, maar geen takken
Beide algoritmen zijn varianten van het algoritme voor het
construeren van een (niet optimale) opspannende boom
Ze kiezen de takken echter in een welbepaalde (i.p.v. een
willekeurige) volgorde om een optimale boom te krijgen
06b.8
versie: 28/3/2011
© W. Philips, Universiteit Gent, 1998-2011
Prim-algoritme: principe
Principe:
•beschouw de snede S geassocieerd aan het reeds gevonden
deel van de optimale boom
•zoek in die snede de goedkoopste tak en breidt de boom
ermee uit
Kleine wijziging: we zoeken in de verzameling M van takken
die aan de boom grenzen i.p.v. in de snede S
•in M bevinden zich alle snedetakken, maar soms ook koorden
•telkens we de goedkoopste tak kiezen in M gaan we na of die
tak geen koorde vormt; indien ja dan verwijderen we de
kandidaattak en kiezen opnieuw onder de overblijvende takken
06b.9
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Voorbeeld: Prim
5
We mogen hier stoppen als we alle
knopen “bezocht” hebben! Waarom?
7
gekozen knoop en geen takken
7
6
4
Optimale kost: 3+3+4+5+6+7+2=30
B1: boom bestaande uit 1 willekeurig
6
8
9 11
3 3
12
10
2
3
Prim gebruikt het algoritme voor de constructie van een
opspannende boom, maar kiest een welbepaalde (nog nietonderzochte) tak T, n.l. een T die
•verbonden is met reeds gevonden takken  groeit 1 boom Bk
•en die een zo laag mogelijke kost heeft  Indien T en Bk geen
circuit vormen, dan is T een beste tak uit de snede bepaald
door Bk  Bk+T een groter deel van een optimale boom!
06b.10
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Prim-algoritme
Datastructuren:
• B houdt de gevonden takken bij van de groeiende boom
• M bevat alle nog niet onderzochte takken verbonden met de
groeiende boom, gesorteerd volgens kost
• voor elke knoop a: i(a)=1 als a tot de groeiende boom behoort
1. Initialisatie: kies een startknoop q
• B leeg, i(q)=1 en i(a)=0 voor alle andere knopen
• M bevat alle takken naar q, gesorteerd volgens kost
2. Kies de eerste tak T=(a,b) uit M (is deze met laagste kost!)
2.a. Circuitdetectie (is T een snedetak?):
•Als i(a)=i(b)=1 (circuit): verwijder T uit M en ga naar 2
•Als i(a)=1 en i(b)=0: verplaats T van M naar B; zet i(b)=1
2.b. Voeg alle takken uit b die nog niet in M zitten toe aan M;
hou hierbij M gesorteerd
3. Ga naar 2 tenzij M leeg is
06b.11
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Opmerkingen
Op het eerste zicht lijkt het Prim-algoritme niet erg meer op
het algoritme voor een opspannende (i.p.v. optimale) boom
Dit is gezichtsbedrog:
•door de volgorde waarin de takken worden gekozen vallen
vele stappen van het originele algoritme weg
•ook de meeste lijsten worden hierdoor overbodig
•en de stopvoorwaarde wordt hierdoor ook eenvoudiger
De belangrijkste nieuwigheden zijn
•het kiezen van de goedkoopste tak verbonden met de
boom
•het bijhouden van een gesorteerde lijst M
Het zojuist besproken algoritme is maar een basisversie;
kleine aanpassingen zijn nodig in de praktijk (b.v. wat als M
leeg is na stap 1)
06b.12
Opspannende bomen
Het algoritme van Kruskal
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Voorbeeld: Kruskal
5
6
7
8
Optimale kost:
30
9 11
3 3
12
3
10
“Echte” Boom B1
“Echte” Boom B2
6
7
7
6
4
5
2
7
6
4
8
9 11
3 3
3
Na samenvoeging
12
10
2
Boom B1(Leeg!)
Boom B2
Stop als we n-1=7 takken gevonden hebben! Waarom mag dat?
Kruskal start met de globaal goedkoopste tak
Kruskal kiest steeds een (nog niet-onderzochte) tak T met de
globaal laagst mogelijke kost; indien T geen circuit vormt dan
behoort T tot een optimale boom (zie verder)
06b.14
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Kruskal: geldigheid
Kruskal kiest steeds een (nog niet-onderzochte) tak T=(a,b) met
de globaal laagst mogelijke kost
Indien T geen circuit vormt dan zijn er twee mogelijkheden:
•T is een uitbreiding van bepaalde boom Qk van het reeds
gevonden bos of verbindt Qk met een andere boom Ql  T is
een tak in de snede bepaald door Qk
•zoniet  T is een tak in de snede bepaald door b.v. a
 In beide gevallen is T een tak in de snede bepaald door
een deelboom van een optimale boom
Bovendien is T een goedkoopste tak in die snede want
•de snede bevat enkel nog niet gekozen takken
•en T is de goedkoopste nog niet gekozen tak!
06b.15
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Kruskal-algoritme
Dit is een gewijzigde versie van het algoritme voor een (nietoptimale) opspannende boom:
1. Initialisatie
1’. Sortering: sorteer de takken van G volgens stijgende kost
2. Kies de goedkoopste nog niet-onderzochte tak T=(a,b)
2.a. circuitdetectie
2.b. Aanpassing hulplijsten
2.c. Aanpassing knoopindices
3. Ga naar 2 tenzij alle takken onderzocht zijn of tot K leeg is
en slechts één Bj niet leeg is
Complexiteit voor een graaf met m takken en n knopen
Stap 1’: m log2 m operaties;
 O(m log2 m) als m>>n
Stappen 2: cm+ n/2 log2 n
06b.16
versie: 28/3/2011
© W. Philips, Universiteit Gent, 1998-2011
Vergelijking Prim–Kruskal
Kruskal kiest uit alle nog niet onderzochte takken deze met
laagste kost
Prim kiest uit de nog niet onderzochte takken die verbonden
zijn met de reeds gevonden boom deze met laagste kost
De optimale bomen van Prim en Kruskal zijn niet noodzakelijk
gelijk, maar ze hebben wel dezelfde kost (zie voorbeeld)
Voordelen Prim:
• geen initiële sortering nodig
• geen boomgroepeeroperaties nodig (er is maar 1 boom)
Nadelen Prim:
• het “correct houden” van de lijst M van “kiesbare” takken
is vrij complex: men moet M gesorteerd houden en ook
opletten dat elke tak slechts eenmaal opgenomen wordt
in M
06b.17
versie: 28/3/2011
© W. Philips, Universiteit Gent, 1998-2011
Algemene opmerkingen
We zochten naar een opspannende graaf met minimale kost en
we veronderstelden alle kosten positief
 de oplossing was een boom (omdat koorden nodeloze
kosten veroorzaken)
Als men ook negatieve kosten toelaat
• is de optimale oplossing niet noodzakelijk een boom
(koorden kunnen nu kost drukken)
• de vorige algoritmen produceren in dit geval niet de
gevraagde optimale graaf maar wel een oplossing voor een
ander probleem: “zoek de goedkoopste opspannende boom”
Verwante problemen: zoek de opspannende graaf of de
opspannende boom met maximale kost
• oplossing: vervang alle gewichten w door -w en zoek de
boom met minimale kost
06b.18
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Vragen
1. Voor het kostcriterium: kost van graaf=som van takkosten
•Wanneer is de minimum-kost graaf zeker een boom?
•Wanneer is de maximum-kost graaf zeker een boom?
Beschouw telkens de gevallen waarin er enkel positieve,
enkel negatieve of gemengde takkosten aanwezig zijn;
2. Pas Prim of Kruskal aan om een minimum-kost
opspannende graaf op te sporen (ook al is die geen boom)
3. Geef een voorbeeld van een graaf met negatieve
takkosten waarvoor de minimum-kost opspannende graaf
geen boom is
4. Pas Prim aan zodat M steeds toch enkel snedetakken
bevat
06b.19
Zelfstudie: het Steineralgoritme
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Het Steinerprobleem…
Probleem: verbindt een aantal knopen in een graaf met
elkaar met minimale totale verbindingskost
Gebruik hierbij eventueel verbindingen via de andere knopen
1
7
1
2
3
5
1
2
6
2
5
Steinerboom
5
Optimale
opspannende
boom
computer
mogelijke verbinding
router (optioneel)
optimaal netwerk
06b.21
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
… Het Steiner-probleem
Het Steiner-probleem is “NP-compleet”: de rekentijd van alle
bekende algoritmen neemt zo snel toe (= sneller dan
polynomiaal) met de probleemgrootte (b.v. aantal knopen en
takken in de graaf) dat enkel kleine problemen kunnen
worden opgelost
Het Steiner-algoritme
• zoekt een goede maar niet noodzakelijk optimale oplossing
voor het Steiner probleem
• en heeft een rekentijd die slechts polynomiaal toeneemt
met de probleemgrootte zodat ook grotere problemen
kunnen worden opgelost
06b.22
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Het Steiner-algoritme ...
1
7
kortste pad tussen a en b
1
kortste pad tussen a en c
3
1
2
b
6
5
2
2
5
a
c
2
G’
4
B(G’): optimale
Stap 1: vorm een nieuwe graaf G’
opspannende boom
• de knopen van G’ zijn de te verbinden knopen
• de graaf G’ is volledig geconnecteerd
• de takken (a,b) van G’ hebben als kost de kost van
het “kortste” (goedkoopste) pad in G tussen a en b
Stap 2: zoek de optimale opspannende boom B(G’) in G’
06b.23
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
...Het Steiner-algoritme...
1
7
1
G’’
B(G’’)=G’’ (toevallig!)
3
2
B(G’)
5
1
6
2
5
2
2
G’
4
Stap 3: vervang elke tak (a,b) van de boom B(G’) door het
kortste pad tussen a en b in G
• de resulterende graaf G’’ is een subgraaf van G
maar is in het algemeen geen boom
Stap 4: zoek de optimale opspannende boom B(G’’) in G’’
Opmerking: in dit voorbeeld is stap 4 toevallig overbodig
06b.24
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
...Het Steiner-algoritme
a
B(G’’)
eindresultaat
Stap 5: beschouw achtereenvolgens
elke knoop a met graad 1 in B(G’’), d.w.z. elke knoop
waaruit maar 1 tak van B(G’’) vertrekt
• indien a een optionele knoop is, verwijder de tak naar a
De resulterende kost K is niet optimaal, maar er geldt
K  2 Kopt (1  1 / k ) met k het aantal knopen met graad 1 in
de (onbekende) optimale steinerboom (en altijd k  2)
Complexiteit: orde pm2 om p van m knopen te verbinden
06b.25
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Interpretatie
Stap 1 zoekt eigenlijk de goedkoopste paden om paren van
knopen te verbinden
Stap 2 elimineert redundante paden
De overblijvende paden vormen in stap 3 samen een graaf
die alle gevraagde knopen verbindt, maar
• die waarschijnlijk redelijk goedkoop is wegens de manier
waarop hij geconstrueerd werd,
• maar die misschien geen boom is en dus overbodige
takken bevat
Stap 4 elimineert eventuele overbodige takken
Stap 5 elimineert eventuele overbodige knopen en de eraan
verbonden takken
06b.26
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Opmerking
De slides die in de les niet aan bod kwamen zijn bedoeld
voor zelfstudie, tenzij expliciet aangegeven wordt dat ze niet
moeten gekend zijn
06b.27
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Literatuur
Evans, blzn. 46-43, 57-59
Cook, blzn. 9-15
Peterson software:
• grafen tekenen, analyseren
• Prim en Kruskal (optimale bomen)
• Dijkstra (optimale paden)
• ...
06b.28
Uitbreidingen
Niet te kennen
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
Veralgemeend opspanningsprobleem...
Optimale chip-layout: een aantal modules moeten samen op
een chip worden geplaatst; men heeft maar 1 laag om de
verbindingen te realiseren; de modules die het meest
communiceren moeten zo dicht mogelijk bij elkaar komen
Graafrepresentatie: de modules zijn de knopen van een volledig
geconn. graaf; takken verbinden communicerende modules
Verwachte trafiek
A
B
C
A

B
200

C
4
77
D
80
125 64
E
32
42
D
A
E
C


19 26
B

D
E
Volledig geconnecteerde,
niet-planaire graaf
06b.30
© W. Philips, Universiteit Gent, 1998-2011
versie: 28/3/2011
...Veralgemeend opspanningsprobleem
Oplossing: zoek een planaire subgraaf die alle knopen omvat
en waarvan de som van de takkosten maximaal is
De planariteit garandeert een layout die met 1 laag
verbindingen kan worden gerealiseerd
De duale graaf is de (topologie van) de gevraagde layout
Mogelijke, maar
niet optimale
oplossing
planaire subgraaf
layout
B
C
A
D
E
06b.31
Download