Алгоритм - це послідовність чітко визначених кроків, які дають результат у кінцевий час.
Чітко визначений крок: це те, що ви можете зробити або обчислити, що точно визначено. Просто прочитавши крок, ви знаєте, що вам потрібно зробити і як це зробити. Зокрема, ви можете записати його на відомій мові програмування та бути впевненим, що фрагмент програми точно відповідає кроку.
Послідовність: кроки виконуються у визначеному порядку. Етапи можуть виконуватися не один раз залежно від даних (циклів) або взагалі не виконуватись залежно від даних (якщо заяви). Паралельні алгоритми накладають лише частковий порядок на кроки, тому я тут надто спрощую. Правильніше було б описати це як частково впорядкований набір, ніж послідовність, але я хотів зробити слова трохи простішими. Крім того, легко вбудувати частково впорядкований набір у повному порядку.
Результат: кінцевий стан або значення. Це не повинно бути передбачуваним заздалегідь, але це повинно бути певним кінцем, що задовольняє деякій умові. Це означає, що операційна система не є алгоритмом, хоча в ній використовується ціла маса.
Кінцеве: Алгоритм гарантовано зупинить колись, принаймні, на машині, яка може працювати досить довго. Це не обов'язково гарантовано зупиняється в передбачуваний час, і не гарантується, що воно зупиниться до того, як сонце розшириться і стане червоним на будь-якій існуючій машині. Це також означає, що операційна система не є алгоритмом, оскільки в ідеалі вона буде працювати назавжди. Я бачив слово "процедура", яке використовується для опису чогось, що було б алгоритмом, якби ми були впевнені, що воно колись зупиниться. (Можна створити алгоритм, який зупиниться через невідому кількість часу. Припустимо, скажімо, гіпотеза Гольдбаха виявилася математично помилковою, неконструктивним доказом, тому було парне число> 2, яке не було сумою двох простих Алгоритм, який просто випробував парні числа, згодом припиняється,
Алгоритм - це навмисно абстрактна річ, тому ми не розглядаємо питання типу "Чи фізично це можливо виконати перед тепловою смертю Всесвіту?". Вони б занадто важко відповісти. Якщо це стосується комп'ютерних операцій, його легко реалізувати мовою програмування.