Definition: Sei G = (V, E) ein Graph und A eine Menge. Eine Abbildung
w : E → A,
die jeder Kante e ∈ E ein Element w(e) ∈ A zuordnet, heißt Kantenmarkierung.
Wenn die Markierungen der Kanten reelle Zahlen sind, d.h. wenn A = ℝ ist, sprechen wir auch von Kantengewichten.
Wir leiten Implementierungen von Graphen mit Kantengewichten von der abstrakten Klasse Graph mit entsprechendem Typ-Parameter Double ab.
Eine einfache Möglichkeit zur konkreten Implementierung eines Graphen mit Kantengewichten besteht darin, die Kantengewichte w(i, j) als Einträge in einer Gewichtsmatrix zu speichern.
Definition: Eine Gewichtsmatrix eines Graphen ist eine n × n-Matrix A, für die gilt
ai,j = |
|
Hierbei ist der Wert noedge eine Zahl, die nicht als Kantengewicht vorkommen kann, z.B. je nach Anwendung ∞ oder 0.
Es folgt eine entsprechende Implementierung in der Klasse WeightedDirectedGraph, die von der abstrakten Klasse Graph mit Typ-Parameter Double abgeleitet ist.
Die zweite Version der Methode setWeight ist erforderlich, damit auch int-Zahlen als Parameter übergeben werden können; diese werden nämlich automatisch in double umgewandelt, jedoch nicht in Double.
Die Methode isEdge der Oberklasse Graph wird überschrieben, um einen Vergleich von double-Werten auf ungefähre Gleichheit im Rahmen von Rundungsfehlern zu gewährleisten.
Wir fassen ungerichtete Graphen als gerichtete Graphen auf, bei denen die Kanten stets in beide Richtungen verlaufen.
Weiter mit: [Graphen mit Knotenmarkierungen] oder [up]