Berechnen der transitiven Hülle II

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

FindConnectedNetworks.om
   (* compute transitive closures *)
   node1 := 0;
   WHILE node1 < nodes DO
      IF connected[node1] # {} THEN
         closure := connected[node1];
         LOOP
            node2 := 0;
            WHILE node2 < nodes DO
               IF node2 IN closure THEN
                  closure := closure + connected[node2];
               END;
               INC(node2);
            END;
            IF closure = connected[node1] THEN
               EXIT
            END;
            connected[node1] := closure;
         END;
      END;
      INC(node1);
   END;

*Zu beachten ist, daß T3 zwei ineinander geschachtelte Schleifen benötigt. Die äußere Schleife durchläuft alle cC (in Oberon alle node2 IN closure) und die innere berechnet jeweils T = {t | (c,t) ∈ R}.
 
*In Oberon werden die Resultate von T3 sogleich entsprechend dem Schritt T4 in C aufgesammelt.
 

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