HASKELL KAPITEL 8. Bäume
|
|
|
- Margarethe Fried
- vor 7 Jahren
- Abrufe
Transkript
1 HASKELL KAPITEL 8 Bäume
2 Baum rekursiv definierte Datenstruktur nicht linear vielerlei Varianten: Struktur der Verzweigung, Ort der gespeicherten Information (Knoten, Kanten, Blätter ) 2
3 Binärbaum Jeder Knoten hat keinen oder zwei Nachfolger Ort der gespeicherten Information: Blätter data Btree α = Leaf α Fork (Btree α ) (Btree α ) Beispiele: Fork ( Leaf 1) (Fork (Leaf 2) (Leaf 3)) Fork (Fork (Leaf 1) (Leaf 2)) ( Leaf 3) Fork Fork Fork Leaf 1 Leaf 2 Leaf 3 Fork Leaf 1 Leaf 2 Leaf 3 3
4 Binärbaum Jeder Knoten hat keinen oder zwei Nachfolger Ort der gespeicherten Information: Blätter data Btree α = Leaf α Fork (Btree α ) (Btree α ) Beispiele: Fork ( Leaf 1) (Fork (Leaf 2) (Leaf 3)) Fork (Fork (Leaf 1) (Leaf 2)) ( Leaf 3) Darstellung der Beispiele als Klammerstruktur: 1 ( 2 3 ) ( 1 2 ) 3 4
5 Induktion auf Binärbäumen Aufgabe: Zeige, dass eine Eigenschaft P für jeden Binärbaum xt gilt. Verfahren: 1. Zeige P(xt) für den Fall, dass xt ein Blatt ist. 2. Zeige P( Fork ( yt ) ( zt )) unter der Annahme, dass yt und zt Bäume sind, und dass P(yt) und P(zt) gelten. 3. Falls xt unendlich wachsen kann: Zeige P( ). 5
6 Blattzahl und Blattliste size :: Btree α Int size (Leaf x ) = 1 size ( Fork xt yt ) = size xt + size yt flatten :: Btree α [α] flatten (Leaf x) = [x] flatten( Fork xt yt ) = flatten xt ++ flatten yt 6
7 Zahl innerer Knoten und Höhe nodes :: Btree α Int nodes (Leaf x ) = 0 nodes ( Fork xt yt ) = 1 + nodes xt + nodese yt height :: Btree α Int height (Leaf x) = 0 height( Fork xt yt ) = 1 + (height xt max height yt) Haskell Schlüsselwort: Maximum in Infix-Notation 7
8 Tiefe der Blätter ersetze jeden Knoten durch die Länge seines Weges zur Wurzel depth :: Btree α Btree Int depth = down 0 down :: Int Btree α Btree Int down n (Leaf x) = Leaf n down n ( Fork xt yt ) = Fork (down (n + 1) xt ) (down (n + 1) yt ) 8
9 größtes Blatt maxbtree :: (Ord α) e Btree α α maxbtree(leaf x) = x maxbtree( Fork xt yt ) = ( maxbtree xt ) max ( maxbtree yt ) 9
10 mapbtree ersetze jedes Blatt a durch f a. mapbtree :: (α β) Btree α Btreeβ mapbtree f (Leaf x) = Leaf ( f x) mapbtree f ( Fork xt yt ) = Fork ( mapbtree f xt ) ( mapbtree f yt) 10
11 foldbtree eine vielseitig nutzbare Funktion. Ergänzt mapbtree (für die Transformation von Blättern) um eine Transformation für Teilbäume. foldbtree :: (α β ) (β β β ) Btree α β foldbtree f g (Leaf x) = f x foldbtree f g ( Fork xt yt ) = g ( foldbtree f g xt) (foldbtree f g yt ) 11
12 size mit foldbtree foldbtree :: (α β ) (β β β ) Btree α β foldbtree f g (Leaf x) = f x foldbtree f g ( Fork xt yt ) = g ( foldbtree f g xt) (foldbtree f g yt ) size :: Btree α Int size (Leaf x ) = 1 size ( Fork xt yt ) = size xt + size yt size = foldbtreee (const 1) (+) mit const :: α β α const x y = x 12
13 height mit foldbtree foldbtree :: (α β ) (β β β ) Btree α β foldbtree f g (Leaf x) = f x foldbtree f g ( Fork xt yt ) = g ( foldbtree f g xt) (foldbtree f g yt ) height :: Btree α Int height (Leaf x) = 0 height( Fork xt yt ) = 1 + (height xt max height yt) height = foldbtreee (const 0) ( ) where m n = 1 + (m max n) 13
14 flatten mit foldbtree foldbtree :: (α β ) (β β β ) Btree α β foldbtree f g (Leaf x) = f x foldbtree f g ( Fork xt yt ) = g ( foldbtree f g xt) (foldbtree f g yt ) flatten :: Btree α [α] flatten (Leaf x) = [x] flatten( Fork xt yt ) = flatten xt ++ flatten yt flatten = foldbtreee wrap (++) mit wrap :: α [α] wrap x = [x] 14
15 mapbtree mit foldbtree foldbtree :: (α β ) (β β β ) Btree α β foldbtree f g (Leaf x) = f x foldbtree f g ( Fork xt yt ) = g ( foldbtree f g xt) (foldbtree f g yt ) mapbtree :: (α β ) Btree α Btreeβ mapbtree f (Leaf x) = Leaf ( f x) mapbtree f ( Fork xt yt ) = Fork ( mapbtree f xt ) ( mapbtree f yt) Leaf :: α Btree α Fork :: Btree α Btree α Btree α mapbtree f = foldbtreee (Leaf f ) Fork 15
16 ergänzte Binärbäume Jeder knoten trägt Information. Beispiel: Knotenzahl seines Teilbaumes: data Atree α = Leaf α Fork In (Btree α ) (Btree α ) etc. geht alles mit foldbtree 16
17 HASKELL KAPITEL 9 Module
18 Modularisierung Modul = Eine Struktureinheit im Programm, kapselt eine Menge von Funktionsdefinitionen, Typen, etc. Modulersteller Modulbenutzer - möchte nur einige der Funktionen - braucht oft nur einige Funktionen für Nutzer freigegeben -mag evt. andere Namen -Implementation änderbar -will vielleicht importierte Funktionen weitergeben
19 Module dienen der Strukturierung von Programmen; sie haben eine klare Schnittstelle (Interface), in der festgelegt wird, was sie exportieren und was sie importieren. Sie bieten: - unabhängige Programmierung von Programmteilen - - separate Compilation von Programmteilen - - Bibliotheken von Komponenten können wieder verwendet werden
20 Beispiele: module mymodule1 where f =... g =... Default: alles wird exportiert module mymodule2 where import mymodule1 h =... Importiert f und g
21 module mymodule3 (f,...) where f =... g =... Exportiert nur f,... module mymodule4 (f, module bla) where import bla f =... g =... exportiert f und re-exportiert alles aus bla
22 import mymodule1 (f,...) Importiert nur f,... import mymodule1 hiding (f,...) Importiert alles ausser f,... import mymodule1 renaming (f to fff, g to ggg) Import mit Umbenennung
23 HASKELL KAPITEL 10 Zusammenfassung
24 Haskell hat ein Universum U von Werten. U ist in Teilmengen partitioniert. Jede solche Teilmenge von U ist ein Typ. Vordefinierte (einfache) Typen: Integer, Float, Bool, Char (natürliche Zahlen, Gleitkomma-Zahlen, die logischen Werte, die Symbole) Zusammengesetzte Typen: Funktionen, Listen, Bäume, etc. über gegebenen Typen
25 strenge Typisierung Jeder Term gehört zu genau einem Typ. Konsequenz: quad :: Integer Integer quad x = square square x erzeugt einen Typ-Fehler, weil square für Float definiert ist. Vorteil strenger Typisierung: prima Erkennung von Fehlern. Zwingt den Programmierer zu klarem Denken. 18
26 Polymorphe Typen Beispiel: square :: Integer Integer sqrt :: Integer Float Daraus ableitbar: square square :: Integer Integer sqrt square :: Integer Float Problem: braucht 2 verschiedene Def. von : ( ) :: (Int Int ) (Int Int ) (Int Int) ( ) :: (Int Float ) (Int Int ) (Int Float ) Lösung: Typ-Variablen α, β, γ. Damit: ( ) :: (β γ) (α β) (α γ) 19
27 Verwendung von Typ-Variablen Beispiel: Die Funktion error soll ein (Text-)Argument auf unspezifizierte Weise weiterverarbeiten. Nicht einmal der Typ des Resultats ist bekannt. Mit Typ- Variable sei error :: String α Daraus konstruierbar: fact :: Integer Integer Integer fact n x < 0 = error negative argument to fact x == 0 = 1 x > 0 = n * fact (n 1) 20
28 Grundlegende Fragen Wie bezieht sich Haskell (und andere Programmiersprachen) auf die Realität? Wo zweigt die Informatik von der Mathematik ab? Was bedeuten rechentechnische Schranken für die Semantik der Sprachen? Was ist die Rolle von??
29 Hintergrund: Realität und Mathematik Menge (nach Cantor), Eine Zusammenfassung von Gegenständen unserer Anschauung oder unseres Denkens Struktur (nach Tsarski): eine Menge ( Träger ) der Struktur, zusammen mit endlich vielen Konstante und endlich vielen Operationen. Basis der Prädikatenlogik. Programmieren: Strukturen konstruieren... so gut wie möglich 22
30 Haskell: Werte und Typen Universum (universe) die Menge der uns interessierenden Dinge. Wert (value) Elemente des Universums. Für Haskell das einzig wichtige an Werten: zwei Werte sind gleich oder verschieden Typ (Type) Struktur mit einer Teilmenge des Universums als Träger 23
31 Haskell: Umgang mit Typen Einige Typen gibt Haskell vor. Alle Typen sind implementierbar, einige um den Preis von Speicherüberlauf (Integer) oder ungenauen Rechnens (Float). Weitere Typen kann der Programmierer selbst ableiten, aus gegebenen und bereits abgeleiteten Typen. 24
32 Haskell: irreguläres Verhalten Überschreiten von Speicherschranken Überschreiten von Zeitschranken inkonsistente Typen im Programm was bedeutet das semantisch was bedeutet das mathematisch? alles abbilden auf! Sorgfalt im Umgang mit nicht-strikte Funktionen sind unausweichlich aber verhalten sich schnell nicht so, wie man will 25
33 HASKELL Ende Ich wünsche allen Studentinnen und Studenten erfolgreiche Prüfungen und eine erholsame Semesterpause!
34 Modularisierung Modul = Eine Struktureinheit im Programm, kapselt eine Menge von Funktionsdefinitionen, Typen, etc. Modulersteller Modulbenutzer - möchte nur einige der Funktionen - braucht oft nur einige Funktionen für Nutzer freigegeben -mag evt. andere Namen -Implementation änderbar -will vielleicht importierte Funktionen weitergeben
35 Module dienen der Strukturierung von Programmen; sie haben eine klare Schnittstelle (Interface), in der festgelegt wird, was sie exportieren und was sie importieren. Sie bieten: - unabhängige Programmierung von Programmteilen - - separate Compilation von Programmteilen - - Bibliotheken von Komponenten können wieder verwendet werden
36 Beispiele: module mymodule1 where f =... g =... Default: alles wird exportiert module mymodule2 where import mymodule1 h =...
37 Importiert f und g module mymodule3 (f,...) where f =... g =... Exportiert nur f,... module mymodule4 (f, module bla) where import bla f =... g =...
38 exportiert f und re-exportiert alles aus bla import mymodule1 (f,...) Importiert nur f,... import mymodule1 hiding (f,...) Importiert alles ausser f,... import mymodule1 renaming (f to fff, g to ggg)
39 Import mit Umbenennung
Agenda. 1 Einleitung. 2 Binäre Bäume. 3 Binäre Suchbäume. 4 Rose Trees. 5 Zusammenfassung & Ausblick. Haskell Bäume. Einleitung.
Vortrag: Bäume in Haskell Bäume in Haskell Vortrag Christoph Forster Thomas Kresalek Fachhochschule Wedel University of Applied Sciences 27. November 2009 Christoph Forster, Thomas Kresalek 1/53 Vortrag
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
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
4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.
Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel
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
Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen
Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter
Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10
Binäre Bäume Bäume gehören zu den wichtigsten Datenstrukturen in der Informatik. Sie repräsentieren z.b. die Struktur eines arithmetischen Terms oder die Struktur eines Buchs. Bäume beschreiben Organisationshierarchien
Funktionale Programmierung mit Haskell
Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2011 I. Die
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
Tag 7. Pattern Matching und eigene Datentypen
Tag 7 Pattern Matching und eigene Datentypen Heute werden wir eine Technik kennenlernen, die dafür sorgt, daß wir sehr viel übersichtlichere und kürzere Programme schreiben können. Als Überleitung auf
expr :: Expr expr = Mul (Add (Const 3) (Const 4)) (Div (Sub (Const 73) (Const 37)) (Const 6))
1 - Korrektur 2 - Abstrakte Datentypen für arithmetische Ausdrücke Der Datentyp Wir beginnen zunächst mit dem algebraischen Datentyp für Ausdrücke. Hierfür definieren wir einen Konstruktor Number für Zahlen,
Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
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
Binäre Bäume Darstellung und Traversierung
Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail [email protected] Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.
Effizienz in Haskell
Informatikseminar WS03/04 Oliver Lohmann mi4430 1 Gliederung Allgemeine Definition von Effizienz Lazy Evaluation Asymptotische Analyse Parameter Akkumulation Tupling Speicherplatz kontrollieren Allgemeine
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen
zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
Algorithmen und Datenstrukturen Suchbaum
Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen
Zahlen in Haskell Kapitel 3
Einführung in die Funktionale Programmiersprache Haskell Zahlen in Haskell Kapitel 3 FH Wedel IT-Seminar: WS 2003/04 Dozent: Prof. Dr. Schmidt Autor: Timo Wlecke (wi3309) Vortrag am: 04.11.2003 - Kapitel
Vorlesung Datenstrukturen
Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum
Programmieren in Haskell Einführung
Programmieren in Haskell Einführung Peter Steffen Universität Bielefeld Technische Fakultät 16.10.2009 1 Programmieren in Haskell Veranstalter Dr. Peter Steffen Raum: M3-124 Tel.: 0521/106-2906 Email:
XML Verarbeitung mit einer in Haskell eingebetteten DSL. Manuel Ohlendorf (xi2079)
XML Verarbeitung mit einer in Haskell eingebetteten DSL Manuel Ohlendorf (xi2079) 2.0.200 Manuel Ohlendorf Übersicht 1 2 Einführung Datenstruktur Verarbeitung Vergleich mit anderen Verfahren Fazit 2 Übersicht
Tutorium - Haskell in der Schule. Ralf Dorn - Dennis Buchmann - Felix Last - Carl Ambroselli
Tutorium - Haskell in der Schule Wer sind wir? Otto-Nagel-Gymnasium in Berlin-Biesdorf Hochbegabtenförderung und MacBook-Schule Leistungskurse seit 2005 Einführung Was ist funktionale Programmierung? Einführung
zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
Mathematik für Informatiker I
Mathematik für Informatiker I Mitschrift zur Vorlesung vom 19.10.2004 In diesem Kurs geht es um Mathematik und um Informatik. Es gibt sehr verschiedene Definitionen, aber für mich ist Mathematik die Wissenschaft
[email protected] SS 2013 1.4-1 / 16 schrittweise Verfeinerung -> Wirth, 1971, Programm Development by Stepwise Refinement
IMPLEMENTIERUNGSSTRATEGIE bis jetzt: Programmstruktur für Programmieren im Kleinen jetzt: Programmstruktur für Programmieren im Großen zunächst allgemein, d. h. sprachunabhängig [email protected]
Funktionale Programmiersprachen
Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte
4.Grundsätzliche Programmentwicklungsmethoden
4.Grundsätzliche Programmentwicklungsmethoden 1.1 Grundlage strukturierter und objektorientierter Programmierung Begriff Software Engineering - umfaßt den gezielten Einsatz von Beschreibungsmitteln, Methoden
Binärbäume als weiteres Beispiel für abstrakte Datentypen in PVS mit in Knoten gespeicherten Werten vom Typ T:
Binäre Bäume Binärbäume als weiteres Beispiel für abstrakte Datentypen in PVS mit in Knoten gespeicherten Werten vom Typ T: BinTree [T: TYPE]: DATATYPE empty: empty? node (key: T, left:bibtree, right:bibtree):
Algorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 7. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik [email protected] aufbauend auf den Kursen der letzten Jahre von E. Rahm, G. Heyer,
Funktionale Programmierung
Funktionale Programmierung Jörg Kreiker Uni Kassel und SMA Solar Technology AG Wintersemester 2011/2012 2 Teil II Typen mit Werten und Ausdruck, sogar listenweise 3 Haskell Programme Programm Module ein
Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12
Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben
Vorkurs Mathematik und Informatik Mengen, natürliche Zahlen, Induktion
Vorkurs Mathematik und Informatik Mengen, natürliche Zahlen, Induktion Saskia Klaus 07.10.016 1 Motivation In den ersten beiden Vorträgen des Vorkurses haben wir gesehen, wie man aus schon bekannten Wahrheiten
Grundlagen der Programmierung 2. Bäume
Grundlagen der Programmierung 2 Bäume Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 24. Mai 2006 Graphen Graph: Menge von Knoten undzugehörige (gerichtete oder ungerichtete)
Algorithmen, Datenstrukturen und Programmieren II SS 2001
Algorithmen, Datenstrukturen und Programmieren II SS 2001 1. InfixToPostfixConverter: Üblicherweise werden mathematische Ausdrücke in infix-notation geschrieben, d.h. der Operator steht zwischen den Operanden,
Fakultät Wirtschaftswissenschaft
Fakultät Wirtschaftswissenschaft Matrikelnr. Name Vorname KLAUSUR: Entwurf und Implementierung von Informationssystemen (32561) TERMIN: 11.09.2013, 14.00 16.00 Uhr PRÜFER: Univ.-Prof. Dr. Stefan Strecker
Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.
Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens
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: [email protected]
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 )
Definition B : Menge der binären Bäume, rekursiv definiert durch die Regeln: ist ein binärer Baum sind t l, t r binäre Bäume, so ist auch t =, t l, t r ein binärer Baum nur das, was durch die beiden vorigen
Semantische Bewertung und personalisierte Erzeugung von Übungsaufgaben zu Mathematik, Logik, Informatik
Semantische Bewertung und personalisierte Erzeugung von Übungsaufgaben zu Mathematik, Logik, Informatik Johannes Waldmann (HTWK Leipzig) September 2, 2014 Beispiel (Sicht des Studenten) Gesucht ist ein
2.11 Kontextfreie Grammatiken und Parsebäume
2.11 Kontextfreie Grammatiken und Parsebäume Beispiel: Beispiel (Teil 3): Beweis für L(G) L: Alle Strings aus L der Länge 0 und 2 sind auch in L(G). Als Induktionsannahme gehen wir davon aus, dass alle
Heutiges Thema... Datenstrukturen in Haskell... Algebraische Datentypen (data Tree =...) Typsynonyme (type Student =...)
Heutiges Thema... Datenstrukturen in Haskell... Algebraische Datentypen (data Tree =...) Typsynonyme (type Student =...) Spezialitäten (newtype State =...) Funktionale Programmierung (WS 2007/2008) / 4.
WS 2009/10. Diskrete Strukturen
WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910
Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens
Grundlagen von C Jonas Gresens Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität
Theoretische Grundlagen der Informatik
Theoretische Grundlagen der Informatik Vorlesung am 10.01.2012 INSTITUT FÜR THEORETISCHE 0 KIT 12.01.2012 Universität des Dorothea Landes Baden-Württemberg Wagner - Theoretische und Grundlagen der Informatik
Grammatiken. Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V. Startsymbol S V. Kurzschreibweise G = (V, Σ, P, S)
Grammatiken Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V Startsymbol S V Produktionen P ( (V Σ) \ Σ ) (V Σ) Kurzschreibweise G = (V, Σ, P, S) Schreibweise für Produktion (α, β) P: α β 67 /
Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany [email protected]. Stammbaum. Stammbaum. Stammbaum
lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany [email protected]. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum
Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen
Was bisher geschah Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen Syntax: Signatur Semantik: Axiome (FOL-Formeln, meist
Tutoren Simon Andermatt Lukas Beck. Alexis Peter Thomas Ritter
UNIVERSITÄT BASEL Dozent Prof. Dr. Thomas Vetter Departement Informatik Assistenten Brian Amberg Andreas Forster Tutoren Simon Andermatt Lukas Beck Webseite http://informatik.unibas.ch/lehre/hs10/cs101/index.html
Formale Sprachen. Script, Kapitel 4. Grammatiken
Formale Sprachen Grammatiken Script, Kapitel 4 erzeugen Sprachen eingeführt von Chomsky zur Beschreibung natürlicher Sprache bedeutend für die Syntaxdefinition und -analyse von Programmiersprachen Automaten
Funktionale Programmierung ALP I. Funktionen höherer Ordnung. Teil 2 SS 2013. Prof. Dr. Margarita Esponda. Prof. Dr.
ALP I Funktionen höherer Ordnung Teil 2 SS 2013 Funktionen höherer Ordnung Nehmen wir an, wir möchten alle Zahlen innerhalb einer Liste miteinander addieren addall:: (Num a) => [a -> a addall [ = 0 addall
Funktionale Programmierung mit Haskell
Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel
KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN
KONSTRUKTION VON ROT-SCHWARZ-BÄUMEN RALF HINZE Institut für Informatik III Universität Bonn Email: [email protected] Homepage: http://www.informatik.uni-bonn.de/~ralf Februar, 2001 Binäre Suchbäume
Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.
Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.
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
Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik
Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen
Inhaltsverzeichnis. Einführende Bemerkungen 11. Das Fach Informatik 11 Zielsetzung der Vorlesung Grundbegriffe
Inhaltsverzeichnis Einführende Bemerkungen 11 Das Fach Informatik 11 Zielsetzung der Vorlesung 12 1. Grundbegriffe 1 3 1.1 1.2 1.3 1.4 1.5 1.6 1.7 Information und Nachricht 1.1.1 Information 1.1.2 Nachricht
Praktische Informatik 3: Funktionale Programmierung Vorlesung 3 vom : Algebraische Datentypen
16:01:59 2017-01-17 1 [35] Praktische Informatik 3: Funktionale Programmierung Vorlesung 3 vom 01.11.2016: Algebraische Datentypen Christoph Lüth Universität Bremen Wintersemester 2016/17 PI3 WS 16/17
Formale Methoden 1. Gerhard Jäger 12. Dezember Uni Bielefeld, WS 2007/2008 1/22
1/22 Formale Methoden 1 Gerhard Jäger [email protected] Uni Bielefeld, WS 2007/2008 12. Dezember 2007 2/22 Bäume Baumdiagramme Ein Baumdiagramm eines Satzes stellt drei Arten von Information
Programmierung und Modellierung
Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:
Programmierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Große Übung #2 Phillip Keldenich, Arne Schmidt 10.11.2016 Organisatorisches Fragen? Checkliste: Anmeldung kleine Übungen Anmeldung Mailingliste Dies ersetzt nicht die Prüfungsanmeldung!
Funktionale Programmierung mit Haskell. Jan Hermanns
Funktionale Programmierung mit Haskell Jan Hermanns 1 Programmiersprachen imperativ deklarativ konventionell OO logisch funktional Fortran Smalltalk Prolog Lisp C Eiffel ML Pascal Java Haskell 2 von Neumann
Rhetorik und Argumentationstheorie.
Rhetorik und Argumentationstheorie 2 [[email protected]] Teil 2 Was ist ein Beweis? 2 Wichtige Grundlagen Tautologie nennt man eine zusammengesetzte Aussage, die wahr ist, unabhängig vom
ALP I Einführung in Haskell
ALP I Einführung in Haskell WS 2012/2013 Was ist Haskell? Haskell ist eine rein Funktionale Programmiersprache mit einer nach Bedarf Auswertung-Strategie oder "Lazy Evaluation". Was bedeutet rein funktional?
DATENSTRUKTUREN UND ZAHLENSYSTEME
DATENSTRUKTUREN UND ZAHLENSYSTEME RALF HINZE Institute of Information and Computing Sciences Utrecht University Email: [email protected] Homepage: http://www.cs.uu.nl/~ralf/ March, 2001 (Die Folien finden
Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete
Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:
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
Tutoraufgabe 1 (Datenstrukturen in Haskell):
Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Allgemeine Die Hausaufgaben sollen in Gruppen von je 2 Studierenden aus der gleichen Kleingruppenübung (Tutorium)
Funktionale Programmierung mit Haskell
Funktionale Programmierung mit Haskell Prof. Dr. Hans J. Schneider Lehrstuhl für Programmiersprachen und Programmiermethodik Friedrich-Alexander-Universität Erlangen-Nürnberg Sommersemester 2011 I. Die
Theoretische Informatik I
Theoretische nformatik inheit 3 Kontextfreie Sprachen 1. Kontextfreie Grammatiken 2. Pushdown Automaten 3. igenschaften kontextfreier Sprachen Theoretische nformatik inheit 3.1 Kontextfreie Grammatiken
Grundbegriffe der Informatik
Grundbegriffe der Informatik Einheit 8: kontextfreie Grammatiken Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2009/2010 1/37 Überblick Kontextfreie Grammatiken
Geordnete Binärbäume
Geordnete Binärbäume Prof. Dr. Martin Wirsing in Zusammenarbeit mit Gilbert Beyer und Christian Kroiß http://www.pst.ifi.lmu.de/lehre/wise-09-10/infoeinf/ WS 09/10 Einführung in die Informatik: Programmierung
Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha Scherrer. Grundlagen der Programmierung (CS101) - Blatt 8 Theorie [4 Punkte] - Praxis [12 Punkte]
UNIVERSITÄT BASEL Dozent Prof. Dr. Thomas Vetter Departement Informatik Bernoullistrasse 16 CH 4056 Basel Assistenten Bernhard Egger Andreas Forster Tutoren Jan Ebbe Pat Mächler Valentino Rugolo Sascha
Definieren Sie eine Funktion circlearea zur Berechnung der Fläche eines Kreises mit gegebenen Radius (Float).
Haskell Funktionen Definieren Sie eine Funktion circlearea zur Berechnung der Fläche eines Kreises mit gegebenen Radius (Float). circlearea :: Float -> Float circlearea radius = 2 * pi * radius^2 Definieren
2.5 Primitive Datentypen
2.5 Primitive Datentypen Wir unterscheiden 5 primitive Datentypen: ganze Zahlen -2, -1, -0, -1, -2,... reelle Zahlen 0.3, 0.3333..., π, 2.7 10 4 Zeichen a, b, c,... Zeichenreihen "Hello World", "TIFI",
Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda
Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume
Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer:
Binäre Suchbäume (binary search trees, kurz: bst) Datenstruktur zum Speichern einer endlichen Menge M von Zahlen. Genauer: Binärbaum T mit n := M Knoten Jeder Knoten v von T ist mit einer Zahl m v M markiert.
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume
1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten
Euler-Venn-Diagramme
Euler-Venn-Diagramme Mengendiagramme dienen der graphischen Veranschaulichung der Mengenlehre. 1-E1 1-E2 Mathematische Symbole c leere Menge Folge-Pfeil Äquivalenz-Pfeil Existenzquantor, x für (mindestens)
Java Einführung VARIABLEN und DATENTYPEN Kapitel 2
Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen
Suchbäume mit inneren Knoten verschiedener Knotengrade.
Was bisher geschah rekursive Datenstrukturen: lineare Datenstrukturen: Liste, Stack, Queue hierarchische Datenstrukturen: Bäume allgemeine Bäume Binäre Bäume Unäre Bäume = Listen Tiefe eines Knotens in
Formale Sprachen, reguläre und kontextfreie Grammatiken
Formale Sprachen, reguläre und kontextfreie Grammatiken Alphabet A: endliche Menge von Zeichen Wort über A: endliche Folge von Zeichen aus A A : volle Sprache über A: Menge der A-Worte formale Sprache
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
Einführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger [email protected] WiSe 2012/13 1 Rückblick Schleifen while do-while for Methoden Verfahren: Intervallschachtelung 2 Wo
Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14
Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 2. April
Angewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens mit C++ und Matlab SS2013 Organisatorisches Dozenten Gruppe: Ango (2.250),
Kapitel 7: Benutzerdefinierte Datentypen
Kapitel 7: Benutzerdefinierte Datentypen Andreas Abel LFE Theoretische Informatik Institut für Informatik Ludwig-Maximilians-Universität München 10. Juni 2011 Quelle: Martin Wirsing, Benutzerdefinierte
Programmieren in Haskell
Programmieren in Haskell Felder (Arrays) Programmieren in Haskell 1 Was wir heute machen Motivationsbeispiel Die Typklasse Ix Felder in Haskell Funktionstabellierung Binäre Suche Pascalsches Dreieck Ein
WS 2011/2012. Georg Sauthoff 1. October 18, 2011
in in WS 2011/2012 Georg 1 AG Praktische Informatik October 18, 2011 1 [email protected] Neue Übungsgruppen in neue Übungsgruppen neue Tutoren Sprechstunden in GZI-Arbeitsraum (V2-240)
Elementare Konzepte von
Elementare Konzepte von Programmiersprachen Teil 1: Bezeichner, Elementare Datentypen, Variablen, Referenzen, Zuweisungen, Ausdrücke Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Bezeichner
