Datenstruktur für die Relation

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

FindConnectedNetworks.om
   CONST
      (* we support node numbers from 0 to maxnode *)
      maxnode = MAX(SET);
      nodes = maxnode + 1;
   VAR
      connected: ARRAY nodes OF SET;
         (* connected[i] = set of nodes i is connected to *)
      node: INTEGER; (* index of connected *)
      seen: SET; (* set of nodes seen in input *)
      node1, node2: INTEGER; (* pair of nodes *)
      closure: SET; (* transitive closure of a node *)
      printed: SET; (* set of printed nodes *)

*Wir nehmen hier an, daß n <= MAX(SET) + 1.
 
*Entsprechend repräsentiert connected[i] die Menge {j | (i,j) ∈ N }.
 
*Um nur die Knoten zu berücksichtigen, die tatsächlich in der Eingabe erwähnt wurden, wird in der Menge seen die Menge aller eingelesenen Knotennummern notiert.
 
*node1 und node2 repräsentieren jeweils ein Knotenpaar.
 
*closure wird bei der Berechnung der transitiven Hülle benötigt.
 
*Bei der Ausgabe soll jeder Knoten nur einmal ausgegeben werden. Das wird mit Hilfe der Menge printed sichergestellt.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 2004, 2005 Andreas Borchert, in HTML konvertiert am 18.02.2005