erreicht wird, hält die Turingmaschine an, da δ für q = qaccept

Größe: px
Ab Seite anzeigen:

Download "erreicht wird, hält die Turingmaschine an, da δ für q = qaccept"

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 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,

Mehr

Einführung in die Theoretische Informatik

Einfü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

Mehr

Berechenbarkeit. Script, Kapitel 2

Berechenbarkeit. Script, Kapitel 2 Berechenbarkeit Script, Kapitel 2 Intuitiver Berechenbarkeitsbegriff Turing-Berechenbarkeit WHILE-Berechenbarkeit Church sche These Entscheidungsprobleme Unentscheidbarkeit des Halteproblems für Turingmaschinen

Mehr

1 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 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

Mehr

1 Random Access Maschine

1 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,

Mehr

Rekursiv aufzählbare Sprachen

Rekursiv 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

Mehr

LOOP-Programme: Syntaktische Komponenten

LOOP-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: ; :=

Mehr

Turing-Maschine. Berechenbarkeit und Komplexität Turing-Maschinen. Turing-Maschine. Beispiel

Turing-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

Mehr

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Algorithmen 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

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen 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

Mehr

Theoretische Informatik SS 04 Übung 1

Theoretische 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

Mehr

Theoretische Informatik SS 03 Übung 3

Theoretische 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

Mehr

2.4 Kontextsensitive und Typ 0-Sprachen

2.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

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. 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

Mehr

8. Turingmaschinen und kontextsensitive Sprachen

8. 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

Mehr

Turing-Maschinen. Definition 1. Eine deterministische Turing-Maschine (kurz DTM) ist ein 6- Dem endlichen Alphabet Σ von Eingabesymbolen.

Turing-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

Mehr

Algorithmen und Programmierung

Algorithmen 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

Mehr

Einführung in die Programmierung

Einfü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:

Mehr

Theoretische Informatik 1

Theoretische Informatik 1 Theoretische Informatik 1 Registermaschine David Kappel Institut für Grundlagen der Informationsverarbeitung TU Graz SS 2012 Übersicht Registermaschinen Algorithmusbegriff konkretisiert formale Beschreibung

Mehr

Theoretische Informatik 1

Theoretische 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

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 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:

Mehr

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

Grundlagen 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

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine 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

Mehr

Syntax von LOOP-Programmen

Syntax 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:

Mehr

11. 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 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

Mehr

Mächtigkeit von WHILE-Programmen

Mä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

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 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:

Mehr

Theoretische Grundlagen der Informatik

Theoretische 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

Mehr

Theoretische Informatik SS 03 Übung 4

Theoretische 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:

Mehr

Einführung in Berechenbarkeit, Komplexität und formale Sprachen

Einfü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...................................

Mehr

1 Potenzen und Polynome

1 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

Mehr

Formale 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. 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

Mehr

7 Endliche Automaten. 7.1 Deterministische endliche Automaten

7 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

Mehr

Theoretische Informatik. Grammatiken. Grammatiken. Grammatiken. Rainer Schrader. 9. Juli 2009

Theoretische 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

Mehr

Einführung in die Informatik

Einfü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

Mehr

Algorithmen und Datenstrukturen 1 Kapitel 4.1

Algorithmen 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

Mehr

2 ZAHLEN UND VARIABLE

2 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

Mehr

2 Darstellung von Zahlen und Zeichen

2 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

Mehr

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf 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

Mehr

Theoretische Informatik 1

Theoretische 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

Mehr

Programmieren I. Kapitel 5. Kontrollfluss

Programmieren 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,

Mehr

Kapitel 3: Variablen

Kapitel 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

Mehr

Kapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14

Kapitel: 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

Mehr

Kostenmodell. 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) 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

Mehr

Lösungen zur 3. Projektaufgabe TheGI1

Lö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

Mehr

Deterministische endliche Automaten - Wiederholung

Deterministische 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,

Mehr

Berechenbarkeit und Komplexität: Rekursive Aufzählbarkeit und die Technik der Reduktion

Berechenbarkeit 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

Mehr

Einführung in die Theoretische Informatik

Einfü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,

Mehr

11.1 Kontextsensitive und allgemeine Grammatiken

