Informatik I: Einführung in die Programmierung

Ähnliche Dokumente
Informatik I. Informatik I Was haben wir gelernt? 28.2 Algorithmusbegriff Was geht nicht? 28.1 Was haben wir gelernt?

1 Einführung: Algorithmen. Algorithmen und Datenstrukturen WS 2012/13. Pro f. Dr. Sán do r Fe k e te

Einführung in die Informatik Turing Machines

Einführung in die Informatik Turing Machines

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

Wir suchen Antworten auf die folgenden Fragen: Was ist Berechenbarkeit? Wie kann man das intuitiv Berechenbare formal fassen?

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Unentscheidbare Probleme: Diagonalisierung

Angewandte Mathematik am Rechner 1

6.4 Entscheidbarkeit. nein sein müssen, ist klar. THEO 6.4 Entscheidbarkeit 205/307 c Ernst W. Mayr

Berechenbarkeit und Komplexität

Theoretische Informatik Kap 2: Berechnungstheorie

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

Überblick. 1 Vorbemerkungen. 2 Algorithmen. 3 Eigenschaften von Algorithmen. 4 Historischer Überblick. Einführung

Einführung in die Informatik Algorithms

Theoretische Informatik. Berechenbarkeit

ALP I Turing-Maschine

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

Informatik I. Grundlagen der systematischen Programmierung. Peter Thiemann WS 2007/08. Universität Freiburg, Germany

Algorithmen & Komplexität

2. Algorithmenbegriff

Einführung in die Informatik Algorithms

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Seminararbeit zum Thema Was ist ein Algorithmus?

Informatik. Teil 1 Wintersemester 2011/2012. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik

P, NP und NP -Vollständigkeit

Algorithmen und Datenstrukturen

Informatik 1. Teil 1 - Wintersemester 2012/2013. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik

Theoretische Grundlagen der Informatik

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Einführung in die Informatik I (autip)

Berechenbarkeit. Script, Kapitel 2

Kapitel 1: Informationsverarbeitung durch Programme

Grundlagen der Informatik I Einführung

Dank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung

Unentscheidbarkeitssätze der Logik

Einführung in die Theoretische Informatik

Infovorkurs, Teil II: Theoretische Informatik. Motivation. Turing-Maschine. Programmiersprachen

Zeitkomplexität (1) Proseminar Theoretische Informatik. Proseminar Theoretische Informatik: Lisa Dohrmann 1

2. Schriftliche Leistungskontrolle (EK)

Einführung in die Informatik 1

Berechenbarkeit und Komplexität

1 Vom Problem zum Programm

Präsenzübung Berechenbarkeit und Komplexität

Vorlesung Berechenbarkeit und Komplexität. Motivation, Übersicht und Organisatorisches

EINFÜHRUNG IN DIE THEORETISCHE INFORMATIK 0. ORGANISATORISCHES UND ÜBERBLICK

Was ist ein Computer? Was ist ein Programm? Können Computer Alles?

Grundlagen der Modellierung und Programmierung, Übung

Vorlesung Programmieren

Algorithmus. Was ist ein Algorithmus? Ibn Musa Al-Chwarismi persischer Mathematikers 9. Jahrhundert Buch: Regeln der Wiedereinsetzung und Reduktion.

PROBEKLAUSUR SoSe 2016

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Algorithmen und Datenstrukturen

Turingmaschinen Vorlesung Berechenbarkeit und Komplexität alias Theoretische Informatik: Komplexitätstheorie und effiziente Algorithmen

1 Einführung. 2 Typ-0- und Typ-1-Sprachen. 3 Berechnungsmodelle. 4 Unentscheidbarkeit. 5 Unentscheidbare Probleme. 6 Komplexitätstheorie

3. Klausur Einführung in die Theoretische Informatik Seite 1 von Welches der folgenden klassischen Probleme der Informatik ist entscheidbar?

Kapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin

Was ist ein Computer? Was ist ein Programm? Können Computer Alles?

Willkommen zur Vorlesung Komplexitätstheorie

Nachklausur zur Vorlesung

Einführung (1/3) Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (1) Vorlesungen zur Komplexitätstheorie.

Einführung in die Theoretische Informatik

Grundlagen der Theoretischen Informatik Musterlösungen zu ausgewählten Übungsaufgaben

FD Informatik Mauch SSDL (WHRS) Reutlingen. Algorithmen

Lösung zur Klausur. Grundlagen der Theoretischen Informatik im WiSe 2003/2004

THEORETISCHE INFORMATIK UND LOGIK

