1 Vom Problem zum Programm



Ähnliche Dokumente
1 Vom Problem zum Programm

Informatik 1. Sommersemester Helmut Seidl. Institut für Informatik TU München

Deterministische Turing-Maschinen (DTM) F3 03/04 p.46/395

Zeichen bei Zahlen entschlüsseln

3. Ziel der Vorlesung

Theoretische Informatik SS 04 Übung 1

effektives Verfahren ~ Algorithmus (Al Chwarismi) Regelsystem, Methode, Rezept, Gebrauchsanleitung Programm (griech. προγραφω, vor-schreiben)

Primzahlen und RSA-Verschlüsselung

1 Mathematische Grundlagen

Programmiersprachen und Übersetzer

Grundbegriffe der Informatik

Übung Theoretische Grundlagen

Mächtigkeit von WHILE-Programmen

Informationsblatt Induktionsbeweis

Data Mining: Einige Grundlagen aus der Stochastik

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

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

Mathematische Maschinen

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Informatikgrundlagen (WS 2015/2016)

Formale Sprachen und Grammatiken

Grundlagen der Theoretischen Informatik, SoSe 2008

Konzepte der Informatik

Was meinen die Leute eigentlich mit: Grexit?

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Das Leitbild vom Verein WIR

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Lineare Gleichungssysteme

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!.

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Programmierkurs Java

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Was können Schüler anhand von Primzahltests über Mathematik lernen?

Computeralgebra in der Lehre am Beispiel Kryptografie

Fachschaft Mathematik und Informatik (FIM) LA I VORKURS. Herbstsemester gehalten von Harald Baum

Step by Step Webserver unter Windows Server von Christian Bartl

11. Das RSA Verfahren und andere Verfahren

Installation Hardlockserver-Dongle

Kleines Handbuch zur Fotogalerie der Pixel AG

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

Tourist Town. wenn Computer ins Schwitzen geraten. Prof. Dr. Isolde Adler IT-Girls Night

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Vorkurs Informatik WiSe 15/16

Theoretische Grundlagen des Software Engineering

Numerische Verfahren und Grundlagen der Analysis

Kann ein Computer denken?

Fragebogen: Abschlussbefragung

Grammatiken. Einführung

Word 2010 Schnellbausteine

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

PC-Umzug: So ziehen Sie Ihre Daten von Windows XP nach Windows 8 um

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Lenstras Algorithmus für Faktorisierung

5. Übung zum G8-Vorkurs Mathematik (WiSe 2011/12)

Eine Logikschaltung zur Addition zweier Zahlen

Was man mit dem Computer alles machen kann

Kapitel 1: Einführung. Was ist Informatik? Begriff und Grundprobleme der Informatik. Abschnitt 1.1 in Küchlin/Weber: Einführung in die Informatik

BITte ein BIT. Vom Bit zum Binärsystem. A Bit Of Magic. 1. Welche Werte kann ein Bit annehmen? 2. Wie viele Zustände können Sie mit 2 Bit darstellen?

Das Persönliche Budget in verständlicher Sprache

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

WINDOWS 10 Upgrade. Beispiel: Desktop-Ausschnitt von vorhandenem WIN 8.1 (rechte Ecke der Taskleiste)

Der Zwei-Quadrate-Satz von Fermat

BIA-Wissensreihe Teil 4. Mind Mapping Methode. Bildungsakademie Sigmaringen

Einfache kryptographische Verfahren

Markovketten. Bsp. Page Ranking für Suchmaschinen. Wahlfach Entscheidung unter Risiko und stat. Datenanalyse

REACH-CLP-Helpdesk. Zulassung in der Lieferkette. Matti Sander, Bundesanstalt für Arbeitsschutz und Arbeitsmedizin

In 15 Schritten zum mobilen PC mit Paragon Drive Copy 14 und VMware Player

Beweisbar sichere Verschlüsselung

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

Professionelle Seminare im Bereich MS-Office

1 topologisches Sortieren

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Computerarithmetik ( )

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Einstiegshilfe für das Übersenden elektronischer Teilnahmebestätigungen an ÄrztInnen

IntelliRestore Seedload und Notfallwiederherstellung

Einführung in Eclipse und Java

Dokumentation für das Spiel Pong

Orientierungstest für angehende Industriemeister. Vorbereitungskurs Mathematik

Technische Informatik - Eine Einführung

Analysis I für Studierende der Ingenieurwissenschaften

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

x 2 2x + = 3 + Es gibt genau ein x R mit ax + b = 0, denn es gilt

Wie lizenziert man die Virtualisierung von Windows Desktop Betriebssystemen?

