Основы анализа программ

 

Последовательность действий алгоритма определяется входными данными

 

Например, алгоритм поиска наибольшего элемента в списке из N элементов

 

1 largest ¬ list[1]

2 for i ¬ 2 to N do

3 if (list[i] > largest) then

4 largest ¬ list[i]

 

Если список упорядочен в порядке убывания, одно присваивание выполняется до начала цикла, в теле цикла присваиваний не будет.

Если список упорядочен в порядке возрастания, всего будет сделано N присваиваний.

При анализе должны рассмотреть различные возможные множества входных значений.

Различные входные множества можно разбить на классы, в зависимости от поведения алгоритма на каждом множестве. Это позволяет уменьшить число рассматриваемых возможностей.

Например, число различных расстановок 10 различных чисел в списке есть 10!=3 628 800

Применим к списку из 10 чисел алгоритм поиска наибольшего элемента.

Можно выделить класс, который содержит все входные множества, у которых первое число является наибольшим (362880 входных множеств);

Можно выделить класс, который содержит все входные множества, у которых второе число является наибольшим (362880 входных множеств);

и т.д.