edubun
Deutsch

Was ein Algorithmus ist

Das Verfahren für den größten gemeinsamen Teiler aus Buch VII von Euklids Elementen, geschrieben vor etwa 2300 Jahren, läuft bis heute in Computern.

Ein Verfahren, das immer funktioniert

Angenommen, du suchst die größte Zahl, die sowohl 1071 als auch 462 teilt. Du könntest jede Zahl von 462 abwärts bis 1 probieren und bei der ersten aufhören, die beide teilt. Das funktioniert, braucht aber vielleicht Hunderte Versuche. Es geht kürzer. Teile 1071 durch 462 und behalte den Rest, 147. Teile jetzt 462 durch 147 und behalte den Rest, 21. Teile 147 durch 21: Der Rest ist 0, also ist die Antwort 21. Drei Divisionen statt mehrerer Hundert.

Dieser kürzere Weg ist ein Algorithmus: eine endliche Liste genauer Schritte, die eine Eingabe nimmt und die richtige Ausgabe liefert. Dieser hier ist der euklidische Algorithmus für den größten gemeinsamen Teiler, und er steht in Buch VII der Elemente, geschrieben um 300 v. Chr. Euklid beschrieb ihn mit wiederholtem Abziehen von Strecken statt mit Division, aber die Idee ist dieselbe, und die Version mit Resten verwenden Programme heute.

function gcd(a, b) {
  while (b !== 0) {
    const r = a % b;   // Rest
    a = b;
    b = r;
  }
  return a;
}
console.log(gcd(1071, 462)); // 21

Was eine Liste von Schritten zum Algorithmus macht

Lehrbücher wie das von Cormen, Leiserson, Rivest und Stein beschreiben einen Algorithmus als genau festgelegtes Verfahren, das eine Eingabe in eine Ausgabe verwandelt. In dieser Beschreibung stecken drei Dinge, und jedes zählt, wenn du Code schreibst.

  • Genau. Jeder Schritt bedeutet eine Sache. „Teile a durch b und behalte den Rest“ ist genau, „mach die Zahlen irgendwie kleiner“ nicht.
  • Endlich. Er muss anhalten. Beim euklidischen Algorithmus ist der Rest immer kleiner als die Zahl, durch die geteilt wurde. Er schrumpft also jede Runde und muss 0 erreichen.
  • Korrekt. Für jede erlaubte Eingabe ist die Ausgabe die richtige Antwort, nicht nur für die Beispiele, die du ausprobiert hast.

Oft wird ein Kochrezept als Alltagsbeispiel genannt, und das passt: Die Zutaten sind die Eingabe, das Gericht die Ausgabe, und die Schritte haben eine Reihenfolge. Der Unterschied ist, wie viel der Leser selbst ergänzt. Ein Koch entscheidet, was „eine Prise“ bedeutet. Ein Computer entscheidet nichts. Deshalb werden Algorithmen für Computer mit jedem Schritt ausgeschrieben.

Gleiches Problem, verschiedene Algorithmen

Für ein Problem gibt es meist viele korrekte Algorithmen, und sie können sich enorm darin unterscheiden, wie viel Arbeit sie machen. Für den größten gemeinsamen Teiler von 1071 und 462 braucht das Durchprobieren jeder Zahl ab 462 abwärts 442 Versuche, bis es bei 21 ankommt, das Verfahren von Euklid dagegen 3 Divisionen. Beide sind korrekt. Nur eines ist schnell. Um diese zweite Frage geht es in diesem Kurs zu einem großen Teil: Wenn ein Verfahren korrekt ist, wie viele Schritte braucht es, und wie wächst diese Zahl, wenn die Eingabe größer wird?

Um das zu beantworten, zählen Informatiker Grundschritte (einen Vergleich, eine Vertauschung, eine Division) statt Sekunden. Sekunden hängen von der Maschine ab. Die Zahl der Schritte hängt nur vom Algorithmus und von der Eingabe ab, damit lassen sich zwei Verfahren fair vergleichen. Das Labor unten zählt beim Sortieren einer Reihe von Balken die Vergleiche für dich. Probier dieselbe Startreihenfolge mit zwei verschiedenen Verfahren und beobachte die Zähler.