3. LINEARE GLEICHUNGSSYSTEME

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

SharePoint Demonstration

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,

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

Wichtige Forderungen für ein Bundes-Teilhabe-Gesetz

2. Negative Dualzahlen darstellen

Zahlensysteme: Oktal- und Hexadezimalsystem

Transkript:

1 Vom Problem zum Programm Ein Problem besteht darin, aus einer gegebenen Menge von Informationen eine weitere (bisher unbekannte) Information zu bestimmen. 1

Vom Problem zum Programm Ein Algorithmus ist die präzise Beschreibung eines Verfahrens zur Lösung eines Problems, d.h. zur Bestimmung der gewünschten Resultate. a a http://www.informatikjahr.de/ 2

Vom Problem zum Programm Ein Algorithmus ist die präzise Beschreibung eines Verfahrens zur Lösung eines Problems, d.h. zur Bestimmung der gewünschten Resultate. == Ein Algorithmus beschreibt eine Funktion: f : E A, wobei E = zulässige Eingaben, A = mögliche Ausgaben. Beispiele: Addition von Dezimalzahlen: f : Q Q Q Test auf Primzahl: f : N { ja, nein} 3

Abu Abdallah Muhamed ibn Musa al Khwaritzmi, etwa 780 835 Mathematiker Begründer der Algebra 4

Vom Problem zum Programm Ein Algorithmus ist die präzise Beschreibung eines Verfahrens zur Lösung eines Problems, d.h. zur Bestimmung der gewünschten Resultate. == Ein Algorithmus beschreibt eine Funktion: f : E A, wobei E = zulässige Eingaben, A = mögliche Ausgaben. Achtung: Nicht jede Funktion lässt sich durch einen Algorithmus berechnen! ( Berechenbarkeitstheorie) 5

Berechenbarkeit Behauptung: Nicht jede Funktion lässt sich durch einen Algorithmus berechnen! Beweisidee ( Diskrete Strukturen) Jeder Algorithmus lässt sich durch eine Zeichenkette über einem festen, endlichen Alphabet beschreiben Zähle die Anzahl überhaupt möglicher Algorithmen abzählbar viele Zeige, dass es mehr Funktionen gibt als mögliche Algorithmen überabzählbar viele 6

Berechenbarkeit Frage: Ein Saboteur will durch einen Algorithmus jedes Java-Programm P so ändern, dass das entstehende Programm P etwas anderes leistet als P. Wie kann er das erreichen? Antwort Ein Hauptsatz der Berechenbarkeitstheorie besagt, dass der Saboteur sein Vorhaben nicht verwirklichen kann, egal welchen Sabotage-Algorithmus er benutzt. Satz: Es gibt keinen Algorithmus, der entscheidet ob zwei gegebene Algorithmen dieselbe Funktion berechnen 7

Berechenbarkeit Frage: Ein Saboteur will durch einen Algorithmus jedes Java-Programm P so ändern, dass das entstehende Programm P etwas anderes leistet als P. Wie kann er das erreichen? Antwort Ein Hauptsatz der Berechenbarkeitstheorie besagt, dass der Saboteur sein Vorhaben nicht verwirklichen kann, egal welchen Sabotage-Algorithmus er benutzt. Satz: Es gibt keinen Algorithmus, der entscheidet ob zwei gegebene Algorithmen dieselbe Funktion berechnen 8

Ein Algorithmus besteht i.a. darin, eine Abfolge von Einzelschritten der Verarbeitung festzulegen. Beispiel: Alltagsalgorithmen Resultat Algorithmus Einzelschritte Pullover Strickmuster eine links, eine rechts eine fallen lassen Kuchen Rezept nimm 3 Eier... Konzert Partitur Noten 9

Beispiel: Euklidischer Algorithmus Problem: Seien a, b N, a, b = 0. Bestimme ggt(a, b). Algorithmus: 1. Falls a = b, brich Berechnung ab, es gilt ggt(a, b) = a. Ansonsten gehe zu Schritt 2. 2. Falls a > b, ersetze a durch a b und setze Berechnung in Schritt 1 fort. Ansonsten gehe zu Schritt 3. 3. Es gilt a < b. Ersetze b durch b a und setze Berechnung in Schritt 1 fort. 10

Beispiel: Euklidischer Algorithmus Problem: Seien a, b N, a, b = 0. Bestimme ggt(a, b). Algorithmus: 1. Falls a = b, brich Berechnung ab, es gilt ggt(a, b) = a. Ansonsten gehe zu Schritt 2. 2. Falls a > b, ersetze a durch a b und setze Berechnung in Schritt 1 fort. Ansonsten gehe zu Schritt 3. 3. Es gilt a < b. Ersetze b durch b a und setze Berechnung in Schritt 1 fort. 11