Klausur: Berechenbarkeit und Komplexität (Niedermeier/Chen/Froese/Sorge, Sommersemester 2016)

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

Vorlesung Programmieren

Vorname Name Matrikelnummer 1. a) Benennen Sie die übrigen 6 Komponenten einer nicht-deterministischen Turingmaschine (TM): (3 Punkte)

Das Studium im Fach Informatik

Theoretische Grundlagen der Informatik

Grundlagen der Theoretischen Informatik

Die Unentscheidbarkeit extensionaler Eigenschaften von Turingmaschinen: der Satz von Rice

Softwaretechnologie für Fortgeschrittene Teil Eide Stunde I, teil I (auf Basis von Thaller)

Theoretische Grundlagen der Informatik

Einführung in die Theoretische Informatik I/ Grundlagen der Theoretischen Informatik. SS 2007 Jun.-Prof. Dr. Bernhard Beckert Ulrich Koch

Wie viel Mathematik kann ein Computer?

Entscheidungsprobleme

Fragen 1. Muss eine DTM ein Wort zu Ende gelesen haben, um es zu akzeptieren? a) Ja! b) Nein!

Berechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP-Programme

Berechenbarkeit und Komplexität

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6.

Der Lese-Schreib-Kopf kann auch angehalten werden (H). Die Verarbeitung ist dann beendet.

Hier ist ein einfaches Turingprogramm. Außer dem Leerzeichen ist das Band nur mit. 1 belegt.

Mächtigkeit von WHILE-Programmen

Unentscheidbarkeit von Problemen mittels Turingmaschinen

Einführung in die Programmierung

Algorithmen & Komplexität

Grundlagen der Theoretischen Informatik

Grundlagen Theoretischer Informatik 2 WiSe 2011/12 in Trier. Henning Fernau Universität Trier

Einführung in Berechenbarkeit, Komplexität und formale Sprachen

Proseminar Komplexitätstheorie P versus NP Wintersemester 2006/07. Nichtdeterministische Turingmaschinen und NP

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

Die Church-Turing-These

Transkript:

Informatik I: Einführung in die Programmierung 30. Ausblick Albert-Ludwigs-Universität Freiburg Bernhard Nebel 13.02.2016

1 13.02.2016 B. Nebel Info I 3 / 17

Programmieren jedenfalls ein bisschen Python-Programme lesen und verstehen Die Informatikperspektive auf die Welt einnehmen können Spaß und Begeisterung am Verstehen von (formalen und realen) Problemen... und am Finden von Lösungen (= Programme schreiben) Ein paar Hintergründe haben wir auch kennen gelernt, z.b. zur Bedeutung einer Zivilklausel Do not mention the war!: http://www.youtube.com/watch?v=yfl6lu3xqw0 Fawlty Towers 13.02.2016 B. Nebel Info I 4 / 17

Was wird die Klausur von Ihnen verlangen? Es wird nicht schwieriger werden als in der Weihnachtsklausur aber natürlich kommt der Stoff nach Weihnachten dazu Schauen Sie sich die Übungsaufgaben noch einmal an Auch die Folien/Aufzeichnungen sollten Sie noch einmal konsultieren Bei Unklarheiten: Schauen Sie in Python-Bücher und/oder stellen Sie die Fragen in den beiden angebotenen Fragestunden Apropos: 13.02.2016 B. Nebel Info I 5 / 17

2 13.02.2016 B. Nebel Info I 7 / 17

Der in der Informatik-Literatur (1) Christos Papadimitriou in Computational Complexity, 1994: An algorithm is a detailed step-by-step method for solving a problem. But what is a problem? We introduce in this chapter three important examples.... Robert Sedgewick in Algorithms, 2011, 4th ed.: The term algorithm is used in computer science to describe a finite, deterministic, and effective problem-solving method suitable for implementation as a computer program. 13.02.2016 B. Nebel Info I 8 / 17

Der in der Informatik-Literatur (2) Thomas Ottmann und Peter Widmayer in Algorithmen und Datenstrukturen, 2011, 5. Aufl.: Was ist ein Algorithmus? Dies ist eine philosophische Frage, auf die wir in diesem Buch kein präzise Antwort geben werden. Dies ist glücklicherweise auch nicht nötig. Wir werden nämlich in diesem Buch (nahezu) ausschließlich positive Aussagen über die Existenz von Algorithmen durch explizite Angabe solcher Algorithmen machen. Dazu genügt ein intuitives Verständnis des Algorithmenbegriffs und die Einsicht, dass sich konkret angegebene Algorithmen etwa in einer höheren Programmiersprache wie Pascal formulieren lassen. Erst wenn man eine Aussage der Art Es gibt keinen Algorithmus, der dieses Problem löst beweisen will, benötigt man eine präzise formale Fassung des Algorithmenbegriffs. 13.02.2016 B. Nebel Info I 9 / 17

