Informatik I WS 07/08 Tutorium 24



Ähnliche Dokumente
Theoretische Informatik I

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Formale Sprachen und Grammatiken

Theorie der Informatik

Theoretische Grundlagen der Informatik

Vorlesung Theoretische Informatik

Informatik I WS 07/08 Tutorium 24

Programmiersprachen und Übersetzer

Grundbegriffe der Informatik

Grundbegriffe der Informatik

Programmierkurs Java

Grundlagen der Theoretischen Informatik, SoSe 2008

Formale Sprachen. Der Unterschied zwischen Grammatiken und Sprachen. Rudolf Freund, Marian Kogler

Grundlagen der Informatik II. Teil I: Formale Modelle der Informatik

Grundbegriffe der Informatik

2.11 Kontextfreie Grammatiken und Parsebäume

Kapitel 2: Formale Sprachen Kontextfreie Sprachen. reguläre Grammatiken/Sprachen. kontextfreie Grammatiken/Sprachen

Theoretische Informatik 2 (WS 2006/07) Automatentheorie und Formale Sprachen 19

1 topologisches Sortieren

Grammatiken. Einführung

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Informatik IC2. Balazs Simon

Mathematische Grundlagen der Informatik 2

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Wortproblem für kontextfreie Grammatiken

TheGI 1: Grundlagen und algebraische Strukturen Prof. Dr.-Ing. Uwe Nestmann Februar Schriftliche Leistungskontrolle (EK)

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

Konzepte der Informatik

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Anmerkungen zur Übergangsprüfung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Also kann nur A ist roter Südler und B ist grüner Nordler gelten.

Primzahlen und RSA-Verschlüsselung

4.9 Deterministische Kellerautomaten Wir haben bereits definiert: Ein PDA heißt deterministisch (DPDA), falls

Informationsblatt Induktionsbeweis

Übungsblatt 3: Algorithmen in Java & Grammatiken

Definition und Begriffe

V 2 B, C, D Drinks. Möglicher Lösungsweg a) Gleichungssystem: 300x y = x + 500y = 597,5 2x3 Matrix: Energydrink 0,7 Mineralwasser 0,775,

AutoTexte und AutoKorrektur unter Outlook verwenden

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Java: Vererbung. Teil 3: super()

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Algorithmen & Datenstrukturen 1. Klausur

Erstellen von x-y-diagrammen in OpenOffice.calc

Leichte-Sprache-Bilder

IT-Basics 2. DI Gerhard Fließ

Einführung in die Java- Programmierung

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Thema: Winkel in der Geometrie:

11. Das RSA Verfahren und andere Verfahren

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Einführung in die Programmierung

1 Mathematische Grundlagen

Zeichen bei Zahlen entschlüsseln

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Übungsbuch für den Grundkurs mit Tipps und Lösungen: Analysis

Was meinen die Leute eigentlich mit: Grexit?

Informatik IV Theoretische Informatik: Formale Sprachen und Automaten, Berechenbarkeit und NP-Vollständigkeit

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

a n auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

Kapitel 2. Methoden zur Beschreibung von Syntax

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Einführung in die Programmierung

Grundbegriffe der Informatik Tutorium 7

Professionelle Seminare im Bereich MS-Office

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Welche Lagen können zwei Geraden (im Raum) zueinander haben? Welche Lagen kann eine Gerade bezüglich einer Ebene im Raum einnehmen?

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Hinweise zum Übungsblatt Formatierung von Text:

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Breiten- und Tiefensuche in Graphen

Brainfuck. 1 Brainfuck. 1.1 Brainfuck Geschichte und Umfeld. 1.2 Esoterische Programmiersprachen

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Der Zwei-Quadrate-Satz von Fermat

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Individuelle Formulare

A. Ersetzung einer veralteten Govello-ID ( Absenderadresse )

Internet online Update (Mozilla Firefox)

How to do? Projekte - Zeiterfassung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

IBIS Professional. z Dokumentation zur Dublettenprüfung

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Einfache kryptographische Verfahren

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

15 Optimales Kodieren

1. Allgemein Speichern und Zwischenspeichern des Designs Auswahl der zu bearbeitenden Seite Text ergänzen Textgrösse ändern 3

teischl.com Software Design & Services e.u. office@teischl.com

Einführung in die Java- Programmierung

Grammatiken und die Chomsky-Hierarchie

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme und Grammatikregeln

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

5 Zweisprachige Seiten

