Zum Forum
Passwort vergessen?
Noch keinen Account?
lexikon
Hauptseite
Zufälliger Artikel
Diskussion
Diskussion : Algorithmus
Links
Forum
Portale
Reisen
Versicherung
Inhaltsverzeichnis
Hauptmenü
Home
Editorial
Bildung
E-Learning
Fremdsprachen
Magazin
Wissen
Wörterbücher
Enzyklopädien
Expertendienste
Wissenswertes
Praktische Ratgeber
--------------------------
Biologie
Chemie
Computer
Film/ Theater
Geografie
Geschichte
Jura
Kunst
Literatur
Mathematik
Medizin
Musik
Philosophie
Physik/ Astronomie
Politik
Psychologie
Religionen
Sport
Umwelt
Wirtschaft
Reisen
Lexikon
Versicherung
Suchen
Schnellsuche
Suchmaschinen
Metasuchmaschinen
Webkataloge
News
Treffpunkt
Chat
Forum
Suche
Schnellsuche
Sitemap
Kontakt
Impressum
Algorithmus
Stichpunkte
Allgemein
Unter einem Algorithmus versteht man allgemein eine mehr oder weniger genau definierte Handlungsvorschrift zur Lösung eines Problems oder einer bestimmten Art von Problemen
etc.
wenn alle Angaben genau genug sind und es für alle Teilaufgaben
wie Braten
ebenfalls Algorithmen gibt
Rühren
Im täglichen Leben lassen sich leicht Beispiele für Algorithmen finden: Zum Beispiel ist ein Kochrezept ein Algorithmus – zumindest dann
Auch Reparatur- und Bedienungsanleitungen oder Hilfen zum Ausfüllen von Formularen sind in der Regel Algorithmen
Ein weiteres
etwas präziseres Beispiel sind Waschmaschinenprogramme
Vor allem aber sind Algorithmen eine der zentralen Themen der Informatik und Gegenstand einiger Spezialgebiete der Theoretischen Informatik
der Komplexitätstheorie und der Berechenbarkeitstheorie
wie der Algorithmentheorie
In Form von Computerprogrammen und elektronischen Schaltkreisen steuern sie Computer und andere Maschinen
dass es für diesen intuitiv klar erscheinenden Begriff keine einheitliche präzise Definition gibt
Schaut man genauer hin
stellt man fest
Verschiedene Autoren pflegen verschiedene Definitionen
Seine Definition ist immer noch Gegenstand der Forschung
d. h. einer idealen mathematischen Maschine). Inhaltsverzeichnis showTocToggle("Anzeigen"
dass Algorithmen gerade die Maschinenprogramme von Turingmaschinen sind (wobei hier die Abstraktion in der Verwendung der Turingmaschine an sich erfolgt
bis hin zur Sicht
das Programm ist eine konkrete Form des Algorithmus
angepasst an die Notwendigkeiten und Möglichkeiten der realen Maschine)
Die Sicht reicht vom Algorithmus als abstraktes Gegenstück zum konkret auf eine Maschine zugeschnittenen Programm (d. h. die Abstraktion erfolgt hier im Weglassen der Details der realen Maschine
"Verbergen") 1 Geschichte 1.1 Erster Computeralgorithmus 2 Formale Definition 2.1 Turingmaschinen und Algorithmusbegriff 2.1.1 Church-Turing-These 2.2 Abstract State Machines 3 Ein Beispiel: der Euklidische Algorithmus 4 Eigenschaften 4.1 Determiniertheit 4.2 Determinismus 4.3 Finitheit 4.3.1 Statische Finitheit 4.3.2 Dynamische Finitheit 4.4 Terminiertheit 5 Algorithmenanalyse 6 Beispiele 6.1 Algorithmen in der Wikipedia 6.2 Algorithmen im Alltag 7 Siehe auch 8 Literatur 9 Weblinks [Bearbeiten]
Geschichte
Das Wort Algorithmus ist eine Abwandlung oder Verballhornung des Namens Muhammad ibn Musa al-Chwarizmi (* ca
783
†ca
850)
Regeln zur Wiederherstellung und Reduktion)
durch das die Algebra im Westen verbreitet wurde
des Autors des Buchs Hisab al-dschabr wa-l-muqabala (825
Die lateinische Fassung beginnt mit „Dixit Algorithmi...“
womit der Autor gemeint war
Das Wort Algebra stammt ebenfalls (al-Jabr – „Einrenkung“) aus dem Titel des Buches
Ursprünglich stand das Wort Algorism nur für die Regeln zur Arithmetik mit arabischen Ziffern
mit denen Probleme aller Art gelöst werden können. [Bearbeiten]
Heute steht es für alle geregelten Prozeduren
Erster Computeralgorithmus
in ihren Notizen zu Charles Babbages Analytical Engine
festgehalten
Der erste für einen Computer gedachte Algorithmus wurde 1842 von Ada Lovelace
Sie gilt deshalb als die erste Programmiererin
wurde Ada Lovelaces Algorithmus nie darauf implementiert. [Bearbeiten]
Weil Charles Babbage seine Analytical Engine nicht vollenden konnte
Formale Definition
Die mangelnde mathematische Genauigkeit des Begriffs Algorithmus störte viele Mathematiker und Logiker des 19. und 20
Jahrhunderts
Insbesondere steht die natürliche Sprache mit ihren Unschärfen und Widersprüchlichkeiten der Forderung nach Eindeutigkeit und Widerspruchsfreiheit im Wege. [Bearbeiten]
Turingmaschinen und Algorithmusbegriff
In der ersten Hälfte des 20
um zu einer genauen Definition zu kommen
Jahrhunderts wurden eine ganze Reihe von Ansätzen entwickelt
rekursive Funktionen
und Markow-Algorithmen
Formalisierungen des Berechenbarkeitsbegriffs sind die Turing-Maschine (Alan Turing)
Chomsky-Grammatiken
der Lambda-Kalkül (Alonzo Church)
dass all diese Methoden ebenso leistungsfähig (gleich mächtig) sind
Es wurde – unter maßgeblicher Beteiligung von Alan Turing selbst – gezeigt
wenn eine zu dieser Berechnungsvorschrift äquivalente Turingmaschine existiert
die für jede Eingabe stoppt
und sie können umgekehrt eine Turing-Maschine emulieren. Mit Hilfe des Begriffs der Turing-Maschine kann folgende formale Definition des Begriffs formuliert werden: Eine Berechnungsvorschrift zur Lösung eines Problems heißt Algorithmus genau dann
Sie können durch eine Turing-Maschine emuliert werden
siehe Platzkomplexität). Das Verfahren darf nur endlich viele Schritte benötigen (Terminierung
Aus dieser Definition sind folgende Eigenschaften eines Algorithmus ableitbar: Das Verfahren muss in einem endlichen Text eindeutig beschreibbar sein (Finitheit). Jeder Schritt des Verfahrens muss auch tatsächlich ausführbar sein (Ausführbarkeit). Das Verfahren darf zu jedem Zeitpunkt nur endlich viel Speicherplatz benötigen (Dynamische Finitheit
siehe auch Zeitkomplexität). Darüber hinaus wird der Begriff Algorithmus in praktischen Bereichen oft auf die folgenden Eigenschaften eingeschränkt: Der Algorithmus muss bei denselben Voraussetzungen das gleiche Ergebnis liefern (Determiniertheit). Die nächste anzuwendende Regel im Verfahren ist zu jedem Zeitpunkt eindeutig definiert (Determinismus). [Bearbeiten]
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 Turing-Maschine äquivalenten Formalismus heran
insbesondere die Implementierbarkeit in einer Programmiersprache – die von Church verlangte Terminiertheit ist dadurch allerdings noch nicht gegeben
dass ein Problem berechenbar ist genau dann
d. h. wenn eine entsprechend programmierte Turing-Maschine das Problem in endlicher Zeit lösen könnte. [Bearbeiten]
wenn es einen (terminierenden) Algorithmus zu dem Problem gibt
Der Begriff der Berechenbarkeit ist dadurch dann so definiert
Abstract State Machines
Turingmaschinen harmonieren sehr gut mit den ebenfalls abstrakt-mathematischen berechenbaren Funktionen
daher wurden andere Maschinen vorgeschlagen
reale Probleme sind jedoch ungleich komplexer
anstatt den einfachen Operationen der Turingmaschine
Diese Maschinen weichen z.B. in der Mächtigkeit der Befehle ab
wie z
können sie z.T. sehr mächtige Operationen
BF
in einem Rechenschritt ausführenO
ouriertransformation
sondern ermöglichen sehr parallele Operationen
der sie beschränken sich nicht auf eine Operation pro Rechenschritt
wie z.B. die Addition zweier Vektoren in einem Schritt. Ein Modell einer realeren Maschine ist die Sequential Abstract State Machine (seqA
SM) (http://www.eecs.umich.edu/gasm/papers/seqthesis.html) mit folgenden Eigenschaften: Ein Algorithmus einer seqA
oder ein Betriebssystem) nur begrenzt viele Zustände pro Schritt ändern können (Begrenzung der Paralellität) nur begrenzt viele Zustände pro Schritt inspizieren können (Begrenzung der Exploration) [Bearbeiten]
dass immer terminiert werden muss
der fortgesetzt Primzahlen findet
SM 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
seien der Sieb des Erastothenes
Ein Beispiel: der Euklidische Algorithmus
der bereits um 300 v
Der Euklidische Algorithmus
Chr. beschrieben wurde
dann beende den Algorithmus: Diese Zahl ist der größte gemeinsame Teiler. Beispiel: Es soll der größte gemeinsame Teiler der Zahlen 14 und 8 berechnet werden
falls dies nicht bereits so ist) Setze A = A – B Wenn A und B ungleich sind
dient zur Ermittlung des größten gemeinsamen Teilers (ggT) zweier natürlicher Zahlen A und B: Sei A die Größere der beiden Zahlen A und B (entsprechend vertauschen
wenn sie gleich sind
dann fahre fort mit Schritt 1
Hierzu wird der euklidische Algorithmus verwendet: A B A-B 1. 14 8 6 2. 8 6 2 3. 6 2 4 4. 4 2 2 5. 2 2 gleich Das Ergebnis ist also 2. [Bearbeiten]
Eigenschaften
Nichtdeterministische Algorithmen finden vor allem in der Theoretischen Informatik Anwendung
dass es sich um einen deterministischen Algorithmus handelt
so dass in anderen Bereichen oft vorausgesetzt wird
Eine Ausnahme bilden so genannte stochastische
randomisierte oder probabilistische Algorithmen
in die absichtlich ein Zufallsfaktor eingebaut wurde
Solche Algorithmen sind demnach nicht deterministisch und auch nicht determiniert
orientieren sich aber an Erfahrungswerten
Stochastische Algorithmen dagegen sind im Allgemeinen deterministisch
Die verschiedenen formalen Eigenschaften in Kürze: [Bearbeiten]
Determiniertheit
muss das gleiche Ergebnis berechnet werden
Kurz: Wenn gleiche Startwerte vorhanden sind
Algorithmen sind determiniert
wenn sie bei gleichen Parametern und Startwert stets das gleiche Resultat liefern
Das trifft zum Beispiel nicht für randomisierte Algorithmen zu
bei denen das Ergebnis zu einem gewissen Grad auf Zufall beruht
Es gilt übrigens: Jeder deterministische Algorithmus ist auch determiniert
Nicht jeder determinierte Algorithmus ist jedoch deterministisch. [Bearbeiten]
Determinismus
bei denen zu jedem Zeitpunkt der Ausführung maximal eine Möglichkeit der Programmfortsetzung besteht
Kurz: Es darf immer nur eine Möglichkeit vorhanden sein Deterministisch heißen alle Algorithmen
Gibt es mehrere Möglichkeiten der Programmfortsetzung und lassen sich diesen Wahrscheinlichkeiten zuweisen
so spricht man von stochastischen
randomisierten oder probabilistischen Algorithmen
In der theoretischen Informatik gibt es neben dem Determinismus auch den Nichtdeterminismus
der aber in der Praxis kaum Verwendung findet
welche auch solche Algorithmen erfolgreich ausführen
Zusätzliche Bedeutung bekommen solche nichtdeterministische Algorithmen allerdings durch den Einsatz von Quantencomputern
Es gilt übrigens: Jeder deterministische Algorithmus ist auch determiniert
Nicht jeder determinierte Algorithmus ist jedoch deterministisch. [Bearbeiten]
Finitheit
[Bearbeiten]
Statische Finitheit
Kurz: Die Beschreibung ist endlich
Die Beschreibung eines Algorithmus darf nicht unendlich groß sein
Als statische Finitheit wird die Endlichkeit des Quelltextes bezeichnet
Der Quelltext darf nur eine begrenzte Anzahl
wenn auch bei Bedarf sehr viele Regeln enthalten. [Bearbeiten]
Dynamische Finitheit
Kurz: Fülle an Datenstrukturen und Zwischenspeicherungen sind zu jeder Zeit endlich
Zu jedem Zeitpunkt der Ausführung darf der von einem Algorithmus benötigte Speicherbedarf nur endlich groß sein
Andernfalls wäre der Algorithmus nicht ausführbar
Dies wird als dynamische Finitheit bezeichnet. [Bearbeiten]
Terminiertheit
Kurz: Bricht nach endlicher Zeit kontrolliert ab
wenn sie für jede mögliche Eingabe nach einer endlichen Zahl von Schritten zu einem Ergebnis kommen
Algorithmen sind terminierend
erfüllen diese Eigenschaft nicht: Wenn der Benutzer keinen Befehl zum Beenden gibt
Die tatsächliche Zahl der Schritte kann dabei beliebig groß sein. Steuerungssysteme und Betriebssysteme und auch viele Programme
die auf Interaktion mit dem Benutzer aufbauen
läuft das Programm endlos weiter
Donald Knuth schlägt in diesem Zusammenhang vor
nicht terminierende Algorithmen als rechnergestützte Methoden ("Computational Methods") zu bezeichnen
Es ist übrigens im allgemeinen nicht möglich
für einen Algorithmus zu bestimmen
ob er terminiert oder nicht - siehe Halteproblem. [Bearbeiten]
Algorithmenanalyse
Die Erforschung und Analyse von Algorithmen ist 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
d.h. die angegebene Komplexität hängt davon ab
oder wie viele Elemente sortiert werden müssen etc
Der Ressourcenbedarf wird dabei in Abhängigkeit von der Länge der Eingabe ermittelt
deren ggT gesucht wird
wie groß die Zahlen sind
d.h. ob der Algorithmus überhaupt jemals erfolgreich beendet werden kann
behandelt die Berechenbarkeitstheorie. [Bearbeiten]
Das Verhalten bezüglich der Terminierung
Beispiele
[Bearbeiten]
Algorithmen in der Wikipedia
etwa den euklidischen Algorithmus und Quicksort
In einzelnen Wikipedia-Artikeln gibt es zahlreiche Algorithmen-Beschreibungen
Eine Übersicht gibt die Liste von Algorithmen und die Kategorie Algorithmus. [Bearbeiten]
Algorithmen im Alltag
Auch im Alltag begegnen uns Algorithmen in Form von Handlungsanweisungen oder Rezepten: Prozess Ausführender Algorithmus Typische Anweisung Kuchenbacken Bäcker Rezept nimm 1 Pfund Mehl / rolle Teig aus Spielen einer Melodie Sänger
Instrumentalist Tonfolge Bedienung eines Handys Anrufer Bedienungsanleitung drücke die # Taste Bau eines Radios Radiobastler Schaltplan und Montageanleitung verbinde die Basis von Transistor T1 mit dem Kollektor von T5 Kassieren im Supermarkt Kassiererin an Registrierkasse Bedienungsanleitung für Registrierkasse
Funktionsplan der Registrierkasse Eintasten von 17
82 + [Bearbeiten]
Siehe auch
Liste von Algorithmen Ameisenalgorithmus Approximationsalgorithmus Datenstruktur Determinierter Algorithmus Deterministischer Algorithmus Entscheidungsproblem Evolutionärer Algorithmus Genetischer Algorithmus Greedy Algorithmus "gieriger" Algorithmus
z.B. zur Zerlegung von Brüchen in Summen von Stammbrüchen Heuristik Komplexitätsklassen MMIX (virtuelle Maschine von Donald E
Knuth zur Darstellung von Algorithmen) Online-Algorithmus Optimierungsproblem Paralleler Algorithmus Probabilistischer Algorithmus Prozedur (Programmierung) Randomisierter Algorithmus Sortierverfahren Stochastischer Algorithmus Suchverfahren [Bearbeiten]
Literatur
John E
Jeffrey D
Hopcroft
Rajeev Motwani
Ullman
Formale Sprachen und Komplexitätstheorie
Einführung in die Automatentheorie
Pearson Studium
2002
ISBN 3-8273-7020-5. Donald E
Addison Wesley 1998. (Das ist der Standard in dem Bereich; Übersetzung existiert nicht – Juli 2000)
Vol 1–3
ISBN 0201485419 Thomas H
Knuth: The Art of Computer Programming
Cormen
Charles Leiserson
Ronald L
Rivest
2nd edition 2001
MIT Press
Clifford Stein: Introduction to Algorithms
ISBN 0262531968 Deutsche Übersetzung: Thomas H
Charles Leiserson
Cormen
Ronald L
Clifford Stein: Algorithmen - Eine Einführung
ISBN 3-486-27515-1 [Bearbeiten]
Rivest
Oldenbourg Wissenschaftsverlag
2004
Weblinks
Algorithmen in der Informatik (http://www.grundstudium.info/algorithmen/) Was ist ein Algorithmus? (http://www.uni-flensburg.de/mathe/zero/veranst/algorithmen/algo_abschn11/algo_abschn11.html) Dictionary of Algorithms and Data Structures (http://www.nist.gov/dads/) des NIST (englisch) Definition (http://www.bullhost.de/a/algorithmus.html) ca:Algorisme cs:Algoritmus da:Algoritme el:ΑλγόÏ?ιθμος en:Algorithm eo:Algoritmo es:Algoritmo et:Algoritm fi:Algoritmi fr:Algorithmique gl:Algoritmo he:×?לגורית×? hu:Algoritmus it:Algoritmo ja:アルゴリズムko:ì•Œê³ ë¦¬ì¦˜ lt:Algoritmas nl:Algoritme pl:Algorytm pt:Algoritmo ru:Ð?лгоритм sl:Algoritem su:Algoritma sv:Algoritm uk:Ð?лгоритм th:à¸à¸±à¸¥à¸?à¸à¸£à¸´à¸—ึม zh:算法
[X] Schliessen
Dieser Artikel basiert auf dem Artikel
Algorithmus
aus der freien Enzyklopädie
wikipedia
und steht unter der
GNU Lizenz für freie Dokumentation
. In der wikipedia ist eine
Liste der Autoren
verfügbar.
Arabische Sprache
AOLPRESS
Aorta
AutoCAD
Alessandro Volta
Anwendungsprogramm
Antoni van Leeuwenhoek
[ Zurück ]
Inhalt Lexikon:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
1
2
3
4
5
6
7
8
9
Chat
|
Lexikon
|
Reisen
|
Versicherung
|
Forum
|
Kontakt