Theoretische Grundlagen der Informatik
Jo lecko mio... Wenn die Kartei "Theoretische Grundlagen der Informatik" heisst... Was wird da wohl drinne sein? Chinesische Kochrezepte? Alttibetanische Liedtexte? Englisch für Daheimgebliebene... MENNO!
Jo lecko mio... Wenn die Kartei "Theoretische Grundlagen der Informatik" heisst... Was wird da wohl drinne sein? Chinesische Kochrezepte? Alttibetanische Liedtexte? Englisch für Daheimgebliebene... MENNO!
-
- 1 / 60
-
Flashcards
3.18. Was sind kontextsensitive Sprachen?
G heißt kontextsensitiv, wenn alle Regeln von folgender Form sind:
a → b mit |a| <= |b|
Auf linker Seite jeder Regel stehen nicht mehr Symbole als rechts (Beipiel wenn links aB → ab, darf recht NIE mehr sein wie z.B aBC → ab
Ausnahme: S →ε ist erlaubt, wenn S NIE auf einer rechten Seite vorkommt
Daher wandelt man immer die einfachsten Variablen zuerst um (von links nach rechts)
Beispiel Grammatik: G = (V,Σ,P,S) mit:
V = {S,B,C}
Σ = {a,b,c}
P = { S → aSBC | aBC, CB → BC, aB → ab, bB→ bb, bC → bc, cC → cc} L(G) = {abc,aabbcc,aaabbbccc,aaaabbbbcccc,...} =
L(G)={anbncn |n>=1}
3.19. Was ist ein linear beschränkter Automat?
- Nichtdeterministischer LBA == ähnlich Turingmaschinen
- einziger Unterschied, dass zugänglicher Teil des Bandes durch Größe der Eingabe beschränkt ist
- akzeptieren genau die Typ-1-Sprachen (kontextsensitive Sprachen) - ob dies auch auf deterministische LBA zutrifft, ist ein noch offenes Problem
3.20. Was ist der Unterschied zwischen deterministischen und nichtdeterministischen linear beschränkten Automaten?
δ (Delta) == Übergangsfunktion/relation
Wenn δ == Zustandsübergangsfunktion -> deterministischen LBA
Wenn δ == Zustandsübergangsrelation -> nicht-deterministischen LBA
Funktion: es gibt maximal einen einzigen y-Wert für einzelne x-Werte.
Relation: es gibt mehrere y-Werte für einzelne x-Werte.
3.21. Was sind Typ-0 Sprachen?
• Sprachen ohne Einschränkungen bezüglich der Regeln!
Beispiel für eine „Sprache“, die Typ-0, aber nicht Typ-1 ist, ist das Halteproblem für Turingmaschinen
Das Halteproblem beschreibt Frage, ob Ausführung eines Algorithmus zu einem Ende gelangt – normal für viele Algorithmen leicht zu beantworten. Alan Turing konnte mit einer Turingmaschine beweisen, dass es keinen Algorithmus gibt, der diese Frage für alle möglichen Algorithmen und beliebige Eingaben beantwortet.
3.22. Was ist eine Turingmaschine?
- Zu jeder Sprache (erzeugt in freien Grammatik) gibt es eine Turingmaschine, die diese Sprache erkennt
- Zu jeder Turingmaschine gibt es eine rekursiv aufzählbare Sprache, die von dieser Turingmaschine erkannt wird
Aufbau:
Eine Turingmaschine hat ein Steuerwerk, in dem sich das Programm befindet, und besteht außerdem aus
- einem unendlich langen Speicherband mit unendlich vielen sequentiell angeordneten Feldern
- pro Feld kann genau ein Zeichen aus einem vordefinierten Alphabet gespeichert werden
- zusätzliches Zeichen ist ein Blank („unbeschrieben“) zugelassen == leeres Feld auf Speicherband
- einem programmgesteuerten Lese- und Schreibkopf
- bewegt sich feldweise auf Speicherband und verändert / löscht Zeichen
Die Turingmaschine modifiziert die Eingabe auf dem Band nach dem festgelegten Programm
Startposition == Anfang des Eingabeworts, d. h. an der Position des ersten Eingabezeichens
3.23. Was kann eine Turingmaschine?
- Modifiziert die Eingabe auf dem Band nach dem festgelegten Programm
- Startposition ist Anfang des Eingabeworts (erstes Eingabezeichens)
- Jeder Schritt besteht aus
- Lese-Schreib-Kopf lest aktuelles Zeichen
- überschreibt dieses mit dem neuen Zeichen
- bewegt sich dann ein Feld nach links oder rechts oder bleibt stehen
- Welches Zeichen geschrieben wird und welche Bewegung ausgeführt wird, hängt ab von:
- Vorgefundenem Zeichen an aktueller Position
- Zustand in dem sich Turingmaschine gerade befindet
- Definiert durch Überführungsfunktion in der Turingmaschine
- Anzahl der Zustände, in denen sich die Turingmaschine befinden kann, ist endlich
- Ein Zustand kann mehrere Male durchlaufen werden und sagt nicht über die Zeichen auf dem Band aus
- Sie stoppt wenn für den aktuellen Zustand und das gelesene Bandsymbol keine Überführung zu neuem Zustand
- definiert ist
- hängt immer von Kombination aus Zustand und Symbol ab
- Zustände in denen unabhängig vom gelesenen Bandsymbol angehalten wird bezeichnet man als Endzustände
- Es gibt auch Turingmaschinen, die für gewisse Eingaben niemals stoppen
Ablauf vereinfacht:
Auf einem Band steht das Wort „Anna“
- Start an Startposition
- Einlesen Zeichen „A“
- Überschreiben des Zeichens mit „neuem/gleichem“ Zeichen aufgrund Überführungsfunktion
- Bewegt sich nach rechts aufgrund der Überführungsfunktion
- Einlesen Zeichen „n“
- Überschreiben des Zeichens mit „neuem/gleichem“ Zeichen aufgrund Überführungsfunktion
- Bewegt sich nach rechts aufgrund der Überführungsfunktion
- Einlesen Zeichen „n“
- Überschreiben des Zeichens mit „neuem/gleichem“ Zeichen aufgrund Überführungsfunktion
- BewegtsichnachrechtsaufgrundderÜberführungsfunktion
- EinlesenZeichen„A“
- ÜberschreibendesZeichensmit„neuem/gleichem“ZeichenaufgrundÜberführungsfunktion
- BewegtsichnachrechtsaufgrundderÜberführungsfunktion
- Einlesen „Blank“ – Endposition in diesem Beispiel aufgrund fehlender Überführungsfunktion
3.24. Wie unterscheidet sich eine Turingmaschine von einem linear beschränkten Automaten?
- Linear beschränkter Automat (LBA) -> verlässt den Bereich des Bandes auf dem die Eingabe steht nicht
- Während der Berechnung wird daher nur der Teil des Bandes benutzt, auf dem zu Beginn das Eingabewort stand -> begrenzter Speicher
3.25. Was ist der Unterschied zwischen deterministischen und nichtdeterministischen endlichen Turingmaschinen?
Zu jeder nicht-deterministischen Turingmaschine gibt es deterministische Turingmaschine, die dieselbe Sprache erkennt.
Trotz dem Unterschied (Funktion / Relation) der deterministische und nicht-determin. Turingmaschinen sind diese als äquivalent anzusehen, da die eine mit Relationen paralleler arbeiten kann und die mit Funktionen seriell abarbeitet, Aufgrund der Leistung und des unbegrenzten Speichers können beide trotzdem mit dem Input der anderen umgehen.
3.26. Was versteht man unter Language Security?
- Sichere Eingabeprüfung
- Ausschließlich erlaubte Eingaben akzeptieren
- Eingaben immer gleich und sicher interpretieren o Keine unvorhergesehene Reaktion auf Eingaben
- Identische Interpretation auf beiden Seiten einer Schnittstelle
- Die Sprache des Senders muss gleich der Sprache des Empfängers sein
- Design Contracts müssen explizit definiert und überprüfbar eingehalten werden
3.27. Wie kann man eine Schwachstelle in einem Interface theoretisch beschreiben?
M...Message - Dec...Entschlüsselung - Enc...Verschlüsselung
M != Dec(Enc(M)) – Nachricht =! Dieselbe Nachricht nach Ver-und Entschlüsselung
M ist semantisch gültig für den Sender – Nachricht vom Sender ist richtig versendet
Dec(Enc(M)) ist semantisch gültig für den Empfänger – Verarbeitete Nachricht ist logisch richtig
Die Verarbeitung von M beim Empfänger ist nicht gleich der Verarbeitung von Dec(Enc(M)) beim Empfänger
Schlussfolgerung: Da Nachricht A versendet wird und semantisch richtig ist, jedoch beim Empfänger B (ebenfalls semantisch richtig) verstanden wird!!! -> Schwachstelle
3.28. Welche Vorgangsweise sollte man im Sinne der Language Security wählen, damit Input Validation vollständig möglich ist?
Erlaubten Input so einfach wie möglich halten!
Erlaubten Input exakt als formale Sprache definieren
Input Validation als Parser implementieren
Parser mit einem validierten Parser-Generator erzeugen!
3.29. Welche Vorgangsweise sollte man im Sinne der Language Security wählen, damit ein Protokoll sicher implementiert werden kann?
Protokoll so einfach wie möglich halten!
Protokoll exakt als formale Sprache definieren!
Protokoll überall als Parser implementieren!
Parser mit einem validierten Parser-Generator erzeugen!
4.1. Was ist der Unterschied zwischen rekursiven und rekursiv-aufzählbaren Sprachen?
Rekursiv aufzählbare Sprache S == Es gibt Turingmaschine, die alle Wörter aus S akzeptiert, aber keine Wörter, die nicht in S liegen
- Rekursiven Sprachen sind rekursiv aufzählbar (Teilmenge von S).
Unterschied zwischen rekursiven Sprachen und rekursiv-aufzählbaren Sprachen:
- rekursiven Sprachen (entscheidbare Sprachen)
- Turingmaschine muss halten
- Rekursiv aufzählbaren Sprachen
- Turingmaschine muss nicht halten, wenn Wort nicht in LL liegt -> möglich, dass man auf Lösung unendlich lange warten muss
4.2. Wie ist das Wortproblem formal definiert?
Das Wortproblem in einer formalen Sprache ist das Problem festzustellen, ob ein gegebenes Wort zur Sprache gehört, oder nicht.
Das Wortproblem für
Typ-0-Sprachen ist rekursiv aufzählbar und nicht entscheidbar.
Typ-1-Sprachen ist entscheidbar
Typ-2-Sprachen ist durch den Cocke-Younger-Kasami-Algorithmus lösbar
Typ-3-Sprachen ist durch deterministische endliche Automaten lösbar.
4.3. Was ist der Unterschied zwischen abzählbar unendlich und überabzählbar unendlich?
- abzählbar unendlich
- Eine Menge M heißt abzählbar, wenn eine Bijektion zwischen der Menge M und den natürlichen Zahlen existiert.
- Bijektion == Jedem Element aus einer Menge ist ein Element aus einer anderen Menge zugeordnet
- Beispiele: Natürliche Zahlen, Primzahlen, Ganze Zahlen (Jede Zahl hat dieselbe Mächtigkeit wie sie selbst)
- überabzählbar unendlich
- Eine Menge M heißt überabzählbar, wenn sie weder endlich noch abzählbar ist.
- Beispiel: Die Menge aller Teilmengen (=Potenzmenge) einer Menge wenn die Menge unendlich viele Elemente hat.
4.4. Was ist die Church-Turing-These?
Die Turingmaschine muss ja oder nein sagen und muss stehen bleiben (sie “hält”, endliche Antwortzeit).
“Die Klasse der turing-berechenbaren Funktionen stimmt mit der Klasse der intuitiv berechenbaren Funktionen überein.”
Diese These ist nicht beweisbar, da der Begriff „intuitiv berechenbare Funktion“ nicht exakt formalisiert werden kann. Man versteht darunter alle Funktionen, die prinzipiell auf irgendeine Weise berechnet werden könnten. Damit setzt man insbesondere keine Vorstellung voraus, welche Funktionen auf den natürlichen Zahlen berechenbar sind. Es wird in der Informatik üblicherweise angenommen, dass die These stimmt. Dadurch kann es ermöglicht werden, von einer Funktion nachzuweisen, dass sie nicht berechenbar ist.
4.5. Wann ist ein Problem entscheidbar?
Wenn die Turingmaschine hält. Wenn zu einer Eingabe in endlicher Zeit eine Antwort geliefert wird.
4.6. Was versteht man unter dem Halteproblem von Turingmaschinen?
Ob eine Turingmaschine - mit einem Eingabewort gestartet - halten wird oder nicht.
Ja = Bleibt sie stehen
Nein = Kann sie unendlich lang weiterlaufen
Ein Programm welches ein anderes Programm analysiert ob es eine Endlosschleife enthält oder nicht. (Kann sich das Programm selber analysieren ob es nicht selber in einer Endlosschleife durchläuft? Nicht möglich!)
4.7. Was sagt der Unvollständigkeitssatz von Gödel aus?
1.Satz:
Ein formales System kann nicht logisch konsistent und zugleich vollständig sein. - Hängt sich ein Programm auf kann es nicht logisch konsistent sein
2. Satz:
Ein logisch konsistentes System ist nicht in der Lage seine eigene logische Konsistenz zu beweisen.
- Das Programm führt sich selbst mit einem Parameter aus welcher dazu führt, dass sich das Programm aufhängt. Das Programm ist jedoch nicht in der Lage festzustellen, dass sich die von ihm aufgerufene Instanz seiner selbst aufgehängt hat! Somit kann es in diesem Fall auch selbst nicht terminieren.
- Das Programm kann sich nicht selber testen ob es “logisch” ist.
1.14. Welche Sprachen zur Formulierung formaler Modelle gibt es?
Programmiersprachen
Automaten
Logiken
Lambda Kalkül (Sprache zur Untersuchung von Funktionen)