11.07.2015 Aufrufe

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

ODL-Sprachkonstrukte und interaktive Benutzerschnittstelle - TUM

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

6.2 OPTIMIERUNG DER ABFRAGEAUSWERTUNG 107Die Bedingungen Cond1 <strong>und</strong> Cond2 werden hier nur auf die Typelemente angewandt, die zur Auswertungbenötigt werden; nur die Bedingung Cond3, die alle Typelemente referenziert, verblieb imRestriktionsterm des äußeren eingeschränkten Typs.Nun wollen wir die allgemeine Idee des Algorithmus zur Durchführung der beschriebenen Optimierungvorstellen (eine ausführliche Beschreibung würde über der Rahmen dieser Diplomarbeithinausgehen). Gegeben sei ein eingeschränkter Typ der Form{var:(x1:T1,x2:T2,...,xn:Tn) | RestrictionTerm(var.x1,...,var.xn)}Der Kürze halber werden wir bei der Algorithmusbeschreibung von der <strong>ODL</strong>-Notation geringfügigabweichen <strong>und</strong> einfach {var : (x 1 : T 1 , x 2 : T 2 , ..., x n : T n ) | P main (x 1 , x 2 ..., x n )} schreiben (hier wirdauf die in <strong>ODL</strong>-Abfragen notwendige Verwendung von Selektoren verzichtet). Der Algorithmus bestehtaus folgenden Schritten:1: Umwandlung von Äquivalenzen <strong>und</strong> Implikationen in Terme, die nur das logische AND, OR <strong>und</strong>NEG verwenden.2: Anwendung von DeMorgans Gesetz auf Disjunktionen: alle Terme der Form ¬(p 1 ∨ p 2 ) werdenzu ¬p 1 ∧ ¬p 2 umgewandelt.3: Überprüfung, ob ungeklammerte OR-Verknüpfungen im Restriktionsterm vorkommen, d.h., ob derTerm die Form p 1 ∧ p 2 ∧ ... ∧ p i ∨ p i+1 ∧ ... hat. Wenn ja, so ist eine Optimierung nicht möglich<strong>und</strong> der Algorithmus bricht ab.Hier ist darauf zu achten, dass nur ungeklammerte OR-Verknüpfungen kritisch sind; der Optimierungeines Term der Form p 1 ∧ (p 2 ∨ p 3 ) steht nichts im Wege, da die OR-Verknüpfung sichinnerhalb eines Teilterms <strong>und</strong> nicht im Hauptterm befindet.Falls der Algorithmus nach diesem Schritt fortgesetzt wird, so ist sichergestellt, dass der Restriktionstermdie Form p 1 (L 1 ) ∧ p 2 (L 2 ) ∧ ... ∧ p m (L m ) hat, wobei L i Listen der Basistyp-Elementesind, die von den Prädikaten p i als Argumente verwendet werden, d.h. L i = x ki,1 , x ki,2 , ..., x ki,ri mitk i, j ∈ {1, ..., n}.4: Aufspaltung des Restriktionsterms in Teilterme, die durch das logische AND verknüpft sind. DieseTerme werden in Listen M 1 ,M 2 ,...,M n gespeichert, wobei die Liste M i alle Terme enthält, diegenau i Typelemente aus dem Basistyp verwendet: P i ∈ M t ⇔ |L i | = t.5: Verpacken von Teiltermen mit den von ihnen verwendeten Basistyp-Elementen in separaten eingeschränktenTypen, die als Elementtypen des Basistyps dienen werden. Dieser Schritt bildet denHauptteil des Algorithmus:a) Bringe alle Prädikate, die nur ein Argument haben, d.h., alle p i ∈ L 1 , mit ihrem Argument ineinem eingeschränkten Elementtyp zusammen. Sind beispielsweise p 1 (x 1 ) <strong>und</strong> p 2 (x 3 ) solchePrädikate, so wird der Typ{x 1 : T 1 , x 2 : T 2 , ..., x n : T n | p 1 (x 1 ) ∧ p 2 (x 3 ) ∧ p 3 (L 3 ) ∧ ... ∧ p m (L m )}zu{var 1 : {x 1 : T 1 |p 1 (x 1 )}, x 2 : T 2 , var 3 : {x 3 : T 3 |p 2 (x 3 )}, ..., x n : T n ) |p 3 (L 3 ) ∧ p 4 (L 4 ) ∧ ... ∧ p m (L m )}umgewandelt.b) Bringe Prädikate mit mehreren Argumenten, soweit möglich, mit diesen Argumenten in einemeingeschränkten Elementtyp zusammen.Dieser Schritt ist schwieriger als Schritt 5a, weil es in vielen Situationen keine eindeutige Aufteilungdes Basistyps gibt. Ein einfaches Beispiel dafür ist der Typ{var : (x 1 : T 1 , x 2 : T 2 , x 3 : T 3 ) | p 1 (x 1 , x 2 ) ∧ p 2 (x 2 , x 3 )}:

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!