1 Algorithmische Grundlagen

Ähnliche Dokumente
Grundlagen der Programmierung (Vorlesung 24)

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

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

Algorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen

Achim Feldmeier, 23. Juni : Penrose nimmt dieses Argument auf in Shadows of the Mind.

Vorlesung Diskrete Strukturen Die natürlichen Zahlen

Unentscheidbare Probleme: Diagonalisierung

Wie man eine Sprache versteht

Algorithmen und Datenstrukturen

Einführung in die Informatik Algorithms

Angewandte Mathematik am Rechner 1

Übungsaufgaben Blatt 3

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel

Kapitel 1: Informationsverarbeitung durch Programme

Informatik I: Einführung in die Programmierung

Theoretische Grundlagen der Informatik

Unentscheidbare Probleme: Existenz, Diagonalsprache, Halteproblem

Ein Induktionsbeweis über Schuhgrößen

Grundlagen der Theoretischen Informatik: Übung 10

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

Abschnitt 11: Korrektheit von imperativen Programmen

Der Satz von Rice. Dann ist C(S) eine unentscheidbare Menge.

Einführung in die Programmierung für NF. Algorithmen, Datentypen und Syntax

Dank. Grundlagen der Theoretischen Informatik / Einführung in die Theoretische Informatik I. Beispiel einer nicht berechenbaren Funktion: Busy Beaver

Kapitel 1: Informationsverarbeitung durch Programme

Einführung in die Informatik Turing Machines

Turingmaschinen. und eine kleine Einführung in Bereiche der theoretischen Informatik

Grundlagen der Theoretischen Informatik

Gliederung. Algorithmen und Datenstrukturen I. Eine wichtige Frage. Algorithmus. Materialien zur Vorlesung. Begriffsbestimmung EUKLID Primzahltest

Theoretische Informatik

Einführung in die Informatik Algorithms II

Einführung in die Informatik Algorithms

Theoretische Informatik Kap 2: Berechnungstheorie

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

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

Grundlagen der Theoretischen Informatik

Algorithmen und Datenstrukturen (für ET/IT)

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

Einführung in die Informatik Turing Machines

Klausur zur Vorlesung Algorithmen und Datenstrukturen

Einführung in die Informatik I (autip)

1 Funktionale vs. Imperative Programmierung

2. Algorithmenbegriff

Reduktion. 2.1 Abstrakte Reduktion

Entscheidungsprobleme

Clevere Algorithmen programmieren

Algorithmierung und Programmierung - immer aktuell. Material, S.54ff.

De Morgan sche Regeln

Aufgabe (Schreibtischtest, lexikographische Ordnung)

Gierhardt. Einführung:

5. Algorithmen. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

Einführung in die Theoretische Informatik

Einführung in die Informatik 1

Präsenzübung Berechenbarkeit und Komplexität

INFORMATIK FÜR BIOLOGEN

Teil III. Komplexitätstheorie

Unentscheidbarkeitssätze der Logik

Algorithmen und Komplexität, Teil II: Berechenbarkeit und Komplexität

Informatik III. Christian Schindelhauer Wintersemester 2006/ Vorlesung

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

Logik und Beweisbarkeit

Entscheidungsprobleme

Was ist ein Problem? Ein Problem im Sinne der Programmierung ist durch Computer lösbar. Programmieren Entwurf/ Implementierung

Software Entwicklung 1

7. Übung TGI. Lorenz Hübschle-Schneider, Tobias Maier INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS. 1 Lorenz Hübschle-Schneider, Tobias Maier

Theoretische Grundlagen der Informatik

Mächtigkeit von LOOP-Programmen. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Übung Algorithmen und Datenstrukturen

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Philosophie des Intuitionismus und sein Einfluß auf die Informatik

Halteproblem/Kodierung von Turing-Maschinen

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Problemlösen, ein Einstieg nicht nur für die Informatik

Aufgabe Mögliche Punkte Erreichte Punkte a b c d Σ a b c d Σ x1 13

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

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Abstract Data Type and the Development of Data Structures

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Verhalten. Def. und Nutzen von Verhalten. Pseudocode Schreibtischtest. Algorithmen

Transkript:

1 Algorithmische Grundlagen Klocke/17.03.2003 1.1 1.1 Begriffsklärung Fragen Begriffsklärungen Abstraktionsebenen für Algorithmen und Datenstrukturen Algorithmus Qualität von Algorithmen Klocke/17.03.2003 1.2 1

Fragen Welche Rolle spielen Datenstrukturen und Algorithmen in der Informatik? Wozu werden sie überhaupt gebraucht? Welche Möglichkeiten gibt es, Algorithmen und Datenstrukturen formal zu beschreiben? Wie unterscheidet man was ein Algorithmus macht und wie er es macht? Ist diese Unterscheidung sinnvoll? Klocke/17.03.2003 1.3 Fragen. Was versteht man unter der Qualität eines Algorithmus, und wie kann man diese messen? Welcher Zusammenhang besteht zwischen Datenstrukturen und Algorithmen? Hängt die Qualität eines Algorithmus von der Datenstruktur ab, auf der er operiert? Klocke/17.03.2003 1.4 2

Abstraktionsebenen Mathematik Algorithmik Programmierung Klocke/17.03.2003 1.5 Abstraktionsebenen. ADT (abstrakter Datentyp) Mathematik Spezifikation Funktion algebraische Strukturen (Datentyp) Implementierung Algorithmik Spezifikation Algorithmus Analyse Datenstruktur Thema der Vorlesung Implementierung Programmierung Funktion, Methode Typ, Modul, Klasse Klocke/17.03.2003 1.6 3

