Алгоритм — это четкая последовательность действий, выполнение которых приводит к решению поставленной задачи. Чтобы последовательность команд считалась алгоритмом в классическом понимании программирования и математики, она должна обладать рядом специфических свойств. 1. Дискретность Процесс решения задачи разделен на отдельные шаги (этапы). Каждое действие должно быть завершено прежде, чем начнется выполнение следующего. Это превращает алгоритм в структуру, состоящую из прерывных команд, которые легко отследить. 2. Определенность (Детерминированность) Каждая команда алгоритма должна быть понятна исполнителю однозначно.
- Исключается любое двусмысленное толкование.
- При одних и тех же исходных данных алгоритм всегда должен выдавать один и тот же результат.
- Порядок выполнения шагов строго зафиксирован.
3. Понятность Алгоритм должен быть составлен с использованием команд, которые входят в систему команд исполнителя (человека или компьютера). Если команда не входит в этот «словарь», исполнитель не сможет её реализовать. 4. Конечность (Результативность) Алгоритм должен приводить к решению задачи за конечное число шагов. Недопустимы ситуации «зацикливания», когда процесс длится бесконечно, не выдавая никакого итога. По завершении алгоритм должен либо выдать результат, либо сообщить о невозможности решения (например, из-за некорректных данных). 5. Массовость Это свойство означает универсальность алгоритма.
- Алгоритм должен быть пригоден для решения целого класса однотипных задач.
- Например, алгоритм нахождения корней квадратного уравнения должен работать для любых значений коэффициентов , и , а не только для одного конкретного примера.
6. Входные и выходные данные
- Входные данные: Алгоритм может иметь некоторое количество входных величин (иногда их число равно нулю), которые задаются до начала работы.
- Выходные данные: Алгоритм обязательно должен иметь один или несколько результатов, имеющих определенную связь с входными данными.
Сводная таблица свойств
| Свойство | Суть |
|---|---|
| Дискретность | Пошаговое выполнение. |
| Детерминированность | Однозначность и повторяемость результата. |
| Понятность | Доступность команд для исполнителя. |
| Конечность | Обязательное завершение работы за разумное время. |
| Массовость | Применимость к разным наборам входных данных. |
Могу составить пример алгоритма (например, сортировки массива) с пошаговым разбором реализации каждого из этих свойств на практике.