Terminierender Algorithmus - Informatik
Terminierender Algorithmus - Informatik
Terminierender Algorithmus - Informatik
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Einführung<br />
(Textersetzungs)Algorithmen unterscheiden sich in<br />
• der Anwendbarkeit von Regeln<br />
– <strong>Terminierender</strong> <strong>Algorithmus</strong><br />
– Nichtterminierender <strong>Algorithmus</strong><br />
– Deterministischer <strong>Algorithmus</strong><br />
– Nichtdeterministischer <strong>Algorithmus</strong><br />
• der Beziehung zwischen Ein- und Ausgabe<br />
– Determinierter <strong>Algorithmus</strong><br />
– Nichtdeterminierter <strong>Algorithmus</strong><br />
<strong>Algorithmus</strong><br />
<strong>Informatik</strong> I − 1 − WiSe 2005/2006<br />
Einführung<br />
Algorithmenarten: Anwendbarkeit von Regeln<br />
• <strong>Terminierender</strong> <strong>Algorithmus</strong>:<br />
– Es gibt einen Schritt in dem keine Regel mehr anwendbar ist.<br />
• Nichtterminierender <strong>Algorithmus</strong>:<br />
– Es ist immer mindestens eine Regel anwendbar.<br />
• Deterministischer <strong>Algorithmus</strong>:<br />
– Zu jeder Zeit ist immer nur eine Regel anwendbar, d.h. es gibt genau eine<br />
Berechnung.<br />
– Falls er terminiert, liefert ein deterministischer <strong>Algorithmus</strong> genau eine<br />
Ausgabe.<br />
• Nichtdeterministischer <strong>Algorithmus</strong>:<br />
– Zu einer gegebenen Eingabe x sind mehrere Regeln auf Teilwörter von x<br />
anwendbar.<br />
<strong>Informatik</strong> I − 2 − WiSe 2005/2006
Einführung<br />
Algorithmenarten: Anwendbarkeit von Regeln<br />
• Bem.: Textersetzungsalgorithmen sind im allgemeinen<br />
nichtdeterministisch und nichtdeterminiert.<br />
– Für ein Wort t existieren in der Regel mehrere Berechnungen<br />
mit verschiedenen Resultaten.<br />
– Es können für eine Eingabe sowohl terminierende als auch<br />
nichtterminierende Berechnungen existieren.<br />
• Bsp.: Gegeben sei ein Textersetzungssystem mit den<br />
Regeln aa → b, a → aa über dem Standardalphabet.<br />
– Für dieses System ist jedes Wort t, welches das Zeichen a enthält, nicht<br />
terminal (immer die zweite Regel anwenden). Wird die zweite Regel<br />
jedoch nur angewendet, wenn die erste nicht anwendbar ist, so terminiert<br />
die Berechnung stets.<br />
<strong>Informatik</strong> I − 3 − WiSe 2005/2006<br />
Einführung<br />
Markov-Algorithmen<br />
• Definition: Ein Markov-<strong>Algorithmus</strong> ist ein deterministisches<br />
Textersetzungssystem mit endlich vielen Regeln, sowie einigen<br />
speziellen Regeln, Zeichen und 2 Metaregeln:<br />
– Markov-Algorithmen enthalten spezielle Regeln, auch haltende Regeln<br />
x →. y genannt, die durch einen Punkt nach dem Pfeil gekennzeichnet<br />
sind.<br />
– Markov-Algorithmen enthalten zusätzliche Zeichen α, β, γ, …,<br />
sogenannte Schiffchen. Diese kommen weder in der Eingabe, noch in der<br />
Ausgabe vor.<br />
– Metaregeln: Markov-Algorithmen haben immer 2 spezielle Anweisungen<br />
für die Ausführung von Regeln:<br />
1. Wähle in jedem Schritt die erste anwendbare Regel. Falls sie auf mehrere<br />
Teilwörter anwendbar ist, wende sie auf das am weitesten links<br />
stehendeTeilwort an.<br />
2. Wende die Regeln solange an, bis eine haltende Regel angewandt wurde, oder<br />
bis keine Regel mehr anwendbar ist.<br />
<strong>Informatik</strong> I − 4 − WiSe 2005/2006
Einführung<br />
• Alphabet V = {0, L}<br />
• Schiffchen: α, β<br />
• Regelsystem:<br />
1. αL → Lα<br />
2. α0 → 0α<br />
3. α → β<br />
4. Lβ → β0<br />
5. 0β →. L<br />
6. β →. L<br />
7. ε → α<br />
Haltende Regeln!<br />
• Frage: Welches Problem<br />
löst der <strong>Algorithmus</strong>?<br />
Markov-Algorithmen<br />
• Anwendung der Regeln auf<br />
das Eingabewort L0LL<br />
L0LL ⇒ αL0LL (7)<br />
⇒ Lα0LL (1)<br />
⇒ L0αLL (2)<br />
⇒ L0LαL (1)<br />
⇒ L0LLα (1)<br />
⇒ L0LLβ (3)<br />
⇒ L0Lβ0 (4)<br />
⇒ L0β00 (4)<br />
⇒ LL00 (5)<br />
Bem.: Nur die haltenden Regeln (5 und 6) sichern das Terminieren des <strong>Algorithmus</strong>.<br />
<strong>Informatik</strong> I − 5 − WiSe 2005/2006<br />
Einführung<br />
• Alphabet V = {0, L}<br />
• Schiffchen: α, β<br />
• Regelsystem:<br />
1. ε → α<br />
2. α0 → 0α<br />
3. α → β<br />
4. Lβ → β0<br />
5. 0β →. L<br />
6. β →. L<br />
7. αL → Lα<br />
Markov-Algorithmen<br />
• Anwendung der Regeln<br />
auf das Eingabewort<br />
L0LL<br />
• L0LL ⇒ αL0LL<br />
(1)<br />
⇒ ααL0LL<br />
(1)<br />
⇒ …<br />
<strong>Informatik</strong> I − 6 − WiSe 2005/2006
Einführung<br />
<strong>Algorithmus</strong> 1 terminiert<br />
(1) αL → Lα<br />
(2) α0 → 0α<br />
(3) α → β<br />
(4) Lβ → β0<br />
(5) 0β →. L<br />
(6) β →. L<br />
(7) ε → α<br />
Markov-Algorithmen<br />
<strong>Algorithmus</strong> 2 terminiert nicht<br />
(1) ε → a<br />
(2) α0 → 0α<br />
(3) α → β<br />
(4) Lβ → β0<br />
(5) 0β →. L<br />
(6) β →. L<br />
(7) αL → Lα<br />
<strong>Informatik</strong> I − 7 − WiSe 2005/2006<br />
Einführung<br />
Markov-Algorithmen<br />
• Markov-Algorithmen besitzen für jedes Eingabewort genau eine<br />
Berechnung. Für den Fall der Terminierung erzeugen sie genau<br />
eine Ausgabe.<br />
• Durch Zuordnung einer Ausgabe zu jeder Eingabe mit<br />
terminierender Berechnung berechnen deterministische<br />
Algorithmen partielle Funktionen.<br />
– Die Funktionen heißen partiell, da der <strong>Algorithmus</strong> für gewisse Eingaben<br />
eventuell nicht terminiert und somit kein Resultat für die Berechnung<br />
definiert ist.<br />
<strong>Informatik</strong> I − 8 − WiSe 2005/2006
Einführung<br />
Markov-Algorithmen<br />
• Lassen sich alle mathematischen Funktionen durch Algorithmen<br />
berechnen?<br />
– Kurt Gödel: Nicht jede Funktion läßt sich durch einen <strong>Algorithmus</strong><br />
berechnen.<br />
– Diejenigen Funktionen, für die sich ein <strong>Algorithmus</strong> zu ihrer Berechnung<br />
angeben läßt, nennen wir berechenbar (siehe Berechenbarkeitstheorie in<br />
<strong>Informatik</strong> IV)<br />
• Theoretisch betrachtet ist der auf Textersetzung abgestützte<br />
<strong>Algorithmus</strong>begriff völlig ausreichend<br />
– Jede berechenbare Funktion ist durch einen Textersetzungsalgorithmus<br />
berechenbar<br />
<strong>Informatik</strong> I − 9 − WiSe 2005/2006<br />
Einführung<br />
Markov-Algorithmen<br />
• Probleme bei der Beschreibung durch Textersetzung<br />
– Umfangreicheren Textersetzungsysteme sind schwer zu<br />
verstehen.<br />
– Bei komplexen Aufgabenstellungen werden viele Regeln<br />
benötigt.<br />
– Es ist schwierig sicherzustellen, dass auch das gewünschte<br />
Ergebnis berechnet wird.<br />
– Die dargestellte Abbildung ist schwierig zu bestimmen.<br />
– Komposition und Strukturierung ist nicht einfach.<br />
• Bessere Darstellungsmöglichkeiten?<br />
– Termersetzungssysteme.<br />
<strong>Informatik</strong> I − 10 − WiSe 2005/2006
Einführung<br />
• Begriffsdefinition<br />
Begriff des <strong>Algorithmus</strong><br />
– Ein <strong>Algorithmus</strong> (algorithm) ist die Beschreibung eines<br />
Verfahrens, um aus gewissen Eingabegrößen bestimmte<br />
Ausgabegrößen zu berechnen. Dabei müssen folgende<br />
Bedingungen erfüllt sein<br />
• Spezifikation<br />
• Durchführbarkeit<br />
• Korrektheit<br />
<strong>Informatik</strong> I − 11 − WiSe 2005/2006<br />
Einführung<br />
Spezifikation<br />
Begriff des <strong>Algorithmus</strong><br />
– Eingabespezifikation: Es muss genau spezifiziert<br />
sein, welche Eingabegrößen erforderlich sind und<br />
welchen Anforderungen diese Größen genügen<br />
müssen, damit das Verfahren funktioniert<br />
– Ausgabespezifikation: Es muss genau spezifiziert<br />
sein, welche Ausgabegrößen (Resultate) mit<br />
welchen Eigenschaften berechnet werden<br />
<strong>Informatik</strong> I − 12 − WiSe 2005/2006
Einführung<br />
• Bem. zur Spezifikation<br />
Begriff des <strong>Algorithmus</strong><br />
– Wir sprechen manchmal auch von Zusicherung, die<br />
der <strong>Algorithmus</strong> an die erarbeiteten Ergebnisse<br />
macht<br />
– Möglichkeiten zur Beschreibung<br />
• Präziseste Sprache zur Spezifikation ist die<br />
mathematische Logik (später)<br />
• In der Praxis werden häufig weniger formale<br />
Beschreibungen in natürlicher Sprache verwendet<br />
(Pflichtenhefte)<br />
– Häufig umfangreich, mehrdeutig, inkonsistent<br />
– Macht der <strong>Algorithmus</strong> was der Kunde wollte?<br />
<strong>Informatik</strong> I − 13 − WiSe 2005/2006<br />
Einführung<br />
Durchführbarkeit<br />
Begriff des <strong>Algorithmus</strong><br />
– Endliche Beschreibung: das Verfahren muss in einem<br />
endlichen Text vollständig beschrieben sein<br />
– Effektivität: Jeder Schritt des Verfahrens muss effektiv (d.h.<br />
tatsächlich) „mechanisch“ ausführbar sein<br />
• Bem.: „Effektivität“ ist nicht zu verwechseln mit „Effizienz“<br />
(„Wirtschaftlichkeit“)<br />
– Determiniertheit: Der Verfahrensablauf ist zu jedem<br />
Zeitpunkt fest vorgeschrieben<br />
• Gleiche Eingaben sollen zum gleichen Ablauf und Ergebnis führen<br />
• Ausnahme: Textersetzungsalgorithmen, randomisierte Algorithmen,<br />
deren Ablauf von (mathematisch bestimmten) Zufallsgrößen abhängt<br />
<strong>Informatik</strong> I − 14 − WiSe 2005/2006
Einführung<br />
Begriff des <strong>Algorithmus</strong><br />
• Korrektheit<br />
– Terminierung: Der <strong>Algorithmus</strong> hält nach endlich vielen<br />
Schritten mit einem Ergebnis an, sofern die Eingaben der<br />
Eingabespezifikation genügt haben<br />
• Viele Programme erbringen ihre Leistung durch sog. Seiteneffekte,<br />
z.B. Ausgaben während der Laufzeit, und nicht durch ein einziges<br />
Endergebnis<br />
– Betriebssystem, Datenbanksystem, ...<br />
– Bei numerischen Algorithmen (z.B. Nullstellenberechnung), möchte<br />
man häufig offen lassen, wann genau die Berechnung in der Praxis<br />
abbrechen soll<br />
• Ist ein Verfahren bis auf die fehlende Terminierung ein <strong>Algorithmus</strong>,<br />
so spricht man auch von einem (Rechen-)Verfahren. Häufig auch von<br />
einem „nicht-terminierenden“ <strong>Algorithmus</strong><br />
<strong>Informatik</strong> I − 15 − WiSe 2005/2006<br />
Einführung<br />
Begriff des <strong>Algorithmus</strong><br />
• Korrektheit<br />
– Partielle Korrektheit: Jedes berechnete Ergebnis genügt der<br />
Ausgabespezifikation, sofern die Eingaben der<br />
Eingabespezifikation genügt haben<br />
• d.h. Ein- und Ausgabeparameter genügen im Falle der Terminierung<br />
immer den Spezifikationen<br />
– Totale Korrektheit: Ein Rechenverfahren ist ein total<br />
korrekter <strong>Algorithmus</strong>, wenn es partiell korrekt ist und für<br />
jede Eingabe, die der Eingabespezifikation genügt,<br />
terminiert.<br />
• Unterschiedliche Beweisverfahren für beide Fälle notwendig<br />
• Manchmal ist es sinnvoll, auf die Anforderung der Terminierung zu<br />
verzichten<br />
<strong>Informatik</strong> I − 16 − WiSe 2005/2006
Einführung<br />
Begriff des <strong>Algorithmus</strong><br />
• Bemerkung: Nach unserer Begriffsbestimmung gäbe es also<br />
keine<br />
– nicht-deterministische,<br />
– nicht-terminierende<br />
– ...<br />
• Algorithmen<br />
• Diese Begriffe werden aber durchaus verwendet!<br />
– Methode erfüllt alle Anforderungen an einen <strong>Algorithmus</strong>, bis auf die mit<br />
„nicht“ gekennzeichnete<br />
<strong>Informatik</strong> I − 17 − WiSe 2005/2006<br />
Einführung<br />
Zusammenfassung<br />
• Der Begriff des <strong>Algorithmus</strong> ist eine der wichtigsten<br />
Säulen der <strong>Informatik</strong><br />
• Klassifikation von Algorithmen nach Anwendbarkeit<br />
der Regeln und nach der Beziehung zwischen Ein- und<br />
Ausgabe<br />
• Textersetzungsysteme<br />
• Formale Sprache<br />
• Markov-Algorithmen als Beispiel für deterministische<br />
Algorithmen<br />
<strong>Informatik</strong> I − 18 − WiSe 2005/2006