Einlesen der Knotenpaare

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

FindConnectedNetworks.om
   (* read pairs of connected nodes *)
   LOOP
      Read.Int(node1);
      IF Streams.stdin.count = 0 THEN EXIT END;
      IF (node1 < 0) OR (node1 > maxnode) THEN
         Write.Line("Invalid node number!");
         EXIT
      END;
      Read.Int(node2);
      IF Streams.stdin.count = 0 THEN
         Write.Line("Odd number of integers in input!");
         EXIT
      END;
      IF (node2 < 0) OR (node2 > maxnode) THEN
         Write.Line("Invalid node number!");
         EXIT
      END;
      (* connections are bidirectional *)
      INCL(connected[node1], node2);
      INCL(connected[node2], node1);
      INCL(seen, node1); INCL(seen, node2);
   END;

*Beim Eintragen in die Datenstruktur wird zunächst nur die Symmetrie berücksichtigt. Die transitiven Hüllen werden erst nach dem Einlesen aller Paare berechnet. Die Reflexivität ergibt sich dann implizit aus der Symmetrie, der Transitivität und der Tatsache, daß jeder vorkommende Knoten mindestens mit einem anderen Knoten in Verbindung steht. (Ein isolierter Knoten kann dann immer noch als Paar mit sich selbst spezifiziert werden).
 

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