Beispiel - Aufgabe Gegeben sei eine Menge S von ganzen Zahlen. Stelle fest, ob eine bestimmte Zahl c in S enthalten ist. Klocke/17.03.2003 1.7 Lösung Die Darstellung bzw. Lösung dieser Aufgabe kann auf jeder der drei Abstraktionsebenen erfolgen als mathematische Funktion als Algorithmus in einer Metasprache und als Programm in einer Programmiersprache Klocke/17.03.2003 1.8 4

Spezifikation als Funktion Sei F(Ζ) die Menge aller endlichen Teilmengen von Ζ, z.b. {1,3,7} F(Ζ), aber für die Menge M = {x x ist gerade} gilt: M F(Ζ). Dagegen ist M P(Ζ) (Potenzmenge von Ζ = Menge aller Teilmengen von Ζ). Sei BOOL = {true, false} Definiere f: F(Z) Z BOOL f(s, c) true, falls c S = false, sonst Klocke/17.03.2003 1.9 Spezifikation als Algorithmus Als Repräsentation für die Objektmenge wählen wir ein Array. Algorithmus contains Input S, ein Integerarray der Länge n c, eine Integerzahl Output true, falls c S, sonst false Method-1 var b : bool; b := false; for i := 1 to n do if S[i] = c then b := true endif; endfor; return b; end contains. Klocke/17.03.2003 1.10 5

Spezifikation als Programm program test_membership (input, output); type intset = array[1..n] of integer; function contains (s: intset, c: integer) : boolean; var b: boolean; begin b := false; for i := 1 to n do if s[i] = c then b := true; contains := b end; begin contains([2,3,6,8], 5) end; { test_membership } Klocke/17.03.2003 1.11 Definitionen: Algorithmus Ein Algorithmus ist ein wohl-definiertes Berechnungsverfahren, das als Eingabe ein oder mehrere Werte bzw. Mengen von Werten erhält und als Ausgabe Werte bzw. Mengen von Werten erzeugt. Ein Algorithmus ist damit eine Folge von Berechnungsschritten, die eine Eingabe in eine Ausgabe transformiert. Klocke/17.03.2003 1.12 6

Definitionen: Algorithmus. Ein Algorithmus ist ein Werkzeug, das ein wohl-spezifiziertes berechenbares Problem löst. Ein Algorithmus ist eine Anleitung zur Lösung eines Problems, wie ein Kochrezept, ein Strickmuster oder eine Reparatur- oder Montageanleitung. Klocke/17.03.2003 1.13 Church sche These Jede im intuitiven Sinne berechenbare Funktion ist auch Turing-berechenbar. Die Gültigkeit der Church schen These würde bedeuten, dass alle verschiedenen Algorithmen- Begriffe nach Turing, Church, etc. äquivalent sind. Da man bisher kein Gegenbeispiel gefunden hat, wird die Church sche These von der Informatik als gültig akzeptiert. Klocke/17.03.2003 1.14 7

Nicht-lösbare Probleme Es gibt Probleme in der Informatik, von denen man beweisen kann, dass sie nicht lösbar sind. Dazu gehört das Unvollständigkeitstheorem von Gödel und das bekannte Halteproblem. Beispiele für Aussagen über natürliche Zahlen Jede positive Integerzahl > 1, die keine Primzahl ist, ist zusammengesetzt (composite). Beispiele: 4 = 2 * 2, 111 = 3 * 37, 1001 = 7 * 11 * 13 Jede positive Zahl > 1 hat einen Prim-Teiler (prime divisor, Nenner) Es gibt unendlich viele Primzahlen. Theorem: Ist n keine Primzahl, dann hat n einen Primfaktor, der kleiner als die Wurzel aus n ist. Das Theorem kann dazu benutzt werden, um alle Primzahlen zu finden, die kleiner oder gleich einer positiven Zahl n sind. Klocke/17.03.2003 1.15 Unvollständigkeitstheorem Gödel veröffentlichte 1931 sein Unvollständigkeitstheorem, welches beweist, dass es keinen Algorithmus gibt, der irgendeine Aussage über natürliche Zahlen aufnimmt und ausgibt, ob die Aussage wahr oder falsch ist. Klocke/17.03.2003 1.16 8

Halteproblem Das Halteproblem ist nicht entscheidbar. Die Lösung des Halteproblems wäre ein Algorithmus, der für irgendein Programm testen kann, ob das Programm terminiert oder nicht. Man kann beweisen, dass es einen solchen Algorithmus nicht gibt. Klocke/17.03.2003 1.17 Eigenschaften eines Algorithmus - Allgemeinheit - Determiniertheit - Determinismus - Terminierung Klocke/17.03.2003 1.18 9

Allgemeinheit und Determiniertheit Allgemeinheit. Ein Algorithmus löst im allgemeinen eine Klasse von Problemen. Die Auswahl des Einzelfalls erfolgt meist über Parameter. Determiniertheit. Algorithmen sind in der Regel determiniert; d.h. bei gleichen Eingabewerten und Startbedingungen laufen sie stets gleich ab und liefern dasselbe Ergebnis. Beispiele für nichtdeterminierte Algorithmen sind z.b. stochastische Simulationen, die manche Entscheidungen dem Zufall überlassen. Klocke/17.03.2003 1.19 Determinismus und Terminierung Determinismus. Ein Algorithmus heißt deterministisch, wenn zu jedem Zeitpunkt seiner Bearbeitung höchstens eine Möglichkeit der Fortsetzung besteht. Terminierung. In der Regel sind nur solche Algorithmen von Interesse, die für jede Eingabe nach endlich vielen Schritten terminieren, d.h. anhalten. Eine Ausnahme sind hier z.b. Betriebssystem- Funktionen und Prozess-Steuerungen. Klocke/17.03.2003 1.20 10