Abzählbare Sprachen

Werbung
Sprachen und Programmiersprachen
• Natürliche Sprachen versus Programmiersprachen /
Spezifikationssprachen
• Syntax legt die grammatikalische Korrektheit fest.
• Semantik legt die Bedeutung von syntaktisch korrekten
Wörtern/Sätzen fest.
• Natürliche Sprachen sind in der Regel mehrdeutig:
• „Öffne die Datei mit dem Editor“
• Der Satzteil „mit dem Editor“ kann hier als Attribut des Objekts „Datei“
oder als adverbiale Bestimmung des Verbs „Öffne“ verstanden
werden.
• Formale Sprachen sind dadurch gekennzeichnet, dass Syntax und
Semantik eindeutig sind (und damit einer automatische Verarbeitung
zugänglich sind). Der Trick dabei ist in der Regel ein geringer
Sprachumfang (wenig Syntaxregeln).
DigInf 05/06
1
Übersicht über die Entwicklung von
Programmiersprachen
Zeit
Objektorientierte Sprachen
Bspe: C++, Smalltalk, Eiffel, Java
Funktionale Sprachen
Bspe: LISP, ML, Miranda
Konstrukte: Funktionen
Logische Sprachen
Bsp: Prolog
Konstrukte: Fakten, Regeln
Imperative / Prozedurale Sprachen
Bspe: Fortran, Cobol, Algol, PL1, Ada, C
Prozeduren, while, case, if
Assembler
Bspe: RS600-Assembler
Konstrukte: MV, ADD, GET)
Vorgängerbeziehung
Maschinensprache
001001
DigInf 05/06
2
Übersicht über die Entwicklung von
Programmiersprachen
DigInf 05/06
3
Programmiersprache
Hinweis: „formal“
meint hier syntaktisch
formal.
DigInf 05/06
4
Operationen auf Wörtern / Verketten
DigInf 05/06
5
Klassen von unendlichen Sprachen
• Die Menge V* aller Wörter über einem Alphabet V ist immer
unendlich, sie ist also unabhängig vom zugrundeliegenden
Alphabet immer eine unendliche Sprache.
• Wir unterscheiden:
• abzählbare Sprachen
• überabzählbare Sprachen
DigInf 05/06
6
Abzählbare Sprachen
• Die Abzählbarkeit einer Menge kommt dadurch zum
Ausdruck, dass man vom ersten, zweiten, etc. Element
sprechen kann.
• Es muss also möglich sein, die natürlichen so auf die
Elemente der Menge zu verteilen, dass keines der
Elemente ohne Nummer bleibt.
• Definition: (Abzählbarkeit)
• Eine Menge M ist abzählbar, falls es eine Funktion
f: Nat  M
gibt, die surjektiv (d.h. alle Elemente von M kommen als
Bildelement vor) oder falls M die leere Menge ist.
DigInf 05/06
7
Abzählbare Sprachen
• Die Menge der rationalen Zahlen ist abzählbar (Beweis mit
Cantorschem Diagonalverfahren)
• Beweis in der Vorlesungseinheit 2!
• Die Menge der reellen Zahlen ist nicht abzählbar.
• Beweis in der Vorlesung. Folgende Beweisschritte:
• Einschränkung von Nat auf das Intervall [0,1)
• Kodierung jeder reellen Zahl r durch eine Abbildung r: Nat\{0}
{0,1, ..., 9}
• Annahme einer surjektiven Abbildung von Nat auf [0,1)
• Visualisierung durch Tabelle in der allen reellen Zahlen des
Intervalls stehen (angegeben durch ihre Nachkommastellen)
• Konstruktion der rellen Zahl diag aus dem Intervall
• Nachweis, dass diag nicht in der Tabelle steht
DigInf 05/06
8
Abzählbare Sprachen
Satz: Alle Sprachen über endlichen Alphabeten sind abzählbar.
1. Schritt des Beweises: Die Menge V* aller Wörter über einem
Alphabet V ist abzählbar.
2. Schritt des Beweises: Jede Teilmenge M´ einer abzählbaren Menge
M ist abzählbar.
1. Beweisschritt:
• Sei V={x1, ..., xn}. << sei eine Ordnungsrelation auf V, ohne
Beschränkung der Allgemeinheit nehmen wir an: x1 << ...<< xn.
• Wir ordnen V* gemäß der Länge der Wörter. Wörter gleicher Länge
werden lexikographisch geordnet (also „alphabetisch“ sortiert). Damit
gibt es eine Reihenfolge aller Wörter. Und damit ist V* abzählbar.
DigInf 05/06
9
Abzählbare Sprachen
2. Beweisschritt: Sei M abzählbar und f: Nat  M die nach
Definition existierende surjektive Funktion. Wir definieren
f´: Nat  M´ durch:
f´(n) = f(n), falls f(n)  M´
=  mit   M´ beliebig gewählt, falls f(n)  M´
Da f surjektiv ist, kommen alle Elemente von M´ als
Bildelemente von f vor. Diese sind aber auch
Bildelemente von f´ (Fall f(n)  M´). Und damit ist f´
surjektiv. Und damit ist f´ eine Abzählung.
DigInf 05/06
10
Aufzählbare Sprachen
Definition: (Überabzählbarkeit)
• Wenn eine Menge M so viele Element hat (so dicht ist), dass sie nicht
mehr durchnummeriert werden kann (also wenn sie nicht abzählbar
ist), dann heißt sie überabzählbar.
Definition: (Aufzählbarkeit)
• Eine Menge M heißt aufzählbar, falls es eine surjektive Funktion f:
Nat  M gibt und einen Algorithmus, der es gestattet, für jedes n 
Nat den Funktionswert f(n) zu berechnen. Die leere Menge heißt
auch aufzählbar.
• Die Menge {f(0), f(1), ..., f(n)} heißt Aufzählung von M.
• Hinweis: Aufzählbarkeit fordert mehr als Abzählbarkeit, denn es muss
zusätzlich den Algorithmus geben!
•
DigInf 05/06
11
Aufzählbare Sprachen
• Satz: Jede endliche Menge ist aufzählbar.
• Beweis:
Sei M={m0, ..., mk} eine endliche Menge. Ein Programm zur
Aufzählung von M kann nach folgendem Prinzip realisiert werden:
Abhängig vom Eingabeparameter n = 0,1,2, ... wird mithilfe
geeigneter Fallunterscheidungen für n<k das Ergebnis f(n)=mn
zurückgegeben, für nk wird generell mk als Ergebnis gewählt.
DigInf 05/06
12
Aufzählbare Sprachen
• Satz: Sei V ein Alphabet. Dann ist die Menge V* aller
Wörter über V aufzählbar. (Hinweis: V ist nicht
notwendigerweise endlich!)
• Beweis:
Erzeuge , dann die Wörter der Länge 1, dann die Wörter der
Länge 2, und so weiter, bei gleicher Länge in lexikographischer
Reihenfolge. Für eine beliebige natürliche Zahl n ergibt sich f(n)
aus dem n-ten Schritt dieses Verfahrens.
• Betrachtung: Jede aufzählbare Sprache ist offensichtlich
auch abzählbar. Umgekehrt gilt das nicht!
DigInf 05/06
13
Entscheidbarkeit
• Mit einer Aufzählung für eine Sprache kann man für jedes Wort der
Sprache nach endlich vielen Schritten nachweisen, dass das Wort zu
der Sprache gehört, denn bei der Aufzählung wird es ja nach endlich
vielen Schritten erzeugt.
• Hat man aber ein Wort gegeben, das nicht Element der Sprache ist, so
kann man dies, falls die Sprache unendlich viele Wörter enthält, mit
einer Aufzählung der Sprache nicht nachweisen. Denn dann läuft das
Verfahren unendlich lang. Und wir wissen nach endlicher Zeit nicht, ob
das Wort vielleicht später doch noch erzeugt wird.
• Beispiel: Compiler soll entscheiden, ob eine Eingabe ein gültiges
Programm ist. Dieses Problem lässt sich durch Aufzählung aller
gültigen Programme nicht sinnvoll lösen!
• Da uns solche Probleme in der Informatik öfter begegnen, sind die
entscheidbaren Sprachen besonders interessant!
DigInf 05/06
14
Entscheidbarkeit
Definition: (Entscheidbarkeit)
• Gegeben sei ein Alphabet V. Eine Sprache L  V heißt
entscheidbar, falls es einen abbrechenden Algorithmus,
Entscheidungsverfahren genannt, gibt, der für jedes w  V
feststellt, ob w  L oder w  L.
DigInf 05/06
15
Beispiel zur Entscheidbarkeit
Alphabet:
V = {a}
Sprache:
LV* mit L = {a2n | n  Nat}
Entscheidungsverfahren:
Sei w  V* beliebig gegeben. Streiche nach und nach
immer wieder aa aus Wort w raus. Bleibt kein a übrig,
gilt w  L, sonst nicht.
Bemerkungen:
Offensichtlich ist jede endliche Sprache entscheidbar.
Denn jedes zu prüfende Wort lässt sich mit allen
Wörtern der Sprache vergleichen.
DigInf 05/06
16
Entscheidbarkeit
Satz: Jede entscheidbare Sprache ist aufzählbar.
Beweis:
Sei V ein Alphabet und L  V* entscheidbar. Zähle V* auf und
entscheide mit dem Entscheidungsverfahren für jedes bei der
Aufzählung erzeugte w  V*, ob w  L oder w  L. Übergeht man alle
w  L, so erhält man eine Aufzählung für L.
Hinweis: Aus der Aufzählbarkeit einer Sprache folgt nicht die
Entscheidbarkeit. Die Schwierigkeit liegt darin, für diejenigen Wörter
eine Entscheidung zu treffen, die nicht in der Sprache enthalten sind.
Man kann sich durch eine Aufzählung so viele Wörter anschauen wie
man möchte, sie werden nicht dabei sein. Sie könnten aber prinzipiell
ja später noch auftauchen.
DigInf 05/06
17
Entscheidbarkeit
Eine aufzählbare, aber nicht entscheidbare Sprache:
Wenn man Computerprogramme und Eingaben für
Computerprogramme als Wörter über einem Alphabet wie
ASCII auffasst, so ist die Sprache L  ASCII*, mit
L = {xy | x ist ein Programm, y ist eine Eingabe, und x
stoppt bei der Eingabe y nach endlich vielen Schritten}
zwar aufzählbar, aber nicht entscheidbar. Dies folgt
unmittelbar aus dem schon diskutierten Halteproblem.
DigInf 05/06
18
Zusammenfassendes
Mengendiagramm
DigInf 05/06
19
Wieviele Probleme kann der Computer
lösen?
• ASCII ist ein endliches Alphabet. Also, lassen sich nur
abzählbar viele Programme formulieren.
• Eine einfache überabzählbare Menge von Problemen
besteht darin, für jede reelle Zahl r die folgende Funktion fr:
reelle Zahlen -> {0,1} zu berechnen:
fr(x) = 1, falls x=r
fr(x) = 0, sonst
• Folglich ist nur eine verschwindend geringe Zahl von
Funktionen berechenbar (ungefähr so wenige wie rationale
Zahlen im Verhältnis zu reellen Zahlen existieren).
DigInf 05/06
20
Grammatiken
Definition: (Grammatik)
Eine Grammatik ist ein Quadrupel G = (VN, VT, P,S) mit
VN, VT sind endliche, nichtleere Mengen mit VN VT =.
VN ist die Menge der nichtterminalen Symbole.
VT ist die Menge der terminalen Symbole
P ist eine endliche Menge von Regeln der Form
 mit  (VN  VT)+,   (VN  VT).
