Seminararbeit zum Thema Was ist ein Algorithmus?

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

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

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

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

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

1 Vom Problem zum Program

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

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

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

Berechenbarkeit und Komplexität

1 Vom Problem zum Programm

1 Algorithmische Grundlagen

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

Grundlagen der Theoretischen Informatik: Übung 10

Kapitel 3: Berechnungstheorie Gliederung

Theoretische Informatik für Wirtschaftsinformatik und Lehramt

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

Informatik I: Einführung in die Programmierung

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

Einführung in die Informatik Turing Machines

Einführung in die Informatik Turing Machines

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Angewandte Mathematik am Rechner 1

ALP I Turing-Maschine

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

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

Grundlagen der Programmierung (Vorlesung 24)

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Die Definition des Algorithmusbegriffs und Darstellung der wesentlichen Merkmale eines Algorithmus an ausgesuchten Beispielen

Theoretische Informatik: Berechenbarkeit und Formale Sprachen

Algorithmen & Komplexität

Grundlagen der Theoretischen Informatik

Algorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen

Berechnungsmodelle. Mathias Hecht. April 29, 2010

Clevere Algorithmen programmieren

Lösungsvorschlag Serie 2 Rekursion

LOOP-Programme: Syntaktische Komponenten

Informatik I Komplexität von Algorithmen

Berechenbarkeit. Script, Kapitel 2

Unentscheidbarkeitssätze der Logik

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

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

Wintersemester 2007/2008 Helmut Seidl Institut für Informatik TU München

Theoretische Informatik

Ideen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn

INFORMATIK FÜR BIOLOGEN

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

Theoretische Informatik. Berechenbarkeit

Grundlagen der Programmierung

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

Algorithmen und Datenstrukturen (für ET/IT)

Logik und Beweisbarkeit

Definition 98 Eine Turingmaschine heißt linear beschränkt (kurz: LBA), falls für alle q Q gilt:

Lösungen zur Vorlesung Berechenbarkeit und Komplexität

Der erste Gödelsche Unvollständigkeitssatz

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

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

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

Einführung in die Informatik I

Einführung in die Informatik Algorithms

Grundbegriffe der Informatik

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen

Kapitel 4: Komplexitätstheorie Gliederung

THEORETISCHE INFORMATIK UND LOGIK

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

Funktionale Programmierung ALP I. µ-rekursive Funktionen WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

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

Prof. Dr. André Schulz. Kurs Komplexitätstheorie LESEPROBE

P, NP und NP -Vollständigkeit

Ideen und Konzepte der Informatik

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

2.5 Halteproblem und Unentscheidbarkeit

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

Berechenbarkeit. Script, Kapitel 2

Turing-Maschinen: Ein abstrakes Maschinenmodell

Logik und Beweisbarkeit

1936 von Alan Turing zum theoretischen Studium der Berechenbarkeit eingeführt Besteht aus

Einführung in die Programmierung

Kapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren

Einführung in die Programmierung

. Die obige Beschreibung der Laufzeit für ein bestimmtes k können wir also erweitern und erhalten die folgende Gleichung für den mittleren Fall:

Theoretische Grundlagen der Informatik

2. Algorithmenbegriff

Kapitel 3: Berechnungstheorie Gliederung

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

Einführung in die Programmierung Wintersemester 2016/17

Wiederholung. Organisatorisches. VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

Theorie der Informatik

Berechenbarkeits- und Komplexitätstheorie

VL-11: LOOP und WHILE Programme I. (Berechenbarkeit und Komplexität, WS 2017) Gerhard Woeginger

Theoretische Informatik 1

Theoretische Informatik I

Transkript:

