Algorithmus

aus www.iwiki.de, der freien Wissensdatenbank

Unter einem Algorithmus versteht man allgemein eine genau definierte Handlungsvorschrift zur Lösung eines Problems oder einer bestimmten Art von Problemen.

Inhaltsverzeichnis

Algorithmen in der Informatik

Algorithmen werden im normalen Leben nicht bis ins letzte Detail beschrieben bzw. verfeinert. Dort verlĂ€ĂŸt man ergĂ€nzend sich auf die menschliche Komponente Verstand. Deswegen können solche Algorithmen nicht ohne weiters auf einem Rechner umgesetzt oder ausgefĂŒhrt werden. Falls ein Algorithmus auf einem Rechner laufen soll, muss der Algorithmus mit knappen Resourcen des Computers zurecht kommen und der Algorithmus muss in einer klaren, stukturierten Form vorliegen.

Diese Probleme fĂŒhren dazu, dass in der Informatik sogenannte 'deterministische Algorithmen' von besonderer Bedeutung sind. Ein deterministischer Algorithmus ist eine Funktion, die Eingabedaten in Ausgabedaten schrittweise transformiert und dabei folgende Bedingungen erfĂŒllt:

  • Determinismus: Schrittfolge liegt fest - Ergebnistreue,
  • Exaktheit: prĂ€zise und formale Beschreibung,
  • Finitheit: endliche Beschreibung,
  • VollstĂ€ndigkeit: alle denkbare FĂ€lle beschrieben,
  • EffektivitĂ€t: Schritte real ausfĂŒhrbar,
  • Terminierung: der Algorithmus kommt zum Ende.

Ein Programm ist eine Beschreibung eines Algoritmus und seiner Daten in einer Programmiersprache.

Entwurf von Algorithmen

Im folgenden Abschnitt wird erlÀutert, wie man einen Algorithmus im Rahmen der Informatik entwickelt.


Top-down-Design

Diese Methode beschreibt die Zerlegung einer Aufgabe kleinere Bestandteile. Die so entstandenen Teile werden sukzessive weiter verfeinert. Der Prozess wird so oft wiederholt bis ein gewisser Detailgrad erreicht wird. FĂŒr die Darstellung dieser Zerlegung nutzt man eine Meta-Sprache, die eine spĂ€tere Realisierung des Algorithmuses in einer Programmiersprache unterstĂŒtzt. Einzelne Teilaufgaben werden unabhĂ€ngig von den anderen bearbeitet und dargestellt.

Man kann bei Top-Down-Design sowohl grafische als auch textuelle Methoden verwenden.

Zu grafischen Methoden zĂ€hlen beispielsweise ProgrammablaufplĂ€ne und Nassi-Shneiderman-Struktogramme. Ein Beispiel fĂŒr eine textuelle Methode ist Pseudocode.


Bottom-up-Design

Wenn man nach dieser Methode vorgeht, entwickelt man zuerst kleine Bausteine fĂŒr ein oder mehrere Programme, die spĂ€ter zusammengesetzt werden. Einzelne Bausteine werden nach Funktionen gruppiert und zu einer Bibliotek zusammengefasst.

Spezielle Algorithmen

Die Rekursion stellt eine Sonderform eines Algorithmus dar. Als Rekursion bezeichnet man den Aufruf einer Methode in der Methode selbst. Beim zweiten Aufruf bekommt die Methode andere Aufrufparameter als beim ersten. Die Methode selbst muss eine Abbruchbedingung haben. Wenn die Begingung erfĂŒllt ist, erfolgt keinen weiteren Aufruf.

Mit Hilfe von einem Sortieralgorithmus werden Elemente eines Feldes nach einem Sortierbegriff geordnet.

Berechenbarkeit und KomplexitÀt

Berechenbarkeit ist eine Eigenschaft einer Funktion mit Hilfe eines Algorithmus das Ergebnis aus der Eingabe zu berechnen.

Um die Berechenbarkeit eines Algorithmus festzustellen, werden verschiedene Methoden benutzt. Eine Methode verwendet ein rein theoretisches Konstrukt, die sogenannte Turing-Maschine. Die Turing-Maschine besteht aus einem Lese-Schreibe-Kopf und einem unendlich großen Speicher (Band). Die Maschine kann einen bestimmten Zustand aus einer endlichen Menge von zugelassenen ZustĂ€nden annehmen. Die ZustĂ€nde representieren die Steuerung der Maschine und beschreiben was die Maschine in dem laufenden Schritt machen und in welchen Zustand die Maschine fĂŒr den nĂ€chsten Schritt wechseln muss.

Wenn fĂŒr eine Funktion eine Turing-Machine existiert, dann ist diese Funktion berechenbar.

Die KomplexitÀt eines Algorithmus stellt den Aufwand an Betriebsmitteln dar. Die Betriebsmittel die von Algoritmen benötigt bzw. verbraucht werden sind primÀr Laufzeit und Speicherbedarf.

Die LaufzeitkomplexitĂ€t wird mit Ordnung gekennzeichnet. Die Ordnung zeigt, wie die Laufzeit eines Algorithmus von der Anzahl der Eingabeparameter abhĂ€ngt. Bubble-Sort beispielsweise ist von der Ordnung n2 und Quick-Sort von Ordnung n * log(n). Dies bedeutet im wesentlichen, dass Bubble-Sort in der Regel viel mehr Zeit braucht um einen Feld zu sortieren als Quick-Sort. Das wird besonders bei grĂ¶ĂŸeren Felder spĂŒrbar.

Siehe auch

Literatur

  • Bernd Breutmann: Data and Algorithms. An Introductory Course, Carl Hanser Verlag, MĂŒnchen 2001 , ISBN 3-446-21591-3
  • Donald E. Knuth: The Art of Computer Programming. Bd 1–3. Addison Wesley, Reading Mass. 1998, ISBN 0201485419
  • Thomas Ottmann, Peter Widmayer: Algorithmen und Datenstrukturen. Spektrum Akademischer Verlag, Heidelberg 2002 (4. Aufl.), ISBN 3-8274-1029-0
  • Uwe Schöning: Algorithmen - kurz gefasst, Spektrum Akademischer Verlag, Heidelberg 1997, ISBN 3-8274-0232-8

Weblinks