Definition Algorithmus
Ein Algorithmus ist eine genaue Vorschrift, nach der ein gewisses System von Operationen in einer bestimmten Reihenfolge auszuführen ist und mit der man alle Aufgaben eines gegebenen Typs lösen kann.
Merkmale eines Algorithmus
eine genaue Handlungsvorschrift zur Lösung eines Problems oder einer bestimmten Art von Problemen
sind abstrakt, d.h. sprach- und maschinenunabhängig
mit Hilfe von Pseudocode formuliert
Leistungsmerkmale
--> Rechenzeitaufwand / Laufzeit
--> Speicherplatzaufwand im Zwischenspeicher
--> Verständlichkeit (Klarheit) und Wartbarkeit
--> leichte Verifizierbarkeit der Korrektheit
--> leichte Implementierbarkeit
--> Exaktheit
Das Sortieren durch Aufsteigen (englisch Bubblesort, "Blasensortierung") bezeichnet ein Sortierverfahren, welches eine Reihe zufällig angeordneter Elemente (etwa Zahlen) der Größe nach ordnet.
Insertionsort

Bestandteile eines Algorithmus
1. Handlung
Für die formale Darstellung eines Algorithmus ist eine Menge von Elementaroperationen zu definieren, die vom jeweiligen Anwender verstanden und ausgeführt werden können.
Bestandteile eines Algorithmus
2. Objekte
Auf die Objekte soll mit Hilfe der Handlung eine Wirkung ausgeübt werden. Diese können abstrakter oder konkreter Natur sein.
Beteiligte Objekte werden „computerverständlich“ formuliert, indem man ihre Eigenschaften/Attribute durch Daten beschreibt.
Pseudocode
Algorithmen werden mit Hilfe einer speziellen Beschreibungssprache für Algorithmen (Algorithm Definition Language, ADL), auch Pseudocode genannt, formuliert.
Die ADL beschränkt sich auf essenzielle Sprachkonstrukte und ähnelt natürlichen Sprachen
Pseudocode kann textuell oder graphisch dargestellt werden
Vom Problem zum Programm
1. Formale Beschreibung der Problemstellung und Randbedingungen
2. Formulierung eines Algorithmus mit Hilfe der zur Verfügung stehenden Elementaroperationen
3. Der allgemein beschriebene Algorithmus wird durch die Implementierung in eine für den Rechner verständliche und ausführbare „Sprache“ übersetzt.
Klassifizierung der Eigenschaften von Algorithmen
Problemunabhängige Eigenschaften
Sie beziehen sich ausschließlich auf den betrachteten Algorithmus, nicht jedoch auf das Problem oder dessen Spezifikation.
Beispiele:
Endlichkeit
Determiniertheit/Determinismus
Terminiertheit
Parallelität
Klassifizierung der Eigenschaften von Algorithmen
Problembezogene Eigenschaften
Sie sind dagegen für einen Algorithmus in Bezug auf die entsprechende Spezifikation erklärt.
Beispiele:
Korrektheit
Effizienz
Endlichkeitsbedingung
Ein Algorithmus muss endlich beschreibbar sein. Das heißt, er muss durch einen endlichen Text formulierbar sein.
Terminiertheit
Ein Algorithmus ist terminierend, wenn er für jede erlaubte Eingabe nach einer endlichen Zahl von Schritten zu einem Ergebnis kommt.
Determiniertheit
Ein Algorithmus ist determiniert, wenn er bei gleichen Parametern und Startwert stets das gleiche Resultat liefert.
Determinismus
Ein Algorithmus ist deterministisch, wenn zu jedem Zeitpunkt der Ausführung maximal eine Möglichkeit der Programmfortsetzung existiert.
Parallelität
Ein Algorithmus heißt parallel, wenn er so in Teilaufgaben aufgeteilt ist, dass diese gleichzeitig durch verschiedene Prozessoren ausgeführt werden können.
Komplexität eines Algorithmus
Die Komplexität eines Algorithmus bezeichnet seinen maximalen Ressourcenbedarf (z.B. Rechenzeit, Speicherplatz).
Die Komplexitätstheorie trifft die folgenden idealisierten Annahmen, die zur Abstraktion der materiellen Sicht dienen:
Komplexitätsklassen

O-Notation

Die Anforderungen an den Algorithmenentwurf sind:

Prinzip der schrittweisen Verfeinerung:
1. Entwurf eines groben Algorithmus mit abstrakten Operationen und Datentypen.
2. Verfeinerung der im ersten Schritt benutzten Operationen. Das heißt Implementierung mit weniger abstrakten Operationen und Datentypen.
3. Wiederholung des Verfeinerungsschritts, bis man einen Algorithmus erhält, der nur die zur Verfügung stehenden Ablaufstrukturen und Elementaroperationen enthält.