faecher:informatik:oberstufe:graphen:zpg:topologische_sortierung:start

Topologische Sortierung von Graphen

Bei einem Aufbausimulationsspiel kann man verschiedene Gebäude bauen. Jedes Gebäude produziert eine bestimmte Ware. Damit das Gebäude arbeiten kann, benötigt es seinerseits Waren anderer Gebäude als Rohstoff:

  • Die Minen müssen mit Essen versorgt werden, das entweder Fleisch vom Metzger oder Brot vom Bäcker sein kann. Je nach Typ produzieren Minen Kohle oder Eisenerz.
  • Die Eisenschmelze stellt daraus das vom Werkzeugmacher benötigte Eisen her.
  • Der Werkzeugmacher heizt seine Schmiede mit Kohle und erzeugt aus dem Eisen Sensen für die Getreidefarm, Fleischermesser für den Metzger und Pickel für die Minen.
  • Mit dem Getreide der Farm werden die Schweine gefüttert und in der Mühle das Mehl für den Bäcker gemahlen.
  • Die Schweine werden vom Metzger geschlachtet.

1)

Diese Abhängigkeiten machen es schwer zu entscheiden, in welcher Reihenfolge man die Gebäude bauen sollte, damit sie nicht ungenutzt herumstehen.


(A1)

Gib (wenn möglich) eine sinnvolle Baureihenfolge der Gebäude an.

Die Problematik der gegenseitigen Abhängigkeiten tritt in vielen Situationen auf. Es wäre also von Vorteil, mit einem Algorithmus entscheiden zu können, ob eine sinnvolle Reihenfolge gefunden werden kann und wenn ja welche. Eine solche Reihenfolge nennt man topologische Sortierung auf einem gerichteten Graphen


(A2)

Modelliere die Situation im Aufbausimulationsspiel als gerichteter Graph.

  • Was sind die Knoten, was die Kanten?
  • Müssen die Kanten eine Richtung haben oder genügt es, Verbindungen herzustellen?
  • Woran kannst du am Graphen erkennen, dass es für das Simulationsspiel keine topologische Sortierung gibt?

Lösung


(A3)

Im Computerspiel gibt es zwei Möglichkeiten, Verklemmungen zu lösen.

  • Weitere Gebäude werden eingeführt: z.B. eine Fischerhütte, die ohne Voraussetzung Essen (Fisch) produziert.
  • Man erhält eine Anzahl von Anfangsgegenständen, mit denen man die Produktion in Gang bringen kann: z.B. 20 Pickel.

Gib an, welche Kanten des ursprünglichen Graphen (zumindest vorübergehend) entfernt werden können, wenn man die Fischerhütte hinzufügt und zu Beginn 20 Pickel zur Verfügung stehen. Zeige, dass so die Verklemmung gelöst wird und eine topologische Sortierung nun möglich ist. Zeichne den zu dieser topologischen Sortierung gehörigen Graphen.

Lösung

Wenn es bei einem gerichteten Graphen eine Abfolge der Knoten des Graphen gibt, so dass für jede Kante k gilt: Wenn k von A nach B geht, dann steht A vor B in der Abfolge, dann existiert in diesem Graphen eine topologische Sortierung.

Um eine Reihenfolge anzugeben, muss man eine Abfolge der Knoten des Graphen angeben, so dass für jede Kante k gilt: Wenn k von A nach B geht, dann steht A vor B in der Abfolge.

Wichtig dabei ist, dass es innerhalb der Reihenfolge der Sortierung nicht notwendig ist, stets eine Kante von einem Knoten in der Sortierung zum nächsten zu haben. Es reicht, wenn man die Knoten von links nach rechts in einer Reihenfolge anordnen kann, so dass es keine Kanten gibt, die von rechts nach links zeigen. So kann man den Lösungsgraphen aus der vorigen Aufgabe durch Verschieben der Knoten folgendermaßen anordnen:

Das stellt eine gültige topologische Sortierung dar, auch wenn es keine Kante von der Kohle- zur Erzmine gibt. Man erkennt auf diese Weise auch sofort, dass es mehr als eine topologische Sortierung eines gerichteten Graphen geben kann, die Reihenfolge ist also nicht eindeutig:


(Hands-On)

Du kannst das selbst ausprobieren, indem du die folgende Datei aufbausimulation-graph-fischerhuette.zip herunterlädst und auspackst. Du erhältst die Datei Aufbausimulation-Graph-Fischerhuette.excalidraw. Diese kannst du in Excalidraw öffnen, nun kannst du die Knoten des Graphen auf einer Achse anordnen, so dass es keine Kanten gibt, die von rechts nach links zeigen.

Zum Vergleich, kannst du versuchen, dasselbe Ergebnis mit dem ursprünglichen Graphen (ohne Fischerhütte) zu erzielen: aufbausimulation-graph.zip - man kann sehr gut erkennen, wie ein Zyklus im Graph eine topologische Sortierung unmöglich macht.

(A4)

Öffne im Graphentester das Beispiel 02_topologischesortierung/02_aufbausimulation2.csv. Untersuche die Situation mit Hilfe des bereits im Graphentester implementierten Algrithmus "Topologogische Sortierung".

