Rekursive Listenverarbeitung
|
|
|
- Busso Stieber
- vor 8 Jahren
- Abrufe
Transkript
1 Rekursive Listenverarbeitung Übersicht Rekursion ist die wichtigste Programmiertechnik in Prolog! Rekursive Datenstrukturen Einfache und rekursiv gebildete Strukturen Rekursive Datenstrukturen und rekursive Prädikate Eine natürliche Kombination Aufbau rekursiver Prädikate Abbruchbedingung Rekursionsschritt Rekursive Programmiertechniken mit Listen Länge von Listen: laenge/2 Suche nach Elementen: member/2 Abbilden von Listen: papagei/2 Rekursive Listenverarbeitung 1
2 Listen: Rekursive Datenstrukturen Bei Listen wie bei allen rekursiven Datenstrukturen gibt es 2 Arten von Definitionsregeln. I. Regeln für einfache Strukturen Die leere Liste ist eine Liste. [] Atomaren Terme sind Prolog-Terme. Variablen sind Prolog-Terme. II. Regeln für rekursiv aufgebaute, komplexe Strukturen Nicht-leere Listen bestehen aus einem Element und einer Liste als Rest. [E Liste] Komplexe Terme sind Prolog-Terme, die aus einem Funktor und dessen Argumenten bestehen, die Prolog-Terme sind. Rekursive Listenverarbeitung 2
3 Problem: Was sind wahre Listen? [a,b,c [d]] [a,b,c d] Listen sind eine bestimmte Sorte von Termen in Prolog Definiere ein Prädikate is_list/1, das genau dann wahr ist, wenn das Argument eine Liste ist! Problem Da Listen beliebig viele Elemente enthalten können, müssen beliebig viele Klauseln für is_list/1 geschrieben werden! is_list([]). is_list([_,_]). is_list([_,_,_]).... is_list([_,_,,_]). Rekursive Listenverarbeitung 3
4 Rekursive Lösung: Wahre Listen Rekursive Datenstrukturen + Rekursive Prädikate Also Passe die Strategie des Problemlösens der Struktur des Problems an! Prädikatsklausel für einfache Struktur: Leere Liste is_list([]). "Die leere Liste ist eine Liste." Prädikatsklausel für rekursiven Strukturen: Nicht-Leere Liste is_list([e Rest]) :- is_list(rest). "Nicht-leere Listen bestehen aus einem Element und einer Liste als Rest." Rekursive Listenverarbeitung 4
5 Rekursive Dekomposition Rekursive Datenstrukturen a. enthalten Teilstrukturen, die mit denselben Definitionsregeln aufgebaut wurden. Teilstrukturen sind immer weniger komplex als die sie enthaltenden Strukturen. b. haben elementare Strukturen und rekursive Strukturen. Rekursive Prädikate a. lösen ein Problem, indem sie es auf Teilprobleme gleicher Art reduzieren, die deshalb mit dem gleichen Prädikat erschlagen werden können. Teilprobleme sind weniger komplex als das Problem, dessen Teil sie sind. b. haben Klauseln für elementare oder abschliessende Fälle (Abbruchbedingung) und rekursive Fälle (Rekursionsschritt). Rekursive Listenverarbeitung 5
6 Der Bau rekursiver Prädikate Für den Aufbau und das Schreiben rekursive Prädikate kann oft ein gemeinsames Schema verwendet werden. Zuerst: Klauseln für Abbruchbedingung Terminiere den Beweis, falls die Abbruchbedingung erfüllt ist. Oft einfach zu finden und zu programmieren! Danach: Klauseln für Rekursionschritte Löse das Problem für einen einzelnen Schritt und wende auf das Restproblem dasselbe Prädikat rekursiv an. Oft erstaunlich einfache Definition, aber schwierig zu finden! Gefahr: Rekursive Prädikate ohne Abbruchbedingungen verhalten sich wie zirkulär definierte Prädikate! huhn :- ei. ei :- huhn. Rekursive Listenverarbeitung 6
7 Beispiel I: Länge von Listen Schreibe ein rekursives Prädikat laenge/2, das die Länge einer Liste bestimmt. Erstes Argument (Input): Liste, deren Länge zu bestimmen ist Zweites Argument (Output): Die Länge (d.h. Anzahl der Elemente)?- laenge([], X). X = 0 yes?- laenge([a,b,c], X). X = 3 yes Wie immer bei rekursiven Prädikaten unterscheiden wir Abbruchbedingung Rekursionsschritt Rekursive Listenverarbeitung 7
8 Definition: Länge von Listen Abbruchbedingung Die Länge der leeren Liste ist 0. laenge([], 0). Rekursionsschritt Hinweis Die Länge einer nicht-leeren Liste ist die Länge ihres Rests plus 1. laenge([_ Rest], Ergebnis) :- laenge(rest, RestLaenge), Ergebnis is RestLaenge + 1. In SICStus Prolog gibt es ein eingebautes Prädikat length/2, das die Länge einer Liste berechnen kann wie unser Prädikat laenge/2. Zusätzlich kann es aber noch verwendet werden, um Listen bestimmter Länge zu generieren. Rekursive Listenverarbeitung 8
9 Beispiel II: Suche nach einem Element Schreibe ein Prädikat member/2, das wahr ist, falls ein Term Element einer Liste ist.?- member(sittich, [spitz,dackel,terrier]). no?- member(dackel, [spitz,dackel,terrier]). yes?- member(x, [spitz,dackel,terrier]). X = spitz ; X = dackel ; X = terrier ; no Rekursive Listenverarbeitung 9
10 Suche: Rekursive Dekomposition Das gesuchte Element ist das erste Element der Liste. Abbruchbedingung: Das vorderste Element ist mit dem gesuchten Term unifizierbar. member(dackel, [dackel,terrier]) Das gesuchte Element befindet sich vielleicht im Rest der Liste. Rekursionsschritt: Suche im Listenrest weiter (d.h. ohne das Anfangs-Element) member(dackel, [mops,dackel,terrier]) Rekursive Listenverarbeitung 10
11 Abbruchbedingung: Gefunden! member(dackel, [dackel,terrier]) Die Klausel für die erfolgreiche Suche X ist Element der Liste, wenn X das erste Element in der Liste ist. member(x, Liste) :- Liste = [X IrgendeinRest]. Einfacher geschrieben: member(x, [X IrgendeinRest]). Eigentlich interessiert uns der Rest gar nicht: member(x, [X _]). Rekursive Listenverarbeitung 11
12 Rekursiver Fall: Weitersuchen! member(dackel, [mops,dackel,terrier]) Das Element könnte noch im Rest enthalten sein, d.h. im Rest weitersuchen! Nimm den Rest der Liste und prüfe, ob X im Rest enthalten ist. member(x, [Anfang Rest]) :- member(x, Rest). Eigentlich interessiert uns der Anfang gar nicht. member(x, [_ Rest]) :- member(x, Rest). Rekursive Listenverarbeitung 12
13 Rekursive Suche: member/2 member(x, [X _]). member(x, [_ Rest]) :- member(x, Rest). Deklarative Verdeutschung Ein Term ist Element einer Liste, falls der Term Kopf der Liste ist. Ein Term ist Element einer Liste, falls der Term Element des Rests der Liste ist. Rekursive Listenverarbeitung 13
14 Listen: Analyse und Konstruktion Listen-Analyse In rekursiven Listenprädikaten wird meist eine Eingabe-Liste rekursiv auseinandergenommen (analysiert) Listen-Konstruktion In rekursiven Listenprädikaten wird oft zugleich eine Ausgabe-Liste rekursiv aufgebaut (konstruiert), die das gewünschte Resultat enthält Für Dekonstruktion wie Konstruktion wird Unifikation verwendet! Pattern Matching spielt Doppelrolle der analytischen Fallunterscheidung und Resultatskonstruktion! Rekursive Listenverarbeitung 14
15 Beispiel III: Abbilden (Mapping) Listenmapping mit Prädikat papagei/2 ist Beispiel für gleichzeitige Listen-Analyse und -Konstruktion. Eingabe: Liste Ausgabe: Eingabeliste, in der bestimmte Element ersetzt sind?- papagei([du,bist,nett], Echo). Echo = [ich,bin,nett]?- papagei([sie,sagt,du,seist,nett], Echo). Echo = [sie,sagt,ich,sei,nett] Im Beispiel ist die Ausgabe gleich der Eingabe, ausser für die Listenelemente du, ich, bist, bin, sei, seist. Rekursive Listenverarbeitung 15
16 Abbilden der Liste Vorgehen: Analyse und Konstruktion Gehe schrittweise durch die Liste (»traversieren«) Bilde jedes einzelne Element auf das entsprechende Ergebnis ab... sie. sie. sagt. sagt. du. ich. seist. sei. nett [] nett [] Rekursive Listenverarbeitung 16
17 Abbilden der Elemente: map/2 Zum Austauschen der einzelnen Listenelemente definieren wir das Hilfsprädikat map/2. map(du, ich). map(ich, du). map(bist, bin). map(bin, bist). map(seist, sei). du ich bist bin seist ich du bin bist map(sei, seist). sei seist map(x, X). nett sie sei nett sie Rekursive Listenverarbeitung 17
18 Zuerst Abbruchbedingung Das Prädikat papagei/2 bildet eine Liste in eine andere ab. Abbruchbedingung Bilde die leere Liste auf die leere Liste ab. Da kein Element vorhanden ist, muss keines ausgetauscht werden. papagei([], []). [] [] Die Abbruchbedingung steht normalerweise vor dem rekursiven Fall. Rekursive Listenverarbeitung 18
19 dann Rekursionsschritt.. ich Rest du AbbildRest Rekursionsschritt Nimm Anfangselement und bilde es mit map/2 ab. Rufe papagei/2 rekursiv auf, um den Rest der Liste abzubilden Konstruiere die Resultatsliste, die besteht aus einem Anfangs-Element: der Abbildung des ersten Elements einer Restliste: der Abbildung des Rests papagei([e Rest], [AbbE AbbRest]) :- map(e, AbbE), papagei(rest, AbbRest). Rekursive Listenverarbeitung 19
20 Abbilden im Überblick: papagei/2 % Abbildung bestimmter Terme. map(du, ich). map(bist, bin). map(ich, du). map(bin, bist). map(seist, sei). map(sei, seist). % Wenn es keiner der obigen Terme ist, ist % das Abbild gleich dem Original. map(x, X). % Die Abbildung einer leeren Liste ergibt % eine leere Liste. papagei([], []). % Die Abbildung eines Terms, gefolgt von einer Rest-Liste % ist die Abbildung des Terms, gefolgt von der Abbildung % der Rest-Liste. papagei([e Rest], [AbbE AbbRest]) :- map(e, AbbE), papagei(rest, AbbRest). Rekursive Listenverarbeitung 20
Listen. bersicht. Zweck. Listen allgemein Listen in Prolog. Programmiertechniken mit Listen. Erstellen von Prolog-Programmen mit Listen
Listen bersicht Listen allgemein Listen in Prolog Schreibweise Listen als rekursive Datenstruktur Unifikation Programmiertechniken mit Listen Zweck rekursive Suche Abbilden Erstellen von Prolog-Programmen
Teil 4: Rekursion und Listen
Einführung in das Programmieren Prolog Sommersemester 2006 Teil 4: Rekursion und Listen Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax, Regeln,
Prolog 4. Kapitel: Listen
Prolog 4. Kapitel: Listen Dozentin: Wiebke Petersen Kursgrundlage: Learn Prolog Now (Blackburn, Bos, Striegnitz) Petersen Prolog: Kapitel 4 1 Zusammenfassung Kapitel 3 Wir haben gelernt, dass die Rekursion
Fragen zum Nachdenken: Wie könnte man das Fehlen eines Attribut-Wertes interpretieren?
Attribut-Werte-Paare Eine Eigenschaft kann beschrieben werden durch ein Paar [a,w]. Dabei bezeichnet a das Attribut und w den konkreten Wert aus dem Wertebereich W a des Attributs. Die Eigenschaften eines
Gliederung. Programmierparadigmen. Einführung in Prolog: Einführung in Prolog: Programmieren in Prolog. Einführung Syntax Regeln Listen Relationen
Gliederung Programmierparadigmen Programmieren in Prolog D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg 1 Sommer 2011, 26. April
LISTEN. Programmierkurs Prolog p.1
LISTEN Programmierkurs Prolog p.1 Liste Listen sind rekursive Datenstrukturen, die dazu dienen geordnete Mengen von Elementen zu beschreiben. Man kann sich Listen in Prolog als Behälter vorstellen, die
Einführung in das Programmieren Prolog Sommersemester 2006. Teil 2: Arithmetik. Version 1.0
Einführung in das Programmieren Prolog Sommersemester 2006 Teil 2: Arithmetik Version 1.0 Gliederung der LV Teil 1: Ein motivierendes Beispiel Teil 2: Einführung und Grundkonzepte Syntax, Regeln, Unifikation,
Prolog Tutorial Norbert E. Fuchs Institut für Informatik Universität Zürich
Prolog Tutorial Norbert E. Fuchs Institut für Informatik Universität Zürich Inhalt Vom deklarativen Wissen zum prozeduralen Programm Vom Programm zur Berechnung Elemente eines Prolog-Programms Zugverbindungen
Terme. Heute: Terme vergleichen. Struktur von Termen. Operatoren. Logik in der Praxis Logikprogrammierung (Prolog) p.1
Terme Heute: Terme vergleichen Struktur von Termen Operatoren Logik in der Praxis Logikprogrammierung (Prolog) p.1 Termgleichheit: ==?- a == a.?- a == b. no?- X == Y. no?- X == X.?- X == a. no Logik in
Einführung in PROLOG IV Listen
Einführung in PROLOG IV Listen Beispiele für Listen in PROLOG: 1. [mia, vincent, jules, yolanda] 2. [mia, robber(honey_bunny), X, 2, mia] 3. [] 4. [mia, [vincent, jules], [butch, girlfriend(butch)]] 5.
Reihenfolge von Klauseln
Reihenfolge von Klauseln Bei der Programmierung in Prolog steht grundsätzlich die Repräsentation logischer Zusammenhänge im Vordergrund. Nichtsdestotrotz ist es unvermeidbar, die Mechanismen der Abarbeitung
5 Logische Programmierung
5 Logische Programmierung Logik wird als Programmiersprache benutzt Der logische Ansatz zu Programmierung ist (sowie der funktionale) deklarativ; Programme können mit Hilfe zweier abstrakten, maschinen-unabhängigen
Prolog 5. Kapitel: Arithmetik
Zusammenfassung Kapitel 4 Prolog 5. Kapitel: Arithmetik Dozentin: Wiebke Petersen Kursgrundlage: Learn Prolog Now (Blackburn, Bos, Striegnitz) Wir haben Listen als mächtige Datenstrukturen in Prolog kennengelernt
Prolog 3. Kapitel: Rekursion
Zusammenfassung: Kapitel 2 Prolog 3. Kapitel: Rekursion Wir haben gelernt wie komplexe Strukturen durch Matching in Prolog aufgebaut werden können und wie die Beweisführung in Prolog funktioniert. Dozentin:
Prolog 3. Kapitel: Rekursion
Prolog 3. Kapitel: Rekursion Dozentin: Wiebke Petersen Kursgrundlage: Learn Prolog Now (Blackburn, Bos, Striegnitz) Petersen Prolog: Kapitel 3 1 Zusammenfassung: Kapitel 2 Wir haben gelernt wie komplexe
Rekursion. rekursive Prädikate. deklarative vs. prozedurale Bedeutung von Prädikaten. Programmierkurs Prolog p.1
Rekursion rekursive Prädikate deklarative vs. prozedurale Bedeutung von Prädikaten Programmierkurs Prolog p.1 is digesting/2 is digesting(x,y) :- just ate(x,y). is digesting(x,y) :- just ate(x,z), is digesting(z,y).
Einführung in PROLOG. Christian Stocker
Einführung in PROLOG Christian Stocker Inhalt Was ist PROLOG? Der PROLOG- Interpreter Welcher Interpreter? SWI-Prolog Syntax Einführung Fakten, Regeln, Anfragen Operatoren Rekursion Listen Cut Funktionsweise
Auswahl von Klauseln und Atomen in Prolog
5.6 Prolog... ist die bekannteste Implementierung einer LP-Sprache; wurde Anfang der 1970er von Alain Colmerauer (Marseille) und Robert Kowalski (Edinburgh) entwickelt. konkretisiert den vorgestellten
Logische Programmierung
Logische Programmierung B-82 Deklaratives Programmieren in Prädikatenlogik: Problem beschreiben statt Algorithmus implementieren (idealisiert). Grundlagen: Relationen bzw. Prädikate (statt Funktionen);
26 Hierarchisch strukturierte Daten
Algorithmik II Peter Wilke Sommersemester 2005 Teil III Funktionale Programmierung 26 Hierarchisch strukturierte Daten Peter Wilke Algorithmik II Sommersemester 2005 1 Peter Wilke Algorithmik II Sommersemester
Induktion und Rekursion
Induktion und Rekursion Induktion und Rekursion Vorkurs Informatik Theoretischer Teil WS 013/14. Oktober 013 Vorkurs Informatik WS 013/14 1/1 Vollständige Induktion Vorkurs Informatik WS 013/14 /1 Ziel
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale
Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):
Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel
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
Dateien und Module. Heute: Ein- und Ausgabe. Module. Programmierkurs Prolog p.1
Dateien und Module Heute: Ein- und Ausgabe Module Programmierkurs Prolog p.1 Ausgabe auf den Bildschirm?- X= Hagrid, write( Hallo ), write(x). Hallo Hagrid X = Hagrid?- write(ron),nl,write(hermione). ron
Resolutionskalkül. wird t als eine Menge K t von Klauseln geschrieben, welche die einzelnen Maxterme repräsentieren:
Resolutionskalkül Ein Kalkül ist eine Kollektion von syntaktischen Umformungsregeln, die unter gegebenen Voraussetzungen aus bereits vorhandenen Formeln neue Formeln erzeugen. Der Resolutionskalkül besteht
Elementare Beweistechniken
Elementare Beweistechniken Beispiel: Satzform (Pythagoras) Voraussetzung: Gegeben sei ein beliebiges rechtwinkeliges Dreieck, die Länge der Hypothenuse sei c und die Längen der anderen Seiten seien a und
Strukturelle Rekursion und Induktion
Kapitel 2 Strukturelle Rekursion und Induktion Rekursion ist eine konstruktive Technik für die Beschreibung unendlicher Mengen (und damit insbesondere für die Beschreibung unendliche Funktionen). Induktion
Wiederholung von Äquivalenzumformungen (Lösen linearer Gleichungen): Wiederholung von Äquivalenzumformungen (Lösen von Ungleichungen):
Prof. U. Stephan WiIng 1. Wiederholung von Äquivalenzumformungen (Lösen linearer Gleichungen): Bitte lösen Sie die folgenden Aufgaben und prüfen Sie, ob Sie Lücken dabei haben. Bestimmen Sie jeweils die
Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie [email protected]
Inhalt SWP Funktionale Programme (2. Teil) Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie [email protected] Interpreter für funktionale Sprache
Stefan Schmid TU Berlin & T-Labs, Berlin, Germany. Reduktionen in der Berechenbarkeitstheorie
Stefan Schmid TU Berlin & T-Labs, Berlin, Germany Reduktionen in der Berechenbarkeitstheorie Problem: Wie komme ich von hier zum Hamburger Hbf? 2 Beispiel P1 Wie komme ich von hier zum Hamburger Hbf? kann
Diskrete Strukturen Kapitel 2: Grundlagen (Beweise)
WS 2014/15 Diskrete Strukturen Kapitel 2: Grundlagen (Beweise) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_14
2 Logikprogrammierung am Beispiel Prolog
2 Logikprogrammierung am Beispiel Prolog 2.1 Logikprogrammierung mit einfachen Daten 2.2 Variablenumbenennung 2.3 Syntax 2.4 Komplexe Daten 2.5 Der Cut 2.6 Negation als Fehlschlag 2.7 Literaturhinweise
Programmieren in Haskell Programmiermethodik
Programmieren in Haskell Programmiermethodik Peter Steffen Universität Bielefeld Technische Fakultät 12.01.2011 1 Programmieren in Haskell Bisherige Themen Was soll wiederholt werden? Bedienung von hugs
Fragen 1. Muss eine DTM ein Wort zu Ende gelesen haben, um es zu akzeptieren? a) Ja! b) Nein!
4 Turingmaschinen Eingabeband nicht nur lesen, sondern auch schreiben kann und die zudem mit ihrem Lese-Schreib-Kopf (LSK) nach links und rechts gehen kann. Das Eingabeband ist zudem in beide Richtungen
Fakten, Regeln und Anfragen
Fakten, Regeln und Anfragen Prolog Grundkurs WS 99/00 Christof Rumpf [email protected] 18.10.99 GK Prolog - Fakten, Regeln und Anfragen 1 Programmieren = Problemlösen Prolog ist eine deklarative
Fallstudie: Nim Spiel
Fallstudie: Nim Spiel Angeblich chinesischen Ursprungs (Jianshizi) Interessant für Spieltheorie: vollständig analysierbar Frühzeitig computerisiert 1939 Nimatron (Weltausstellung New York) 1951 Nimrod
Bestandteile von Prolog-Programmen. Syntax und Datenstrukturen. Legende Syntaxdiagramme. Lesen von Syntaxdiagrammen. Ein Programm besteht aus
Syntax und Datenstrukturen Bestandteile von Prolog-Programmen Übersicht Woraus besteht ein Prolog-Programm? Syntaxdiagramme für Bildungsregeln Programm, Klausel, Anfrage, 3 Sorten von en atomare e, Variablen,
Das Damenproblem - funktional und logisch
- funktional und logisch 1 1 Technische Fakultät Universität Bielefeld 14.5.2014 / Seminar Programmiersprachen Gliederung Einleitung 1 Einleitung 2 3 Problembeschreibung Definition Definition Sei N eine
SWP Prüfungsvorbereitung
20. Juni 2011 1 Grammatiken 2 LL(1) 3 EXP 4 Datentypen 5 LP Grammatiken Angabe Erstellen Sie First- und Follow-Mengen aller Non-Terminale der folgenden Grammatik. S a S S B y B A C A A b b A x A ɛ C c
Deklarative Semantik
7. Deklarative Semantik 7-1 Deklarative Semantik Bisher: Prolog als Programmiersprache. Operationale Semantik : Wie wird ein Programm ausgeführt? Welche Antworten werden berechnet? Jetzt: Prolog als logischer
Mengenlehre. Aufgaben mit Lösungen
Mengenlehre Aufgaben mit Lösungen Inhaltsverzeichnis 1 Hilfsmittel 1 1. Zahlenmengen........................................ 1 2. Symbole........................................... 1 3. Intervalle: Schreibweise...................................
Künstliche Intelligenz Unifikation, Backtracking, Rekursion und Listen in Prolog
Künstliche Intelligenz fikation, Backtracking, Rekursion und Listen in Prolog Stephan Schwiebert WS 2008/2009 Sprachliche Informationsverarbeitung Institut für Linguistik versität zu Köln Aufgabe: Stammbaum
Grundlagen der Theoretischen Informatik
Grundlagen der Theoretischen Informatik 4. Kellerautomaten und kontextfreie Sprachen (II) 11.06.2015 Viorica Sofronie-Stokkermans e-mail: [email protected] 1 Übersicht 1. Motivation 2. Terminologie
Bestandteile von Prolog-Programmen. Syntax und Datenstrukturen. Legende Syntaxdiagramme. Lesen von Syntaxdiagrammen
Syntax und Datenstrukturen Bestandteile von Prolog-Programmen Übersicht Woraus besteht ein Prolog-Programm? Syntaxdiagramme für Bildungsregeln Programm, Klausel, Anfrage, 3 Sorten von en atomare e, Variablen,
Lösungen zur Vorlesung Berechenbarkeit und Komplexität
Lehrstuhl für Informatik 1 WS 009/10 Prof. Dr. Berthold Vöcking 0.0.010 Alexander Skopalik Thomas Kesselheim Lösungen zur Vorlesung Berechenbarkeit und Komplexität. Zulassungsklausur Aufgabe 1: (a) Worin
Wann sind Codes eindeutig entschlüsselbar?
Wann sind Codes eindeutig entschlüsselbar? Definition Suffix Sei C ein Code. Ein Folge s {0, 1} heißt Suffix in C falls 1 c i, c j C : c i = c j s oder 2 c C und einen Suffix s in C: s = cs oder 3 c C
Expertensysteme Sprachverarbeitung Symbolische Informationsverarbeitung Graphentheoretische Probleme Planungsprobleme Rapid Prototyping...
Logische Programmierung Programm Menge von Formeln (Klauseln) Berechnung Beweis einer Formel (eines Ziels/Goals) mit Hilfe des Programms 17 Anwendungen Expertensysteme Sprachverarbeitung Symbolische Informationsverarbeitung
Grundlagen der Theoretischen Informatik
Grundlagen der Theoretischen Informatik 4. Kellerautomaten und kontextfreie Sprachen (III) 17.06.2015 Viorica Sofronie-Stokkermans e-mail: [email protected] 1 Übersicht 1. Motivation 2. Terminologie
Einführung in die Theoretische Informatik
Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Sascha Böhme, Lars Noschinski Sommersemester 2011 Lösungsblatt 9 25. Juli 2011 Einführung in die Theoretische Informatik
Ausgewählte unentscheidbare Sprachen
Proseminar Theoretische Informatik 15.12.15 Ausgewählte unentscheidbare Sprachen Marian Sigler, Jakob Köhler Wolfgang Mulzer 1 Entscheidbarkeit und Semi-Entscheidbarkeit Definition 1: L ist entscheidbar
Einführung in PROLOG III Rekursion
Einführung in PROLOG III Rekursion Betrachten wir die folgende Knowledge Base: teurer(x,y):- kostet_etwas_mehr(x,y). teurer(x,y):- kostet_etwas_mehr(x,z), teurer(z,y). kostet_etwas_mehr(big_mac,pommes).
Beispiel. Bsp.: Betrachte Schlussweise in: (3) folgt aus (1) und (2), siehe z.b. Resolutionsregel. was ist mit folgender Schlußweise:
Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 5.4 Prädikatenlogik mit Gleichheit Resolution 192 Beispiel Bsp.: Betrachte Schlussweise in: 1 Wenn es regnet, dann wird die Straße nass. R N
Künstliche Intelligenz Einführung in Prolog
Künstliche Intelligenz Einführung in Prolog Stephan Schwiebert WS 2009/20010 Sprachliche Informationsverarbeitung Institut für Linguistik Universität zu Köln Wiederholung: Prolog-Syntax Ein einfaches Expertensystem
Das Rucksackproblem. Definition Sprache Rucksack. Satz
Das Rucksackproblem Definition Sprache Rucksack Gegeben sind n Gegenstände mit Gewichten W = {w 1,...,w n } N und Profiten P = {p 1,...,p n } N. Seien ferner b, k N. RUCKSACK:= {(W, P, b, k) I [n] : i
Künstliche Intelligenz Logische Agenten & Resolution
Künstliche Intelligenz Logische Agenten & Resolution Stephan Schwiebert WS 2009/2010 Sprachliche Informationsverarbeitung Institut für Linguistik Universität zu Köln Inferenz-Algorithmus Wie könnte ein
SS2010 BAI2-LBP Gruppe 1 Team 07 Entwurf zu Aufgabe 4. R. C. Ladiges, D. Fast 10. Juni 2010
SS2010 BAI2-LBP Gruppe 1 Team 07 Entwurf zu Aufgabe 4 R. C. Ladiges, D. Fast 10. Juni 2010 Inhaltsverzeichnis 4 Aufgabe 4 3 4.1 Sich mit dem Programmpaket vertraut machen.................... 3 4.1.1 Aufgabenstellung.................................
Lösung Probeklausur Informatik I
Lösung Probeklausur Informatik I 1 Lösung Aufgabe 1 (5 Punkte) Algorithmen und Programme Was ist der Unterschied zwischen einem Algorithmus und einem Programm? Ein Algorithmus ist eine Vorschrift zur Durchführung
Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell
Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners
4 Programmieren in Java III
1 4 Programmieren in Java III 4.1 Rekursive Funktionen und Prozeduren Ein Unterprogramm kann sich selbst aufrufen. Dabei sind, in einer korrekt entworfenen Programmiersprache, die lokalen Variablen der
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 139 Unentscheidbarkeit Überblick Zunächst einmal definieren wir formal
Electronic Design Automation (EDA) Technology Mapping
Electronic Design Automation (EDA) Technology Mapping Überblick digitale Synthese Technology Mapping Abbildung durch die Abdeckung eines Baumes Partitionierung des DAG Dekomposition und Abdeckung Beispiel
Formale Grundlagen der Informatik 1 Kapitel 19. Syntax & Semantik
Formale Grundlagen der Informatik 1 Kapitel 19 & Frank Heitmann [email protected] 23. Juni 2015 Frank Heitmann [email protected] 1/25 Motivation Die ist eine Erweiterung
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 WS 11/12 155 Überblick Zunächst einmal definieren wir formal den Begriff
2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung
2 Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 2 Woche: Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 24/ 44 Zwei Beispiele a 0
Informatik für Schüler, Foliensatz 18 Rekursion
Prof. G. Kemnitz Institut für Informatik, Technische Universität Clausthal 26. März 2009 1/10 Informatik für Schüler, Foliensatz 18 Rekursion Prof. G. Kemnitz Institut für Informatik, Technische Universität
Induktive Beweise und rekursive Definitionen
Induktive Beweise und rekursive Definitionen Vorlesung Logik in der Informatik, HU Berlin 1. Übungsstunde Beweis durch vollständige Induktion über N Aufgabe 1 Zeige, dass für alle n N gilt: n 2 i = 2 n+1
Basiskonstrukte von Haskell
Basiskonstrukte von Haskell PD Dr. David Sabel Goethe-Universität Frankfurt am Main 29. September 2015 Basistypen und Operationen Ganzzahlen: Int = Ganzzahlen beschränkter Länge Integer = Ganzzahlen beliebiger
Halbgruppen, Gruppen, Ringe
Halbgruppen-1 Elementare Zahlentheorie Einige Bezeichnungen Halbgruppen, Gruppen, Ringe Die Menge N 0 der natürlichen Zahlen 0, 1, 2, Die Menge N = N 1 der von Null verschiedenen natürlichen Zahlen Die
Musterlösung zur 2. Aufgabe der 4. Übung
Musterlösung zur 2. Aufgabe der 4. Übung Da viele von Euch anscheinend noch Probleme mit dem Entfalten haben, gibt es für diese Aufgabe eine Beispiellösung von uns. Als erstes wollen wir uns noch einmal
Gerade, ungerade oder weder noch? Algebraische und graphische Beweise. 4-E1 Vorkurs, Mathematik
Gerade, ungerade oder weder noch? Algebraische und graphische Beweise 4-E1 Symmetrie einer Funktion: Aufgabe 3 Bestimmen Sie algebraisch und graphisch, ob die Funktionen gerade oder ungerade sind, oder
Prolog basiert auf Prädikatenlogik
Software-Technologie Software-Systeme sind sehr komplex. Im Idealfall erfolgt die Programmierung problemorientiert, während die notwendige Übertragung in ausführbare Programme automatisch erfolgt. Prolog-Philosophie:
Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Überladung und Konversion in Haskell. Typisierung in Haskell
Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Sommersemester
Logik-Grundlagen. Syntax der Prädikatenlogik
Logik-Grundlagen X 1 :...: X k : ( A 1 A 2... A m B 1 B 2... B n ) Logische und funktionale Programmierung - Universität Potsdam - M. Thomas - Prädikatenlogik III.1 Syntax der Prädikatenlogik Prädikat:
Einführung in die Theoretische Informatik
Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Sascha Böhme, Lars Noschinski Sommersemester 2011 Lösungsblatt 8 18. Juli 2011 Einführung in die Theoretische Informatik
Elementare Geometrie Wiederholung 1
Elementare Geometrie Wiederholung 1 Thomas Zink 3.7.2017 Parallelverschiebung, Aufgabe 1 Es seien g und h zwei Geraden. Es sei AB eine Strecke. Man zeichne eine Strecke A 1 B 1, die die beiden Geraden
Theorembeweiser und ihre Anwendungen
Theorembeweiser und ihre Anwendungen Prof. Dr.-Ing. Gregor Snelting Dipl.-Inf. Univ. Daniel Wasserrab Lehrstuhl Programmierparadigmen IPD Snelting Universität Karlsruhe (TH) IPD Snelting, Uni Karlsruhe
Empfehlenswerte Referenzen
Wenn Google etwas nicht finden kann, fragen sie Jack Bauer. ("Fakten über Jack Bauer") Inhalt Empfehlenswerte Referenzen...1 0 Wozu reguläre Ausdrücke?...1 1 Die Elemente regulärer Ausdrücke...2 2 Ein
Resolutionsalgorithmus
112 Resolutionskalkül Mit dem Begriff Kalkül bezeichnet man eine Menge von syntaktischen Umformungsregeln, mit denen man semantische Eigenschaften der Eingabeformel herleiten kann. Für den Resolutionskalkül:
Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2008/09 Einführung in die Informatik 2 Klausur Prof. Dr. Helmut Seidl, T. M. Gawlitza, S. Pott,
Methoden der KI in der Biomedizin Programmieren in Prolog III
Methoden der KI in der Biomedizin Programmieren in Prolog III Karl D. Fritscher Prolog-Negation Fehlen einer Information und explizites Negieren einer Information werden in Prolog nicht unterschieden Eine
Tokenizer. Motivation. Ein einfacher Tokenizer. Zweck und Funktion eines Tokenizers. These are words. Eingabe = [these,are,words,'.'].
Tokenizer Motivation Übersicht Was sind Tokenizer? Der Tokenizer von Covington Aufrufdiagramm Definition und Arbeitsweise der einzelnen Prädikate Programmiertechnik Look-Ahead Wort- und Satzgrenzen erkennen
{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel
Inhalt Hoare-Kalkül Formale Verifizierung Hoare-Kalkül while-sprache Terminierung Partielle / totale Korrektheit 4.0 Hoare-Kalkül entwickelt von C.A.R. (Tony) Hoare (britischer Informatiker), 1969 formales
Induktive Beweise und rekursive Definitionen
Induktive Beweise und rekursive Definitionen Vorlesung Logik in der Informatik, HU Berlin 1. Übungsstunde Beweis durch vollständige Induktion über N Aufgabe 1 Zeige, dass für alle n N gilt: n 2 i = 2 n+1