Wird geladen

Zum Drehen ziehen. Zum Zoomen scrollen oder mit zwei Fingern ziehen.

Selectionsort und Insertionsort mit denselben acht Werten. Die Zähler zeigen, wie viele Vergleiche und Vertauschungen jedes Verfahren braucht.

Eingaben, Ausgaben und die Schritte dazwischen

Bevor du einen Algorithmus schreibst, schreib genau auf, was hineingeht und was herauskommen muss. Beim größten gemeinsamen Teiler: Die Eingabe sind zwei positive ganze Zahlen, die Ausgabe ist eine ganze Zahl, die beide teilt, wobei keine größere Zahl das auch tut. Diese Beschreibung sagt dir, wie du das Ergebnis testest, und deutet oft schon die Schritte an. Sie zeigt auch die Randfälle: Was, wenn eine Zahl 0 ist? (Die Schleife oben gibt dann die andere Zahl zurück, und das ist die richtige Antwort.) Was, wenn beide Zahlen gleich sind? Wer vor dem Ausführen über Randfälle nachdenkt, findet viele Fehler.

HintergrundDas Wort Algorithmus stammt von einem Namen. Muhammad ibn Musa al-Chwarizmi arbeitete im neunten Jahrhundert in Bagdad und schrieb ein Buch über das Rechnen mit den indischen Ziffern 0 bis 9. Seine lateinische Übersetzung beginnt mit den Worten „Dixit algorizmi“, „al-Chwarizmi sagte“, und wird meist „Algoritmi de numero Indorum“ genannt. Die lateinischen Formen seines Namens, algorizmi und algoritmi, wurden zum Wort für ein schrittweises Rechenverfahren. Sein Buch über das Lösen von Gleichungen gab uns ein weiteres Wort: Algebra. Viel später, 1843, veröffentlichte Ada Lovelace Notizen zu Charles Babbages nie gebauter Analytical Engine. Die letzte davon, Note G, legt Schritt für Schritt dar, wie die Maschine Bernoulli-Zahlen berechnen könnte.
  • Um 300 v. Chr.: Euklids Elemente, Buch VII: das Verfahren für den größten gemeinsamen Teiler.
  • 9. Jahrhundert: Al-Chwarizmi schreibt in Bagdad über indische Ziffern; sein lateinischer Name ergibt das Wort Algorithmus.
  • 1843: Ada Lovelaces Note G: Schritte, mit denen die Analytical Engine Bernoulli-Zahlen berechnet.
  • 1945: John von Neumann schlägt Mergesort vor.
  • 1959: Tony Hoare erfindet in Moskau Quicksort (veröffentlicht 1961).
AlgorithmusEine endliche Liste genauer Schritte, die eine Eingabe in die richtige Ausgabe verwandelt
EingabeDie Daten, mit denen ein Algorithmus beginnt
AusgabeDas Ergebnis, das der Algorithmus liefern muss
korrektLiefert für jede erlaubte Eingabe die richtige Ausgabe
endlichHält immer nach einer bestimmten Zahl von Schritten an
größter gemeinsamer TeilerDie größte ganze Zahl, die zwei Zahlen ohne Rest teilt
RandfallEine ungewöhnliche Eingabe wie 0, eine leere Liste oder gleiche Werte
SchrittzahlWie viele Grundoperationen ein Algorithmus ausführt
  1. Was ist nach dem euklidischen Algorithmus der größte gemeinsame Teiler von 48 und 18?
  2. Wie viele Divisionen braucht der euklidische Algorithmus für 1071 und 462?
  3. Welche dieser Eigenschaften muss nicht jeder Algorithmus haben?
    • Er hält nach endlich vielen Schritten an
    • Jeder Schritt ist genau
    • Er verwendet einen Computer
    • Er liefert für jede erlaubte Eingabe die richtige Ausgabe
  4. Warum hält der euklidische Algorithmus immer an?
    • Der Rest ist immer kleiner als der Teiler, also schrumpft er bis 0
    • Er hört nach 10 Runden auf
    • Computer beenden Schleifen automatisch
    • Die Zahlen wachsen, bis sie gleich sind
  5. Das Wort Algorithmus stammt vom Namen von
    • Euklid
    • Al-Chwarizmi
    • Ada Lovelace
    • Alan Turing
  6. Warum zählen Informatiker Schritte, statt in Sekunden zu messen?
    • Sekunden hängen von der Maschine ab, Schrittzahlen nur vom Algorithmus und von der Eingabe
    • Uhren sind nicht genau
    • Schritte sind immer schneller
    • Sekunden lassen sich im Code nicht messen
  7. Ein Verfahren liefert bei den fünf Beispielen, die du probiert hast, die richtige Antwort. Ist es korrekt?
    • Ja, fünf Beispiele beweisen es
    • Nicht unbedingt: Es muss für jede erlaubte Eingabe stimmen
    • Nur, wenn es schnell ist
    • Nur, wenn es eine Schleife verwendet
  8. Was gibt gcd(35, 0) mit der Schleife aus dieser Einheit zurück?
  9. In welchem Jahr veröffentlichte Ada Lovelace ihre Notizen, einschließlich Note G?
    • 1801
    • 1843
    • 1945
    • 1961
  10. Bring die Schritte des euklidischen Algorithmus in die richtige Reihenfolge.