Eigenschaften von Algorithmen: Abstrahierung: Allgemein löst ein Algorithmus eine Klasse von Problem-Instanzen abstrahiert also vom konkreten Anwendungsfall. Determiniertheit: Algorithmen sind im allgemeinen determiniert, d.h. mit gleichen Eingabedaten und gleichem Startzustand wird stets ein gleiches Ergebnis geliefert. Finitheit: Die Beschreibung eines Algorithmus besitzt endliche Länge. Die bei der Abarbeitung eines Algorithmus entstehenden Datenstrukturen und Zwischenergebnisse sind endlich. Terminierung: Algorithmen, die nach endlich vielen Schritten ein Resultat liefern, heißen terminierend. Deterministischer Ablauf: Der nächste anzuwendende Schritt im Verfahren ist zu jedem Zeitpunkt eindeutig definiert. 12

Eigenschaften von Algorithmen: Effizienz: Algorithmen sollten möglichst effizient sein, d.h., sie sollten möglichst sparsam mit den zur Verfügungen stehenden Ressourcen (Rechenleistung, Speicher, Speicherbandbreite etc.) umgehen. 13

Beispiel: Effiziente Suche Problem: Gegeben: lexikographisch sortierte CD-Sammlung. Finde die CD von Carpendale. 14

Beispiel: Effiziente Suche Problem: Gegeben: lexikographisch sortierte CD-Sammlung. Finde die CD von Carpendale. Algorithmus 1: 1. Beginn der Suche am Anfang der Sammlung 2. Durchsuche alle CDs sequentiell 15

Beispiel: Effiziente Suche Problem: Gegeben: lexikographisch sortierte CD-Sammlung. Finde die CD von Carpendale. Algorithmus 1: 1. Beginn der Suche am Anfang der Sammlung 2. Durchsuche alle CDs sequentiell Effizienzbetrachtung: der Suchaufwand ist proportional zur Anzahl der CDs. 16

Beispiel: Effiziente Suche Problem: Gegeben: lexikographisch sortierte CD-Sammlung. Finde die CD von Carpendale. 17

Beispiel: Effiziente Suche Problem: Gegeben: lexikographisch sortierte CD-Sammlung. Finde die CD von Carpendale. Algorithmus 2: 1. Beginn der Suche in der Mitte der Sammlung 2. Fallunterscheidung anhand der betrachteten CD (a) Falls Interpretenname < Carpendale : durchsuche rechte Hälfte der Sammlung mit Algorithmus 2 (b) Falls Interpretenname Carpendale : durchsuche linke Hälfte der Sammlung mit Algorithmus 2 18

Beispiel: Effiziente Suche Problem: Gegeben: lexikographisch sortierte CD-Sammlung. Finde die CD von Carpendale. Algorithmus 2: 1. Beginn der Suche in der Mitte der Sammlung 2. Fallunterscheidung anhand der betrachteten CD (a) Falls Interpretenname < Carpendale : durchsuche rechte Hälfte der Sammlung mit Algorithmus 2 (b) Falls Interpretenname Carpendale : durchsuche linke Hälfte der Sammlung mit Algorithmus 2 Effizienzbetrachtung: der Suchaufwand ist proportional zum Logarithmus zur Basis 2 der Anzahl der CDs. 19

Beispiel: Effiziente Suche Effizienzbetrachtung: Gegeben: lexikographisch sortierte CD-Sammlung bestehend aus 1024 bzw. 16384 CDs. Eine Suchoperation kostet 1 Sekunde. Wie lange dauert das Finden der CD von Carpendale. Algorithmus 1: benötigt 1024 bzw. 16384 Suchoperationen ca. 17 bzw. 273 Minuten Algorithmus 2: benötigt 10 bzw. 14 Suchoperationen ca. 10 bzw. 14 Sekunden 20

Ein Programm ist die Formulierung eines Algorithmus in einer Programmiersprache. Die Formulierung gestattet eine maschinelle Ausführung. Beachte: Es gibt viele Programmiersprachen: Java, C, Prolog, Fortran, Cobol... Eine Programmiersprache ist dann gut, wenn die Programmiererin in ihr ihre algorithmischen Ideen natürlich beschreiben kann, insbesondere selbst später noch versteht, was das Programm tut (oder nicht tut); ein Computer das Programm leicht verstehen und effizient ausführen kann. 21

