20.01.2015 Aufrufe

Skript (Fassung vom 4.4.2011) - Lehr- und Forschungsgebiet ...

Skript (Fassung vom 4.4.2011) - Lehr- und Forschungsgebiet ...

Skript (Fassung vom 4.4.2011) - Lehr- und Forschungsgebiet ...

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.

DasVerfahrenwirdnunsolangewiederholt,biskeineneuenRegelnmehrentstehen, d.h.,<br />

bis alle kritischen Paare zusammenführbar sind. Wie in Abschnitt 3.3 erwähnt, erhält man<br />

so eine Folge R 0 ,R 1 ,R 2 ,... von TESen, die alle zu E äquivalent sind. Wie dort erläutert<br />

wurde, gibt es 3 Möglichkeiten für diesen Prozess:<br />

1. Man könnte nach einigen Iterationen ein TES R n erhalten, dessen kritische Paare<br />

alle zusammenführbar sind. Dann endet das Verfahren mit Erfolg, denn R n ist ein<br />

konvergentes <strong>und</strong> zu E äquivalentes TES.<br />

2. Es könnte sein, dass man bei einem TES R n in der Folge die Terminierung nicht<br />

nachweisen kann. (Dies kann daran liegen, dass es wirklich nicht terminiert oder dass<br />

unser hinreichendes Kriterium der Terminierungsüberprüfung mit der RPOS nur die<br />

Terminierung nicht nachweisen kann.) Nun bricht man mit Misserfolg (“Fail”) ab.<br />

Immerhin erkennt man in diesem Fall den Misserfolg <strong>und</strong> könnte z.B. mit einem<br />

verbesserten Terminierungstest einen neuen Vervollständigungsversuch starten.<br />

3. Schließlich kann es auch passieren, dass zwar alle R i in der Folge terminieren, man<br />

aber kein konfluentes TES erreicht. Dann terminiert das Vervollständigungsverfahren<br />

nicht <strong>und</strong> in diesem Fall erkennen wir daher die Erfolglosigkeit des Verfahrens auch<br />

nicht.<br />

Eine generelle Vermeidung der letzten beiden Möglichkeiten ist prinzipiell nicht möglich,<br />

da das Wortproblem im allgemeinen unentscheidbar ist. (Selbstverständlich kann man aber<br />

natürlich versuchen, bessere Vervollständigungsalgorithmen zu entwickeln, die häufiger erfolgreich<br />

sind, vgl. Abschnitt 6.2.) Man erhält demnach den folgenden Algorithmus BA-<br />

SIC COMPLETION.<br />

Algorithmus BASIC COMPLETION(E,≻)<br />

Eingabe: Ein Gleichungssystem E <strong>und</strong> eine Reduktionsordnung ≻.<br />

Ausgabe: Ein zu E äquivalentes konvergentes TES R<br />

oder “Fail” oder Nicht-Terminierung.<br />

1. Falls es s ≡ t ∈ E mit s ≠ t, s ⊁ t <strong>und</strong> t ⊁ s gibt,<br />

dann gib “Fail” aus <strong>und</strong> brich ab.<br />

2. Setze i = 0 <strong>und</strong> R 0 = {l → r|l ≻ r <strong>und</strong> l ≡ r ∈ E oder r ≡ l ∈ E}.<br />

3. Setze R i+1 = R i .<br />

4. Für alle 〈s,t〉 ∈ CP(R i ):<br />

4.1. Berechne R i -Normalformen s ′ <strong>und</strong> t ′ von s <strong>und</strong> t.<br />

4.2. Falls s ′ ≠ t ′ , s ′ ⊁ t ′ <strong>und</strong> t ′ ⊁ s ′ ,<br />

dann gib “Fail” aus <strong>und</strong> brich ab.<br />

4.3. Falls s ′ ≻ t ′ , dann setze R i+1 = R i+1 ∪{s ′ → t ′ }.<br />

4.4. Falls t ′ ≻ s ′ , dann setze R i+1 = R i+1 ∪{t ′ → s ′ }.<br />

5. Falls R i+1 = R i , dann gib R i aus <strong>und</strong> brich ab.<br />

6. Setze i = i+1 <strong>und</strong> gehe zu Schritt 3.<br />

In diesem Algorithmus gehen wir davon aus, dass die verwendete Reduktionsordnung ≻<br />

bereits als Eingabe gegeben ist. (Wie erwähnt, sollte man bei der Implementierung dieses

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!