AMPELSTEUERUNG EINER KREUZUNG

Werbung
Info2, Einführung
(A) PROBLEM
Info2, Einführung
D
C
E
AMPELSTEUERUNG
EINER KREUZUNG
B
A
[Aho, Hopcroft, Ullman 1983]
Ziel (1) Sicherheit:
keine kollidierenden Wege gleichzeitig, z.B. EB und AD
Ziel (2) Maximierung:
möglichst hoher Verkehrsfluß über die Kreuzung, z.B. BA, ED, EC gleichzeitig
[email protected]
SS 2013
(B) PROGRAMM
1.1 - 1 / 12
Info2, Einführung
Eingabe:
[email protected]
SS 2013
((C) MATHEMATISCHES MODELL - UNGERICHTETER GRAPH
Knoten:
Wege über die Kreuzung
Anmerkung:
Wendewege (z. B. AA )
werden nicht betrachtet.
Von wo nach wo darf man abbiegen?
Ausgabe:
geeignete Folge von Ampelphasen an jeder Straße (Straßenspur)
Kanten :
zwischen je zwei
kollidierenden Wegen
z. B. AD - EB
genauer: uns reicht die Aussage,
welche Straßen gemeinsame Ampelphasen haben müssen;
Anmerkung:
Wege mit demselben Ziel
werden nicht als Kollision
betrachtet
(z. B. AD und ED )
[email protected]
SS 2013
1.1 - 3 / 12
1.1 - 2 / 12
[email protected]
SS 2013
Info2, Einführung
AB
AC
AD
BA
BC
BD
DA
DB
DC
EA
EB
EC
ED
1.1 - 4 / 12
(D) PROBLEM IN DER SPRACHE DES MODELLS
Ziel (1):
Info2, Einführung
Sicherheit
Info2, Einführung
AHA-Erlebnis
gleichzeitig passierbare Wege über die Kreuzung
-> Menge von Knoten, in der keine zwei Knoten durch eine Kante verbunden sind;
Ziel (2):
(E) PROBLEMERÖRTERUNG AUF MODELLNIVEAU
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);
Dieses Problem ist in der Graphentheorie wohl bekannt und eingehend untersucht !
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.
(-> Färbung einer politischen Landkarte)
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
[email protected]
SS 2013
1.1 - 5 / 12
(F) INFORMELLER ALGORITHMUS (AUF MATHEMATISCHEN MODELL)
Info2, Einführung
Solange noch nicht alle Knoten gefärbt sind:
[email protected]
1. Wähle einen ungefärbten Knoten und färbe ihn mit einer neuen Farbe.
2. Für jeden ungefärbten Knoten:
Optimal?
In diesem Fall ja:
z. B. AC, DA, BD, EB
sind paarweise durch je
eine Kante verbunden
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.
Ergebnis ist u. U. abhängig von der Reihenfolge,
in der die Knoten durchmustert werden
(4-Clique,
vollst. vermaschter Graph)
3
3
2
5
1
AB
AC
AD
BA
BC
BD
DA
DB
DC
EA
EB
EC
Info2, Einführung
und erfordern
(mindestens) 4 Farben.
ED
4
4
Durchmusterung “von links nach rechts“
[email protected]
2
5
1.1 - 6 / 12
((F) INFORMELLER ALGORITHMUS (AUF MATHEMATISCHEN MODELL)
Kreuzungs-Beispiel
-> vier Farben
1
SS 2013
SS 2013
“entsprechend der Knotennummern”
1.1 - 7 / 12
[email protected]
SS 2013
1.1 - 8 / 12
ANMERKUNGEN ZUM INFORMELLEN ALGORITHMUS
Info2, Einführung
(G) PSEUDOKODE-ALGORITHMUS (AUF ADT GRAPH)
procedure FAERBUNG (in
out
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.
G
farben
Info2, Einführung
: Graph T,
: Integer )
var neueFarbe : ColSetT; /* Menge von Knoten von G, denen */
/* die gleiche neue Farbe gegeben wird */
begin
farben := 0;
Optimalität
-> Falls die gefundene Lösung mehr Farben benötigt als die maximale Clique,
kann sie trotzdem noch optimal sein.
while nicht alle Knoten gefärbt do
farben +:= 1;
/* nimm eine neue Farbe -> aktuelle Farbe */
neueFarbe := ø;
die Lösung ist nicht optimal bzgl. Ziel (2), da es isolierte Knoten gibt
loop forall 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
-> 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
end FAERBUNG.
[email protected]
SS 2013
(H) INFORMELLE SPEZIFIKATION VON ADT COLOUREDGRAPH I
1.1 - 9 / 12
Info2, Einführung
-> ColGraphT, benutzte Operationen
[email protected]
SS 2013
(H) INFORMELLE SPEZIFIKATION VON ADT COLOUREDGRAPH II
Info2, Einführung
-> ColNodeT, benutzte Operationen
alle Knoten gefärbt ?
färbe k
-> allNodesColoured (in ColGraphT, out Boolean)
-> setColour (inout ColNodeT, in Integer )
forall ungefärbten Knoten k
-> firstUncolouredNode (in ColGraphT, out ColNodeT)
-> ColSetT, Menge von (gefärbten) Knoten, benutzte Operationen
-> nextUncolouredNode (in ColGraphT, inout ColNodeT, out Boolean)
Menge löschen
k verbunden mit irgend einem Knoten aus einer Menge ?
-> clear (inout ColSetT)
-> associatedWith (in ColGraphT, in ColNodeT, in ColSetT, out Boolean)
Knoten in der Menge enthalten ?
-> member (in ColSetT, in ColNodeT, out Boolean)
Einlesen des konkreten Graphen
-> initGraph (inout ColGraphT)
Knoten zur Menge hinzufügen
-> addNode (inout ColGraphT, in ColNodeT)
-> addArc (inout ColGraphT, in ColNodeT, in ColNodeT)
[email protected]
1.1 - 10 / 12
SS 2013
-> include (inout ColSetT, in ColNodeT)
1.1 - 11 / 12
[email protected]
SS 2013
1.1 - 12 / 12
Herunterladen