Der und die Turing-Maschine Wir hatten in der letzten Vorlesung die Church-Turing-These kennen gelernt: Die Klasse der Turing-berechenbaren Funktionen stimmt mit der Klasse der intuitiv berechenbaren Funktionen überein. Dies kann man verstehen als: Algorithmen (zur Berechnung von Funktionen) im intuitiven Sinne entsprechen im formalen Sinne Turing-Maschinen! Aber was sind Turing-Maschinen? Turing-Maschinen bestehen aus einem Ein-/Ausgabe-Band, einem Lese-/Schreib-Kopf und einer Zustandsmaschine Beispiel: http://www.youtube.com/watch?v=gjqtfhkhwpa 13.02.2016 B. Nebel Info I 10 / 17

Algorithmen im engeren Sinne Algorithmen entsprechen also Turingmaschinen, wobei man zeigen kann, dass höhere Programmiersprachen und Turingmaschinen i.w. äquivalent sind. Wir erinnern uns; ein Algorithmus soll die folgenden Eigenschaften besitzen: Präzision Die Bedeutung jedes Einzelschritts ist eindeutig festgelegt. Effektivität Jeder Einzelschritt ist ausführbar. Finitheit (statisch) Die Vorschrift ist ein endlicher Text. Finitheit (dynamisch) Bei der Ausführung wird nur endlich viel Speicher benötigt. Terminierung Die Berechnung endet nach endlich vielen Einzelschritten für alle legalen Eingaben. Bei einer Turingmaschine immer erfüllt! 13.02.2016 B. Nebel Info I 11 / 17

Algorithmen im weiteren Sinne Man kann und hat viele Bedingungen gelockert, ohne den Bereich der Turing-Berechenbarkeit zu verlassen: Ein Algorithmus muss nicht immer einen festgelegten Nachfolgezustand / nächsten Schritt haben, sondern die Entscheidung über den nächsten Schritt kann gewürfelt werden (randomisierter Algorithmus). In einem Algorithmus können mehrere nächste Schritte möglich sein, wobei der ausgewählt wird, der zum Erfolg führt (nicht-deterministischer Algorithmus). Bedingt durch randomisierte oder nicht-deterministische Entscheidungen kann ein Algorithmus verschiedene Werte bei gleichen Eingaben ausgeben (im Falle von Suchproblemen, z.b. CSP, oder auch fehlerhafte Ergebnisse geben bei Monte-Carlo-Algorithmen). Aber in allen Fällen können wir auch das auf normale TMs zurückführen, d.h. Determinismus und Determiniertheit sind nicht wirklich notwendig. 13.02.2016 B. Nebel Info I 12 / 17

3 13.02.2016 B. Nebel Info I 14 / 17

Nicht-Berechenbarkeit und Unentscheidbarkeit Ein formaler ist vor allem deswegen wichtig, weil wir ja auch Unmöglichkeitsergebnisse beweisen wollen. Was können wir also z.b. nicht berechnen/entscheiden? Gegeben ein beliebiges Python-Programm Π, gibt das Programm Π bei jeder Eingabe nach endlicher Zeit ein Ergebnis aus? Dies Problem (wie auch jedes ähnliche Problem) ist unentscheidbar! D.h. wir können kein Programm schreiben, um dieses Problem zu entscheiden ( ja oder nein ausgeben) Dies sind alles Dinge, die erst in Info III behandelt werden... 13.02.2016 B. Nebel Info I 15 / 17

Programmieren & Programmierparadigmen Programmieren ist zwar nur Handwerkszeug. Aber ohne Handwerkszeug geht es in der Informatik nicht... weder in der Praxis noch in der Wissenschaft. Wir haben in dieser Vorlesung 3 verschiedene Programmierparadigmen gelernt... schauen Sie sich nochmal an, was ihre Charakteristika sind! 13.02.2016 B. Nebel Info I 16 / 17

Fazit Python ist eine wirklich tolle Programmiersprache! Monthy Python ist eine Comedy-Truppe, die (fast?) nicht zu überbieten ist.... und es gibt die Liste der 10 besten Sketches, wobei ich speziell auch bei dem ersten Platz zustimme: https://www.youtube.com/watch?v=2chpaqpdddw 13.02.2016 B. Nebel Info I 17 / 17