Algorithmus

Algorithmus
Al-Chwarizmi, der Namensgeber des Algorithmus, auf einer sowjetischen Briefmarke anlässlich seines 1200-jährigen Geburtsjubiläums.

Ein Algorithmus ist eine aus endlich vielen Schritten bestehende eindeutige Handlungsvorschrift zur Lösung eines Problems oder einer Klasse von Problemen.

Inhaltsverzeichnis

Wortgeschichte

Seite aus einer lateinischen Übersetzung (Cambridger Manuskript), beginnend mit „Dixit algorizmi“

Das Wort Algorithmus ist eine Abwandlung oder Verballhornung des Namens von Muhammed al-Chwarizmi (etwa 783–850), dessen arabisches Lehrbuch Über das Rechnen mit indischen Ziffern (um 825) in der mittelalterlichen lateinischen Übersetzung mit den Worten Dixit Algorismi (Algorismi hat gesagt) beginnt. Im Mittelalter wurde daraus lateinisch algorismus (mit Varianten wie alchorismus, algoarismus, altfranzösisch algorisme, argorisme, mittel-englisch augrim, augrym) als Bezeichnung für die Kunst des Rechnens mit den arabischen Ziffern und als Titel für Schriften über diese Kunst.

Die lateinischen Autoren pflegten zu erklären, dass das Wort algorismus aus dem Namen des Erfinders dieser Kunst, eines Philosophen namens Algus, und dem griechischen Wort rismus (arithmós) für Zahl zusammengesetzt sei. Dabei wurde Algus von einigen als Araber, von anderen als Grieche oder zumindest griechisch schreibender Autor, gelegentlich auch als „König von Kastilien“ (Johannes von Norfolk) betrachtet. In der volkssprachlichen Tradition erscheint dieser „Meister Algus“ dann zuweilen in einer Reihe mit großen antiken Denkern wie Platon, Aristoteles und Euklid, so im altfranzösischen Roman de la Rose, während das altitalienische Gedicht Il Fiore ihn sogar als Erbauer des Schiffes Argo ausgibt, mit dem Jason sich auf die Suche nach dem Goldenen Vlies begab.

Durch Gräzisierung der Schreibweise des vermeintlich griechischen Wortbestandteiles rismus hat sich dann in der lateinischen Wissenschaftssprache die Schreibung algorithmus ergeben; in dieser Form hat sich das Wort später als Fachterminus für geregelte Prozeduren zur Lösung definierter Probleme eingebürgert.

Informatik und Mathematik

Algorithmen sind eines der zentralen Themen der Informatik und Mathematik. Sie sind Gegenstand einiger Spezialgebiete der Theoretischen Informatik, der Komplexitätstheorie und der Berechenbarkeitstheorie. In Form von Computerprogrammen und elektronischen Schaltkreisen steuern sie Computer und andere Maschinen.

Algorithmus und Programme

Für Algorithmen gibt es unterschiedliche formale Repräsentationen. Diese reichen vom Algorithmus als abstraktem Gegenstück zum konkret auf eine Maschine zugeschnittenen Programm (das heißt, die Abstraktion erfolgt hier im Weglassen der Details der realen Maschine, das Programm ist eine konkrete Form des Algorithmus, angepasst an die Notwendigkeiten und Möglichkeiten der realen Maschine) bis zur Ansicht, Algorithmen seien gerade die Maschinenprogramme von Turingmaschinen (wobei hier die Abstraktion in der Verwendung der Turingmaschine an sich erfolgt, das heißt, einer idealen mathematischen Maschine).

Algorithmen können in Programmablaufplänen nach DIN 66001 oder ISO 5807 grafisch dargestellt werden.

Erster Computeralgorithmus

Der erste für einen Computer gedachte Algorithmus (zur Berechnung von Bernoullizahlen) wurde 1843 von Ada Lovelace in ihren Notizen zu Charles Babbages Analytical Engine festgehalten. Sie gilt deshalb als die erste Programmiererin. Weil Charles Babbage seine Analytical Engine nicht vollenden konnte, wurde Ada Lovelaces Algorithmus nie darauf implementiert.

Heutige Situation

Prinzipbild des Rete-Algorithmus für Expertensystem, publiziert 1979, frei