Linienland, Flächenland und der Hyperraum Ein Ausflug durch die Dimensionen

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Erstellen einer digitalen Signatur für Adobe-Formulare

Transkript:

Info I Tutorium 24 Informatik I WS 07/08 Tutorium 24 20.12.07 Bastian Molkenthin E-Mail: infotut@sunshine2k.de Web: http://infotut.sunshine2k.de

Rückblick Semi-Thue-Systeme Ein Semi-Thue-System besteht aus zwei Mengen: Zeichenvorrat Σ Menge von Regeln T Die Reihenfolge der Regeln oder die Position der zu ersetzenden Zeichen im Wort spielt keine Rolle es kann jede Regel zu jeder Zeit angewendet werden (!) Solange anwendbare Regel vorhanden { wähle beliebige anwendbare Regel wähle beliebige Anwendungsstelle wende Regel an 2

Beispielaufgaben Schreiben Sie ein SemiThueSystem, das in einem Wort, deutsche Buchstaben durch ihre griechischen ersetzt. Das Alphabet sei hierbei: = { a, b, c, α, β, γ Lösung: a α b β c γγ Schreiben Sie ein SemiThueSystem, das in einem Wort, deutsche Buchstaben durch ihre griechischen ersetzt und andersrum. Das Alphabet sei hierbei: = { a, b, c, α, β, γ Lösung: Nicht möglich, würde nicht terminieren! 3

Markov- Algorithmen Ähnlich den Semi-Thue-Systemen, wieder zwei Grundmengen: Zeichenvorrat Σ Menge von Regeln T Größter Unterschied ist die definierte Reihenfolge bei der Regelanwendung: Wende stets die erste mögliche Regel an (Nummerieren!) Wende sie so weit links wie möglich an Nach eine Halteregel (.) beende den Algorithmus Wenn keine Regel mehr anwendbar ist, beende den Algorithmus Markov-System ist deterministisch! 4

Markov- Algorithmen (2) Ein Textersetunzgssystem heißt deterministisch, wenn wenn zu jeder Zeit immer nur eine Regel auf genau ein Teilwort anwendbar ist. Nichtdeterministisch bedeutet, dass für eine Eingabe das Verhalten des Systems unterschiedliche sein kann. Ein Textersetunzgssystem heißt determiniert, wenn dieselbe Eingabe immer dieselbe Ausgabe ergibt. Nichtdeterminiert bedeutet, dass für eine Eingabe die Ausgabe des Systems unterschiedlich sein kann. Wichtiger "Trick" bei Markov-Algorithmen: Oft ist es nützlich, die Bearbeitungsposition zu speichern Verwendung sogenannter Schiffchen Verwende hierzu bevorzugt grieschische Buchstaben α, β, γ, δ,... 5

Markov Aufgabe Entwickle einen Markov-Algorithmus, welcher die Länge beliebiger Wörter bestehend aus Strichen ( ) verdoppelt! Hier müssen Schiffchen verwendet werden Lösung: Σ= {, α T = { (1) α α, (2) α.ε, (3) ε α Das Schiffchen wird durch die letzte Regel erzeugt, welche zu Beginn die einzig Anwendbare ist! 6

Markov Aufgabe (2) Wende den Markov-Algorithmus auf das Wort an. Gib alle Schritte mit Hinweis auf die verwendete Regel an! Lösung: Σ= {, α T = { (1) α α, (2) α.ε, (3) ε α 3 α 1 α 1 α 1 α 1 α 2 7

Markov Aufgabe 2 Entwickle einen Markov-Algorithmus, welcher sämtliche Kleinbuchstaben in einem Wort durch Großbuchstaben und sämtliche Großbuchstaben durch Kleinbuchstaben ersetzt! Zeichenvorrat sei gegeben mit Σ={a, b, c, A, B, C, α Lösung: T = { (1) αa Aα, (2) αb Bα, (3) αc Cα, α (4) αa aα, (5) αb bα, (6) αc cα, (7) α.ε, (8) ε α 8

Chomsky - Grammatiken (Chomsky-) Grammatiken besitzen einen ähnlichen Aufbau wie schon die Semi-Thue-Systeme und Markov-Algorithmen: Der Zeichenvorrat wird unterteilt in die Mengen der Terminalsymbole (Σ) und der Nichtterminalsymbole (N). Regeln nennen wir Produktionen und sind in der Menge P. Alle Ableitungen beginnen bei dem Startsymbol (ein Nicht-Terminal!) A (auch Axiom genannt) Der Viertupelaus Σ, N, P und Axiom bildet die Grammatik: G = (Σ, N, P, A) Sämtliche Worte aus Σ*, welche sich mit den gegebenen Regeln aus A ableiten lassen, bilden die von der Grammatik erzeugte Sprache: L(G) = {w Σ* A * w 9

Chomsky Grammatiken (2) Bereits gesehen bei Semi-Thue-Systemen und Markov-Algorithmen: Die verschiedenen Systeme sind unterschiedlich mächtig (es gibt Probleme, welche sich mit Markov-Algorithmen lösen lassen, jedoch nicht mit Semi-Thue-Systemen) In der Chomsky-Hierarchiewerden die verschiedenen Typen von Grammatiken in 4 Klassen eingeteilt, wobei hier eine "Rangfolge" bezüglich der Mächtigkeit vorliegt Die Unterschiede liegen hierbei in der Form der erlaubten Produktionen 10

Chomsky - Hierarchie Chomsky-0-Grammatik (CH-0) allgemeiner Produktionstyp: l r wobei l, r V* beliebig insbesondere auch ε-produktionen (r = ε) Chomsky-1-Grammatik (CH-1) längenbeschränkt: l r wobei l, r V*, 1 l r kontextsensitiv: uav urv wobei A N, u, v V* r V+, d.h. r ε Chomsky-2-Grammatik (CH-2) kontextfrei: A r wobei A N, r V* Chomsky-3-Grammatik (CH-3) entweder linkslinear: A Bxoder A x wobei A, B N, x Σ oder rechtslinear: A xboder A x wobei A, B N, x Σ 11

Chomsky - Hierarchie Chomsky-Grammatiken kleinerer Nummer enthalten Grammatiken höherer Nummer Größere Nummern enthalten die kleineren NICHT Je kleiner die Nummer desto mächtiger Chomsky-0 ist so gut wie SemiThueoder Markov Chomsky-2 Grammatiken sind äquivalent zur EBNF Unter dem Chomsky-Typ einer Spracheversteht man den höchsten Grammatik-Typ, welcher diese Sprache noch erzeugen kann CH-0 (beliebige Produktionen) CH-1 (längenbeschränkt oder kontextsensitiv) CH-2 (kontextfrei) CH-3 (entweder links- oder rechtslinear) 12

Chomsky-Hierarchie (Aufgabe 1) Gib zu der folgenden Grammatik jeweils mit Begründung den (einschränkendsten) Typ und die erzeugte Sprache an! G 1 = (Σ, N, P, A) Σ= {a, b N = {A, B P = { A aa ab, B bb b Typ: CH-3, da alle Produktionen rechtslinear sind Sprache: L(G 1 ) = { a n b m n, m \{0 13

Chomsky-Hierarchie (Aufgabe 2) Gib zu der folgenden Grammatik jeweils mit Begründung den (einschränkendsten) Typ und die erzeugte Sprache an! G 2 = (Σ, N, P, S) Σ= {a, b N = {A P = { A aab ab Typ: CH-2, da z.b. A ab kontextfrei ist, aber keine CH-1 oder CH-0-Produktionen enthalten sind (linke Seite nur Nichtterminalzeichen) Sprache: L(G 2 ) = { a n b n n \{0 14

Chomsky-Hierarchie (Aufgabe 3) Gib zu der folgenden Grammatik jeweils mit Begründung den (einschränkendsten) Typ und die erzeugte Sprache an! G 3 = (Σ, N, P, A) Σ= {a, b, c N = {A, B, C, D P = { A aa ab, ab abc ad, C bc bd, D cd c (*) CH-3 Produktionen: P' = { A aa ab, B bc cd c, C bc bd, D cd c Typ: CH-1, da z.b. ab abcnur längenbeschränkt ist, aber auch keine CH-0-Produktionen enthalten sind. Sprache: Sprache: L(G 3 ) = { a i b j c k i, j, k und i, k 0, j 1 Die Sprache ist vom Typ CH-3, da eine CH-3-Grammatik existiert, welche die gleiche Sprache erzeugt (*) 15

Chomsky Aufgaben Gegeben sei die GrammtikG = (Σ, N, P, A) mit Σ= {a, b, c und N = {A, B, C Gebe jeweils den max. Chomsky-Typ (mit Begründung!) an! P = { A AbbA a, b AbbACab, B b, C abc Die zweite Produktion enthält eine Produktion aus einem Terminalsymbol heraus. Damit kann sie nicht CH-2 oder CH-3 sein. Da die Produktionen längenbeschränkt sind, ist sie CH-1. P = { A AbbA, B b, C abc Alle Produktionen sind kontextfrei, also liegt eine CH-2- Grammatik vor. Die erste und dritte Produktion sind weder rechts noch links-linear und daher in CH-3 nicht erlaubt. 16

Endliche Automaten Bestandteile: endliche Menge Qvon Zuständen mit einem Anfangszustand q 0 Q Zeichenvorrat Σ Zustandsübergänge: Lesen eines Zeichens a Σ führt zu einem Zustandsübergang vom aktuellen Zustand q Q in einen neuen Zustand q Q Ein endlicher Automat kann als Graph aufgefasst werden: Zustände Q = {q 0, q 1,..., q n des endlichen Automaten lassen sich als Ecken eines Graphen auffassen Zustandsübergänge q i a q j mit a Σentsprechen markierte gerichtete Kanten q 0 q 1 17

Endliche Automaten (2) Was ist der Startzustand? Kennzeichnet die Anfangsposition im Automaten Wird durch einen Pfeil gekennzeichnet (wichtig!) q 0 Was bedeutet vollständig? An jedem Zustand ist für jedes Zeichen aus dem Eingabealphabet ein Übergang gegeben (Nötigenfalls zu einem speziellen Fehlerzustand) Was bedeutet deterministisch? Der Automat muss für gleiche Eingaben immer das gleiche Ergebnis liefern, also eindeutig sein. Keine "Wahlmöglichkeit" bei Verzweigungen: 0 1 q 0 q 1 0 18

Hinweis SchniPoStar-Aufgabe public class State { static char input; public static void stateone() { Out.println("Zustand 1:"); do { Out.print("Eingabe: "); input = In.readChar(); if (input == '1') { Out.println("Ausgabe = A"); statetwo(); while (input!= '1'); 2/B q 1 q 0 1/A 1/A public static void statetwo() { Out.println("Zustand 2:"); do { Out.print("Eingabe: "); input = In.readChar(); if (input == '1') { Out.println("Ausgabe = A"); statetwo(); else if (input == '2') { Out.println("Ausgabe = B"); stateone(); while (input!= '1' && input!= '2'); public static void main(string[] args) { stateone(); Automat muss im Javacode ersichtlich sein! 19

BigInteger BigInteger ist eine Klasse zum Rechnen mit beliebig großen Zahlen. Erzeugen: BigInteger( String val) Erzeugt ein BigInteger aus einem Ziffern-String BigInteger a = new BigInteger( 23 ); static BigInteger valueof( long val) Konstruiert aus einem long ein BigInteger BigInteger a = BigInteger.valueOf(23); Wichtige Funktionen: BigInteger add(biginteger val), BigInteger and(biginteger val), BigInteger multiply( BigInteger val), BigInteger or( BigInteger val), BigInteger modpow( BigInteger exponent, BigInteger m ) Übersicht: http://java.sun.com/javase/6/docs/api/java/math/biginteger.html 20

Aufgabe Schreibe ein Java Programm, welches den größten gemeinsamen Teiler zweier Zahlen berechnet. Verwende hierzu die BigInteger Klasse! import java.math.biginteger; public class GCD { static BigInteger gcd(biginteger a, BigInteger b) { BigInteger c; while (!b.equals(biginteger.zero)) { c=a.mod(b); a=b; b=c; return a; public static void main(string[] args) { BigInteger result = gcd(new BigInteger("1002001002492"), new BigInteger("12339432")); Out.println("GCD is : " + result); 21

Kleine Zusatzaufgabe Wie berechnet sich die Kantenzahl aus der Eckenzahl für einen vollständigen gerichteten Graphen mit reflexiven Kanten? Annahme: Kantenzahl = (Eckenzahl)², also k(x) = x 2 (Bezeichne x die Eckenanzahl und k(x) die Kantenanzahl abh. von x) Induktionsanfang: x = 1: k(1) = 1² = 1 Induktionsschritt: x x+1: k(x+1) = k(x) + 1+ 2x = x² + 2x + 1 = (x + 1)² Überlegung des Kanten-Zuwachses bei Hinzunahme eines weiteren Knotens: + 1 Kante, die auf den Knoten verweist (reflexive Kante) + je 2 Kanten auf die bestehenden x Knoten 1 + 2x 22

Das wars für heute Fragen??? Frohe Weihnachten & einen guten Rutsch ins Neue! 23