11.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

Mehr

Formale Methoden 1. Gerhard Jäger 9. Januar Uni Bielefeld, WS 2007/2008 1/23

Formale 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

Mehr

Einführung in die Programmierung mit VBA

Einfü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

Mehr

7 Endliche Automaten. Reimund Albers Papierfalten Kapitel 7 Endliche Automaten 103

7 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.

Mehr

Brainfuck Interpreter für ZX81

Brainfuck 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

Mehr

3AA. Prof. Dr. Wolfgang P. Kowalk. Universität Oldenburg WS 2005/2006

3AA. 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

Mehr

Informatik II. Registermaschinen. Registermaschinen. Registermaschinen. Rainer Schrader. 7. Dezember 2005

Informatik 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

Mehr

1.2 LOOP-, WHILE- und GOTO-Berechenbarkeit

1.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:

Mehr

Beispiele für Turingmaschinen. 1. Addition 1.1 Trennzeichen l öschen 1.2 Summanden kopieren

Beispiele 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

Mehr

Theoretische Grundlagen der Informatik

Theoretische 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

Mehr

Theorie der Informatik

Theorie 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

Mehr

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Kapitel 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

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 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.)

Mehr

Kapitel 3: Reguläre Grammatiken und Endliche. Automaten

Kapitel 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

Mehr

1 Modulare Arithmetik

1 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

Mehr

Klausuraufgaben. 1. Wir betrachten die folgende Sprache über dem Alphabet {a, b}

Klausuraufgaben. 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,

Mehr

Informatik I WS 07/08 Tutorium 24

Informatik 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

Mehr

2. 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 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

Mehr

Modul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2

Modul 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

Mehr

Grundlagen der Informatik I (Studiengang Medieninformatik)

Grundlagen 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

Mehr

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Java 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

Mehr

kontextfreie Grammatiken Theoretische Informatik kontextfreie Grammatiken kontextfreie Grammatiken Rainer Schrader 14. Juli 2009 Gliederung

kontextfreie 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

Mehr

S. 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. 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

Mehr

Rekursive Funktionen Basisfunktionen

Rekursive 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

Mehr

Primitive Datentypen und Felder (Arrays)

Primitive 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

Mehr

4 Die Turing-Maschine

4 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

Mehr

Einführung in die Informatik Algorithms

Einfü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

Mehr

Formale Sprachen und Automaten

Formale 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

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.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)

Mehr

Kapitel 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 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

Mehr

Universität des Saarlandes

Universitä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/

Mehr

GTI. Hannes Diener. 6. Juni - 13. Juni. ENC B-0123, diener@math.uni-siegen.de

GTI. 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

Mehr

Algorithmen & Programmierung. Rekursive Funktionen (1)

Algorithmen & 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

Mehr

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

Lehrstuhl 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

Mehr

Datentypen. Agenda für heute, 4. März, 2010. Pascal ist eine streng typisierte Programmiersprache

Datentypen. 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

Mehr

II. Grundlagen der Programmierung

II. 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

Mehr

Zahlen und elementares Rechnen

Zahlen 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

Mehr

Algorithmen & Programmierung. Ausdrücke & Operatoren (1)

Algorithmen & 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

Mehr

Welche Informatik-Kenntnisse bringen Sie mit?

Welche 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

Mehr

Grundlagen der Informatik I. Übung

Grundlagen 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

Mehr

Lösungsvorschlag zu 1. Übung

Lö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

Mehr

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Abgabe: (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,

Mehr

Reguläre Sprachen und endliche Automaten

Regulä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

Mehr

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n)

T (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

Mehr

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

Algorithmen & 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

Mehr

Tutoraufgabe 1 (Zweierkomplement): Lösung: Programmierung WS16/17 Lösung - Übung 2

Tutoraufgabe 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

Mehr

Algorithmen zur Division

Algorithmen 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

Mehr

D A T E N... 1 Daten Micheuz Peter

D 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

Mehr

Achtung: 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 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

Mehr

Grundlagen der Theoretischen Informatik

Grundlagen 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

Mehr

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Theoretische 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:................................

Mehr

Es gibt drei unterschiedliche Automaten:

Es 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