Algorytm jest sekwencją dobrze zdefiniowanych kroków, które dają wynik w skończonym czasie.
Dobrze zdefiniowany krok: To jest coś, co możesz zrobić lub obliczyć, co jest dokładnie zdefiniowane. Już po przeczytaniu kroku wiesz, co musisz zrobić i jak to zrobić. W szczególności możesz napisać go w znanym języku programowania i upewnić się, że fragment programu dokładnie pasuje do kroku.
Sekwencja: Kroki są wykonywane w określonej kolejności. Kroki mogą być wykonywane więcej niż jeden raz w zależności od danych (pętle) lub mogą nie być wcale wykonywane w zależności od danych (jeśli instrukcje). Algorytmy równoległe nakładają tylko częściowy porządek na kroki, więc upraszczam tutaj. Bardziej poprawne byłoby opisanie go jako zbioru częściowo uporządkowanego niż sekwencji, ale chciałem, aby słowa były nieco prostsze. Poza tym łatwo jest osadzić częściowo zamówiony zestaw w pełnej kolejności.
Wynik: stan końcowy lub wartość. Nie musi to być z góry przewidywalne, ale musi być określonym celem spełniającym pewien warunek. Oznacza to, że system operacyjny nie jest algorytmem, chociaż używa ich dużo.
Skończone: algorytm może się kiedyś zatrzymać, przynajmniej na maszynie, która może działać wystarczająco długo. Nie zawsze jest gwarantowane, że zatrzyma się w przewidywalnym czasie i nie ma gwarancji, że zatrzyma się, zanim słońce rozszerzy się i zmieni kolor na czerwony na dowolnej istniejącej maszynie. Oznacza to również, że system operacyjny nie jest algorytmem, ponieważ idealnie będzie działał wiecznie. Widziałem słowo „procedura” używane do opisania czegoś, co byłoby algorytmem, gdybyśmy byli pewni, że kiedyś się zatrzyma. (Możliwe jest posiadanie algorytmu, który zatrzyma się w nieznanym czasie. Załóżmy, że powiedzmy, że hipoteza Goldbacha okazała się matematycznie nieprawdziwa, co nie jest konstruktywnym dowodem, więc liczba parzysta> 2 nie była sumą dwóch liczb pierwszych Algorytm, który po prostu testował liczby parzyste, ostatecznie zostałby zakończony,
Algorytm jest celowo abstrakcyjnym rodzajem rzeczy, więc nie zastanawiamy się nad pytaniami typu: „Czy jest to fizycznie możliwe do wykonania przed śmiercią Wszechświata?”. Zbyt trudno byłoby na nie odpowiedzieć. Jeśli odnosi się do operacji na komputerze, łatwo go zaimplementować w języku programowania.