[UE ALGO 2 Homepage] Übungen zu Algorithmen und Datenstrukturen 2 WS 98/99

8. Übung - abzugeben am 1. 12. 1998 in Ihrer Übungsgruppe


8.a Kruskal

Gegeben sei der ungerichtete Graph V={0,1,2,3,4,5,6,7,8} mit den Kanten E={[0,1]16, [0,2]4, [1,6]13, [2,3]11, [2,5]4, [2,6]9, [3,4]5, [3,5]6, [4,7]4, [4,8]3, [5,6]12, [5,7]15, [6,7]6} samt tiefgestellten Kantenbewertungen.
Erstellen Sie nach dem Algorithmus von Kruskal den minimal spannenden Baum.


8.b Programm

Implementieren Sie ein Modul mit folgender Interface Definition bzw. Implementierungshilfe:

MODULE Graph;
  TYPE
    ValueT* =LONGINT;  (*Bewertungs-Typ*)
    NodeNoT*=LONGINT;  (*Knotennummer-Typ*)
    GraphT* =RECORD
       a (*Adjazenzmatrix*), 
       w (*Wegematrix*), 
       m (*Orientierungsmatrix für Bsp. c*):
         POINTER TO ARRAY OF ARRAY OF LONGINT;
       ...............
    END; (*RECORD*)

  PROCEDURE (VAR g:GraphT) Init*(v:INTEGER);
    (* v=Anzahl der Knoten im Graphen
    *) 
  PROCEDURE (VAR g:GraphT) CleanUp*();
    (* Freigabe des Graphens = Freigabe des dynamisch
       allokierten Speicherplatzes
    *)
  PROCEDURE (VAR g:GraphT) SetEdge*(x,y:NodeNoT; value:ValueT);
    (* Kante x,y mit Bewertung value in den gerichteten
       Graphen aufnehmen
    *)
  PROCEDURE (VAR g:GraphT) PrintAdj*();
    (* Ausgabe der Adjazenzmatrix der Kantenbewertungen.
    *)
  PROCEDURE (VAR g:GraphT) Warshall*();
    (* Anwenden des Alg. von Warshall auf den gewichteten, 
       gerichteten Graphen g.
    *)
  PROCEDURE (VAR g:GraphT) PrintWays*();
    (* Ausgabe der Wegematrix - kürzeste Weglängen
       für alle Wege von i nach j.
    *)
END Graph;


8.c Programm

Erweitern Sie das Modul aus Bsp. b um folgende Funktionalität:

  PROCEDURE (VAR g:GraphT) PrintOrientation*();
    (* Ausgabe der Orientierungsmatrix - gibt für jeden
       kürzesten Weg [x,y] an, welches der erste
       Zwischenknoten am Weg von x nach y ist.
    *)
  PROCEDURE (VAR g:GraphT) PrintWay*(x,y:NodeNoT);
    (* Druckt den kürzesten Weg von x nach y.
       Muß folgendes anzeigen:
       Gibt es einen Weg?
       Wenn ja, welche Knoten werden dabei besucht und
       wie lange ist er?
    *)

Anmerkungen zu b und c:


Last modified: hoermanseder@fim.uni-linz.ac.at 98-11-23