Algorithmen für Computer sind heute so vielfältig wie die Anwendungen, die sie ermöglichen sollen. Vom elektronischen Steuergerät für den Einsatz in KFZ über die Rechtschreib- und Satzbau-Kontrolle in einer Textverarbeitung bis hin zur Analyse von Aktienmärkten finden sich tausende von mehr oder minder tauglich arbeitenden Algorithmen. Als Ideen und Grundsätze, die einem Computerprogramm zugrunde liegen, wird Algorithmen in der Regel urheberrechtlicher Schutz versagt.[1] Je nach nationaler Ausgestaltung der Immaterialgüterrechte sind Algorithmen der Informatik jedoch dem Patentschutz zugänglich, so dass urheberrechtlich freie individuelle Werke, als Ergebnis eigener geistiger Schöpfung, wirtschaftlich trotzdem nicht immer frei verwertet werden können. Dies betrifft oder betraf z. B. Algorithmen, die auf der Mathematik der Hough-Transformation (Jahrzehnte alt, aber mehrfach aktualisiertes Konzept mit Neu-Anmeldung) aufbauen, Programme, die das Bildformat GIF lesen und schreiben wollten oder auch Programme im Bereich der Audio- und Video-Verarbeitung, da die zugehörigen Algorithmen, wie sie in den zugehörigen Codecs umgesetzt sind, oftmals nicht frei verfügbar sind. Die entsprechenden Einsparpotentiale für alle Anwender weltweit (für den Rete-Algorithmus wurde einst 1 Million USD auf DEC XCON genannt) dürften heute problemlos die Grenze von einer Milliarde USD im Jahr um ein zigfaches überschreiten.

Definition

Turingmaschinen und Algorithmusbegriff

Die mangelnde mathematische Genauigkeit des Begriffs Algorithmus störte viele Mathematiker und Logiker des 19. und 20. Jahrhunderts, weswegen in der ersten Hälfte des 20. Jahrhunderts eine ganze Reihe von Ansätzen entwickelt wurde, die zu einer genauen Definition führen sollten. Formalisierungen des Berechenbarkeitsbegriffs sind die Turingmaschine (Alan Turing), Registermaschinen, der Lambda-Kalkül (Alonzo Church), rekursive Funktionen, Chomsky-Grammatiken und Markow-Algorithmen.

Es wurde – unter maßgeblicher Beteiligung von Alan Turing selbst – gezeigt, dass all diese Methoden gleich leistungsfähig (gleich mächtig) sind. Sie können durch eine Turingmaschine emuliert werden, und sie können umgekehrt eine Turingmaschine emulieren.

Mit Hilfe des Begriffs der Turingmaschine kann folgende formale Definition des Begriffs 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.

Aus dieser Definition sind folgende Eigenschaften eines Algorithmus ableitbar:

  1. Das Verfahren muss in einem endlichen Text eindeutig beschreibbar sein (Finitheit).
  2. Jeder Schritt des Verfahrens muss tatsächlich ausführbar sein (Ausführbarkeit).
  3. Das Verfahren darf zu jedem Zeitpunkt nur endlich viel Speicherplatz benötigen (Dynamische Finitheit, siehe Platzkomplexität).
  4. Das Verfahren darf nur endlich viele Schritte benötigen (Terminierung, siehe auch Zeitkomplexität).

Darüber hinaus wird der Begriff Algorithmus in praktischen Bereichen oft auf die folgenden Eigenschaften eingeschränkt:

  1. Der Algorithmus muss bei denselben Voraussetzungen das gleiche Ergebnis liefern (Determiniertheit).
  2. Die nächste anzuwendende Regel im Verfahren ist zu jedem Zeitpunkt eindeutig definiert (Determinismus).

Church-Turing-These

Die Church-Turing-These lautet: „Jedes intuitiv berechenbare Problem kann durch eine Turingmaschine gelöst werden.“ Als formales Kriterium für einen Algorithmus zieht man die Implementierbarkeit in einem beliebigen, zu einer Turingmaschine äquivalenten Formalismus heran, insbesondere die Implementierbarkeit in einer Programmiersprache – die von Church verlangte Terminiertheit ist dadurch allerdings noch nicht gegeben.

Der Begriff der Berechenbarkeit ist dadurch dann so definiert, dass ein Problem genau dann berechenbar ist, wenn es einen (terminierenden) Algorithmus zu dem Problem gibt, das heißt, wenn eine entsprechend programmierte Turingmaschine das Problem in endlicher Zeit lösen könnte.

Abstrakte Automaten

Turingmaschinen harmonieren gut mit den ebenfalls abstrakt-mathematischen berechenbaren Funktionen, reale Probleme sind jedoch ungleich komplexer, daher wurden andere Maschinen vorgeschlagen.

Diese Maschinen weichen etwa in der Mächtigkeit der Befehle ab; statt der einfachen Operationen der Turingmaschine können sie teilweise mächtige Operationen, wie etwa Fourier-Transformationen, in einem Rechenschritt ausführen.

Oder sie beschränken sich nicht auf eine Operation pro Rechenschritt, sondern ermöglichen parallele Operationen, wie etwa die Addition zweier Vektoren in einem Schritt.

