Reduzierbarer und irreduzierbarer Kontrollflussgraph

Aus testwiki
Version vom 17. April 2018, 23:25 Uhr von imported>Zero Thrust
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Die Menge der Kontrollflussgraphen kann in reduzierbare und irreduzierbare Kontrollflussgraphen partitioniert (geteilt) werden. Diese Einteilung geht auf Frances E. Allen zurück.[1] Hecht und Ullman geben äquivalente Charakterisierungen zu Allens ursprünglicher Definition und benutzen diese, um zu zeigen, dass strukturierte Kontrollstrukturen stets reduzierbare Kontrollflussgraphen erzeugen.[2] Eine Auflistung alternativer Charakterisierungen findet sich in einer späteren Veröffentlichung.[3]

Ein für die Definition eines reduzierbaren Kontrollflussgraphen wichtiger Begriff ist der einer Rückwärtskante (engl. backedge). Wenn man im Zuge einer Tiefensuche eines Kontrollflussgraphen GV,E,r, die beim Knoten r startet, ausgehend von einem Knoten u entlang der Kante uv zu einem Knoten v gelangt, der schon entdeckt worden ist, so nennt man die Kante uv Rückwärtskante.

Ein Kontrollflussgraph GV,E,r ist genau dann reduzibel, wenn er eine der folgenden drei (untereinander äquivalenten) Bedingungen erfüllt.

  1. Jede Tiefensuche findet dieselbe Menge an Rückwärtskanten.
  2. Sei uv eine Rückwärtskante. Dann dominiert v den Knoten u.
  3. G enthält keinen Untergraphen der Form , wobei die eingezeichneten gestrichelten Kanten Pfade repräsentieren.

Nicht reduzierbare Kontrollflussgraphen nennt man irreduzierbar.

Die Unterscheidung in reduzierbare und irreduzierbare Kontrollflussgraphen ist in der Informatik insofern von Interesse, als für reduzierbare Kontrollflussgraphen im Allgemeinen effizientere Algorithmen existieren.

Bibliographie