Algorithms do not have to terminate, and there is still no agreed-upon definition of what an…
Paul B. Hartzog

The definition I’m using comes from Knuth, who has well justified reasons for his 5 elements of an algorithm. I’d consider termination an extremely important part of an algorithm, because without known termination you can neither determine the runtime of the algorithm nor the outputs.

Simulations can be algorithms, even simulations of natural processes, because you run the algorithm a certain number of steps and your final state is the output.

But without clear termination you run into the Halting Problem. Of course, in the case of life, the Halting Problem is called extinction…

But this is why I prefer the term “natural process”. It implies a set of steps, which seems to be the only element of an algorithm present in the definition used by this article, and does not even imply a strict input, much less any output or halting at all.

An algorithm as a mathematical construct must be well defined, or it quickly becomes useless as a concept. While not everyone needs to use or even understand such a strict and well-defined term, programmers and engineers do.

Like what you read? Give Benji Lampel a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.