Ausgabe der transitiven Hüllen

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

FindConnectedNetworks.om
   (* print connected networks *)
   printed := {};
   node1 := 0;
   WHILE node1 < nodes DO
      IF (node1 IN seen) & ~(node1 IN printed) THEN
         node2 := 0;
         WHILE node2 < nodes DO
            IF node2 IN connected[node1] THEN
               Write.Int(node2, 3);
               INCL(printed, node2);
            END;
            INC(node2);
         END;
         Write.Ln;
      END;
      INC(node1);
   END;

*Um die mehrfache Ausgabe der gleichen transitiven Hülle (für alle darin enthaltenen Knoten) zu vermeiden, wird mittels der Menge printed notiert, welche Knoten bereits ausgegeben worden sind.
 
*Ein Schleifendurchlauf wird (im Normalfall) gespart, indem wir sogleich von connected[node1] ausgehen und nicht nur von {node1}.
 

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