Seminararbeit zum Thema Was ist ein Algorithmus? Martin Griesser 05. Juni 2013 Inhaltsverzeichnis 1 Vorwort 2 2 Wortherkunft 2 3 Definition 2 3.1 Algorithmus und Berechenbarkeit.................. 2 3.2 Die Turingmaschine und Turing-Vollständigkeit.......... 3 3.3 Church-Turing-These......................... 3 3.4 Erweiterte Churchshe These..................... 3 3.5 Algorithmen und Programme.................... 4 4 Merkmale anhand eines Beispiels 4 4.1 Selectionsort............................. 4 4.2 Korrektheit.............................. 4 4.3 Endlichkeit.............................. 5 4.4 Determiniertheit........................... 5 4.5 Determinismus............................ 5 4.6 Effizienz................................ 5 1

1 Vorwort Ein Algorithmus ist eine schrittweise Lösungsanleitung für eine bestimmte Problemstellung. So könnte zum Beispiel die Anleitung zum Wechseln einer Glühbirne, oder die Zubereitung einer Rezeptur bereits als Algorithmus betrachtet werden. Es gibt allerdings keine generell akzeptierte formale Definition des Begriffes. In dieser Arbeit soll auf den Algorithmusbegriff aus der Sicht der Informatik eingegangen werden. 2 Wortherkunft Das Wort Algorithmus ist auf den Namen des persisch arabischen Mathematikers und Universalgelehrten Abu Ja far Mohammed ibn Musa al-khowarizmi 1 (Mohammed, Vater des Ja far, Sohn des Mose, geboren in Khowarizm) zurückzuführen. Der in Bagdad lebende Al-Khowarizmi befasste sich mit dem indischen Zahlensystem welches damals bereits die Ziffer 0 verwendete und die Grundlage für unser heutiges Dezimalsystem bildet. Um das Jahr 820 verfasste er sein Werk Über die indischen Zahlen. Im 12. Jahrhundert wurde dieses Lehr- und Rechenbuch in Spanien ins Lateinische übersetzt. Die Übersetzung begann mit den Worten: Dixit Algoritmi:... (Algoritmi hat gesprochen:...). Die heutige Bezeichnung Algorithmus leitet sich also aus der Ortsbezeichnung des Autors ab. (vgl. Ziegenbalg, Algorithmen: Von Hammurapi bis Gödel (German Edition), S. 19 3 Definition Ursprünglich wurde das ins Lateinische übernommene Wort Algorismus nur für die Kunst des Rechnens mit den indisch-arabischen Zahlen verwendet. Heute bezeichnet man damit eine detaillierte Berechnungsvorschrift zur Lösung eines Problems. Diese besteht aus einer Folge von eindeutigen Elementaranweisungen, welche den Lösungsweg exakt und vollständig beschreiben. Eine Elementaranweisung ist ein Rechenschritt, der nicht mehr weiter unterteilt werden kann. Die Abarbeitung eines Algorithmus ist ein iterativer Prozess. In den diversen Enzyklopädien und Lexika findet sich keine einheitliche, allgemeingültige Definition des Begriffes. Alle Worterklärungen zeigen aber, dass der Algorithmusbegriff sehr eng mit dem Begriff der Berechenbarkeit zusammenhängt, weshalb ich im Folgenden näher auf diesen Zusammenhang eingehen möchte. 3.1 Algorithmus und Berechenbarkeit Intuitiv könnte man berechenbar erklären als durch einen Kalkül ermittelbar oder maschinell ermittelbar. Einige bedeutende Mathematiker und Logiker haben sich damit befasst, die Begriffe Algorithmus und Berechenbarkeit exakter zu definieren, um mathematische Aussagen darüber treffen zu können. Beispiele für die entstandenen Rechenmodelle sind Alan Turings Turingmaschine, Alonzo Churchs Lambda Kalkül, oder das Konzept der Rekursiven Funktionen. Alle diese Modelle stellen formale Fassungen des Begriffes der Berechenbarkeit dar. (vgl ebd., S. 237) 1 verschiedene Schreibweisen möglich 2

3.2 Die Turingmaschine und Turing-Vollständigkeit Die von Alan Turing entwickelte Turingmaschine ist ein Rechenmodell der Theoretischen Informatik, mit dem die Arbeitsweise eines Computers auf mathematisch gut zu analysierende Weise modelliert werden kann. Eine Turingmaschine kann als eine Repräsentation eines Algorithmus bzw. eines Programmes angesehen werden. Jede Funktion, die durch eine Turingmaschine berechnet werden kann heißt berechenbar, oder algorithmisierbar. Berechnungsmodelle, welche die Eigenschaften einer Turingmaschine nachbilden können, werden als turingvollständig bezeichnet. Heutige Computer und Programmiersprachen sind turingvollständig. Sie können also, abgesehen von der Begrenztheit des Speichers, alles berechnen, was mittels einer Turingmaschine berechnet werden kann. (vgl Wikipedia, Turingmaschine Wikipedia, Die freie Enzyklopädie) 3.3 Church-Turing-These Die Klasse der turing-berechenbaren Funktionen stimmt mit der Klasse der intuitiv berechenbaren Funktionen überein. (Hoffmann, Theoretische Informatik, S. 296) Diese These ist nicht beweisbar, da da die Aussage intuitiv berechenbare Funktion nicht exakt formalisiert werden kann, wird aber allgemein als wahr anerkannt. Sollte die Aussage wahr sein, folgt daraus, dass es kein Rechenmodell geben kann, welches mächtiger ist als die bisherigen Modelle. Ein Computer ist ein solches Modell, daher kann auf ihm theoretisch jeder Algorithmus ausgeführt werden (wenn genügend Speicherplatz vorhanden ist). Folglich ist es auch nicht möglich, einen Rechner zu bauen, der mehr berechnen kann, als mit heutigen, turingvollständigen Systemen bereits realisiert wurde. Eine Widerlegung der These wäre die Konstruktion eines Modells, welches Berechnungen anstellen kann, die mit einer Turingmaschine nicht möglich sind. (vgl. Wikipedia, Church-Turing-These Wikipedia, Die freie Enzyklopädie) 3.4 Erweiterte Churchshe These Alle bisher bekannten formalen Fassungen des Begriffes der Berechenbarkeit sind gleichwertig. Deshalb kann jede dieser Fassungen als eine angemessene Präzisierung der vorher intuitiv verwendeten Begriffe der Berechenbarkeit, bzw. des Algorithmus angesehen werden (Ziegenbalg, Algorithmen: Von Hammurapi bis Gödel (German Edition), S. 238) Aufgrund dieser Aussage kann über die Turingmaschine folgende formale Definition des Begriffes Algorithmus formuliert werden: Eine Berechnungsvorschrift zur Lösung eines Problems heißt genau dann Algorithmus, wenn eine zu dieser Berechnungsvorschrift äquivalente Turingmaschine existiert, die für jede Eingabe, die eine Lösung besitzt, stoppt. (Wikipedia, Turingmaschine Wikipedia, Die freie Enzyklopädie) 3

3.5 Algorithmen und Programme In der Informatik werden Algorithmen durch Programme in meist turingvollständigen Programmiersprachen umgesetzt. Joachim Ziegenbalg definiert den Begriff Programm wie folgt: Ein Programm ist ein Algorithmus, der in einer Sprache formuliert ist, welche die Abarbeitung durch einen Computer ermöglicht. (Ziegenbalg, Algorithmen: Von Hammurapi bis Gödel (German Edition), S. 25) Somit kann jedes Computerprogramm als Algorithmus betrachtet werden. Darüber gibt es allerdings unterschiedliche Auffassungen, da häufig verlangt wird, dass Algorithmen terminieren müssen, also nach endlich vielen Einzelschritten abbrechen. Dies ist jedoch zum Beispiel bei Betriebssystemprogrammen nicht der Fall. 4 Merkmale anhand eines Beispiels Abbildung 1 Implementation of Selectionsort procedure Sort(A : List of sortable elements) n := length(a) left := 0 repeat min := left for all i from left + 1 to n do if A[i] < A[min] then min = i end if end for Swap(A[min], A[lef t] left := left + 1 while left < n end procedure 4.1 Selectionsort Selectionsort ist ein einfacher Sortieralgorithmus, der dazu dient, eine Liste von Daten auf- oder absteigend zu sortieren. Obwohl es heute wesentlich effizientere Sortierverfahren gibt, möchte ich diesen Algorithmus aufgrund seiner Einfachheit zur Veranschaulichung verwenden. Abbildung 1 zeigt eine Darstellung in Pseudocode Schreibweise. 4.2 Korrektheit Um einen realen Nutzen zu erfüllen muss ein Algorithmus zuallererst korrekt sein. Dass dies beim Selectionsort der Fall ist kann mathematisch nachgewiesen werden. 4

4.3 Endlichkeit Offensichtlich kann der Beispielalgorithmus exakt durch einen endlich langen Text beschrieben werden. Man spricht hier von Statischer Endlichkeit. Wenn ein Algorithmus zu jedem Zeitpunkt der Ausführung nur begrenzt viel Speicherplatz benötigt, spricht man von Dynamischer Endlichkeit. Auch dies ist hier gegeben, da der Algorithmus den Speicherplatz für die Eingabeliste und 4 Laufzeitvariablen benötigt 4.4 Determiniertheit Ein Algorithmus ist determiniert, wenn er bei gleichen Vorbedingungen und Eingaben immer das gleiche Ergebnis liefert. 4.5 Determinismus Ist zu jedem Ausführungszeitpunkt die als nächstes auszuführende Elementaranweisung eindeutig bestimmt, ist der Algorithmus deterministisch. Auch dies trifft im Beispielprogramm zu, da jeder einzelne Schritt eindeutig festgelegt ist. Manche Algorithmen verwenden allerdings Zufallszahlen während der Ausführung. Beim Quicksort-Algorithmus beispielsweise wird das Eingabearray vor der Verarbeitung in zufälliger Reihenfolge durchmischt. Daher ist die Verarbeitungsreihenfolge nicht immer gleich, auch wenn die gleichen Eingabedaten zugrunde liegen. Da dies jedoch nichts an der Korrektheit des Ergebnisses ändert, ist der Quicksort-Algorithmus determiniert, aber nicht deterministisch. 4.6 Effizienz Wie effizient ein bestimmter Algorithmus ist, wird in der theoretischen Informatik im Rahmen der Komplexitätstheorie untersucht. Man bezieht sich auf die quantifizierbaren Fragen der Laufzeit- und Speicherkomplexität (vgl. Ziegenbalg, Algorithmen: Von Hammurapi bis Gödel (German Edition), S. 167). Unter Laufzeitkomplexität versteht man die Anzahl an auszuführenden Elementaranweisungen, die für die Abarbeitung notwendig ist. Speicherkomplexität misst die Größe des benötigten Speichers. Diese Zahlen sind je nach Algorithmus mehr oder weniger abhängig von der Größe der Eingabe und können mathematisch berechnet werden. Literatur Hoffmann, Dirk. Theoretische Informatik. Hanser Fachbuchverlag, 2011. isbn: 3446426396. Wikipedia. Church-Turing-These Wikipedia, Die freie Enzyklopädie. [Online; Stand 4. Juni 2013]. 2013. url: http://de.wikipedia.org/w/index.php? title=church-turing-these&oldid=116709005. Turingmaschine Wikipedia, Die freie Enzyklopädie. [Online; Stand 4. Juni 2013]. 2013. url: http : / / de. wikipedia. org / w / index. php? title = Turingmaschine&oldid=118990130. Ziegenbalg, Jochen. Algorithmen: Von Hammurapi bis Gödel (German Edition). Spektrum Akademischer Verlag, 1996. isbn: 3827401143. 5