Das Wichtigste
  • Ein Algorithmus ist eine endliche Liste genauer Schritte von der Eingabe zur korrekten Ausgabe.
  • Der euklidische Algorithmus findet einen größten gemeinsamen Teiler durch wiederholte Reste.
  • Ein Problem kann viele korrekte Algorithmen mit sehr unterschiedlichen Schrittzahlen haben.
  • Vor den Schritten Eingabe, Ausgabe und Randfälle aufschreiben.
  • Das Wort kommt von al-Chwarizmis lateinischem Namen.
Quellen zu diesem Kurs (11)
  • MIT OpenCourseWare 6.006 Introduction to Algorithms, Spring 2020 (Demaine, Ku, Solomon)
  • lecture notes 1 Introduction, 3 Sorting, 9 Breadth-First Search, 10 Depth-First Search (ocw.mit.edu/courses/6-006-introduction-to-algorithms-spring-2020/pages/lecture-notes) and Fall 2011 lecture 13 BFS notes (ocw.mit.edu/courses/6-006-introduction-to-algorithms-fall-2011)
  • Cormen, Leiserson, Rivest, Stein, Introduction to Algorithms (MIT Press)
  • with the CLRS-based Khan Academy algorithms unit by Thomas Cormen and Devin Balkcom of Dartmouth (khanacademy.org/computing/computer-science/algorithms: binary search, selection sort analysis, merge sort, quicksort overview and analysis)
  • MacTutor History of Mathematics, Al-Khwarizmi (mathshistory.st-andrews.ac.uk/Biographies/Al-Khwarizmi: word algorithm from the Latin title Algoritmi de numero Indorum)
  • D. E. Joyce, Euclid's Elements Book VII Propositions 1 and 2 (mathcs.clarku.edu/~djoyce/elements/bookVII)
  • Wolfram MathWorld, Merge Sort (mathworld.wolfram.com/MergeSort.html: proposed by John von Neumann in 1945, after Knuth 1998 p. 159)
  • Stanford CS "Tony Hoare: Quicksort" (cs.stanford.edu/people/eroberts/courses/soco/projects/2008-09/tony-hoare/quicksort.html: devised while a student at Moscow State University for Russian-English machine translation with a tape dictionary, programmed in Algol 60 and published 1961; the year 1959 from the Wikipedia Quicksort article and its cited sources)
  • Bodleian Libraries, Ada Lovelace (blogs.bodleian.ox.ac.uk/adalovelace: 1843 paper, Note G Bernoulli numbers)
  • Fourmilab text of Menabrea's Sketch with Lovelace's notes (fourmilab.ch/babbage/sketch.html)
  • Seven Bridges of Konigsberg (Euler 1736) and Tower of Hanoi (Edouard Lucas, 1883) checked against the Wikipedia articles and their cited sources.

Abgerufen: 2026-10-17