Ein Modell einer realeren Maschine ist die Sequential Abstract State Machine (seq. ASM)[2] mit folgenden Eigenschaften:

Ein Algorithmus einer seq. ASM soll

  • durch einen endlichen Programmtext spezifiziert werden können
  • schrittweise ausgeführt werden können
  • für bestimmte Zustände terminieren, muss aber nicht immer terminieren (sinnvolle Gegenbeispiele für die Forderung, dass immer terminiert werden muss, wären etwa ein Programm, das fortgesetzt Primzahlen findet, oder ein Betriebssystem)
  • nur begrenzt viele Zustände pro Schritt ändern können (Begrenzung der Parallelität)
  • nur begrenzt viele Zustände pro Schritt inspizieren können (Begrenzung der Exploration).

Eigenschaften

Determiniertheit

Ein Algorithmus ist determiniert, wenn dieser bei jeder Ausführung mit gleichen Startbedingungen und Eingaben gleiche Ergebnisse liefert.

Determinismus

Ein Algorithmus ist deterministisch, wenn zu jedem Zeitpunkt der Algorithmusausführung der nächste Handlungsschritt eindeutig definiert ist. Beispiele für deterministische Algorithmen sind Bubblesort und der euklidische Algorithmus. Dabei gilt, dass jeder deterministische Algorithmus determiniert, während aber nicht jeder determinierte Algorithmus deterministisch ist. So ist Quicksort mit zufälliger Wahl des Pivotelements ein Beispiel für einen determinierten, aber nicht deterministischen Algorithmus, da sein Ergebnis bei gleicher Eingabe und eindeutiger Sortierung immer dasselbe ist, der Weg dorthin jedoch zufällig erfolgt.

In der theoretischen Informatik gibt es neben dem Determinismus auch den Nichtdeterminismus, der aber mit keiner realen Maschine (auch nicht mit Quantencomputern) direkt umgesetzt werden kann.

Finitheit

Statische Finitheit

Die Beschreibung des Algorithmus besitzt eine endliche Länge, der Quelltext muss also aus einer begrenzten Anzahl von Zeilen bestehen.

Dynamische Finitheit

Ein Algorithmus darf zu jedem Zeitpunkt seiner Ausführung nur begrenzt viel Speicherplatz benötigen.

Terminiertheit

Terminiertheit heißt: Ein Algorithmus hält nach endlich vielen Schritten an (bricht kontrolliert ab). Dies gilt für jede mögliche Eingabe. Würde ein Algorithmus nicht terminieren (und somit zu keinem Ergebnis kommen), wäre die Folge eine so genannte Endlosschleife.

Für diese Eigenschaft gibt es jedoch Ausnahmen: Steuerungssysteme, Betriebssysteme und viele weitere Programme, die auf Interaktion mit dem Benutzer aufbauen. Solange der Benutzer keinen Befehl zum Beenden eingibt, laufen diese Programme beabsichtigt endlos weiter. Donald Knuth schlägt in diesem Zusammenhang vor, nicht terminierende Algorithmen als rechnergestützte Methoden (Computational Methods) zu bezeichnen.

Darüber hinaus ist die Terminierung eines Algorithmus (das Halteproblem) nicht entscheidbar. Das heißt, das Problem, festzustellen, ob ein Algorithmus mit einer beliebigen Eingabe terminiert, ist nicht durch einen Algorithmus lösbar.

Effektivität

Der Effekt jeder Anweisung eines Algorithmus muss eindeutig festgelegt sein.

Beispiele für Eigenschaften von Algorithmen

Einfache Grundoperation: „Öffne die Flasche Wein“ hierbei wird das Wissen um das Öffnen vorausgesetzt.

Sequentieller Algorithmus: „Bier auf Wein, lass das sein“ beiden Operationen ist eine Reihenfolge vorgegeben und diese sollte nicht verändert werden.

Nebenläufiger Algorithmus: „Schnaps und Bier“ Die Reihenfolge ist nicht vorgegeben und kann auch gleichzeitig erfolgen.

Parallele Ausführung: „Mit Sekt anstoßen“ Dies kann nur gleichzeitig (parallel) ausgeführt werden und nicht hintereinander (sequentiell).

Nichtdeterministischer/nichtdeterminierter Algorithmus: „Bier oder Wasser“ Das Ergebnis unterscheidet sich, je nach dem welches man wählt.

Algorithmenanalyse