Die Elemente von P werden Produktionen, Produktuionsregeln
oder Grammatikregeln genannt.
S  VN ist das Startsymbol.
DigInf 05/06
21
Grammatiken
• Terminalsymbole beschreiben Symbole, die in den
Sätzen der Sprache vorkommen.
• Nicht-Terminalsymbole kommen nicht in den Sätzen der
Sprache vor. Sie werden gebraucht, um die Anwendung
der Ableitungsregeln zu koordinieren.
• Das Startsymbol ist ein ausgezeichnete NichtTerminalsymbol. Es legt fest, mit welcher Ableitungsregel
begonnen wird, um zu einem syntaktisch korrekten Satz
der Sprache zu kommen.
• Die Ableitungsregeln legen fest, wie eine Sequenz von
Nicht-Terminal- und Terminalsymbolen durch eine Folge
anderer Terminalsymbole und Nicht-Terminalsymbole
ersetzt werden kann.
DigInf 05/06
22
Produktionen
Beispiel einer Produktion:
• einfacher-deutscher-Satz = Subjekt Prädikat Objekt
[adverbiale-Bestimmung]
• Subjekt = Nomen | Personalpronomen
• Personalpronomen = Ich | Du | ...
•
•
•
•
•
{} steht für 0 bis n-fache Wiederholung
[] steht für Optionalität (0 oder einfaches Vorkommen)
| trennt Varianten voneinander
fett: Terminalsymbole,
kursiv: Nicht-Terminalsymbole
DigInf 05/06
23
Ableitungen
Definition: (Ableitung)
•
DigInf 05/06
24
Erzeugte Sprache
Definition: (Erzeugte Sprache)
Die von der Grammatik G = (VN, VT, P,S) erzeugte Sprache
*
L(G) = {x  VT* | S 
x}
Die Wörter der von der Grammatik erzeugten Sprache
werden auch als die grammatikalisch korrekten Wörter
bezeichnet.
Definition: (Äquivalenz von Grammatiken)
Zwei Grammatiken G1 und G2 heißen äquivalent, falls gilt:
L(G1) = L(G2)
DigInf 05/06
25
Herunterladen