LWsystems bietet Ihnen systemübergreifende
IT-Beratung und umfassenden Service in allen Fragen Ihrer IT-Infrastruktur.Hierbei unterscheidet, man zwischen deterministischen und nicht deterministischen Automaten. Der deterministische Automat ist so aufgebaut, daß für jeden Zustand genau festgelegt ist, welcher Zustand ihm bei Einlesen eines Eingabesymbols folgt. Beim nichtdeterministischen Automaten können mehrere mögliche Folgezustände auf einen Zustand existieren.
Der Automat heißt Deterministisch, wenn für jeden beliebigen
Zustand in Kombination mit jedem Eingabesymbol höchstens ein
Folgezustand existiert. Die Klasse der Deterministischen Automaten
wird mit 2 bezeichnet.
Wenn die Zustandsübergangsfunktion ein Paar (s,a) auf
genau einem Folgezustand abbildet, spricht man auch von einem
deterministischem Automaten
(DEA). Es existieren keine
Verzweigungen im Automaten. Die Verarbeitung verläuft gradlinig, da
für jedem Punkt genau ein Folgezustand definiert ist.
Da der Automat nicht verschiedene Möglichkeiten für den Übergang zu einem Folgezustand überprüfen muß und eventuell an einen früheren Verarbeitungsschritt zurückspringen muß (backtracing) kann ein deterministischer Automat sehr schnell ermitteln ob ein Eingabewort akzeptiert wird oder nicht.
Die Symbole, aus denen die Eingabewörter bestehen können werden als
das Alphabet bezeichnet. Das allgemeine Alphabet wird in
symbolischen Darstellungen definiert durch:
Die Wortbildung erfolgt durch Anneinanderreihung von einzelnen Symbole
oder auch einzelner vorher definierter Wörter. Die Menge aller Wörter,
die über dem Alphabet gebildet werden können, ist gekennzeichnet als:
. Hierfür gilt:
Mit wird die Menge aller Wörter ohne das leere Wort
bezeichnet.
Die Zustandsüberführungstabelle zeigt, welchen Zustand ein Automat ausgehend vom Ausgangszustand beim Lesen eines Eingangsbuchstabens annimmt.
| Zustand vorher | ||||
| 1 | ||||
| 0 | ||||
Die Programmanweisungen der Menge stellen dar wie ein
Zustandsübergang zu erfolgen hat. Die Zustandsübergangsfunktion oder
Programmanweisung läßt sich verallgemeinert und formal dann darstellen
als:
Die Konfiguration beschreibt also einen Zustand beliebigen Zustand während des Programmlaufs.
Ein Übergang von einer Konfiguration 4 zu einer anderen
kann stattfinden, falls der Zustandsübergang
existiert. Für den Konfigurationsübergang muß also
ein passender Zustandsübergang vom alten in den neuen Zustand
definiert sein. Formal wird der Konfigurationsübergang wie folgt
ausgedrückt:
Zu jedem nichtdeterministischen Automaten läßt sich ein äquivalenter deterministischer Automat definieren, der genau dieselbe Sprache akzeptiert. Die Überführung eines nichtdeterministischen Automaten in den äquivalenten deterministischen kann mit Hilfe der Potenzmengenkonstruktion durchgeführt werden. Die Grundidee dieser Überführung ist, daß die nichtdeterministischen parallelen Übergänge zu einer Berechnung und somit zu einem Übergang zusammengefaßt werden. Die Zustände bestehen dann aus Mengen von Zuständen. Die Menge aller möglichen Zustände des deterministischen Automaten ist die Menge aller Teilmengen von S, der Zustandsmenge.
Aufgrund dieser Äquivalenz der beiden Klassen von Automaten akzeptiern beide auch dieselbe Klasse von Sprachen, die Klasse der regulären Sprachen.
Ein nichtdeterministischer Automat ist genau betrachtet ein
-Automat, bei dem die
-Übergänge fehlen. Daher ist
die Klasse der Nichtdeterministischen Automaten eine Untermenge der
-Automaten. Daher läßt sich jeder
-Automat in
einen Nichtdeterministischen transformieren. Gerade bei der modularen
Zusammensetzung von endlichen Automaten sind die
-Übergänge
sehr hilfreich. Hiermit lassen sich die einzelnen Automatenmodule, die
ja jeder für sich abgeschlossene Automten sind, einfach miteinander
verbinden. Beim Übergang vom einen Automaten in den anderen wird hier
einfach ein
-Übergang durchgeführt. Mit Hilfe dieser
Möglichkeiten lassen sich daher Sprachen miteinander verknüpfen.
Die Minimierung eines Automaten erfolgt durch die Zusammenfassung der Zustandsübergänge, die für ein Eingabesymbol (Zeile in der Zustandsübergangstabelle) einen gemeinsamen Zielzustand erreichen. Hierzu werden die einzelnen Zustandsübergänge blockweise zusammengefaßt.
Die Zustandstafel wird zunächst in zwei große Blöcke aufgeteilt, wobei
ein Block möglichst derart zusammengefaßt werden sollte, daß die
Folgezustände für ein Eingabesymbol einen gemeinsamen
Zielzustand(-sblock) anzeigen.
Falls in dieser Aufteilung die Zielzustände eines Blocks für ein
Eingabesymbol (Zeile) noch keinen gemeinsamen Zielblock erreicht
haben, muß einen erneute Blockaufspaltung erfolgen. Hierbei dürfen
auch Spalten zusammengefaßt werden, die nicht direkt nebeneinander
liegen.
Der minimale Automat ist erreicht, wenn alle Zielzustände für einen Block auf einen gemeinsamen Zielblock verweisen. Das Zustandsdiagramm des so entstandenen Automaten wird erzeugt, indem die Blöcke jeweils einen Zustand darstellen und die Zielzustände als Verweise auf die jeweiligen Zielblöcke eingezeichnet werden. (s.a. 19)
Ein regulärer Ausdruck, der über einem Alphabet gebildet wird
definiert im Prinzip eine Menge von Wörtern, die sich durch die
Anwendung dieses Ausdrucks ergeben. Der Ausdruck definiert somit die
Sprache
über dem Alphabet
. Wenn für
gilt:
ist
die von
definierte
Sprache.
Wie oben beschrieben können Sprachen beliebig miteinander verknüpft werden. Somit können die regulären Ausdrücke zur Erzeugung der Sprachen gleichfalls mit den Mengenoperationen verknüpft werden. Für diese Operationen lassen sich die folgenden Aussagen treffen.
Sind
, dann gilt:
Der - Operator (Selektions bzw. ODER Operator) weist die
Besonderheit auf, daß für Ihn die Idempotenz gilt. Das heißt
daß für jeden regulären Ausdruck gilt:
Die von dem Generator erzeugten Prozeduren werden auch Scanner oder Lexical Analyzer genannt. Ein bekannter Scanner-Generatore ist z.B. (f)lex unter Unix.
Die Symbole links vom
werden als Variablen
bezeichnet, die durch die rechten Seiten der Produktionen
ersetzt werden können. Zeichenketten aus Kleinbuchstaben sind
Terminale, die nicht weiter ersetzt werden können. Alternativen
werden durch senkrechte Striche | getrennt. Eine Variable
(Satz) ist ausgezeichnet, bei ihr beginnt der
Ersetzungsprozeß. Jetzt können beliebige Sätze aus den Worten gebildet
werden, indem die Regeln angewandt werden, bis keine Variablen mehr
vorhanden sind. Mit diesen Regeln können allerdings auch Sätze
gebildet werden wie:
Die Junge bellt das Mädchen
Der Satz ist syntaktisch korrekt, also aus dem Startsymbol durch die Ableitung der Grammatikregeln hergeleitet. Allerdings ist die Bedeutung, die SemantikSemantik eher zweifelhaft. Diese Situation gleicht der bei einer Programmiersprache, wenn einer INT-Variablen z.B. ein FLOAT-Wert zugewiesen werden soll. Die Konstruktion ist nach den den Regeln der Grammatik korrekt.
Neben den semantischen Problemen besteht bei Grammatiken das Problem der Eindeutigkeit.
Typ-3-Grammatiken hinsichtlich der Erzeugung bzw. überprüfung einer Sprache den endlichen Automaten oder den Regulären Ausdrücken äquivalent. Die Nonterminale einer Grammatik können auch als Zustände bezeichnet werden. Man merkt sich mit einem Nonterminal den aktuellen Erzeugungszustand des abzuleitenden Wortes, von dem aus in einem ``Zustandsübergang'' ein neues Symbol erzeugt wird. Ein Automat, der zu dieser Grammatik äquivalent ist, wird in diesem Falle das Symbol akzeptiert.
Die allgemeine Typ-3-Grammatik ist wie folgt aufgebaut:
Beispiel (s.a. )
Die folgende Typ3-Grammatik soll abgeleitet werden:
Im obigen Falle werden Wörter erzeugt, in denen als Infix
vorkommt. Die Ersetzung
bzw.
können beliebig lange kombinationen erzeugen. Es ist auf jeden Fall
garantiert, daß irgendwann die Ersetzung
durchlaufen wird und
somit die Kombination
in dem Wort vorkommt.
Die Typ-3-Grammatiken lassen sich in rechtslineare und rechtslineare Grammatiken sowie ihre verallgemeinerten Varianten unterteilen. Die rechtslinearen Grammatiken erzeugen ein Wort buchstabenweise von links nach rechts. Hier ist jede Ableitungsregel so aufgebaut, daß in jedem Ableitunsschritt rechts am schon bestehenden Wort ein neuer Buchstabe angehängt wird. Bei den linkslinearen Grammatiken ist dieses umgekehrt.
Die verallgemeinerten Typ-3-Grammatiken sind so aufgebaut, daß hier in jedem Ableitungsschritt nicht nur ein Terminalbuchstabe, sondern sofort ein ganzes Terminalwort erzeugt wird.
Mit einer Typ-3-Grammatik läßt sich eine Sprache der Form
nicht ableiten, da diese Sprache nicht regulär
ist.
Die hier gängigen Operationen auf die regulären Sprachen sind:
Eine sehr einfache Sprache, die dieser Bedingung genügt ist die
Sprache:
Diese Sprache muß hat u.a. die Eigenschaft, daß der hintere Teil ihrer Wörter im Aufbau vom vorderen Teil abhängt. Für diese Sprache läßt sich zeigen, daß sie das Pumping-Lemma nicht erfüllt, sie somit nicht regulär sein kann, da das Erfüllen des Pumping-Lemma eine notwendige Eigenschaft ist.
In Programmiersprachen sind geschachtelte
Blockstrukturen möglich. Diese lassen sich auf die Form
verallgemeinern. Eine Sprache dieser Form ist aber nicht
regulär, so daß Programmiersprachen nicht mit Typ-3-Grammatiken
erzeugt werden können bzw. durch Compiler in Form von endlichen
Automaten verarbeitet werden können.
Ein endlicher Automat ist im gewissen Sinne äquivalent zu einer Mealy-Maschine. Zu einer Mealy-Maschine läßt sich immer ein Automat entwickeln, der als Eingabewort die Kombination von Eingabe und Ausgabe der Mealy-Maschine akzeptiert.
Eine Mealy-Maschine läßt sich in eine Moore-Maschine tranformieren und umgekehrt. Bei Umwandlung in die Moore-Maschine muß beachtet werden, daß eventuell neue Zustände (Zustandssplitting) eingeführt werden. Diese erzeugen je nach vorhergehenden Eingabesymbol eine andere Ausgabe. Bei der Mealy-Maschine erfolgt dieses systembedingt automatisch.
Die Mealy- und die Moore-Maschine sind nur in eingeschränktem Maße äquivalent zueinander. Aufgrund der unterschiedlichen Länge der Ausgabewörter ist eine Äquivalenz im engeren Sinne nicht gegeben. Falls die erste Ausgabe der Moore-Maschine nicht berücksichtigt wird, lassen sich die beiden Typen ineinander umwandeln. Hieraus läßt sich folgern, daß alle Mealy- berechenbaren Probleme auch Moore-berechenbar sind und umgekehrt.
Endliche Maschinen finden praktische Anwendungen z.B. bei der Lösung von Multiplikationen, Additionen von natürlichen und von Dualzahlen, Paritätsbitergängzung und -prüfung sowie Teilbarkeitsteste oder den Eintrittsautomaten.
Automaten werden auch zur Modellierung von vernetzten Systemen eingesetzt, wie dieses z.B. in den Zellstrukturen des Gehirns oder anderen Nervenzellen zu finden ist. Der Zustand einer einzelnen Zelle hängt von den Zuständen ihrer direkten Nachbarzellen ab. Bei der Modellierung dieser Systeme wird jede einzelne Zelle als Automat dargestellt, dessen Zustandsänderung abhängig von den Nachbarzellen ist. Ein Eingabewort wird also aus den Zuständen der Nachbarzellen gebildet. In festgelegten Takten finden die Zustandsänderungen der Zellen synchron statt. Die Untersuchungen an diesem System finden in der Regeln an n-dimensionalen Gittern statt. Hierfür wird für die einzelne Zelle der sogenannte Nachbarschaftsindex aufgestellt, der in allgemeiner Beschreibung die Koordinaten der Nachbarzellen enthält, die für die Auswertung des Konfigurationsübergangs berücksichtigt werden müssen. Mit entsprechenden Algorithmen lassen sich dann Fragen untersuchen wie
Die Konzepte zellularer Automaten werden in der Biologie bei der Beschreibung und Untersuchung von Zellwachstum oder Populationsmodellierung, in der Physik zur Analyse von Kristallwachstum und in der Informatik bei Entwicklung von Parallelrechnern eingesetzt.
Ein spezielles Problem ist das Firing-Squad-Synchronization-Problem . Im allgemein Fall wird hier untersucht, wie eine Reihe von Automaten, bei denen Nachrichten zum jeweiligen Nachbarn übermittelt werden können, so gesteuert werden können, daß alle Automaten nach einiger Zeit (=Anzahl von Takten) synchron den gleichen Zustand erreichen.
Die Petri-Netze dienen zur Simulation von miteinander kommunizierenden asynchron laufenden Prozessen. Ein einfaches Beispiel ist der konkurrierende Zugriff auf ein Peripheriegerät in einem Rechner mit mehreren Prozessoren.
Zum Aufbau eines Petri-Netzes wird zuerst die statische Sicht auf das System modelliert. Hier sind alle Systemzustände enthalten. Die ``Laufrichtung'' der Transitionen (Prozesse) wird durch Pfeile markiert werden. Zudem werden die Punkte miteinander verbunden, an denen die Prozesse miteinander kommunizieren können (sog. Semaphore ). Die Kommunikation erfolgt an diesen Stellen mit Hilfe eines Tokens, welches von den Prozessen belegt, d.h. ``mitgenommen'' werden kann. Dieses entspricht dem Setzen eines Flags. Eine Regel bei der Modellierung ist, daß eine Transition nur feuern kann, wenn alle vorhergehenden Zustände mit mindestens einem Token belegt sind. Der jeweilige Prozeß nimmt das gemeinsame Token mit und signaliert hiermit die Belegung der Ressource.
Die Untersuchung dieses Systems im asynchron laufenden Zustand kann darüber Auskunft geben, ob das Gesamtsystem in einen Zustand laufen kann, der eine Problemlösung von außen erfordert. Beispiele für solche Zustände sind:
Die Anwendungsgebiete von Petri-Netzen liegen in der Systemanalyse und im Entwurf. Softwarewerkzeuge (sog. CASE-Tools) können Analyse und Entwurf von Petri-Netzen unterstützen. Ein weiteres Anwendungsgebiet ist die Konzeption und Realisierung von Workflow-Managementsystemen.
Wie oben (3.1) gezeigt, kann eine Sprache der Form
mit Hilfe einer Typ-3-Grammtik nicht erzeugt
werden. Um diese Sprache zu erzeugen müssen gleichzeitig zwei
Terminalsymbole11 so
parallel erzeugt werden12, daß im nächsten
Schritt wieder zwei Terminalsymbole parallel erzeugt werden können.
Die Typ-3-Grammatik läßt höchstens die Erzeugung von einem
Terminalsymbol pro Ersetzungsvorgang zu. Mit der Erweiterung der
Möglichkeiten auf die Erzeugung von mehreren terminalen Symbolen pro
Ersetzungsschritt ist eine solche Sprache definierbar.
Die Klasse der regulären Grammatiken (Typ-3-Grammatiken) ist eine
Obermenge der Klasse der kontextfreien Grammatiken. Falls das
Eingabealphabet mehr als ein Symbol erhält ist die Klasse der
kontextfreien Grammatiken eine echte Untermenge der regulären
Grammatiken. Die kontextfreien Grammatiken zählen zu den
Typ-2-Grammatiken.
Eine kontextfreie Grammatik (kfG) ist ein Viertupel:
(V,T,P,S)
mit:
| V = | endliche Menge von Variablen |
| T = | endliche Menge von Terminalsymbolen |
| P = | endliche Menge von Produktionen |
| S = | Startsymbol, |
Eine Produktion definiert eine Ersetzungsregel und ist ein Paar
(A,), wobei A eine Variable,
ist.
kann auch die leere Zeichenkette sein. Die
Elemente der Produktionen werden häufig als
beschrieben.
Da auf der linken Seite einer Produktion nur eine einzelne Variable stehen darf, kann diese Variable unabhängig vom Kontext ersetzt werden - daher die Bezeichnung kontextfreie Grammatik.
Die Klasse der kontextfreien Grammatiken haben für die Definition von Programmiersprachen eine sehr große Bedeutung. Diese Sprachen können durch kontextfreie Grammatiken mit Hilfe eines Formalismus beschrieben werden, der es erlaubt aus den Sprachbeschreibungen in vielen Fällen automatisch Parser zu generieren, die überprüfen können ob ein Wort zur Sprache gehört. Wenn dieses so ist, ist das Programm syntaktisch korrekt.
Die kontextfreien Grammatiken lassen sich mittels dreier Verfahren vereinfachen.
Eine Regel befindet sich in der Chomsky-Normalform, wenn ihre rechte Seite entweder aus genau zwei Nichtterminalen oder einem Terminalsymbol besteht. Zu jeder kontextfreien Grammatik existiert eine Grammatik in Chomsky-Normalform.
Eine Regel in der Greibach-Normalform besteht aus einem Terminalsymbol ganz links und n- Nonterminalsymbolen. Zu jeder kontextfreien Grammatik existiert eine Grammatik in Greibach-Normalform.
Aus einer kontextfreien Grammatik kann ein Ableitungsbaum gebildet werden. Hierbei wird jedes Nonterminal als Verzweigung gesehen, an dessen Ästen weitere Verzweigungen oder Terminalsymbole angeordnet sind. Sie spielen eine große Rolle im Compilerbau, da sie vom Compiler als innere Repräsentation eines Programmes aufgebaut werden. Sie stellen die Grundlage zur Erzeugung des Objektcodes des Programmes dar. Aus dem Ableitungsbaum wird ein Termbaum entwickelt, indem die Verknüpfungssymbole auf die Verzweigungen rutschen, so daß der ganze Baum nur noch aus Terminalen besteht. Der Termbaum kann dann relativ einfach in eine Folge von Assemblerbefehlen transformiert werden.
Eine Grammatik kann Ableitungen enthalten, die mehrdeutig interpretiert werden können. Hier kann es bei der Auswertung Probleme geben, da Vorrangregeln13beachtet werden müssen. Beim Entwurf von Programmiersprachen müssen diese Probleme berücksichtigt werden. Die Grammatiken zur Definition der Syntax der Sprache muß so aufgebaut sein, daß nur Eindeutige und korrekte Ergebnisse entstehen können. Eine Grammatik mit mehrdeutigen Aussagen läßt sich in eine eindeutige Grammatik überführen.
Für die Klasse der kontextfreien Sprachen kann ebenso wie für die Regulären Sprachen ein Pumping-Lemma genutzt werden um zu entscheiden ob die Wörter dieser Sprache nicht kontextfrei sind. Allerdings kann nicht festgestellt werden ob diese Sprache kontextfrei ist.
Abgeschlossen sind kontextfreie Sprachen gegenüber
Nicht abgeschlossen sind sie gegenüber
| (1) |
Die Klasse der Sprachen, die mit Erweiterten Baccus-Naur-Grammatiken erzeugt werden können ist genau die Klasse der kontextfreien Sprachen.
Aus Grammatiken lassen sich Syntaxdiagramme erstellen. Diese werden in
der Praxis sehr verbreitet verwendet um die Syntax von formalen
Sprachen anschaulich darzustellen. Syntaxdiagramm stellen mit Hilfe
von Pfeilen und Quadratischen Symbolen einen Fluß durch die
Grammatik dar. Hierbei wird einen Alternative von Ersetzungen
dargestellt indem mehrere Kästen parallel geschaltet werden. Eine
Regel der Form wird mit antiparallelen Pfeilen über dem
Symbol dargestellt.
Die Zustandsüberführungsfunktion des Kellerautomaten ist allgemein aufgebaut aus:
Beim Übergang in den Endzustand kann das Kellerbottomsymbol gelöscht werden. Dieses ist für die Akzeptanz eines Wortes allerdings nicht notwendig. Das gänzliche Leeren des Kellers hätte in obigem Beispiel schon ausgereicht. Das Erreichen eines Endzustandes seitens des Automaten ist in diesem Falle gar nicht erforderlich, so daß die Menge F der Endzustände die leere Menge oder ganz weggelassen werden könnte. Die Klasse der Sprachen, die durch einen Kellerautomaten mit leerem Keller akzeptiert werden ist gleich der Klasse der Sprachen, die durch einen Kellerautomaten mit Endzustand akzeptiert werden.
Zu jedem Kellerautomaten läßt sich eine kontextfreie Grammatik konstruieren und umgekehrt. Jede kontextfreie Sprache kann durch einen Kellerautomaten mit nur einem Zustand (mit leerem Keller) akzeptiert werden. Es gibt also auch bei den Typ-2-Sprachen äquivalente generierende (Grammatiken) und akzeptierende ((Keller-)Automaten) Konzepte.
Ein allgemeines Verfahren, der Parser-Generator kann zu einer kontextfreien Grammatik einen Kellerautomaten konstruieren, der genau die von der Grammatik erzeugte Sprache konstruiert. Beim Akzeptieren eines Wortes mit diesem Kellerautomaten kann ein Ableitungsbaum für dieses Wort erzeugt werden. In der Praxis werden Kellerautomaten für den Compilerbau und bei der Sprachdefinition verwendet, da sie Syntaxtests in linearer Zeit ermöglichen.
Jedem Element muß eindeutig eine natürliche Zahl
zugeordnet werden können. Alle Elemente aus M besitzen eine
eindeutige Nummer, können also abgezählt werden.
Die Mengeist abzählbar. Hier kann jedem beliebigen Bruch eine eindeutige Zahl zugeordnet werden.
Jede Teilmenge einer abzählbaren Menge ist abzählbar. Falls eine Menge abzählbar ist, sind zwangsläufig Untermengen hiervon.
Jede Obermenge einer nicht abzählbaren Menge ist nicht abzählbar.
Die Menge der reellen Zahlen ist überabzählbar. Mit Hilfe der Diagonalisierung wird dieses bewiesen. Falls die Menge der reellen Zahlen im Intervall (0,1) der Mengeüberabzählbar ist, so muß dieses auch für alle reellen Zahlen gelten.
Jedesläßt sich als unendliche Dezimalzahl schreiben:
Falls I abzählbar ist, lassen sich alle Elemente von I abzählen:
Jede Zahl vonkann also eindeutig einer Zahl aus N (natürliche Zahl, Aufzählung) zugeordnet werden. Es läßt sich eine unendliche Dezimalzahl
konstruieren:
Für die Elemente der Dezimalzahl soll folgendes gelten:
Nach der Regel ist die i-te Dezimalziffer von1 falls die i-te Ziffer der i-ten Zahl von (3) ungleich 1 ist. Falls sie ungleich 1 ist, ist sie gleich 2. Der Dezimalanteil der Zahl
besteht also nur aus Einsen und Zweien, die durch die Diagonale der Abzählung 3 bestimmt ist.
ist eine belibige Zahl aus (3), so daß für
die Regel (8) gelten muß. Dieses ist insofern ein Wiederspruch, da
falls
. Bei
muß
sein, was ebenfalls einen Widerspruch ergibt.
Wenn die Zustandsüberführung (Turingprogramm, ) als Funtion
dargestellt werden kann, heißt TA deterministisch. Falls
es eine Relation (1:n) ist, heißt TA nichtdeterministisch. Das
Turingprogramm wird geschrieben als Anweisung:
Die Anweisung bedeutet, daß TA sich vorher im Zustand s,
und der Schreib-Lesekopf unter dem Symbol a. TA geht
jetzt in den Zustand über und überschreibt dabei das Symbol
a mit dem Symbol b und führt dann die Bewegung m
aus. Die Bewegung m kann l (links), r (rechts)
oder - (keine Bewegung) sein.
Die Zustandsüberführung beschreibt also das Bearbeiten des
Arbeitsbandes. Es gilt die Vereinbarung, daß jede Anweisung
durch ein oder mehrere Blanks (#) begrenzt ist.
Jeder Turingautomat kann durch einen Kellerautomaten mit zwei Kellern simuliert werden.
Bei einem linear beschräntem Automaten darf das Programm diese Begrenzer nicht verändern und den rechten Begrenzer nicht überschreiten.Das Programm darf also lesend auf das Band links vom Bandanfangssybol zugreifen, aber nicht über das Wortendesymbol (&) hinaus laufen.
Der linear-beschränkte nichtdeterministische Turingautomat wird auch als LBA (linear bounded automaton) bezeichnet.
Ein linear beschränkter Automat ist (quasi) äquivalent zu einer kontextsensitiven (Typ-1) Grammatik. Die Aussage ``quasi'' beruht darauf, daß Sprachen, die von linear beschränkten Automaten akzeptiert werden, daß leere Wort enthalten können. Eine kontextsensitive Sprache kann dieses nicht enthalten, da dieses nicht von monotonen Regeln erzeugt werden kann.
Aus der obigen Aussage folgt, daß der Turingautomat vollständig äquivalent zur Typ-0-Grammatik ist.
Mit Hilfe der Turing-Maschine läßt sich die allgemeine mathematische Berechenbarkeit formal präzisieren. Das Turingband entspricht dem Speicher oder einem Blatt Papier für Notizen, Schreib- und Löschwerkzeuge entsprechen dem Schreib-/Lesekopf. Die Ausgangsdaten (gegebene Parameter) werden jeweils mit Hilfe eines bestimmten endlichen Verfahrens (Algorithmus, Programm) manipuliert. Hält das Programm schließlich an, steht das Ergebnis auf dem Blatt bzw. im Speicher.
Eine Funktion (über einem Alphabetbzw. über
) ist algorithmisch berechenbar, falls es einen Algorithmus (eine Turingmaschine) gibt, der sie berechnet.
Die universelle Turingmaschine (UTM) ist ein theoretisches Konzept für die Existenz universeller Rechner. Sie kann jede andere Turingmaschine einschließlich sich selbst auf deren Eingaben simulieren. Das heißt, daß die UTM als Eingabe zum einen die Turingmaschine erhält, die sie simuliert und zum anderen das Programm, daß die simulierte Turingmaschine ausführen soll.
Die Existenz dieser universellen Turingmaschine is die Grundlage für die Existenz universeller Rechner. Die CPU mit ihren Maschinenanweisungen läßt sich als universelle Turingmaschine auffassen. Sie kann andere Turingmaschinen simulieren, die z.B. eine mathematische Aufgabe lösen sollen. Das Programm, daß auf der CPU läuft ist die Turingmaschine, die die Aufgabe löst. Die Eingabeparameter des Programms sind die Eingabe für die simulierte Turingmaschine.
Aufgrund der Äquivalenz von Goto- und While-Berechenbarkeit ist es möglich ein beliebiges Programm in einer prozeduralen Programmiersprache zu erstellen, daß ohne Goto-Sprünge auskommt.
Loop-berechenbare Funktionen sind total, das heißt sie terminieren immer und sind somit immer lösbar. Die Klasse der Loop-berechenbaren Funktionen ist eine Untermenge der While-, Goto- und Turing-Funktionen.
Aufgrund dieser Tatsachen wird die Churchsche These, nach der diese formalen Berechenbarkeitsbegriffe mit unserem intuitiven Verständnis von Berechenbarkeit übereinstimmen, allgemein akzeptiert.
ist entscheidbar, falls gilt:
Dagegen ist semi-entscheidbar für:
Die Voraussetzung für die Entscheidbarkeit ist also, daß auf jeden Fall festgelegt ist, ob ein akzeptiert werden kann oder nicht. Für die semi-Entscheidbarkeit genügt der Beweis, daß ein Wort akzeptiert wird.
Bei Feststellung der Entscheidbarkeit von konkreten Mengen ist es oft
hilfreich, falls die Frage nach der Entscheidbarkeit einer Menge
auf die Entscheidbarkeit einer anderen Menge
zurückgeführt
werden kann. Hieraus kann dann auf die Entscheidbarkeit von
geschlossen werden.
Die Darstellung der Komplexizität erfolgt mit Hilfe der -Notation.
Diese legt die Laufzeiten in Abhängigkeit von der Eingabe wie folgt
fest:
Viele Probleme, die so nicht in akzeptabler Zeit gelöst werden können wie z.B. das Travelling Salesman werden in der Praxis durch Heuristiken, die auf Erfahrungen beruhen und suboptimal sind, zufriedenstellend gelöst.
Das Kleene-Stern-Produkt von ohne das leere Wort wird mit
gekennzeichnet, d.h.