Info1, Einführung
(B) PROGRAMM
Info1, Einführung
❑ Eingabe:
Von wo nach wo darf man abbiegen?
❑ Ausgabe:
geeignete Folge von Ampelphasen an jeder Straße (Straßenspur)
AMPELSTEUERUNG
EINER KREUZUNG
monika.heiner@informatik.tu-cottbus.de
genauer: uns reicht die Aussage,
welche Straßen gemeinsame Ampelphasen haben müssen;
WS 2005
(A) PROBLEM
1.1 - 1 / 12
Info1, Einführung
E
B
WS 2005
❑ Kanten :
zwischen je zwei
kollidierenden Wegen
z. B. AD - EB
Anmerkung:
Wege mit demselben Ziel
werden nicht als Kollision
betrachtet
(z. B. AD und ED )
A
❑ Ziel (1) Sicherheit:
keine kollidierenden Wege gleichzeitig, z.B. EB und AD
1.1 - 3 / 12
((C) MATHEMATISCHES MODELL - UNGERICHTETER GRAPH
❑ Knoten:
Wege über die Kreuzung
Anmerkung:
Wendewege (z. B. AA )
werden nicht betrachtet.
D
C
monika.heiner@informatik.tu-cottbus.de
Info1, Einführung
AB
AC
AD
BA
BC
BD
DA
DB
DC
EA
EB
EC
ED
❑ Ziel (2) Maximierung:
möglichst hoher Verkehrsfluß über die Kreuzung, z.B. BA, ED, EC gleichzeitig
monika.heiner@informatik.tu-cottbus.de
WS 2005
1.1 - 2 / 12
monika.heiner@informatik.tu-cottbus.de
WS 2005
1.1 - 4 / 12
(D) PROBLEM IN DER SPRACHE DES MODELLS
❑ Ziel (1):
Info1, Einführung
(F ) INFORMELLER ALGORITHMUS (AUF MATHEMATISCHEN MODELL)
Info1, Einführung
❑ Solange noch nicht alle Knoten gefärbt sind:
Sicherheit
gleichzeitig passierbare Wege über die Kreuzung
1. Wähle einen ungefärbten Knoten und färbe ihn mit einer neuen Farbe.
-> Menge von Knoten, in der keine zwei Knoten durch eine Kante verbunden sind;
2. Für jeden ungefärbten Knoten:
❑ Ziel (2):
Untersuche, ob er durch eine Kante mit einem Knoten mit dieser neuen
Farbe verbunden ist.
Falls nicht, färbe den aktuellen Knoten mit dieser neuen Farbe.
Maximierung
-> Finde eine Aufteilung der Knotenmenge
in möglichst wenige Teilmengen gemäß Ziel (1)
(d.h. in denen jeweils keine zwei Knoten durch eine Kante verbunden sind);
❑ Ergebnis ist u. U. abhängig von der Reihenfolge,
in der die Knoten durchmustert werden
3
3
1
2
5
2
5
1
4
4
Durchmusterung “von links nach rechts“
monika.heiner@informatik.tu-cottbus.de
WS 2005
(E) PROBLEMERÖRTERUNG AUF MODELLNIVEAU
1.1 - 5 / 12
Info1, Einführung
monika.heiner@informatik.tu-cottbus.de
❑ Kreuzungs-Beispiel
-> vier Farben
❑ Definition (Färbung)
Eine Färbung eines Graphen ist eine Zuordnung von Farben zu den Knoten, bei der
durch eine Kante verbundene Knoten stets verschiedene Farben bekommen.
❑ Optimal?
In diesem Fall ja:
❑ Problem
Finde eine Färbung des (Kreuzungs-) Graphen mit möglichst wenig Farben !
❑ ABER:
Dieses Problem ist als NP-vollständig bekannt!
-> es gibt (vermutlich) keine wesentlich bessere Lösung als alle Färbungen
durchzuprobieren;
-> exponentieller Aufwand -> SEHR AUFWENDIG UND TEUER !
-> Mit guter Nährungslösung zufrieden ?
z. B. folgender “greedy”- Algorithmus
monika.heiner@informatik.tu-cottbus.de
WS 2005
1.1 - 6 / 12
WS 2005
1.1 - 7 / 12
((F ) INFORMELLER ALGORITHMUS (AUF MATHEMATISCHEN MODELL)
❑ AHA-Erlebnis
Dieses Problem ist in der Graphentheorie wohl bekannt und eingehend untersucht !
(-> Färbung einer politischen Landkarte)
“entsprechend der Knotennummern”
z. B. AC, DA, BD, EB
sind paarweise durch je
eine Kante verbunden
(4-Clique,
vollst. vermaschter Graph)
und erfordern
(mindestens) 4 Farben.
monika.heiner@informatik.tu-cottbus.de
WS 2005
AB
AC
AD
BA
BC
BD
DA
DB
DC
EA
EB
EC
Info1, Einführung
ED
1.1 - 8 / 12
ANMERKUNGEN ZUM INFORMELLEN ALGORITHMUS
Info1, Einführung
(H) INFORMELLE SPEZIFIKATION VON ADT COLOUREDGRAPH I
Info1, Einführung
→ ColGraphT, benutzte Operationen
❑ Definition (n-Clique)
n Knoten bilden eine n-Clique, wenn alle n Knoten paarweise durch je eine Kante
verbunden sind.
-> Offensichtlich braucht man zum Färben einer n-Clique n Farben.
❑ Optimalität
-> Falls die gefundene Lösung mehr Farben benötigt als die maximale Clique,
kann sie trotzdem noch optimal sein.
❑ die Lösung ist nicht optimal bzgl. Ziel (2), da es isolierte Knoten gibt
-> isolierte Knoten (BA, DC, ED) stehen mit keinem anderen Knoten im Konflikt
-> könnten also immer frei geschaltet sein (Grüner Pfeil)
-> isolierte Knoten beeinflussen aber nicht die benötigte Anzahl an Farben
❑ alle Knoten gefärbt ?
-> allNodesColoured (in ColGraphT, out Boolean)
❑ ∀ ungefärbten Knoten k
-> firstUncolouredNode (in ColGraphT, out ColNodeT)
-> nextUncolouredNode (in ColGraphT, inout ColNodeT, out Boolean)
❑ k verbunden mit irgend einem Knoten aus einer Menge ?
-> associatedWith (in ColGraphT, in ColNodeT, in ColSetT, out Boolean)
❑ Einlesen des konkreten Graphen
-> initGraph (inout ColGraphT)
-> addNode (inout ColGraphT, in ColNodeT)
-> addArc (inout ColGraphT, in ColNodeT, in ColNodeT)
monika.heiner@informatik.tu-cottbus.de
WS 2005
(G) PSEUDOKODE-ALGORITHMUS (AUF ADT GRAPH)
procedure FAERBUNG (in G
farben
out
1.1 - 9 / 12
Info1, Einführung
: Graph T,
: Integer )
monika.heiner@informatik.tu-cottbus.de
WS 2005
(H) INFORMELLE SPEZIFIKATION VON ADT COLOUREDGRAPH II
1.1 - 11 / 12
Info1, Einführung
→ ColNodeT, benutzte Operationen
var neueFarbe : ColSetT; /* Menge von Knoten von G, denen */
/* die gleiche neue Farbe gegeben wird */
begin
farben := 0;
❑ färbe k
-> setColour (inout ColNodeT, in Integer )
→ ColSetT, Menge von (gefärbten) Knoten, benutzte Operationen
while nicht alle Knoten gefärbt do
farben +:= 1;
/* nimm eine neue Farbe -> aktuelle Farbe */
neueFarbe := ø;
loop ∀ ungefärbten Knoten k von G do
if k ist nicht verbunden mit irgendeinem Knoten in neueFarbe
then
färbe k;
/* mit der aktuellen Farbe */
füge k in neueFarbe ein;
endif
endloop
endwhile
❑ Menge löschen
-> clear (inout ColSetT)
❑ Knoten in der Menge enthalten ?
-> member (in ColSetT, in ColNodeT, out Boolean)
❑ Knoten zur Menge hinzufügen
-> include (inout ColSetT, in ColNodeT)
end FAERBUNG.
monika.heiner@informatik.tu-cottbus.de
WS 2005
1.1 - 10 / 12
monika.heiner@informatik.tu-cottbus.de
WS 2005
1.1 - 12 / 12