Un algorithme est une séquence d'étapes bien définies qui produisent un résultat en temps fini.
Étape bien définie: c'est quelque chose que vous pouvez faire, ou calculer, qui est défini avec précision. Juste en lisant l'étape, vous savez ce que vous avez à faire et comment le faire. Plus précisément, vous pouvez l'écrire dans un langage de programmation que vous connaissez et être sûr que le fragment de programme correspond exactement à l'étape.
Séquence: les étapes sont exécutées dans un ordre spécifié. Les étapes peuvent être exécutées plus d'une fois selon les données (boucles) ou ne pas être exécutées du tout selon les données (si les instructions). Les algorithmes parallèles n'imposent qu'un ordre partiel aux étapes, donc je simplifie trop ici. Il serait plus correct de le décrire comme un ensemble partiellement ordonné qu'une séquence, mais je voulais garder les mots un peu plus simples. En outre, il est facilement possible d'incorporer un ensemble partiellement commandé dans une commande complète.
Résultat: un état ou une valeur de fin. Il ne doit pas nécessairement être prévisible à l'avance, mais il doit être une fin définie satisfaisant à une condition. Cela signifie qu'un système d'exploitation n'est pas un algorithme, bien qu'il en utilise beaucoup.
Fini: Un algorithme est garanti de s'arrêter un jour, au moins sur une machine qui peut fonctionner assez longtemps. Il n'est pas nécessairement garanti de s'arrêter dans un délai prévisible, et il n'est pas garanti qu'il s'arrête avant que le soleil ne se dilate et ne vire au rouge sur une machine existante. Cela signifie également qu'un système d'exploitation n'est pas un algorithme, car il fonctionnera idéalement pour toujours. J'ai vu le mot «procédure» utilisé pour décrire quelque chose qui serait un algorithme si nous étions sûrs qu'il s'arrêterait un jour. (Il est possible d'avoir un algorithme qui s'arrêtera dans un laps de temps inconnu. Supposons, par exemple, que la conjecture de Goldbach ait été prouvée mathématiquement fausse, dans une preuve non constructive, donc il y avait un nombre pair> 2 qui n'était pas la somme de deux nombres premiers Un algorithme qui testait simplement les nombres pairs finirait alors par se terminer,
L'algorithme est une sorte de chose intentionnellement abstraite, donc nous ne considérons pas des questions comme "Est-il physiquement possible de l'exécuter avant la mort thermique de l'Univers?". Ils seraient trop difficiles à répondre. S'il s'agit d'opérations informatiques, il est facile de l'implémenter dans un langage de programmation.