Formuliere den Algorithmus als Pseudocode.

Hilfestellung: Verbale Beschreibung des Algorithmus

Lösung: Pseudocode


(A5)

Implementiere den Algorithmus selbst in einer eigenen Klasse unter "eigene Algorithmen". Teste deinen Algorithmus an den Beispielen 03_beispiel_obst.csv und 04_beispiel_obst2.csv.

Lösungsvorschlag Algorithmus


(A6) Rangliste

Im Tennisclub "Blau-Weiß" wird normalerweise im Laufe des Jahres eine Rangliste der Spieler ausgespielt. Dazu spielt jeder gegen jeden. In diesem Jahr mussten aber umfangreiche Bauarbeiten am Platz durchgeführt werden. Die Saison neigt sich nun dem Ende, es haben aber noch nicht alle Paarungen stattgefunden. Die Tabelle gibt Auskunft, wie die Spiele nach Sätzen ausgegangen sind. Der Eintrag in der dritten Spalte der zweiten Zeile bedeutet z.B., dass Albert mit 1:3 gegen Boris verloren hat.

  • Modelliere die Situation als Graph. Was sind die Knoten? Was wird durch die Kanten beschrieben? Wäre es möglich die Situation durch einen ungerichteten Graphen zu modellieren?
  • Verwende den Graphentester, um zu untersuchen, ob es eine Sortierung gibt. Gib, wenn möglich die Rangliste an.
  • Ist die Rangliste eindeutig?

(A7) Gruppenarbeit

Für eine Gruppenarbeit bilden die Schüler einer Klasse vier Gruppen. Alle Gruppen teilten ihre Arbeit in einzelne Aufgaben auf. Drei Gruppen konnten alle ihre Aufgaben erledigen, aber eine Gruppe wird nicht fertig.

Die schlausten Schüler, Ada und Charles, haben die vier Gruppen analysiert. Sie fanden heraus, dass die meisten Gruppenmitglieder auf andere warten mussten, bevor sie mit ihrer eigenen Aufgabe beginnen konnten.

Ada und Charles haben für jede Gruppe eine Skizze gezeichnet, die sich auf das Wesentliche konzentriert.

Ein Kreis stellt eine Person dar. Ein Pfeil von Person 1 nach Person 2 bedeutet, dass Person 1 ihre Aufgabe erledigt haben musste, bevor Person 2 mit ihrer Aufgabe beginnen konnte.

Welches Bild entspricht der Gruppe, die nicht fertig wurde? (Begründe deine Antwort)


(A8) Kochplatten

2) Anna und Ben kommen hungrig nach Hause. Nun möchten sie möglichst schnell zu Abend essen. Im Kühlschrank sind Brokkoli, Fisch, Tomaten und Fleisch. Daraus wollen sie zwei Gerichte zubereiten. Die Zubereitung erfolgt in mehreren Schritten. Die meisten Schritte können Anna und Ben erst dann beginnen, wenn sie andere Schritte bereits erledigt haben.

Im Bild sind die Schritte als Kreise und die Abfolge der Schritte mit Pfeilen dargestellt.

Annas und Bens Herd hat drei Herdplatten. Sie können also maximal drei Schritte gleichzeitig erledigen. Für jeden Schritt benötigen sie 5 Minuten.

Frage: Wie viele Minuten benötigen sie für die Zubereitung der beiden Gerichte mindestens?

Lösung

FilenameFilesizeLast modified
2024-03-19_15-44.png85.5 KiB19.03.2024 14:46
aufbausim.png389.4 KiB14.11.2022 18:40
aufbausimulation-graph-fischerhuette-geordnet.png292.1 KiB15.11.2022 10:44
aufbausimulation-graph-fischerhuette-geordnet2.png300.3 KiB15.11.2022 10:50
aufbausimulation-graph-fischerhuette.png102.0 KiB14.11.2022 20:09
aufbausimulation-graph-fischerhuette.zip4.3 KiB15.11.2022 10:54
aufbausimulation-graph.png302.7 KiB11.06.2024 13:20
aufbausimulation-graph.zip4.5 KiB15.11.2022 11:02
biberkochen.png72.4 KiB17.11.2022 06:53
einstieg_toposort.odp83.7 KiB17.11.2022 06:26
einstieg_toposort.pdf81.5 KiB17.11.2022 06:26
gruppenarbeit.png127.1 KiB17.11.2022 07:05
tabelle.png42.9 KiB17.11.2022 06:45
ts_gt.png227.8 KiB15.11.2022 08:57

1)
Grafik(en): Warenverkehr bei einer Aufbausimulation (alle Bilder Pixabay-Lizenz - kein Nachweis notwendig)
2)
Aufgabe aus dem Informatik-Biber-Wettbewerb 2013. https://bwinf.de/biber/archiv/aufgabensammlung/ – Copyright 2013 BWINF - GI e.V. (Lizenz CC-BY-SA 3.0)
  • faecher/informatik/oberstufe/graphen/zpg/topologische_sortierung/start.txt
  • Zuletzt geändert: 11.06.2024 13:21
  • von Frank Schiebel