AMPELSTEUERUNG EINER KREUZUNG
AMPELSTEUERUNG EINER KREUZUNG
AMPELSTEUERUNG EINER KREUZUNG
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
ANMERKUNGEN ZUM INFORMELLEN ALGORITHMUS<br />
Info1, Einführung<br />
(H) INFORMELLE SPEZIFIKATION VON ADT COLOUREDGRAPH I<br />
Info1, Einführung<br />
❑<br />
❑<br />
❑<br />
Definition (n-Clique)<br />
n Knoten bilden eine n-Clique, wenn alle n Knoten paarweise durch je eine Kante<br />
verbunden sind.<br />
-> Offensichtlich braucht man zum Färben einer n-Clique n Farben.<br />
Optimalität<br />
-> Falls die gefundene Lösung mehr Farben benötigt als die maximale Clique,<br />
kann sie trotzdem noch optimal sein.<br />
die Lösung ist nicht optimal bzgl. Ziel (2), da es isolierte Knoten gibt<br />
-> isolierte Knoten (BA, DC, ED) stehen mit keinem anderen Knoten im Konflikt<br />
-> könnten also immer frei geschaltet sein (Grüner Pfeil)<br />
-> isolierte Knoten beeinflussen aber nicht die benötigte Anzahl an Farben<br />
→ ColGraphT, benutzte Operationen<br />
❑ alle Knoten gefärbt ?<br />
-> allNodesColoured (in ColGraphT, out Boolean)<br />
❑ ∀ ungefärbten Knoten k<br />
-> firstUncolouredNode (in ColGraphT, out ColNodeT)<br />
-> nextUncolouredNode (in ColGraphT, inout ColNodeT, out Boolean)<br />
❑ k verbunden mit irgend einem Knoten aus einer Menge ?<br />
-> associatedWith (in ColGraphT, in ColNodeT, in ColSetT, out Boolean)<br />
❑ Einlesen des konkreten Graphen<br />
-> initGraph (inout ColGraphT)<br />
-> addNode (inout ColGraphT, in ColNodeT)<br />
-> addArc (inout ColGraphT, in ColNodeT, in ColNodeT)<br />
monika.heiner@informatik.tu-cottbus.de WS 2005 1.1 - 9 / 12<br />
monika.heiner@informatik.tu-cottbus.de WS 2005 1.1 - 11 / 12<br />
(G) PSEUDOKODE-ALGORITHMUS (AUF ADT GRAPH)<br />
procedure FAERBUNG (in G : Graph T,<br />
out farben : Integer )<br />
Info1, Einführung<br />
var neueFarbe : ColSetT; /* Menge von Knoten von G, denen */<br />
/* die gleiche neue Farbe gegeben wird */<br />
begin<br />
farben := 0;<br />
while nicht alle Knoten gefärbt do<br />
farben +:= 1; /* nimm eine neue Farbe -> aktuelle Farbe */<br />
neueFarbe := ø;<br />
loop ∀ ungefärbten Knoten k von G do<br />
if k ist nicht verbunden mit irgendeinem Knoten in neueFarbe<br />
then<br />
färbe k; /* mit der aktuellen Farbe */<br />
füge k in neueFarbe ein;<br />
endif<br />
endloop<br />
endwhile<br />
(H) INFORMELLE SPEZIFIKATION VON ADT COLOUREDGRAPH II<br />
→ ColNodeT, benutzte Operationen<br />
❑ färbe k<br />
-> setColour (inout ColNodeT, in Integer )<br />
→ ColSetT, Menge von (gefärbten) Knoten, benutzte Operationen<br />
❑ Menge löschen<br />
-> clear (inout ColSetT)<br />
❑ Knoten in der Menge enthalten ?<br />
-> member (in ColSetT, in ColNodeT, out Boolean)<br />
❑ Knoten zur Menge hinzufügen<br />
-> include (inout ColSetT, in ColNodeT)<br />
Info1, Einführung<br />
end FAERBUNG.<br />
monika.heiner@informatik.tu-cottbus.de WS 2005 1.1 - 10 / 12<br />
monika.heiner@informatik.tu-cottbus.de WS 2005 1.1 - 12 / 12