Свойства алгоритма: что проверяют на контрольной
Алгоритм либо «настоящий», либо каша шагов. В учебнике это проверяют списком свойств. Звучит формально, но по ним как раз ловят дырявые решения: бесконечный цикл, неоднозначную инструкцию, рецепт «только для этого одного примера».
Свойства алгоритма - требования, которым должна удовлетворять последовательность действий, чтобы её считали алгоритмом в информатике.
Зачем вообще свойства
Они отделяют алгоритм от бытового совета «ну как-нибудь посчитай». Если свойство нарушено, исполнитель (человек или машина) споткнётся: не поймёт шаг, зациклится или получит разные ответы на одни входные данные.
Рядом полезны статьи про типы алгоритмов и блок-схемы.
Дискретность
Алгоритм делят на отдельные шаги. Между шагами нет «магии по ходу». Сначала сделали A, потом B. На схеме это отдельные блоки, в коде - отдельные операторы.
Нарушение: «реши уравнение, пока не получится». Это не шаг, а пожелание.
Детерминированность (определённость)
Каждый шаг однозначен. Один и тот же исполнитель в одной ситуации делает одно и то же. Нельзя писать «возьми подходящее число» без правила, что считать подходящим.
В ветвлении однозначность спасают подписанные выходы ромба: при истинном условии идём сюда, при ложном - туда.
Конечность (финитность)
Алгоритм обязан завершиться за конечное число шагов. Бесконечный цикл - уже не алгоритм в школьном смысле, даже если «красиво крутится».
Проверка: переменная условия цикла меняется так, что выход достижим.
Массовость
Алгоритм решают не одну уникальную задачу «для Васи из 10Б», а класс задач. Площадь прямоугольника - для любых сторон a и b (с оговоркой про допустимые значения), а не исключительно для пары 3 и 4.
Если решение заточено под один набор чисел без обобщения - это разбор примера, не алгоритм.
Результативность
После завершения есть результат: число, набор значений, сообщение «корней нет». Результат может быть и отрицательным выводом, но не обрывом «ну и ладно».
Понятность (для исполнителя)
Шаги сформулированы в командах, которые исполнитель умеет выполнять. Для человека - обычный язык/псевдокод. Для робота на уроке - только разрешённые команды среды.
Отсюда ошибка: писать алгоритм «на питоне», если исполнитель - учебная машина с тремя кнопками.
Связь с блок-схемами и кодом
Свойства проверяют и по схеме, и по программе. Нет конца - нарушена конечность. Два разных действия в одном «шаге без порядка» - дискретность хромает. Случайный выбор без правила - детерминированность.
Частые ошибки
- Путают массовость с «алгоритм должен решать всё на свете».
- Считают, что результат всегда число: сообщение тоже результат.
- Оправдывают бесконечный цикл «так задумано».
- Пишут неоднозначные шаги и называют это креативностью.
Краткая шпаргалка
- Дискретность - шаги отдельны.
- Детерминированность - шаг однозначен.
- Конечность - когда-нибудь остановится.
- Массовость - класс задач, не один пример.
- Результативность - есть ответ.
- Понятность - исполнитель понимает команды.
Если можете для своей схемы назвать, где каждое свойство «видно» - ответ на контрольной обычно собирается быстро.