Решение задачи Статическая сложность с Меньшиков
Без пояснения   Просмотров: 1007
Обычно определяют время выполнения алгоритма по отношению к n - "размеру" входных данных. Это может быть число объектов, которые нужно отсортировать, число точек многоугольника и т.п. Поскольку определение формулы зависимости временной сложности алгоритма от n - непростая задача, было бы замечательно, если бы её можно было автоматизировать. К сожалению, в общем случае это невозможно. Но в этой задаче мы будем рассматривать программы очень простой природы, над которыми это можно проделать. Рассматриваемые программы записаны согласно следующим правилам БНФ, где <число> может быть любым неотрицательным целым числом:
<Программа> ::= "BEGIN" <Список операторов> "END"
<Список операторов> ::= <Оператор> | <Оператор> <Список операторов>
<Оператор> ::= <Оператор LOOP> | <Оператор OP>
<Оператор LOOP> ::= <Заголовок LOOP> <Список операторов> "END"
<Заголовок LOOP> ::= "LOOP" <число> | "LOOP n"
<Оператор OP> ::= "OP" <число>
Время выполнения такой программы может быть вычислено следующим образом: выполнение оператора OP требует столько единиц времени, сколько указано в его параметре. Список операторов, заключённый в оператор LOOP, выполняется столько раз, сколько указано в параметре оператора, то есть или заданное константное число раз, если задано число, или n раз, если параметром является n. Время выполнения списка операторов равно сумме времени выполнения его частей. Таким образом, время выполнения программы в целом зависит от n.
Автор: Администратор