Die Erforschung und Analyse von Algorithmen ist eine Hauptaufgabe der Informatik, und wird meist theoretisch (ohne konkrete Umsetzung in eine Programmiersprache) durchgeführt. Sie ähnelt somit dem Vorgehen in anderen mathematischen Gebieten, in denen die Analyse eher auf die zugrunde liegenden Konzepte als auf konkrete Umsetzungen ausgerichtet ist. Algorithmen werden zur Analyse in eine stark formalisierte Form gebracht und mit den Mitteln der formalen Semantik untersucht.

Die Analyse unterteilt sich in verschiedene Teilgebiete. Beispielsweise wird das Verhalten von Algorithmen bezüglich Ressourcenbedarf wie Rechenzeit und Speicherbedarf in der Komplexitätstheorie behandelt; die Ergebnisse werden als asymptotische Laufzeiten angegeben. Der Ressourcenbedarf wird dabei in Abhängigkeit von der Länge der Eingabe ermittelt, das heißt, die angegebene Komplexität hängt davon ab, wie groß die Zahlen sind, deren größter gemeinsamer Teiler gesucht wird, oder wie viele Elemente sortiert werden müssen etc.

Das Verhalten bezüglich der Terminierung, ob also der Algorithmus überhaupt jemals erfolgreich beendet werden kann, behandelt die Berechenbarkeitstheorie.

Typen und Beispiele

Der älteste bekannte nicht-triviale Algorithmus ist der euklidische Algorithmus. Spezielle Algorithmus-Typen sind der randomisierte Algorithmus (mit Zufallskomponente), der Approximationsalgorithmus (als Annäherungsverfahren), der genetische Algorithmus (mit evolutionärer Komponente) und der Greedy-Algorithmus.

Eine weitere Übersicht gibt die Liste von Algorithmen und die Kategorie Algorithmus.

Literatur

Weblinks

Fußnoten

  1. Deutschland: § 69a Abs. (2) UrhG
  2. Sequential Abstract State Machine (seq. ASM)

Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Algorithmus — wird in der Bedeutung von Rechnungsverfahren gebraucht, z.B. den Kettenbruch Algorithmus nennt man das Verfahren, nach dem gegebene Größen in Kettenbrüche entwickelt werden. Literatur: Cantor, M., Vorlesungen über Geschichte der Mathematik, Bd. 1 …   Lexikon der gesamten Technik

  • Algorithmus — (Algarithmus), abgeleitet von dem Namen des arab. Mathematikers Mohammed Ben Musa Alkaresmi, gest. 820, im Mittelalter Rechnung nach dem damals durch die Araber bekannt gewordenen dekadischen (indischen) Zahlensystem, jetzt jedes bestimmten… …   Meyers Großes Konversations-Lexikon

  • Algorithmus — (Algorismus), s. Algarithmus …   Kleines Konversations-Lexikon

  • Algorithmus — oder Algarithmus, veralteter Ausdruck für alle arithmetischen Operationen mit dem dekadischen Zahlensystem …   Herders Conversations-Lexikon

  • Algorithmus — Sm Berechnungsverfahren per. Wortschatz fach. (13. Jh., Form 16. Jh.), mhd. algorismus Onomastische Bildung. Entlehnt aus ml. algorismus, das das Rechnen im dekadischen Zahlensystem und dann die Grundrechenarten bezeichnet. Das Wort geht zurück… …   Etymologisches Wörterbuch der deutschen sprache

  • Algorithmus — (genau definierte) Handlungsvorschrift; Rechenvorschrift * * * Al|go|rịth|mus 〈m.; , men; Math.; EDV〉 ein Verfahren, bei dem aufgrund eines Systems von Regeln gegebene Größen (Eingabeinformationen, Aufgaben) in andere Größen… …   Universal-Lexikon

  • Algorithmus — algoritmas statusas T sritis automatika atitikmenys: angl. algorithm vok. Algorithmus, m rus. алгоритм, m; алгорифм, m pranc. algorithme, m …   Automatikos terminų žodynas

  • Algorithmus — algoritmas statusas T sritis fizika atitikmenys: angl. algorithm vok. Algorithmus, m rus. алгорифм, m pranc. algorithme, m …   Fizikos terminų žodynas

  • Algorithmus — Verfahren, bei dem aufgrund bestimmter Formeln bzw. Regeln gegebene Größen (z.B. Datenbankeinträge) in andere Größen (z.B. eine Sortierung) umgewandelt werden. Im Zusammenhang mit Suchmaschinenoptimierung sind hier meist die Methoden gemeint,… …   SEO Wörterbuch

  • Algorithmus — systematische Beschreibung des Verfahrens zur Lösung einer Aufgabe. Beispiele: Gaußscher Algorithmus zur Lösung von Systemen linearer Gleichungen, das Quick Sort Verfahren zum Sortieren von Informationen. Computer Programme bestehen oft aus einer …   Erläuterung wichtiger Begriffe des Bauwesens

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”