Ein Algorithmus ist eine Folge von genau definierten Schritten, die in endlicher Zeit ein Ergebnis liefern.
Gut definierter Schritt: Das können Sie genau definieren oder berechnen. Wenn Sie den Schritt lesen, wissen Sie, was Sie tun müssen und wie Sie es tun müssen. Insbesondere können Sie es in einer Programmiersprache schreiben, die Sie kennen, und sicherstellen, dass das Programmfragment genau mit dem Schritt übereinstimmt.
Reihenfolge: Die Schritte werden in einer angegebenen Reihenfolge ausgeführt. Schritte können abhängig von den Daten mehrmals ausgeführt werden (Schleifen) oder überhaupt nicht ausgeführt werden, abhängig von den Daten (if-Anweisungen). Parallele Algorithmen erlegen den Schritten nur eine Teilreihenfolge auf, daher bin ich hier zu stark vereinfacht. Es wäre korrekter, es als eine teilweise geordnete Menge als eine Sequenz zu beschreiben, aber ich wollte die Wörter ein wenig einfacher halten. Außerdem ist es leicht möglich, ein teilweise geordnetes Set in eine vollständige Reihenfolge einzubetten.
Ergebnis: Ein Endzustand oder Wert. Es muss nicht vorhersehbar sein, aber es muss ein definitives Ende sein, das eine Bedingung erfüllt. Dies bedeutet, dass ein Betriebssystem kein Algorithmus ist, obwohl es viele davon verwendet.
Endlich: Ein Algorithmus wird garantiert irgendwann anhalten, zumindest auf einer Maschine, die lange genug laufen kann. Es ist nicht unbedingt garantiert, dass das System in einer vorhersehbaren Zeit anhält, und es ist nicht garantiert, dass es anhält, bevor die Sonne sich ausdehnt und auf einer vorhandenen Maschine rot wird. Dies bedeutet auch, dass ein Betriebssystem kein Algorithmus ist, da es im Idealfall für immer ausgeführt wird. Ich habe das Wort "Prozedur" gesehen, das verwendet wird, um etwas zu beschreiben, das ein Algorithmus wäre, wenn wir sicher wären, dass es irgendwann aufhören würde. (Es ist möglich, einen Algorithmus zu haben, der in einer unbekannten Zeitspanne stoppt. Nehmen wir an, Goldbachs Vermutung wurde in einem nichtkonstruktiven Beweis mathematisch als falsch bewiesen, sodass es eine gerade Zahl> 2 gab, die nicht die Summe zweier Primzahlen war Ein Algorithmus, der einfach gerade Zahlen testet, würde dann irgendwann enden.
Der Algorithmus ist eine absichtlich abstrakte Art von Dingen, daher betrachten wir keine Fragen wie "Ist es physikalisch möglich, dies vor dem Tod des Universums auszuführen?". Sie wären zu schwer zu beantworten. Wenn es sich um Computeroperationen handelt, ist es einfach, sie in einer Programmiersprache zu implementieren.