faecher:informatik:oberstufe:graphen:zpg:hilfekarten:start

Dies ist eine alte Version des Dokuments!


Hilfestellung zur Programmierung mit dem Graphentester

Aktion auf allen Knoten/Kanten

Soll der Algorithmus mit allen Knoten des Graphen etwas Bestimmtes machen, dann verwendet man die Methode getAlleKnoten() bzw. getAlleKanten() des Objekts g (Klasse Graph):

import java.util.List;
// Eine Liste aller Knoten anfordern
List<Knoten> alleKnoten = g.getAlleKnoten();
 
// Schleife über alle Knoten der Liste
for (Knoten aktuellerKnoten: alleKnoten) {
   // mache etwas mit dem aktuellen Knoten, z.B. markieren
   aktuellerKnoten.setMarkiert(true);
   // Ausführung unterbrechen
   step();Hilfestellung zur Programmierung mit dem Graphentester
}

Aktion auf bestimmten Knoten/Kanten

Soll der Algorithmus mit bestimmten Knoten/Kanten des Graphen etwas bestimmtes machen, dann holt man sich eine Liste aller Knoten/Kanten, die einer Bedingung genügen. Diese Bedingung kann als Prädikat, d.h. einem Lambda-Ausdruck, der true oder false zurück liefert, angegeben werden.

import java.util.List;
// Eine Liste aller markierten Knoten anfordern
List<Knoten> markierteKnoten = g.getAlleKnoten(k->k.isMarkiert());
 
// Schleife über alle Knoten der Liste
for (Knoten aktuellerKnoten: markierteKnoten ) {
   // mache etwas mit dem aktuellen Knoten, z.B. Markierung löschen
   aktuellerKnoten.setMarkiert(false);
   // Ausführung unterbrechen
   step();
}

Diese Beschränkung auf eine Teilmenge mittels eines Lambda-Ausdrucks funktioniert auch bei den Methoden:

  • getAlleKanten(…)
  • getAusgehendeKanten(…)
  • getEingehendeKanten(…)
  • getNachbarknoten(…)

Knoten/Kanten sortieren oder Aktion mit Knoten/Kante mit kleinstem/größtem Wert

Möchte man eine Knoten- oder Kantenliste sortieren oder den größten/kleinsten wert ermitteln, kann man folgendermaßen vorgehen:
Zunächst holt man sich eine Liste der Knoten/Kanten. Mit Collections.sort(…) kann man die Kanten nach ihrem Gewicht und die Knoten nach ihrem Wert aufsteigend sortieren lassen. Das erste Element der Liste (Index=0) ist dann das mit dem kleinsten Wert, das letzte das mit dem größten Wert (Index=(Länge der Liste -1)).

import java.util.List;
import java.util.Collections;
// Liste aller Kanten holen
List<Kante> kanten = g.getAlleKanten();
// Kanten nach Gewicht aufsteigend sortieren
Collections.sort(kanten);
// Kante mit minimalem bzw. maximalem Gewicht ermitteln
Kante min = kanten.get(0);
Kante max = kanten.get(kanten.size()-1);
  • faecher/informatik/oberstufe/graphen/zpg/hilfekarten/start.1668444375.txt.gz
  • Zuletzt geändert: 14.11.2022 17:46
  • von Frank Schiebel