erreicht wird, hält die Turingmaschine an, da δ für q = qaccept
|
|
- Mareke Becker
- vor 6 Jahren
- Abrufe
Transkript
1 . Deterministische Turingmaschinen Ist ( q a... δ nicht definiert so hält die -D im Zustand q an (stoppt im Zustand a q. Sobald also der azeptierende Zustand q erreicht wird hält die Turingmaschine an da ( q a... δ für q = q nicht definiert ist. Sie ann aber auch eventuell vorher in einem a anderen Zustand anhalten (nämlich dann wenn ( q a... δ nicht definiert ist oder sie ann beliebig lange weiterlaufen (sie hält nicht an. Diese Situation tritt beispielsweise dann ein wenn die Turingmaschine in einen Zustand q q ommt und ( q a... a ( q ( a S...( a S = δ ist. Eine andere Möglicheit eines endlosen Weiterlaufens ergibt sich dann wenn die Turingmaschine in einen Zustand a q q ommt alle Köpfe über Zellen stehen die das Leerzeichen b enthalten rechts dieser Zellen auf allen Bändern nur noch Leerzeichen stehen und ( q b... b = ( q ( b R... ( b R Die Werte ( q a... a = ( q ( b d...( b d δ ist. δ der Überführungsfuntion werden häufig in Form einer endlichen Tabelle angegeben:
2 Modelle der Berechenbareit momentaner Zustand Symbol unter dem Schreib/Leseopf auf neuer Zustand neues Symbol Kopfbewegung auf Band... Band Band... Band q a... a q b d... b d Eine Konfiguration K einer -D beschreibt den gegenwärtigen Gesamtzustand von d.h. den gegenwärtigen Zustand zusammen mit den Bandinhalten und den Positionen der Schreib/Leseöpfe: ( q ( α i... ( α K = mit q Q α Σ i für =.... i Diese Konfiguration K wird folgendermaßen interpretiert: ist im Zustand q das -te Band (für =... enthält linsbündig die endliche Zeichenette α (eder Buchstabe von α belegt eine Zelle gefolgt von Zellen die das Leerzeichen enthalten (leere Zellen der Schreib/Leseopf des -ten Bands steht über der i -ten Zelle; für i [ : α ] ist dieses der i -tebuchstaben von α für i α + steht der Schreib/Leseopf hinter α über einer Zelle die das Leerzeichen enthält. Ist a der i -te Buchstabe von α bzw. ( q a... a = ( q ( b d...( b d δ a = b für i α + und ist dann geht die in die Folgeonfiguration K über die durch ( q ( β i... ( β K = i definiert wird. Dabei entsteht β aus α durch Ersetzen von der Schreib/Leseöpfe der Folgeonfiguration K lauten i i = i i + für für für d d d = R = S = L und i Man schreibt in diesem Fall K K. Die Bezeichnung besagt daß entweder eine Konfigurationsänderung stattgefunden hat (es ist dann K K. a durch b. Die Positionen i K = K oder daß es eine Konfiguration K gibt mit K K und K K (auch geschrieben als K K K.
3 . Deterministische Turingmaschinen Man schreibt K m K mit m N wenn K aus K durch m Konfigurationsänderungen hervorgegangen ist d.h. wenn es m Konfigurationen K... K K... K m = K. Für m = ist dabei K = K. K m gibt mit Eine Konfiguration K die den Anfangszustand q und auf dem. Band ein Wort w I enthält wobei sich auf allen anderen Bändern nur Leerzeichen befinden und die Köpfe über den am weitesten lins stehenden Zellen stehen d.h. eine Konfiguration der Form ( q ( w ( ε...( K = ε heißt Anfangsonfiguration mit Eingabewort w. Da w I ist und das Leerzeichen nicht zu I gehört ann (bei entsprechender Definition der Überführungsfuntion das Ende von w nämlich das erste Leerzeichen im Anschluß an w erennen. Im folgenden wird gelegent- lich für eine Eingabe w I auch nur Buchstaben aus I enthält. Eine Konfiguration K die den azeptierenden Zustand q enthält d.h. eine Konfiguration der Form w Σ geschrieben und dabei implizit angenommen daß w ( q ( α i... ( α i K = heißt azeptierende Konfiguration (Endonfiguration. Ein Wort w über dem Eingabealphabet wird von azeptiert wenn gilt: ( q ( w ( ε... ( ε K mit einer Endonfiguration K. Die von einer -D azeptierte Sprache ist die Menge L( = = { w w I und w wird von azeptiert} { w w I und ( q ( w ( ε... ( ε ( q ( α i... ( α i }. Zu beachten ist daß eventuell auch dann bereits eine Endonfiguration erreicht wenn das Eingabewort w noch gar nicht omplett gelesen ist. Auch in diesem Fall gehört w zu L(. Für w L( hält entweder nicht im Zustand q weiter d.h. die Überführungsfolge K K läßt sich unendlich lang fortsetzen ohne daß eine Konfiguration erreicht wird die den Endzustand enthält. oder läuft unendlich lange
4 4 Modelle der Berechenbareit Eine -D Turingmaschine zur Azeptanz von + { w w { } und ist die Binärdarstellung einer geraden Zahl } { ε} L( = w Die -D ( Q Σ I δ b q = wird gegeben durch q Q = { q q q } Σ = { b} = { } durch folgende Tabelle definiert ist: I q = q mit der Überführungsfuntion δ die momentaner Zustand Symbol unter dem Schreib/Leseopf auf neuer Zustand neues Symbol Kopfbewegung auf Band Band Band Band q b b q b S S b q R b S b q R b S q b b q b R b S b q R b S b q R b S stoppt bei Eingabe von w nicht falls w die Binärdarstellung einer ungeraden Zahl ist. Eine -D Turingmaschine zur Azeptanz der Palindrome über { } Die folgende Turingmaschine -D azeptiert genau die Palindrome über { }: + { w w { } und w = a... a a = a a } { ε} L( a = n n n n.... ( Q Σ I δ b q = mit Q = { q... q } Σ = { b #} = { } q 5 I q = q5. arbeitet wie folgt:. Die. Zelle des. Bandes wird mit # mariert. Dann wird das Eingabewort auf das. Band opiert; der Kopf des. Bandes steht etzt unmittelbar rechts des Eingabeworts.. Der Kopf des. Bandes wird bis zum Zeichen # zurücgesetzt.. Der Kopf des. Bandes wird eweils um Zelle nach lins und der Kopf des. Bandes um Zelle nach rechts verschoben. Wenn die von den Köpfen eweils gelesenen Symbole sämtlich übereinstimmen ist das Eingabenwort ein Palindrom und die Maschine geht in den Zustand q f = q5 und stoppt. Sonst stoppt die Maschine in einem von q f verschiedenen Zustand.
5 . Deterministische Turingmaschinen 5 Die Überführungsfuntion wird durch folgende Tabelle gegeben: momentaner Zustand Symbol unter dem Schreib/Leseopf auf neuer Zustand neues Symbol Kopfbewegung auf Band Band Band Band q b q S # R b q S # R b b q b S b S q b q R R b q R R b b q b S b L q b q b S L b q b S L b # q b L # R q q S R 4 q S R 4 q 4 q L S q L S q L S q L S b q S b S b q S b S
6 6 Modelle der Berechenbareit Beobachtet man die Arbeitsweise einer Turingmaschine bei einem Eingabewort w so liegt nach endlich vielen Überführungen eine der folgenden Situationen vor:. Fall: ist bereits in einem Zustand q q stehengeblieben (d.h. δ (q... ist nicht definiert. Dann ist w L(.. Fall: ist bereits im Zustand q stehengeblieben. Dann ist w L(.. Fall: ist noch nicht stehengeblieben d.h. befindet sich in einem Zustand q q für den δ (q... definiert ist. Dann ist noch nicht entschieden ob w L( oder w L( gilt. ist eventuell noch nicht lange genug beobachtet worden. Es ist nicht vorhersagbar wie lange beobachtet werden muß um eine Entscheidung zu treffen (es ist algorithmisch unentscheidbar. Eine Turingmaschine ann als Berechnungsvorschrift definiert werden: Das. Band wird als Eingabeband und ein Band etwa das -te Band als Ausgabeband ausgezeichnet. Die Turingmaschine berechnet eine partielle Funtion f : I Σ wenn gilt: Startet im Anfangszustand mit w d.h. startet mit w auf dem Eingabeband im Zustand q (alle anderen Bänder sind leer und stoppt nach endlich vielen Schritten im azeptierenden Zustand q dann wird die Bandinschrift y des Ausgabebands von als Funtionswert y = f (w interpretiert. Falls überhaupt nicht oder nicht im Endzustand stehen- bleibt dann ist f (w nicht definiert. Daher ist f eine partielle Funtion. Eine -D zur Berechnung der (totalen Funtion f N : n N n + Die folgende -D berechnet die (totale Funtion f N : n N : n + Hierbei wird ein n N als Zeichenette in seiner Binärdarstellung auf das Eingabeband geschrieben; die höchstwertige Stelle steht dabei ganz lins. Der Wert wird als Zeichenette eingegeben alle anderen Werte n N ohne führende Nullen. Entsprechend steht abschließend n + in seiner Binärdarstellung ohne führende Nullen auf dem Ausgabeband (. Band. ( Q Σ I δ b q = mit Q = { q... q } Σ = { b #} = { } q 9 I q = q9.
7 . Deterministische Turingmaschinen 7 arbeitet wie folgt:. Auf das. Band wird zunächst das Zeichen # geschrieben das das line Ende des. Bandes marieren soll. Dann wird auf das. Band eine geschrieben und das Eingabewort w auf das. Band opiert (auf dem. Band steht etzt #w d.h. das Eingabewort w ist durch eine führende ergänzt worden.. Auf dem. Band werden von rechts alle en in en invertiert bis die erste erreicht ist; diese wird durch ersetzt (Addition n := n +.. Der Kopf des. Bandes wird auf die Anfangsmarierung # zurücgesetzt und geprüft ob rechts dieses Zeichens eine steht (das bedeutet daß die anfangs an w angefügte führende wieder entfernt werden muß. 4. In diesem Fall wird der Inhalt des. Bandes omplett um zwei Position nach lins verschoben. Dadurch werden die führende und das Zeichen # auf dem. Band entfernt. Es ist zu beachten daß am rechten Ende des. Bandes Leerzeichen gesetzt werden. 5. Andernfalls wird der Inhalt des. Bandes um Position nach lins verschoben und dadurch das Zeichen # entfernt. Die Überführungsfuntion wird durch folgende Tabelle gegeben: momentaner Zustand Symbol unter dem Schreib/Leseopf auf neuer Zustand neues Symbol Kopfbewegung auf Band Band Band Band Bemerung q b q S # R lines Ende für n+ b q S # R marieren q b q S R führende erzeugen b q S R q b q R R Inhalt des Eingabe- b q R R bandes auf. Band b b q b S b L opieren q b q b S S addieren: 4 anhängende en inb q b S L vertieren erste von rechts invertieren q b 4 q4 b S L auf # zurücgehen b q4 b S L b # q5 b S # R../..
8 8 Modelle der Berechenbareit q b 5 q b S R muß führende 6 b q b S S entfernt werden? 5 q b 6 q b S L gelesenes Zeichen 7 b q b S L im Zustand meren 8 b b q b S b L q b 7 q b S L. Kopf um Positi- 9 b q b S L on nach lins setzen 9 q b 8 q b S L. Kopf um Positi- b q b S L on nach lins setzen q b 9 q b S R schreiben b q b S R b # q b S R q b q b S R schreiben b q b S R b # q b S R q b q b S R. Kopf um Positib q b S R on nach rechts set- zen q b q b S R. Kopf weitere 6 b q b S R Position nach rechts 6 setzen q b q b S b L letztes Zeichen 4 b q b S b L löschen und nach 4 lins gehen q b q = q b S b S letztes Zeichen 9 f 4 b q = q b S b S löschen und STOP 9 f q b 5 q b S L gelesenes Zeichen 6 b q b S L im Zustand meren 7 b b q b S b L 4 q b 6 q b S R schreiben 8 b q b S R 8 b # q b S R 8../..
9 . Deterministische Turingmaschinen 9 q b 7 q b S R schreiben 8 b q b S R 8 b # q b S R 8 q b 8 q b S R. Kopf um Posi- 5 b q b S R tion nach rechts setzen 5 Die Konzepte der Berechnung partieller Funtionen und das Azeptieren von Sprachen mittels Turingmaschinen sind äquivalent: Satz.-: Berechnet die Turingmaschine die partielle Funtion eine Turingmaschine M f : I Σ. T onstruieren mit L( = { w# y y = f ( w } dann ann man Azeptiert die Turingmaschine die Sprache L ( dann läßt sich so modifizieren daß sie die partielle Funtion f ( w = y genau dann wenn gilt: f : I Σ berechnet die definiert ist durch ( ( q ( w ( ε... ( ε ( ε q ( α i ( α i... ( i ( y y α - + Die Aussage läßt die Interpretation zu daß die Verifiation eines Funtionsergebnisses genauso omplex ist wie die Berechnung des Funtionsergebnisses selbst. Die Überführungsfuntion δ einer Turingmaschine werde folgendermaßen modifiziert: q Q mit q q für die ( q... ( q a... a q ( a S... ( a S Die Zustandsmenge Q wird um einen neuen Zustand q reect erweitert. Für alle bisherigen Zustände = reect ( δ nicht definiert ist werden in δ die Zeilen δ mit a Σ für i =... aufgenommen. Für bei Eingabe eines Wortes i q reect ist δ nicht definiert. Kommt die so modifizierte Turingmaschine w I in einen Zustand q Q mit q q für die ( q... δ bisher nicht definiert war (es ist dann w L( so macht die modifizierte Turingmaschine noch eine Überführung ohne die Bandinhalte zu ändern und stoppt im Zustand q reect ohne das Wort w zu azeptieren. Man ann daher annehmen daß eine Turingmaschine so definierte Zustände q und q reect enthält. Der Zustand q heißt azeptierender Zustand der Zustand q reect heißt nicht-azeptierender (verwerfender Zustand. Startet bei Ein-
10 4 Modelle der Berechenbareit gabe eines Wortes ommt in den Zustand w I im Anfangszustand q so zeigt sie folgendes Verhalten: Entweder q dann ist w L( und die Eingabe w wird azeptiert; oder ommt in den Zustand q reect dann ist w L( und die Eingabe w wird verworfen; oder läuft unendlich lange weiter dann ist ebenfalls w L(. Man ann daher als Blacbox darstellen die eine Eingangsschnittstelle besitzt über die im Anfangszustand q ein Wort w I eingegeben wird und der Start der Berechnung gemäß der Überführungsfuntion δ erfolgt. Sie besitzt zwei ativierbare Ausgangsschnittstellen: Die erste Ausgangsschnittstelle wird von dann ativiert wenn bei der Berechnung den Zustand q erreicht und stoppt; es ist dann w L(. Die zweite Ausgangsschnittstelle wird von ativiert wenn bei der Berechnung den Zustand q reect erreicht und stoppt; es ist dann w L(. Wird eine Ausgangsschnittstelle ativiert weil nicht anhält dann ist ebenfalls w L(. Eine graphische Repräsentation von sieht wie folgt aus. w I q q q reect w L( w L( stoppt nicht w L( Da die Turingmaschine dazu verwendet wird um festzustellen ob ein Eingabewort w I von ihr azeptiert wird ann man vereinfacht auch folgendermaßen darstellen: w I q q q reect w L( stoppt nicht Turingmaschinen önnen zu neuen Turingmaschinen zusammengesetzt werden: Es seien zwei Turingmaschinen = ( Q Σ I δ b q q und = ( Q Σ I δ b q q mit disunten Zustandsmengen ( Q Q = und demselben Eingabealphabet I Σ und I Σ und eweils getrennten Bändern gegeben. Die Anzahl der Bänder von sei die
11 . Deterministische Turingmaschinen 4 von sei. Jeweils das. Band ist das Eingabeband. Beispiele für die Möglicheiten der Zusammensetzung sind: Man ann eine neue Turingmaschine durch Hintereinanderschaltung von und onstruieren die die Bänder von und umfaßt d.h. + viele Bänder besitzt und folgendermaßen arbeitet: Eine Eingabe w I für die zusammengesetzte Turingmaschine wird auf das. Band von gegeben und auf das. Band von opiert. Jetzt wird zunächst das Verhalten von auf w simuliert. Falls das Wort w azeptiert d.h. in den Zustand wird q gelangt wird das Verhalten von auf w simuliert. azeptiert das Wort w falls das Wort w azeptiert. Es gilt: ( L( L( = L. Graphisch läßt sich wie folgt darstellen. w I q q q reect w L( q q q reect w L( ( L w L ( stoppt nicht stoppt nicht Die formale Notation von mit Hilfe der Überführungsfuntion ist etwas mühsam: Es ist ( Q Σ I δ b q q Q Q Q { } =. Dabei ist = q copy q sip die Zustandsmenge von mit zwei neuen Zuständen qcopy und sip q die nicht in Q Q enthalten sind Σ {#} Σ = Σ das Arbeitsalphabet von mit einem neuen Symbol # das nicht in Σ Σ enthalten ist + + δ : (Q \ {q } Σ Q ( Σ { L R S} die Überführungsfuntion die sich aus den Überführungsfuntionen δ und δ wie folgt ergibt: Die Bänder von werden von bis + numeriert; die ersten Bänder sind die ursprünglichen Bänder von. Insbesondere ist das Eingabeband von das ursprüngliche Eingabeband von. Das Band mit der Nummer + ist das ursprüngliche Eingabeband von. Ein Eingabewort w I wird auf das erste Band von gegeben.
12 4 Modelle der Berechenbareit Es sei n = w. In die erste Zelle des Bands mit der Nummer wird das Zeichen # geschrieben und w auf dieses Band opiert. Das Zeichen # dient dazu das line Ende des Bands mit der Nummer zu erennen. Nach diesem Kopiervorgang stehen die Köpfe + des ersten und des ( -ten Bands eweils über der (n+-ten Zelle alle übrigen Köpfe + wurden nicht bewegt. Das Ende des Kopiervorgangs wurde dadurch erannt daß auf dem ersten Band das Leerzeichen gelesen wurde. Nun werden die Köpfe des ersten und des ( + -ten Bands beide zurüc auf das erste Zeichen von w gesetzt. Für den Kopier- und den Rücsetzvorgang der Köpfe werden folgende Zeilen in die Überführungsfuntion δ von aufgenommen: + δ q = ( ( ( ( ( ( a 44 b... b b... b qcopy 4 a S 44 b S b S 4 # R 44 b S b S für alle a Σ (b ist das Leerzeichen δ q = ( ( ( ( ( ( copy a 44 b... b b... b qcopy 4 a R 44 b S b S 4 a R 44 b S b S für alle a I (man beachte daß a = Leerzeichen hierbei nicht vorommt δ q copy b = 44 b... b b... b q sip ( b S ( b S... ( b S ( b L ( b S...( b S δ q = ( ( ( ( ( ( sip a 44 b... b a 44 b... b qsip 4 a L 44 b S b S 4 a L 44 b S b S für alle { b} a I und a I δ q = ( ( ( ( ( ( sip a 44 b... b # 44 b... b q 4 a S 44 b S b S 4 # R 44 b S b S für alle { b} a I. Nun wird das Verhalten von simuliert wobei die Inhalte der Bänder mit den Nummern + bis + (entsprechend den ursprünglichen Bändern von und die Positionen der Köpfe auf diesen Bändern nicht verändert werden. Die dafür erforderlichen Zeilen in der Überführungsfuntion δ lauten: δ q ( ( ( ( ( ( a a... a a = 44 b... b q b d b d... b d a S 44 b S b S eden Eintrag ( q a a... a = ( q ( b d ( b d... ( b d für δ in der Überführungsfuntion δ von und a Σ.
13 . Deterministische Turingmaschinen 4 Falls bei der Simulation der azeptierende Zustand ( q von erreicht wird d.h. w L wird die Simulation des Verhaltens von auf w gestartet. Auf den ersten ändert sich dabei nichts mehr. Folgende Zeilen werden in die Überführungsfuntion δ aufgenommen: δ q a a... a a = b... b q mit a Σ... a Σ und a Σ und ( a ( ( ( ( ( S a S... a S a S 44 b S b S δ q ( ( ( ( ( ( a a... a g = g... g q a S a S... a S h... d h d h d für eden Eintrag δ ( q g g... g = ( q ( h d ( h d... ( h d in der Überführungsfuntion δ von und a Σ... a Σ. Durch Parallelschaltung ann man aus und eine neue Turingmaschine bilden: ein Wort w wird sowohl auf das. Band von als auch auf das. Band von gegeben und das Verhalten beider Turingmaschinen simultan simuliert. Sobald eine der beiden Turingmaschinen w azeptiert wird w von azeptiert. Es gilt: ( L( L( = L. q q q reect w L( ( L w L ( w I stoppt nicht q q w L( q reect stoppt nicht
14 44 Modelle der Berechenbareit Auch hier ist die formale Notation von mit Hilfe der Überführungsfuntion etwas mühsam: Es ist = ( Q Σ I δ b q q. Dabei ist Q ( Q Q {( q q ( q q ( q q } = die Zustandsmenge von mit zwei copy sip acc neuen Zuständen q copy und q sip die nicht in Q enthalten sind und einem neuen Zustand q acc der nicht in Q acc Q enthalten ist (die Zustände bestehen etzt aus Paaren von Zuständen der Turingmaschinen und und drei neuen Zuständen Σ {#} Σ = Σ das Arbeitsalphabet von mit einem neuen Symbol # das nicht in Σ enthalten ist + + δ : (Q \ {( q } Σ Q ( Σ { L R S} acc q acc die Überführungsfuntion die sich aus den Überführungsfuntionen δ und δ ergibt (siehe unten ( q q q = der Anfangszustand und q ( q q = der azeptierende Zustand von. acc acc Die Bänder von werden wieder von bis + numeriert; die ersten Bänder sind die ursprünglichen Bänder von. Insbesondere ist das Eingabeband von das ursprüngliche Eingabeband von. Das Band mit der Nummer + ist das ursprüngliche Eingabeband von. Ein Eingabewort w I wird auf das erste Band von gegeben. Wieder wird in die erste Zelle des Bands mit der Nummer das Zeichen # geschrieben und w auf dieses Band opiert. Anschließend werden der Kopf des ersten Bands auf den Bandanfang und der Kopf des ( -ten Bands auf die zweite Zelle + + (rechte Nachbarzelle der Zelle die das Zeichen # enthält zurücgesetzt. Der Vorgang verläuft ähnlich dem Vorgang der bei der Hintereinanderschaltung von und beschrieben wurde. Die erforderlichen Einträge in der Überführungsfuntion lauten etzt: δ 44 für alle a Σ (b ist das Leerzeichen ( q q a b... b b... b = ( q q ( a S ( b S...( b S (# R ( b S... ( b S copy δ ( q = ( ( ( ( ( ( ( copy q a 44 b... b b... b qcopy q 4 a R 44 b S b S 4 a R 44 b S b S für alle a I (man beachte daß a = Leerzeichen hierbei nicht vorommt
15 . Deterministische Turingmaschinen 45 δ δ 44 ( q q b b... b b... b = ( q q ( b S ( b S... ( b S ( b L ( b S... ( b S copy sip a I b und a I ( q q a b... b a b... b = ( q q ( a L ( b S...( b S ( a L ( b S...( b S sip sip für alle { } δ a I b ( q q a b... b # b... b = ( q q ( a S ( b S... ( b S (# R ( b S...( b S sip für alle { } Nun wird parallel das Verhalten von und von simuliert wobei für die Simulation von nur auf die Inhalte der Bänder mit den Nummern bis (entsprechend den ursprünglichen Bändern von und für die Simulation von nur auf die Inhalte der Bänder mit den Nummern + bis + (entsprechend den ursprünglichen Bändern von zugegriffen wird. Die dafür erforderlichen Zeilen in der Überführungsfuntion δ lauten: δ ( q q a a... a g... g g = ( q ( ( ( ( ( ( q b d b d... b d... h e h e h h falls ( q a a... a = ( q ( (... ( b d b d b d und ( q g g... g = ( q ( h e ( h e... ( h e δ in der Überführungsfuntion δ von δ in der Überführungsfuntion δ von ist. Falls bei der Simulation ein Zustand der Form ( q ( q q reect q reect mit q Q bzw. der Form mit q Q erreicht wird muß sichergestellt werden daß die Simulation von bzw. von weiterläuft. Daher werden auch folgende Einträge in die Überführungsfuntion δ aufgenommen: δ ( q q a a... a g... g g reect = ( q ( ( ( ( ( ( reect q a S a S... a S h... e h e h e
16 46 Modelle der Berechenbareit mit a Σ... Σ a und falls δ ( q g g... g = ( q ( h e ( h e... ( h e in der Überführungsfuntion δ von ist und δ ( q q a a... a g... g g reect = ( q ( ( ( ( ( ( q reect b d b d... b d... g S g S g S für eden Eintrag ( q a a... a = ( q ( b d ( b d...( b d δ in der Überführungsfuntion δ von und g Σ... g Σ. Schließlich soll die Eingabe w azeptieren wenn oder die Eingabe azeptiert. Folgende Einträge werden daher in die Überführungsfuntion von aufgenommen: δ δ ( q q a a... a g... g g = ( q q q und ( ( ( ( ( ( ( acc qacc a S a S... a S g... S g S g S a a... a g... g g = ( q ( ( ( ( ( ( acc qacc a S a S... a S g... S g S g S für alle q Q q Q a Σ... a Σ und g Σ... g Σ. Dadurch daß man die Turingmaschine als Unterprogramm in die Berechnung der Turingmaschine einsetzt erhält man eine neue Turingmaschine die prinzipiell folgendermaßen abläuft: Eine Eingabe w I wird in eingegeben. Ein Band von wird als Parameterübergabeband für ausgezeichnet. Sobald in einen als Parameterübergabezustand ausgezeichneten Zustand q? gelangt wird der Inhalt des Parameterübergabebands auf das erste Band von opiert. Wird diese Eingabe von azeptiert wobei bei Azeptanz der Inhalt des -ten Bands y lautet wird das Parameterübergabeband gelöscht y darauf opiert das erste Band von gelöscht und die Be-
17 . Deterministische Turingmaschinen 47 rechnung von fortgesetzt. Die Ausformulierung der Details dieser Konstrution werden dem Leser als Übung überlassen. Obige Überlegungen und Ausführungen in Kapitel. zeigen: Satz.-: Die Klasse der von Turingmaschinen azeptierten Mengen ist gegenüber Vereinigungsbildung und Schnittbildung abgeschlossen. Die Klasse der von Turingmaschinen azeptierten Mengen ist gegenüber Komplementbildung nicht abgeschlossen: Wenn wird d.h. L = L( muß das Komplement von einer Turingmaschine azeptiert werden. L Σ von einer Turingmaschine azeptiert Σ \ L von L nicht auch notwendigerweise = und eine Eingabe w L( gelte Für eine -D ( Q Σ I δ b q q ( q ( ( ( m w ε... ε K mit einer Endonfiguration K q ( α i... ( α i eine partielle Funtion ( =. Dann wird durch t ( w = m t : Σ N definiert die angibt wieviele Überführungen macht um w zu azeptieren. Es handelt sich hierbei um eine partielle Funtion da t für Wörter w L( nicht definiert ist. Die Zeitomplexität von (im schlechtesten Fall worst case wird definiert durch die partielle Funtion T : N N mit T { t ( w w Σ und w n } ( n = max. Bemerung: In der Literatur findet man auch die Definition { t ( w w Σ und w n } T ( n = max = Entsprechend ann man die Platzomplexität von (im schlechtesten Fall worst case S (n als den maximalen Abstand vom linen Ende eines Bandes definieren den ein Schreib/Leseopf bei der Azeptanz eines Worts w L( mit w n erreicht.
18 48 Modelle der Berechenbareit Beispiele: Die oben angegebene Turingmaschine zur Azeptanz der Palindrome über { } hat eine Zeitomplexität der Größe T ( n = 4n + und eine Platzomplexität S ( n = n +. N N Die oben angegebene Turingmaschine zur Berechnung der Funtion f : hat n n + folgende Zeitomplexität: Der Wert n wird in Binärdarstellung auf das Eingabeband gegeben. Die Eingabe w = bin(n belegt daher für n = bin( n = log ( n + w viele Zeichen bzw. ein Zeichen für n =. Dann führt die Turingmaschine ( w O( log(n Schritte aus. Die Zeitomplexität ist linear in der Länge der Eingabe. O = viele Bei der Betrachtung der Zeitomplexität werden in diesem Beispiel also die Bitoperationen gezählt die benötigt werden um f (n zu berechnen wenn n in Binärdarstellung gegeben ist. Die Turingmaschine dieses Beispiels läßt sich leicht zu einer Turingmaschine modifizieren N N N die die Funtion SUM : berechnet. Hierbei werden die Zahlen n und m in ( n m n + m Binärdarstellung getrennt durch das Zeichen # auf das Eingabeband geschrieben d.h. die Eingabe hat die Form w = bin( n# bin( m. Dann werden die Zahlen n und m stellengerecht addiert. Auch für die arithmetischen Funtionen N N MULT : ( n m N und n m N N DIF : ( n m N N > N DIV : ( n m n m n m N für n m für n < m lassen sich entsprechende Turingmaschinen angeben. Dabei wird beispielsweise die Berechnung von MULT auf suzessive Anwendung der Berechnung für SUM zurücgeführt. In edem Fall erfolgt die Eingabe in der Form w = bin( n# bin( m und die Zeitomplexitäten geben an wieviele Bitoperationen zur Berechnung der eweiligen Funtionen erforderlich sind. Die Ergebnisse sind in folgendem Satz zusammengefaßt.
19 . Deterministische Turingmaschinen 49 Satz.-: Es seien n und m natürliche Zahlen. Mit size (n werde die Länge der Binärdarstellung der Zahl n (ohne führende binäre Nullen bezeichnet. Dabei sei size ( =. Es gelte n m = size( n size( m O( log( n. Dann gibt es Turingmaschinen die die Funtionen SUM ( n m DIF ( n m MULT ( n m und DIV ( n m berechnen und folgende Zeitomplexitäten besitzen: (i Die Addition und Differenzenbildung der Zahlen n und m (Berechnung von SUM ( n m und DIF ( n m erfordert eweils ( O also ( ( n O log viele Bitoperationen. (ii Die Multipliation der Zahlen n und m (Berechnung von MULT ( n m ann in O ( also in O ( log( n vielen Bitoperationen durchgeführt werden. ( (iii Ist size( n size( m dann ann die Berechnung des ganzzahligen Quotienten n m (Berechnung von DIV ( n m in ( O vielen Bitoperationen durchgeführt werden. ( O also in ( log( n Meist ist man nicht am exaten Wert der Anzahl der Konfigurationsänderungen interessiert sondern nur an der Größenordnung der Zeitomplexität (in Abhängigeit von der Größe der Eingabe. Bei der Analyse wird man meist eine obere Schrane g (n für T (n herleiten d.h. man wird eine Aussage der Form T ( n g( n begründen. In diesem Fall ist ( g( T ( n O n. Eine zusätzliche Aussage ( n h( n g( n mit einer Funtion h(n T führt auf die verbesserte Abschätzung ( n O( h( n T. Man ist also bei der worst case- Analayse an einer möglichst leinen oberen Schrane für T (n interessiert. Es gibt eine Reihe von Varianten von Turingmaschinen: Die Turingmaschine besitzt Bänder die nach lins und rechts unendlich lang sind. Die Turingmaschine besitzt ein einziges nach lins und rechts oder nur zu einer Seite unendlich langes Band. Die Turingmaschine besitzt mehrdimensionale Bänder bzw. ein mehrdimensionales Band. Das Eingabealphabet der Turingmaschine besteht aus zwei Zeichen etwa I = { }. Das Arbeitsalphabet der Turingmaschine besteht aus zwei Zeichen etwa Σ = { }. Die Turingmaschine hat endlich viele Endzustände. Es zeigt sich daß alle Definitionen algorithmisch äquivalent sind d.h. eine Turingmaschinenvariante ann eine andere Turingmaschinenvariante simulieren. Allerdings ändert sich da-
20 5 Modelle der Berechenbareit bei u.u. die Zeitomplexität in der von der eweiligen Turingmaschinenvariante Sprachen erannt werden. Beispielsweise ann eine -D mit Zeitomplexität T (n durch eine -D mit Zeitomplexität ( T ( n O simuliert werden.. Random Access Maschinen Eine Random Access Maschine (RAM modelliert einen Algorithmus in Form eines sehr einfachen Computers der ein Programm ausführt das sich nicht selbst modifizieren ann und fest in einem Programmspeicher geladen ist. Das Konzept der RAM ist zunächst als Modell für die Berechnung partieller Funtionen f n m : Z Z gedacht die n-stellige Zahlenfolgen (ganzer Zahlen auf m-stellige Zahlenfolgen abbilden. Eine Turingmaschine dagegen ist zur Azeptanz von Sprachen L Σ bzw. zur Berechnung von partieller Funtionen f : Σ Σ onzipiert die Zeichenetten (Wörtern über einem endlichen Alphabet auf Zeichenetten über eventuell einem anderen Alphabet abbilden. Es wird sich edoch zeigen daß beide Modelle äquivalent sind. Beide Modelle sind in der Lage numerische Funtionen zu berechnen und als Sprachazeptoren eingesetzt zu werden. Während die Programmierung einer Turingmaschine in der Definition der Überführungsfuntion besteht eine Vorgehensweise die verglichen mit der gängigen Programmierung eines Computers zumindest gewöhnungsbedürftig ist entspricht die Programmierung einer RAM eher der Programmierung eines Computers auf Maschinensprachebene. Eine RAM hat folgende Bestandteile: Eingabeband: eine Folge von Zellen die als Eingabe n ganze (positive oder negative Zahlen x... x n enthalten und von einem Leseopf nur gelesen werden önnen. Nachdem eine Zahl ganze Zahl x i+ enthält. x i gelesen wurde rüct der Leseopf auf die benachbarte Zelle die die Ausgabeband: eine Folge von Zellen über die ein Schreibopf von lins nach rechts wandert der nacheinander ganze Zahlen y schreibt. Ist eine Zahl geschrieben ann sie nicht mehr verändert werden; der Schreibopf rüct auf das rechts benachbarte Feld. Speicher: eine unendliche Folge r r r... von Registern die eweils in der Lage sind eine beliebig große ganze Zahl aufzunehmen. Das Register r wird als Aumulator bezeichnet. In ihm finden alle arithmetische Operationen statt. Programm: eine Folge aufsteigend numerierter Anweisungen die fest in der RAM verdrahtet sind. Zur besseren Lesbareit eines RAM-Programms önnen einzelne Anweisungen auch mit symbolischen Maren versehen werden. Jede RAM stellt ein eigenes Programm dar das natürlich mit unterschiedlichen Eingaben onfrontiert werden ann.
21 . Random Access Maschinen 5 Das Programm ann sich nicht modifizieren. Ein Programm ist aus einfachen Befehlen aufgebaut (siehe unten. Die einzelnen Anweisungen werden nacheinander ausgeführt. Befehlszähler: enthält die Nummer der nächsten auszuführenden Anweisung. Um die Bedeutung des Befehlsvorrats einer RAM festzulegen wird die Speicherabbildungsfuntion c : N Z verwendet. c (i gibt zu edem Zeitpunt des Programmlaufs den Inhalt des Registers r i an. Zu Beginn des Programmlaufs wird edes Register mit dem Wert initialisiert d.h. es ist c ( i = für edes i N. Jeder Anweisung (Befehl ist aus einem Operationscode und einem Operanden aufgebaut. Ein Operand ann eine der folgenden Formen aufweisen:. i. c (i für i ; bei i < stoppt die RAM. c ( für i und c ( i ; bei i < oder i < stoppt die RAM.
22 5 Modelle der Berechenbareit Die RAM-Anweisungen und ihre Bedeutung sind folgender Tabelle zu entnehmen. Dabei steht i für eine natürliche Zahl und m für eine Anweisungsnummer bzw. für eine Anweisungsmare im Programm der RAM. LOAD i RAM-Anweisung c ( : = i LOAD c (i für i c ( : = i LOAD c ( für i und i c ( : = Bedeutung STORE c (i für i c ( i: = STORE c ( für i ADD i und i c ( : = c ( : = + i ADD c (i für i c ( : = + i ADD c ( für i SUB i und i c ( : = + : = i SUB c (i für i : = i SUB c ( für i MULT i und i : = c ( : = i MULT c (i für i c ( : = i MULT c ( für i DIV i für DIV c (i für und i c ( : = i c ( : = / i i ( : / i c = falls c ( i ist sonst stoppt die RAM DIV c ( für i und i READ c (i für i READ c ( für i und i c ( : = / falls c ( ist sonst stoppt die RAM c ( i: = momentaner Eingabewert und der Leseopf rüct eine Zelle nach rechts c ( : = momentaner Eingabewert und der Leseopf rüct eine Zelle nach rechts../..
23 . Random Access Maschinen 5 WRITE i WRITE (i c für WRITE c ( für i JUMP m JGTZ m JZERO m HALT i wird auf das Ausgabeband gedruct und der Schreibopf rüct um eine Zelle nach rechts i c (i wird auf das Ausgabeband gedruct und der Schreibopf und i rüct um eine Zelle nach rechts c ( wird auf das Ausgabeband gedruct und der Schreibopf rüct um eine Zelle nach rechts Der Befehlszähler wird mit der Nummer der Anweisung geladen die die Mare m trägt (nächste auszuführende Anweisung Der Befehlszähler wird mit der Nummer der Anweisung geladen die die Mare m trägt (nächste auszuführende Anweisung falls c ( > ist sonst wird der Inhalt des Befehlszählers um erhöht Der Befehlszähler wird mit der Nummer der Anweisung geladen die die Mare m trägt (nächste auszuführende Anweisung falls c ( = ist sonst wird der Inhalt des Befehlszählers um erhöht Die RAM stoppt Falls eine Anweisung nicht definiert ist z.b. STORE oder STORE c ( mit c ( = dann stoppt die RAM desgleichen bei einer Division durch. Die RAM RAM definiert bei Beschriftung der ersten n Zellen des Eingabebandes mit x... x n eine partielle Funtion f RAM n m : Z Z (die Funtion ist partiell da RAM nicht bei eder Eingabe stoppen muß: falls RAM bei Eingabe von x... x n stoppt nachdem y... die m ersten Zellen des Ausgabebands geschrieben wurde dann ist f RAM ( x... x ( y... y n = m. y m in Eine RAM zur Berechnung der Funtion f N : n n n N für für n = n Ein entsprechendes RAM-Programm lautet:
24 54 Modelle der Berechenbareit RAM-Anweisungsfolge Zeilennummer RAM-Befehl READ r : = n Eingabe 4 LOAD JGTZ pos WRITE 5 JUMP endif pos while continue LOAD STORE LOAD SUB STORE LOAD JGTZ continue JUMP endwhile LOAD MULT STORE LOAD SUB STORE Bemerung zur Bedeutung IF r THEN Write( r : = r r : = r WHILE r > DO r = r : r r : = r JUMP while endwhile WRITE Write ( r endif HALT Eine RAM ann auch als Azeptor einer Sprache interpretiert werden. Die Elemente des endlichen Alphabets Σ werden dazu mit den Zahlen... Σ identifiziert. Das RAM- Programm RAM azeptiert x n L Σ auf folgende Weise. In die ersten n Zellen des Eingabe- bandes werden Zahlen geschrieben die den Buchstaben x... x n eines Wortes w Σ w = x... entsprechenden. In die ( n + -te Zelle ommt als Endmarierung der Wert. RAM azeptiert w falls alle den Buchstaben von w entsprechenden Zahlen und die Endmarierung gelesen wurden von RAM eine auf das Ausgabeband geschrieben wurde und RAM stoppt dann ist w L. Falls w L ist dann stoppt RAM mit einer Ausgabe ungleich oder RAM stoppt nicht. Die auf diese Weise azeptierten Wörter aus L (RAM. Σ bilden die Menge
25 . Random Access Maschinen 55 Ein RAM-Programm P zur Azeptanz von { w { } und die Anzahl der 'en ist gleich der Anzahl der 'en } L( P = w P liest edes Eingabesymbol nach Register r (hier wird angenommen daß nur die Zahlen und auf dem Eingabeband stehen und berechnet in Register r die Differenz d der Anzahlen der bisher gelesenen en und en. Wenn beim Lesen der Endmarierung diese Differenz gleich ist wird eine auf das Ausgabeband geschrieben und P stoppt. RAM-Anweisungsfolge Zeilennummer RAM-Befehl while one endif endwhile output LOAD STORE READ LOAD JZERO endwhile LOAD SUB JZERO one LOAD SUB STORE JUMP endif LOAD ADD STORE READ JUMP while LOAD JZERO output HALT WRITE HALT d := Bemerung zur Bedeutung Read (x WHILE x DO IF x THEN d : = d ELSE d : = d + Read (x IF d = THEN Write (
26 56 Modelle der Berechenbareit Auch beim RAM-Modell interessieren Zeit- und Raumomplexität einer Berechnung. Mit Menge n n Z werde das n-fache artesische Produt von Z bezeichnet d.h. Z 4 Z... 4 Z n-mal Z aller endlichen Folgen ganzer Zahlen sei definiert durch U n Z = Z. n =. Die Ein RAM-Programm RAM lese die Eingabe x... x n und durchlaufe bis zum Erreichen der HALT-Anweisung m viele Anweisungen (einschließlich der HALT-Anweisung. Dann wird durch t ( x... x m eine partielle Funtion t Z RAM : N definiert. Falls RAM bei RAM n = Eingabe von x... n x nicht anhält dann ist t ( x... RAM x n nicht definiert. In diesem Modell werden zwei Kostenriterien unterschieden: Beim uniformen Kostenriterium benötigt die Ausführung eder Anweisung eine Zeiteinheit und edes Register belegt eine Platzeinheit. Die Zeitomplexität von RAM (im schlechtesten Fall worst case wird unter dem uniformen Kostenriterium definiert durch die partielle Funtion T : N N mit T RAM { t ( w w besteht aus bis zu vielen natürliche n Zahlen } ( n max n RAM = RAM. Entsprechend wird die Platzomplexität von RAM (im schlechtesten Fall worst case S RAM (n unter dem uniformen Kostenriterium als die während der Rechnung benötigte maximale Anzahl an Registern definiert wenn bis zu n viele Zahlen eingelesen werden. Ein Register bzw. eine Zelle des Eingabe- und Ausgabebandes ann im RAM-Modell eine beliebig große Zahl aufnehmen. Eine Berechnung mit n großen Zahlen ist unter dem uniformen Kostenriterium genauso omplex wie eine Berechnung mit n leinen Zahlen. Diese Sichtweise entspricht häufig nicht den pratischen Gegebenheiten. Dies gilt in der Praxis besonders dann wenn Speicherzellen eine beschränte Größe aufweisen so daß für die Handhabung großer Zahlen pro Zahl mehrere Speicherzellen erforderlich sind. Es erscheint daher sinnvoll die Größenordnung der bei einer Berechnung beteiligten Zahlen bzw. Operanden mit zu berücsichtigen. Dieses führt auf das logarithmische Kostenriterium das die Größen der bei einer Berechnung beteiligten Zahlen (gemessen in der Anzahl der Stellen zur Darstellung einer Zahl in einem geeigneten Stellenwertsystem berücsichtigt.
27 . Random Access Maschinen 57 Mit l(i werde die Länge einer ganzen Zahl i bezeichnet: logi + l( i = für i für i = Die Kosten eines Operanden einer RAM-Anweisung faßt folgende Tabelle zusammen. Operand Kosten i l(i i l ( i l ( i Beispielsweise erfordert die Ausführung einer Anweisung ADD folgende Einzelschritte:. Decodieren des Operanden i: Kosten l(i. Lesen von c (i : Kosten l(. Lesen von c ( : Kosten l( 4. Ausführung von ADD : Kosten l ( i. Die folgende Tabelle zeigt die Kosten unter dem logarithmischen Kostenriterium der Ausführung für ede RAM-Anweisung. LOAD i RAM-Anweisung Bedeutung Kosten der Ausführung c ( : = i l(i LOAD c (i für i c ( : = i l ( i LOAD c ( für i und i c ( : = l ( i STORE c (i für i c ( i: = l ( i STORE c ( für i ADD i und i c ( : = l ( i c ( : = + i l ( i ADD c (i für i c ( : = + i l ( i ADD c ( für i und i c ( : = + l ( i../..
28 58 Modelle der Berechenbareit SUB i : = i l ( i SUB c (i für i : = i l ( i SUB c ( für i MULT i und i : = l ( i c ( : = i l ( i MULT c (i für i c ( : = i l ( i MULT c ( für i DIV i für DIV c (i für und i i c : / i DIV c ( für i c ( : = l ( i i ( : / i und i READ c (i für i READ c ( für i und i ( = l ( i c = l ( i c ( : = / l ( i c ( i: = Eingabewert l ( Eingabewert i c ( : = Eingabewert l ( Eingabewert WRITE i Ausgabe von i l(i WRITE c (i für i Ausgabe von c (i l( WRITE c ( für i und i Ausgabe von c ( l( JUMP m Befehlszähler := m JGTZ m Befehlszähler := m l( falls c ( > ist JZERO m Befehlszähler := m falls c ( = ist HALT Die RAM stoppt l( Die Zeitosten eines RAM-Programms bei gegebenen Eingabewerten unter dem logarithmischen Kostenriterium ist gleich der Summe der Kosten der abzuarbeitenden Anweisungen. Entsprechend sind die Platzosten eines RAM-Programms bei gegebenen Eingabewerten unter dem logarithmischen Kostenriterium gleich dem Produt der während der Rechnung benötigte maximalen Anzahl an Registern und der Länge der längsten während der Abarbeitung abgespeicherten Zahl.
29 . Random Access Maschinen 59 Kosten des RAM-Programms zur Berechnung der Funtion N f : n n n N für für n = n uniformes Kostenriterium Logarithmisches Kostenriterium Zeitomplexität O (n O( n log( n Platzomplexität O ( O(log(n Kosten des RAM-Programm P zur Azeptanz von { w { } und die Anzahl der 'en ist gleich der Anzahl der 'en } L( P = w uniformes Kostenriterium Logarithmisches Kostenriterium Zeitomplexität O (n O( n log( n Platzomplexität O ( O(log(n Eine RAM RAM ann eine deterministische Turingmaschine mit Bändern (-D simulieren. Dazu wird ede Zelle von durch ein Register von RAM nachgebildet. Genauer: der Inhalt der i-ten Zelle des -ten Bandes von ann in Register r i + c + gespeichert werden. Hierbei wird angenommen daß die Symbole des Alphabets Σ von für RAM mit den Zahlen... Σ identifiziert werden so daß man davon sprechen ann daß ein Symbol aus Σ in einem Register oder einer Zelle des Eingabe- oder Ausgabebandes von RAM gespeichert werden ann. Der Wert c ist eine Konstante durch die die Register r... r c als zusätzliche Arbeitsregister für RAM reserviert werden. Unter diesen Arbeitsregistern werden Register etwa r... r dazu verwendet die eweilige Kopfposition von während der Simulation festzuhalten ( r enthält die Kopfposition des -ten Bandes. Um den Inhalt einer Zelle von in der Simulation zu lesen wird indirete Adressierung eingesetzt. Beispielsweise ann der Inhalt der simulierten Zelle über der sich gerade der Schreib/Leseopf des -ten Bandes befindet in den Aumulator durch die RAM-Anweisung LOAD geladen werden.
30 6 Modelle der Berechenbareit Satz.-: Hat die -D die Zeitomplexität T ( n n dann gibt es eine RAM RAM die die Eingabe von in die Register liest die das erste Band nachbilden und anschließend die T (n Schritte von simuliert. Dieser Vorgang verläuft unter uniformem Kostenriterium in ( T (n in O( T ( n log( T ( n O vielen Schritten unter logarithmischem Kostenriterium vielen Schritten. Umgeehrt gilt: Es sei L eine Sprache die von einem RAM-Programm der Zeitomplexität T RAM (n unter dem logarithmischen Kostenriterium azeptiert wird. Falls das RAM-Programm eine Multipliationen oder Divisionen verwendet dann wird L von einer -D (für ein geeignetes mit Zeitomplexität ( T ( n O RAM azeptiert. Falls das RAM-Programm Multipliationen oder Divisionen einsetzt werden diese Operationen eweils durch Unterprogramme simuliert in denen als arithmetische Operationen nur Additionen und Subtrationen verwendet werden. Es läßt sich zeigen daß diese Unterprogramme so entworfen werden önnen daß die logarithmischen Kosten zur Ausführung des eweiligen Unterprogramms höchstens das Quadrat der logarithmischen Kosten der Anweisung betragen die es nachbildet. Die folgende Übersicht zeigt (in Ergänzung mit den Aussagen aus Kapitel. die Anzahl der Schritte (Zeitomplexität die Maschinenvariante A benötigt um die Ausführung einer Rechnung zu simulieren der auf Maschinenvariante B bei einem azeptierten Eingabewort w der Länge n eine Schrittzahl (Anzahl der Überführungen bis zum Azeptieren von T (n benötigt. Dabei wird für das RAM-Modell das logarithmische Kostenriterium angenommen. simulierende Maschine A Simulierte Maschine B -D -D RAM O O( T ( nlog( T ( n O T ( n - O( T ( nlog( T ( n -D - ( T (n -D ( RAM O ( T ( n ( T ( n O -
31 . Programmiersprachen 6. Programmiersprachen In den meisten Anwendungen werden Algorithmen mit Hilfe der gängigen Programmiersprachen formuliert (siehe Kapitel.. Es zeigt sich (siehe angegebene Literatur daß man sehr einfache Programmiersprachen definieren ann so daß man mit in diesen Sprachen formulierten Algorithmen Turingmaschinen simulieren ann. Umgeehrt ann man mit Turingmaschinen das Verhalten dieser Algorithmen nachbilden. Da eine Turingmaschine einen unendlich großen Speicher besitzt muß man für Algorithmen in diesen Programmiersprachen unendlich viele Variablen zulassen bzw. voraussetzen daß die Algorithmen auf Rechnern ablaufen die einen unendlich großen Speicher besitzen. Dieses Prinzip wurde a auch im RAM- Modell verwirlicht. Eine Programmiersprache deren Programme die Turingberechenbareit nachzubilden in der Lage sind benötigt die Definition von: abzählbar vielen Variablen die Werte aus N annehmen önnen (ganzzahlige und rationale Werte werden durch natürlichzahlige Werte nachgebildet vgl. die Festpuntdarstellung von Zahlen reelle Werte durch natürlichzahlige Werte approximiert vgl. die Gleitpuntdarstellung von Zahlen elementaren Anweisungen wie Wertzuweisungen an Variablen einfachen arithmetischen Operationen (Addition Subtration Multipliation ganzzahlige Division zwischen Variablen und Konstanten zusammengesetzten Anweisungen (Sequenz anweisung ; anweisung ; Blocbildung (BEGIN anweisung ;...; anweisung n END bedingte Anweisungen (IF bedingung THEN anweisung ELSE anweisung ; hierbei ist bedingung ein Boolescher Ausdruc der ein logisches Prädiat mit Variablen darstellt Wiederholungsanweisungen (WHILE bedingung DO anweisung; einfachen Ein/Ausgabeanweisungen (READ (x WRITE (x. Auf eine formale Beschreibung dieses Ansatzes soll hier verzichtet werden. Auch bei der Formulierung eines Algorithmus mit Hilfe einer Programmiersprache ann man nach der Zeit- und Raumomplexität fragen. Dabei muß man wieder zwischen uniformen und logarithmischen Kostenriterium unterscheiden. Ein Programm PROG habe die Eingabe x [ x... ] = die sich aus n Parametern (Formalparameter bei der Spezifiation des Programms Atualparameter bei Aufruf des Programms zusammensetzt. Beispielsweise ann x ein Graph sein der n Knoten besitzt. PROG berechne eine Ausgabe y [ y... ] y m x n = die sich aus m Teilen zusammensetzt. Beispielsweise ann y
32 6 Modelle der Berechenbareit das Ergebnis der Berechnung einer Funtion f sein d.h. [ y... y ] f ( x... m = x n. Oder PROG soll entscheiden ob die Eingabe x eine spezifizierte Eigenschaft besitzt; dann ist. In der Regel wird die Zeit- und Raumomplexität von PROG in Abhän- y { TRUE FALSE} gigeit der Eingabe x [ x... ] = gemessen. x n Bei der Berechnung der uniformen Zeitomplexität von PROG bei Eingabe von x wird die Anzahl der durchlaufenen Anweisungen gezählt. Bei der Berechnung der uniformen Raumomplexität von PROG bei Eingabe von x wird die Anzahl der benötigten Variablen gezählt. Der Ansatz bietet sich immer dann an wenn die so ermittelten Werte der Zeit- und Raumomplexität nur von der Anzahl n der Komponenten der Eingabe x [ x... ] = abhängen. Diese Situation liegt beispielsweise vor wenn PROG die Aufgabe hat die Komponenten der Eingabe (nach einem einfachen Kriterium zu sortieren. Das folgende Beispiel zeigt edoch daß der Ansatz nicht immer adäquat ist. Die Pascal- Prozedur zweier_potenz berechnet bei Eingabe einer Zahl n > den Wert c = n. x n PROCEDURE zweier_potenz ( n : INTEGER; VAR c : INTEGER; VAR idx : INTEGER; p : INTEGER; BEGIN {zweier-potenz } idx := n; { Anweisung } p := ; { Anweisung } WHILE idx > DO { Anweisung } BEGIN p := pp; { Anweisung 4 } idx := idx - ; { Anweisung 5 } END; c := p - ; { Anweisung 6 } END { zweier-potenz }; Werden nur die Anzahl der ausgeführten Anweisungen gezählt so ergibt sich bei Eingabe der Zahl n > eine Zeitomplexität der Ordnung O (n und eine Raumomplexität der Ordnung O (. Das Ergebnis c = n belegt edoch n viele binäre Einsen und benötigt zu seiner n Erzeugung mindestens viele (elementare Schritte. Vergrößert man die Eingabe n um eine Konstante d.h. betrachtet man die Eingabe n + so bleibt die Laufzeit in der Ordnung O (n während das Ergebnis um den Fator größer wird.
33 .4 Universelle Turingmaschinen 6 Es bietet sich daher eine etwas sorgfältigere Definition der Zeit- und Raumomplexität an. Diese wird hier aufgezeigt wenn die Ein- und Ausgabe eines Programms aus numerischen Daten bzw. aus Daten besteht die als numerische Daten dargestellt werden önnen (beispielsweise die Datentypen BOOLEAN oder SET OF... in Pascal. Wenn die Zeit- und Raumomplexität nicht nur von der Anzahl n der Komponenten der Eingabe x [ x... ] = abhängt sondern wie im Beispiel der Prozedur zweier_potenz von den Zahlenwerten x n x x... n selbst wird folgender Ansatz gewählt. Für eine ganze Zahl z sei die Größe size ( z = bin( z die Anzahl signifianter Bits die benötigt werden um z im Binärsystem darzustellen. Für negative Werte von z wird die Komplementdarstellung gewählt. Dabei sei size ( =. Es gilt also und size( z O( log( z. Für x [ x... ] x n log size( z = ( z + = sei size x n max{ size( x... size( } ( =. x n für z für z = Der Wert size (x repräsentiert damit die Anzahl der Bits um die Zahlenwerte darzustellen die in x vorommen. Die logarithmische Zeitomplexität eines Programms PROG bei Eingabe von x ist die Anzahl der durchlaufenen Anweisungen gemessen in Abhängigeit von der so definierten Größe size (x. Bei der Berechnung der logarithmischen Raumomplexität von PROG bei Eingabe von x wird die Anzahl der Bits gezählt um alle von PROG benötigten Variablen abzuspeichern; dieser Wert wird in Abhängigeit von size (x genommen. In obiger Pascal-Prozedur zweier_potenz gilt für die Eingabe n die Beziehung = size ( n = c log( n ; die Prozedur hat eine Laufzeit der Ordnung log ( n c c log ( n ( O( O( = = O( n = O also exponentielle Laufzeit gemessen in der Größe der Eingabe. Seine Raumomplexität wird durch die Anzahl der Bits bestimmt um die Variable p zu speichern. Diese ist von der Ordnung O( O( n =. Insgesamt gibt das logarithmische Kostenriterium die Realität exat wieder..4 Universelle Turingmaschinen Jede Turingmaschine und eder in einer Programmiersprache formulierte Algorithmus ist zur Lösung eines spezifischen Problems entworfen. Dabei ist natürlich die Eingabe wechselnder Werte der Problemparameter möglich. Entsprechend önnte man in dieser Situation den Algorithmus hardwaremäßig implementieren und hätte dadurch einen Spezialrechner der in der Lage ist das spezifische Problem für das er entworfen ist zu lösen. Ein Computer wird
34 64 Modelle der Berechenbareit edoch üblicherweise anders eingesetzt: ein Algorithmus wird in Form eines in einer Programmiersprache formulierten Quelltextes einem Compiler (etwa innerhalb einer Entwiclungsumgebung vorgelegt. Das Programm wird im Computer in Maschinensprache übersetzt so daß er in der Lage ist das Programm zu interpretieren. Anschließend wird es von diesem Computer mit entsprechenden eingegebenen Problemparametern ausgeführt. Der Computer ist also in der Lage nicht nur einen speziellen Algorithmus zur Lösung eines spezifischen Problems sondern ede Art von Algorithmen auszuführen solange sie syntatisch orret formuliert sind.
35 .4 Universelle Turingmaschinen 65 Diese Art der Universalität ist auch im Turingmaschinen-Modell möglich. Im folgenden wird dazu eine universelle Turingmaschine U definiert. Diese erhält als Eingabe die Beschreibung einer Turingmaschine (ein Problemlösungsalgorithmus und einen Eingabedatensatz w für. Die universelle Turingmaschine verhält sich dann genauso wie sich bei Eingabe von w verhalten würde. Im folgenden wird zunächst gezeigt wie man die Beschreibung einer Turingmaschine aus ihrer formalen Definition erhält. Eine deterministische -Band-Turingmaschine ( Q Σ I δ b q q = ann als endliches Wort über { } odiert werden. Dazu wird angegeben wie eine mögliche Kodierung von aussehen ann (die hier vorgestellte Kodierung ist natürlich nur eine von vielen möglichen: Es sei # ein neues Zeichen das in Q Σ nicht vorommt. Das Zeichen # dient als syntatischen Begrenzungssymbol innerhalb der Kodierung. Die Zustandsmenge von sei Q { q.. q } ihr Arbeitsalphabet Σ = { a.. a } = Q Σ. Man ann annehmen daß der Startzustand q und der azeptierende Zustand q = q Q ist. Das Blanzeichen b ann mit a identifiziert werden. Die Anzahl der Zustände die Anzahl der Elemente in Σ und die Anzahl der Bänder werden in einem Wort { } ( Q # bin( Σ # bin( ## w = # bin. w festgehalten: # Hierbei bezeichnet wieder bin (n die Binärdarstellung von n. Die Überführungsfuntion δ habe d viele Zeilen. Die t- te Zeile laute: ( q a... a = ( q ( a d...( a d δ. i i i Es sind a i l Σ a m Σ und d i { L R S } w t = ( bin( i# bin( i #...# bin( i ( bin( # ( bin( # d #...#( bin( # d # odiert. Diese Zeichenette ist ein Wort über dem Alphabet { ( # L R S }. Zu beachten ist daß t. Diese Zeile wird zunächst als Zeichenette w sich öffnende und schließende Klammern enthält; der Ausdruc bin (i enthält eine Klammern sondern ist eine Zeichenette über { }. Die gesamte Turingmaschine läßt sich durch Konatination w d odieren: w d w der Wörter w w... = w w... w. Es ist w { ( # L R S }. Die 8 Buchstaben dieses Alphabets werden buchstabenweise gemäß der Tabelle
Random Access Machine (RAM) Berechenbarkeit und Komplexität Random Access Machines
Random Access Machine (RAM) Berechenbarkeit und Komplexität Random Access Machines Wolfgang Schreiner Wolfgang.Schreiner@risc.jku.at Research Institute for Symbolic Computation (RISC) Johannes Kepler University,
MehrEinführung in die Theoretische Informatik
Einführung in die Theoretische Informatik Johannes Köbler Institut für Informatik Humboldt-Universität zu Berlin WS 2011/12 Die Registermaschine (random access machine, RAM) 0 I 0 1 I 1 2 I 2 m I m Programm
MehrBerechenbarkeit. Script, Kapitel 2
Berechenbarkeit Script, Kapitel 2 Intuitiver Berechenbarkeitsbegriff Turing-Berechenbarkeit WHILE-Berechenbarkeit Church sche These Entscheidungsprobleme Unentscheidbarkeit des Halteproblems für Turingmaschinen
Mehr1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie
1 Einführung 2 Typ-0- und Typ-1-Sprachen 3 Berechnungsmodelle 4 Unentscheidbarkeit 5 Unentscheidbare Probleme 6 Komplexitätstheorie 15 Ziele vgl. AFS: Berechnungsmodelle für Typ-0- und Typ-1-Sprachen (Nicht-)Abschlußeigenschaften
Mehr1 Random Access Maschine
1 RANDOM ACCESS MASCHINE 1 1 Random Access Maschine Neue Hardware: Random Access Maschine = RAM. Der Name hat nichts mit Zufall zu tun, sondern mit wahlfreiem Zugriff. Die RAM besteht aus einem Eingabeband,
MehrRekursiv aufzählbare Sprachen
Kapitel 4 Rekursiv aufzählbare Sprachen 4.1 Grammatiken und die Chomsky-Hierarchie Durch Zulassung komplexer Ableitungsregeln können mit Grammatiken größere Klassen als die kontextfreien Sprachen beschrieben
MehrLOOP-Programme: Syntaktische Komponenten
LOOP-Programme: Syntaktische Komponenten LOOP-Programme bestehen aus folgenden Zeichen (syntaktischen Komponenten): Variablen: x 0 x 1 x 2... Konstanten: 0 1 2... Operationssymbole: + Trennsymbole: ; :=
MehrTuring-Maschine. Berechenbarkeit und Komplexität Turing-Maschinen. Turing-Maschine. Beispiel
Berechenbarkeit und Komplexität Turing-Maschinen Wolfgang Schreiner Wolfgang.Schreiner@risc.jku.at Research Institute for Symbolic Computation (RISC) Johannes Kepler University, Linz, Austria http://www.risc.jku.at
MehrAlgorithmen mit konstantem Platzbedarf: Die Klasse REG
Algorithmen mit konstantem Platzbedarf: Die Klasse REG Sommerakademie Rot an der Rot AG 1 Wieviel Platz brauchen Algorithmen wirklich? Daniel Alm Institut für Numerische Simulation Universität Bonn August
MehrGrundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 1. Automaten und Sprachen 1.1 Endlicher Automat Einen endlichen Automaten stellen wir uns als Black Box vor, die sich aufgrund einer Folge von
MehrTheoretische Informatik SS 04 Übung 1
Theoretische Informatik SS 04 Übung 1 Aufgabe 1 Es gibt verschiedene Möglichkeiten, eine natürliche Zahl n zu codieren. In der unären Codierung hat man nur ein Alphabet mit einem Zeichen - sagen wir die
MehrTheoretische Informatik SS 03 Übung 3
Theoretische Informatik SS 03 Übung 3 Aufgabe 1 a) Sind die folgenden Funktionen f : partiell oder total: f(x, y) = x + y f(x, y) = x y f(x, y) = x y f(x, y) = x DIV y? Hierbei ist x DIV y = x y der ganzzahlige
Mehr2.4 Kontextsensitive und Typ 0-Sprachen
Definition 2.43 Eine Typ 1 Grammatik ist in Kuroda Normalform, falls alle Regeln eine der folgenden 4 Formen haben: Dabei: A, B, C, D V und a Σ. Satz 2.44 A a, A B, A BC, AB CD. Für jede Typ 1 Grammatik
MehrJavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
Mehr8. Turingmaschinen und kontextsensitive Sprachen
8. Turingmaschinen und kontextsensitive Sprachen Turingmaschinen (TM) von A. Turing vorgeschlagen, um den Begriff der Berechenbarkeit formal zu präzisieren. Intuitiv: statt des Stacks bei Kellerautomaten
MehrTuring-Maschinen. Definition 1. Eine deterministische Turing-Maschine (kurz DTM) ist ein 6- Dem endlichen Alphabet Σ von Eingabesymbolen.
Turing-Maschinen Nachdem wir endliche Automaten und (die mächtigeren) Kellerautomaten kennengelernt haben, werden wir nun ein letztes, noch mächtigeres Automatenmodell kennenlernen: Die Turing-Maschine
MehrAlgorithmen und Programmierung
Algorithmen und Programmierung Kapitel 5 Formale Algorithmenmodelle A&P (WS 14/15): 05 Formale Algorithmenmodelle 1 Überblick Motivation Formale Algorithmenmodelle Registermaschine Abstrakte Maschinen
MehrEinführung in die Programmierung
Prof. Dr. Rudolf Berrendorf Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg URM - Programmierung Dipl.-Inf. Sigrid Weil Fachbereich Informatik Fachhochschule Bonn-Rhein-Sieg Einordnung Programmier-Paradigma:
MehrTheoretische Informatik 1
Theoretische Informatik 1 Registermaschine David Kappel Institut für Grundlagen der Informationsverarbeitung TU Graz SS 2012 Übersicht Registermaschinen Algorithmusbegriff konkretisiert formale Beschreibung
MehrTheoretische Informatik 1
heoretische Informatik 1 eil 2 Bernhard Nessler Institut für Grundlagen der Informationsverabeitung U Graz SS 2009 Übersicht 1 uring Maschinen uring-berechenbarkeit 2 Kostenmaße Komplexität 3 Mehrband-M
MehrKapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
MehrGrundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben
Dieses Dokument soll mehr dazu dienen, Beispiele für die formal korrekt mathematische Bearbeitung von Aufgaben zu liefern, als konkrete Hinweise auf typische Klausuraufgaben zu liefern. Die hier gezeigten
MehrEine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder
Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element
MehrSyntax von LOOP-Programmen
LOOP-Berechenbarkeit Syntax von LOOP-Programmen Definition LOOP-Programme bestehen aus: Variablen: x 0, x 1, x 2, x 3,... Konstanten: 0, 1, 2, 3,... Trennsymbolen:; und := Operationen: + und Befehlen:
Mehr11. Woche: Turingmaschinen und Komplexität Rekursive Aufzählbarkeit, Entscheidbarkeit Laufzeit, Klassen DTIME und P
11 Woche: Turingmaschinen und Komplexität Rekursive Aufzählbarkeit, Entscheidbarkeit Laufzeit, Klassen DTIME und P 11 Woche: Turingmaschinen, Entscheidbarkeit, P 239/ 333 Einführung in die NP-Vollständigkeitstheorie
MehrMächtigkeit von WHILE-Programmen
Mächtigkeit von WHILE-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 26. November 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit
MehrKapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
MehrTheoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Turing-Maschine, Berechenbarkeit INSTITUT FÜR THEORETISCHE 0 KIT 07.11.2011 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen
MehrTheoretische Informatik SS 03 Übung 4
Fakten aus Übung 3 Theoretische Informatik SS 03 Übung 4 In Übung 3 wurden einigen Fakten bewiesen, die für diese Übung benötigt werden. Folgende Konstrukte können mit LOOP-Programmen simuliert werden:
MehrEinführung in Berechenbarkeit, Komplexität und formale Sprachen
Johannes Blömer Skript zur Vorlesung Einführung in Berechenbarkeit, Komplexität und formale Sprachen Universität Paderborn Wintersemester 2011/12 Inhaltsverzeichnis 1 Einleitung 2 1.1 Ziele der Vorlesung...................................
Mehr1 Potenzen und Polynome
1 Potenzen und Polynome Für eine reelle Zahl x R und eine natürliche Zahl n N definieren wir x n := x x x... x }{{} n-mal Einschub über die bisher aufgetretenen mathematischen Symbole: Definition mittels
MehrFormale Sprachen. Spezialgebiet für Komplexe Systeme. Yimin Ge. 5ahdvn. 1 Grundlagen 1. 2 Formale Grammatiken 4. 3 Endliche Automaten 5.
Formale Sprachen Spezialgebiet für Komplexe Systeme Yimin Ge 5ahdvn Inhaltsverzeichnis 1 Grundlagen 1 2 Formale Grammatien 4 Endliche Automaten 5 4 Reguläre Sprachen 9 5 Anwendungen bei Abzählproblemen
Mehr7 Endliche Automaten. 7.1 Deterministische endliche Automaten
7 Endliche Automaten 7.1 Deterministische endliche Automaten 7.2 Nichtdeterministische endliche Automaten 7.3 Endliche Automaten mit g-übergängen Endliche Automaten 1 7.1 Deterministische endliche Automaten
MehrTheoretische Informatik. Grammatiken. Grammatiken. Grammatiken. Rainer Schrader. 9. Juli 2009
Theoretische Informatik Rainer Schrader Institut für Informatik 9. Juli 2009 1 / 41 2 / 41 Gliederung die Chomsky-Hierarchie Typ 0- Typ 3- Typ 1- Die Programmierung eines Rechners in einer höheren Programmiersprache
MehrEinführung in die Informatik
Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle 24. November 28 Einführung in die Informatik Übung 7 Allgemeines Für die Abgabe der
MehrAlgorithmen und Datenstrukturen 1 Kapitel 4.1
Algorithmen und Datenstrukturen 1 Kapitel 4.1 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2005/2006 Kapitel 4: Maschinenmodelle [Dieses Kapitel hält sich eng an
Mehr2 ZAHLEN UND VARIABLE
Zahlen und Variable 2 ZAHLEN UND VARIABLE 2.1 Grundlagen der Mengenlehre Unter einer Menge versteht man die Zusammenfassung von unterscheidbaren Objekten zu einem Ganzen. Diese Objekte bezeichnet man als
Mehr2 Darstellung von Zahlen und Zeichen
2.1 Analoge und digitale Darstellung von Werten 79 2 Darstellung von Zahlen und Zeichen Computer- bzw. Prozessorsysteme führen Transformationen durch, die Eingaben X auf Ausgaben Y abbilden, d.h. Y = f
MehrEntwurf von Algorithmen - Kontrollstrukturen
Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer
MehrTheoretische Informatik 1
heoretische Informatik 1 uringmaschinen David Kappel Institut für Grundlagen der Informationsverarbeitung echnische Universität Graz 11.03.2016 Übersicht uring Maschinen Algorithmusbegriff konkretisiert
MehrProgrammieren I. Kapitel 5. Kontrollfluss
Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,
MehrKapitel 3: Variablen
Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber
MehrKapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14
Kapitel: Die Chomsky Hierarchie Die Chomsky Hierarchie 1 / 14 Allgemeine Grammatiken Definition Eine Grammatik G = (Σ, V, S, P) besteht aus: einem endlichen Alphabet Σ, einer endlichen Menge V von Variablen
MehrKostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)
Kostenmodell Daniel Graf, Tobias Pröger 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016) Erklärung: Diese Mitschrift ist als Ergänzung zur Vorlesung gedacht. Wir erheben keinen Anspruch
MehrLösungen zur 3. Projektaufgabe TheGI1
Marco Kunze (makunze@cs.tu-berlin.de) WS 2001/2002 Sebastian Nowozin (nowozin@cs.tu-berlin.de) 21. 1. 2002 Lösungen zur 3. Projektaufgabe TheGI1 Definition: Turing-Aufzähler Ein Turing-Aufzähler einer
MehrDeterministische endliche Automaten - Wiederholung
Deterministische endliche Automaten - Wiederholung Die folgende Klasse Zahl stellt einen endlichen Automaten dar. Ermittle die Größen des Automaten und zeichne den Zustandsgraphen. Gib Zeichenfolgen an,
MehrBerechenbarkeit und Komplexität: Rekursive Aufzählbarkeit und die Technik der Reduktion
Berechenbarkeit und Komplexität: Rekursive Aufzählbarkeit und die Technik der Reduktion Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität 26. November 2007 Semi-Entscheidbarkeit
MehrEinführung in die Theoretische Informatik
Einführung in die Theoretische Informatik Johannes Köbler Institut für Informatik Humboldt-Universität zu Berlin WS 2011/12 Deterministische Kellerautomaten Von besonderem Interesse sind kontextfreie Sprachen,
Mehr11.1 Kontextsensitive und allgemeine Grammatiken
Theorie der Informatik 7. April 2014 11. Kontextsensitive und Typ-0-Sprachen Theorie der Informatik 11. Kontextsensitive und Typ-0-Sprachen 11.1 Kontextsensitive und allgemeine Grammatiken Malte Helmert
MehrFormale Methoden 1. Gerhard Jäger 9. Januar Uni Bielefeld, WS 2007/2008 1/23
1/23 Formale Methoden 1 Gerhard Jäger Gerhard.Jaeger@uni-bielefeld.de Uni Bielefeld, WS 2007/2008 9. Januar 2008 2/23 Automaten (informell) gedachte Maschine/abstraktes Modell einer Maschine verhält sich
MehrEinführung in die Programmierung mit VBA
Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen
Mehr7 Endliche Automaten. Reimund Albers Papierfalten Kapitel 7 Endliche Automaten 103
Reimund Albers Papierfalten Kapitel 7 Endliche Automaten 103 7 Endliche Automaten Ein erstes Beispiel Ganz im Sinn der vorangegangenen Kapitel machen wir wieder Anleihen in einem wohl etablierten Gebiet.
MehrBrainfuck Interpreter für ZX81
Brainfuck Interpreter für ZX81 Sprache Befehle Die Programmiersprache Brainfuck hat wenige, einfache Regeln. Es gibt 8 Befehle + - > < [ ],. Jeder Befehl besteht aus einem einzelnen Zeichen. Es gibt keine
Mehr3AA. Prof. Dr. Wolfgang P. Kowalk. Universität Oldenburg WS 2005/2006
3AA Prof. Dr. Wolfgang P. Kowalk Universität Oldenburg WS 2005/2006 Version vom 24.10.2005 Übersicht Einführung in maschinennahe Programmierung Verständnis für grundlegende Vorgänge im Computer Jedes Programm
MehrInformatik II. Registermaschinen. Registermaschinen. Registermaschinen. Rainer Schrader. 7. Dezember 2005
Informatik II Rainer Schrader Zentrum für Angewandte Informatik Köln 7. Dezember 25 / 82 2 / 82 Gliederung Aufbau und Eigenschaften universelle RAM s RAM-Berechenbarkeit Nichtentscheidbarkeit Reduzierbarkeit
Mehr1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit
Die Programmiersprache LOOP (i) Syntaktische Komponenten: Variable: x 0, x 1, x 2,... Konstanten: 0, 1, 2,... Trennsymbole: ; := Operationszeichen: + Schlüsselwörter: LOOP DO END (ii) LOOP-Programme: Wertzuweisungen:
MehrBeispiele für Turingmaschinen. 1. Addition 1.1 Trennzeichen l öschen 1.2 Summanden kopieren
01 Beispiele für Turingmaschinen 1. Addition 1.1 Trennzeichen l öschen 1.2 Summanden kopieren 2. Subtraktion 2.1 rechts löschen 2.2 links löschen 2.3 in der Mitte löschen 2.4 am Rand löschen Eine Turingmaschine
MehrTheoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Rolf Socher ISBN 3-446-22987-6 Leseprobe Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-22987-6 sowie im Buchhandel Einführung.. 13 2 Endliche
MehrTheorie der Informatik
Theorie der Informatik 13. LOOP-, WHILE- und GOTO-Berechenbarkeit Malte Helmert Gabriele Röger Universität Basel 9. April 2014 Überblick: Vorlesung Vorlesungsteile I. Logik II. Automatentheorie und formale
MehrKapitel 2: Analyse der Laufzeit von Algorithmen Gliederung
Gliederung 1. Motivation / Einordnung / Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 5. Kontrollstrukturen Allgemein Kontrollstrukturen dienen zur Steuerung des Programmablaufs. (Bemerkung: C und C++ besitzen die selben Kontrollstrukturen.)
MehrKapitel 3: Reguläre Grammatiken und Endliche. Automaten
Kapitel 3: Reguläre Grammatiken und Endliche Automaten Prof.-Dr. Peter Brezany Institut für Softwarewissenschaft Universität Wien, Liechtensteinstraße 22 090 Wien Tel. : 0/4277 38825 E-mail : brezany@par.univie.ac.at
Mehr1 Modulare Arithmetik
$Id: modul.tex,v 1.10 2012/04/12 12:24:19 hk Exp $ 1 Modulare Arithmetik 1.2 Euklidischer Algorithmus Am Ende der letzten Sitzung hatten wir den größten gemeinsamen Teiler zweier ganzer Zahlen a und b
MehrKlausuraufgaben. 1. Wir betrachten die folgende Sprache über dem Alphabet {a, b}
Klausuraufgaben 1. Wir betrachten die folgende Sprache über dem Alphabet {a, b} L = {a n b m n > 0, m > 0, n m} a) Ist L kontextfrei? Wenn ja, geben Sie eine kontextfreie Grammatik für L an. Wenn nein,
MehrInformatik I WS 07/08 Tutorium 24
Info I Tutorium 24 Informatik I WS 07/08 Tutorium 24 31.01.08 Bastian Molkenthin E-Mail: infotut@sunshine2k.de Web: http://infotut.sunshine2k.de Organisatorisches Anmeldung Hauptklausur : allerspätestens
Mehr2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16
2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 14. Okt. 2015 Computeraufbau: nur ein Überblick Genauer: Modul Digitale Systeme (2. Semester) Jetzt: Grundverständnis
MehrModul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2
Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016
MehrGrundlagen der Informatik I (Studiengang Medieninformatik)
Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: skuehn@informatik.htw-dresden.de
MehrJava 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8
Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen
Mehrkontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung
Theoretische Informatik Rainer Schrader Zentrum für Angewandte Informatik Köln 14. Juli 2009 1 / 40 2 / 40 Beispiele: Aus den bisher gemachten Überlegungen ergibt sich: aus der Chomsky-Hierarchie bleiben
MehrS. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"
S. d. I.: Programieren in C Folie 4-1 4 Anweisungen 4.1 if-anweisung 1) if (Ausdruck) 2) if (Ausdruck) } else im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then" es wird nur der numerische Wert
MehrRekursive Funktionen Basisfunktionen
Rekursive Funktionen Basisfunktionen die nullstellige Funktion Z, die den konstanten Wert 0 liefert, die Funktion S : N N, bei der jeder natürlichen Zahl ihr Nachfolger zugeordnet wird, die Funktion P
MehrPrimitive Datentypen und Felder (Arrays)
Primitive Datentypen und Felder (rrays) Primitive Datentypen Java stellt (genau wie Haskell) primitive Datentypen für Boolesche Werte, Zeichen, ganze Zahlen und Gleitkommazahlen zur Verfügung. Der wichtigste
Mehr4 Die Turing-Maschine
16 4 Die Turing-Maschine 4.1 Wörter und Gödelisierung Ein Alphabet ist eine endliche Menge verschiedener Objekte {a 1, a 2,..., a k }, die wir auch Buchstaben nennen. Dies können die uns bekannten Buchstaben
MehrEinführung in die Informatik Algorithms
Einführung in die Informatik Algorithms Vom Problem zum Algorithmus und zum Programm Wolfram Burgard Cyrill Stachniss 1.1 Motivation und Einleitung In der Informatik sucht man im Normalfall nach Verfahren
MehrFormale Sprachen und Automaten
Formale Sprachen und Automaten Kapitel 1: Grundlagen Vorlesung an der DHBW Karlsruhe Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2012 Ziel Einführung der wichtigsten
Mehr3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1
3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)
MehrKapitel 4 Schaltungen mit Delays (Schaltwerke) Literatur: Oberschelp/Vossen, Kapitel 4. Kapitel 4: Schaltungen mit Delays Seite 1
Kapitel 4 Schaltungen mit Delays (Schaltwerke) Literatur: Oberschelp/Vossen, Kapitel 4 Kapitel 4: Schaltungen mit Delays Seite 1 Schaltungen mit Delays Inhaltsverzeichnis 4.1 Einführung 4.2 Addierwerke
MehrUniversität des Saarlandes
Universität des Saarlandes FR 6.2 Informatik Prof. Dr. Kurt Mehlhorn, Dr. Konstantinos Panagiotou WiSe 2011/2012 Übungen zu Computational Thinking http://www.mpi-inf.mpg.de/departments/d1/teaching/ws11/ct/
MehrGTI. Hannes Diener. 6. Juni - 13. Juni. ENC B-0123, diener@math.uni-siegen.de
GTI Hannes Diener ENC B-0123, diener@math.uni-siegen.de 6. Juni - 13. Juni 1 / 49 Die Turingmaschine war das erste (bzw. zweite) formale Modell der Berechenbarkeit. Sie wurden bereits 1936 (also lange
MehrAlgorithmen & Programmierung. Rekursive Funktionen (1)
Algorithmen & Programmierung Rekursive Funktionen (1) Berechnung der Fakultät Fakultät Die Fakultät N! einer nichtnegativen ganzen Zahl N kann folgendermaßen definiert werden: d.h. zur Berechnung werden
MehrLehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup
Universität Dortmund Lehrstuhl Informatik VI Grundzüge der Informatik * WS 28/29 Prof. Dr. Joachim Biskup Leitung der Übungen: Arno Pasternak Lösungs-Ideen Übungsblatt 6 A: Grammatiken, Syntaxdiagramme
MehrDatentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache
Agenda für heute, 4. März, 2010 Zusammengesetzte if-then-else-anweisungen Datentypen Pascal ist eine streng typisierte Programmiersprache Für jeden Speicherplatz muss ein Datentyp t (Datenformat) t) definiert
MehrII. Grundlagen der Programmierung
II. Grundlagen der Programmierung II.1. Zahlenssteme und elementare Logik 1.1. Zahlenssteme 1.1.1. Ganze Zahlen Ganze Zahlen werden im Dezimalsstem als Folge von Ziffern 0, 1,..., 9 dargestellt, z.b. 123
MehrZahlen und elementares Rechnen
und elementares Rechnen Christian Serpé Universität Münster 7. September 2011 Christian Serpé (Universität Münster) und elementares Rechnen 7. September 2011 1 / 51 Gliederung 1 2 Elementares Rechnen 3
MehrAlgorithmen & Programmierung. Ausdrücke & Operatoren (1)
Algorithmen & Programmierung Ausdrücke & Operatoren (1) Ausdrücke Was ist ein Ausdruck? Literal Variable Funktionsaufruf Ausdruck, der durch Anwendung eines einstelligen (unären) Operators auf einen Ausdruck
MehrWelche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
MehrGrundlagen der Informatik I. Übung
Grundlagen der Informatik I Übung Studiengang Wirtschaftsingenieurwesen Wintersemester 1/13 Autor: Prof. Dr.-Ing. habil. Hans-Joachim Böhme HTW Dresden, Fachbereich Informatik/Mathematik Friedrich-List-Platz
MehrLösungsvorschlag zu 1. Übung
Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zu 1. Übung 1 Präsenzübungen 1.1 Schnelltest a) Welche der Aussagen treffen auf jeden
MehrAbgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 2 Prof. Dr. Helmut Seidl, S. Pott,
MehrReguläre Sprachen und endliche Automaten
Reguläre Sprachen und endliche Automaten 1 Motivation: Syntaxüberprüfung Definition: Fließkommazahlen in Java A floating-point literal has the following parts: a whole-number part, a decimal point (represented
MehrT (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n)
Beim Logarithmischen Kostenmaß wird, im Gegensatz zum EKM, die Stelligkeit der Werte berücksichtigt und mit in die Laufzeit eingerechnet. Beispiel: R1 := R2 (R3), wobei R2 den Wert 5, R3 den Wert 10 und
MehrAlgorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration
Algorithmen & Programmierung Steuerstrukturen im Detail Selektion und Iteration Selektion Selektion Vollständige einfache Selektion Wir kennen schon eine Möglichkeit, Selektionen in C zu formulieren: if
MehrTutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2
Prof. aa Dr. J. Giesl Programmierung WS16/17 F. Frohn, J. Hensel, D. Korzeniewski Tutoraufgabe 1 (Zweierkomplement): a) Sei x eine ganze Zahl. Wie unterscheiden sich die Zweierkomplement-Darstellungen
MehrAlgorithmen zur Division
Algorithmen zur Division Umkehrung der Multiplikation: Berechnung von q = a / b durch wiederholte bedingte Subtraktionen und Schiebeoperationen in jedem Schritt wird Divisor b testweise vom aktuellen Rest
MehrD A T E N... 1 Daten Micheuz Peter
D A T E N.....! Symbole, Alphabete, Codierung! Universalität binärcodierter Daten! Elementare Datentypen! Speicherung binärcodierter Daten! Befehle und Programme! Form und Bedeutung 1 Daten Micheuz Peter
MehrAchtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass
Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass f O g und auch g O f. Wähle zum Beispiel und G. Zachmann Informatik
MehrGrundlagen der Theoretischen Informatik
Grundlagen der Theoretischen Informatik Sommersemester 2015 23.04.2015 Viorica Sofronie-Stokkermans e-mail: sofronie@uni-koblenz.de 1 Bis jetzt 1. Terminologie 2. Endliche Automaten und reguläre Sprachen
MehrTheoretische Informatik: Berechenbarkeit und Formale Sprachen
Prof. Dr. F. Otto 26.09.2011 Fachbereich Elektrotechnik/Informatik Universität Kassel Klausur zur Vorlesung Theoretische Informatik: Berechenbarkeit und Formale Sprachen SS 2011 Name:................................
MehrEs gibt drei unterschiedliche Automaten:
Automatentheorie Es gibt drei unterschiedliche Automaten: 1. Deterministische Endliche Automaten (DEA) 2. Nichtdeterministische Endliche Automaten (NEA) 3. Endliche Automaten mit Epsilon-Übergängen (ε-
Mehr