Typischer Aufbau eines Computers - das von Neumann sche Maschinenmodell: Geräte CPU Ein/Ausgabe- Speicher- Medien Ein/Ausgabegeräte (= input/output devices) ermöglichen Eingabe des Programms und der Daten, Ausgabe der Resultate. CPU (= central processing unit) führt Programme aus. Speicher-Medien (= memory) enthalten das Programm sowie die während der Ausführung benötigten Daten also die Software. Hardware == physikalische Bestandteile eines Computers. 22

Online-Tutorial Komponenten eines Computersystems http://chortle.ccsu.edu/java5/notes/chap01/ch01_3.html 23

Typischer Aufbau eines Computers: Algorithmen wie Programme abstrahieren von (nicht so wesentlichen) Merkmalen realer Hardware. == Annahme eines (nicht ganz realistischen, dafür exakt definierten) Maschinenmodells für die Programmierung. Maschinenmodell: Möglichst einfaches formales System, mit dem im Prinzip alle Probleme gelöst werden können, die mit einem Computer gelöst werden können. 24

Maschinenmodelle: Turingmaschine: (Turing, 1936) eine Art Lochstreifen-Maschine Registermaschine: etwas realistischerer Rechner, allerdings mit i.a. beliebig großen Zahlen, unendlich viel Speicher und einfachen Rechenoperationen JVM: (Java-Virtual Machine) die virtuelle Maschine für Java... 25

Zur Definition eines Maschinenmodells benötigen wir: Angabe der zulässigen Datenobjekte/Speicherbereiche, auf denen Operationen ausgeführt werden sollen; Angabe der verfügbaren Einzelschritte / Aktionen / Elementaroperationen; Angabe der Kontrollstrukturen zur Angabe der beabsichtigten Ausführungsreihenfolgen. 26

Beispiel 1: Turing-Maschine Alan Turing, 1912 1954 27

Daten der Turing-Maschine: Eine Folge von 0 und 1 und evt. weiterer Symbole wie z.b. (Blank Leerzeichen) auf einem Band zusammen mit einer Position des Schreib/Lese -Kopfs auf dem Band; Operationen: Überschreiben des aktuellen Zeichens und Verrücken des Kopfs um eine Position nach rechts oder links; Kontrollstrukturen: Es gibt eine endliche Menge Q von Zuständen. In Abhängigkeit vom aktuellen Zustand und dem gelesenen Zeichen wird die Operation ausgewählt und der Zustand geändert. 28

Band: 0 1 1 1 0 1 0 0 1 Kontrolle: Zustand "Go left!" 29

Programm: Zustand Input Operation neuer Zustand Go left! 0 0 links Set 0 Go left! 1 1 rechts Go left! Set 0 0 0 Stop Set 0 1 0 links Set 0 30

Band: 0 1 1 1 0 1 0 0 1 Kontrolle: Zustand "Go left!" Operation neuer Zustand = Set 0 = Schreibe eine 0 und gehe nach links! 31

Band: 0 1 1 1 0 1 0 0 1 Kontrolle: Zustand "Set 0" Operation neuer Zustand = Schreibe eine 0 und gehe nach links! = unverändert 32

Band: 0 1 1 0 0 1 0 0 1 Kontrolle: Zustand "Set 0" Operation neuer Zustand = Schreibe eine 0 und gehe nach links! = unverändert 33

Band: 0 1 0 0 0 1 0 0 1 Kontrolle: Zustand "Set 0" Operation neuer Zustand = Schreibe eine 0 und gehe nach links! = unverändert 34

Band: 0 0 0 0 0 1 0 0 1 Kontrolle: Zustand "Set 0" Operation neuer Zustand = keine = Stop 35

Band: 0 0 0 0 0 1 0 0 1 Kontrolle: Zustand "Stop" Ende der Berechnung. noch ein Zustand :-) 36

Die Turing-Maschine Ein konkretes Beispiel: http://www.matheprisma.de/module/turing/index.html 37

Fazit: Die Turing-Maschine ist... sehr einfach... sehr mühsam zu programmieren... aber nichtsdestoweniger universell, d.h. prinzipiell in der Lage alles zu berechnen, was intuitiv berechenbar ist (Chursche These). 38

Fazit: Die Turing-Maschine ist... sehr einfach... sehr mühsam zu programmieren... aber nichtsdestoweniger universell, d.h. prinzipiell in der Lage alles zu berechnen, was intuitiv berechenbar ist (Chursche These). == Es kann kein Rechenmodell geben, das mehr als die Turing-Maschine kann (oder, die Turing-Maschine kann alles berechnen, was auch ein Desktop-Computer kann) Berechenbarkeitstheorie 39