Нетрудно видеть разницу между алгоритмом и вычислительным
процессом, им порождаемым. Так, например, действие, которое встречается в
алгоритме один раз, может быть выполнено несколько раз, а следовательно
встретиться неоднократно в описании вычислительного процесса. Примерами такого
действия может быть действие 3, либо действие 5, либо 6. В нашем алгоритме, как
правило, экземпляры одного и того же действия будут различаться данными
(операндами), над которыми совершается это действие. Однако, эти данные могут
быть представлены одними и теми же именами.
По алгоритму не всегда можно предсказать вычислительный процесс.
Например, не всегда можно предвидеть точно, как много действий будет в
вычислительном процессе. Примером тому может служить алгоритм вычисления НОД.
Алгоритм всегда определяет однозначно, какое действие должно быть
выполнено следующим, равно как и то, какое действие должно быть выполнено
первым. Очередное действие всегда определено однозначно. Именно этой цели
служат слова “(cледующий
шаг).” Они явно указывают какое действие должно быть выполнено следующим. В
силу этого свойства алгоритма, которое называется детерминированность, вычислительный процесс всегда для заданных исходных данных определен
однозначно. Таким образом, при одних и тех же исходных данных вычислительный
процес будет одним и тем же.
Обычно по умолчанию предполагают “естественный” порядок выполнения
действий в алгоритме. Это означает, что если нет явного изменения порядка
выполнения действий, то они выполняются последовательно одно за другим, а
выполнение алгоритма начинают с первого по порядку действия. Поэтому, в
дальнейшем слова “(следующий шаг)” мы будем опускать.
Рассмотрим подробнее понятие действия. В нашем примере
присутствуют как минимум два вида действий:
действия над данными (например, сравни, вычти, положи);
действия, изменяющие “естественный” порядок вычислений (например, если - то - иначе; перейди к шагу #).
Если присмотреться внимательней, то мы увидим, что действия вида
“сравни”, “вычти” и действия вида “положи ” - это разные действия. Разница
между ними в том, что действия первого вида указывают что делать с его
операндами, но не указывают где “сохранить” полученный результат. Действия
второго вида, наоборот “умалчивают” каким образом получено значение, которое
надо “сохранить” в качестве нового значения переменной.
Теперь пристальнее рассмотрим правило окончания алгоритма и выбора
результата. В алгоритме могут быть использованы десятки переменных, но
результат будет храниться лишь в нескольких. Эти “результирующие” переменные
должны быть явно указаны в алгоритме, т.к. в противном случае нет никакой
возможности их выявить. Момент, когда в этих переменных сформированы нужные
значения, определяет правило окончания алгоритма. Правило окончания всегда
формулируется как некоторое условие на множестве текущих значений переменных.
Достижение этого условия и означает, что в определенных переменных получен
результат. В нашем примере таким условием является равенство текущего значения
переменной а текущему значению переменной b.
Итак, сформулируем наши наблюдения в общей форме. Исходные данные
- это значения, с которых начинается исполнение алгоритма. Множество исходных
данных всегда точно определено. Оно может быть определено явно, перечислением
его элементов, либо не явно, в виде системы правил, определяющих конструкцию
его элементов. (Этот способ мы рассмотрим позднее).
Данные в алгоритме могут быть представлены переменными (в нашем
примере именуемые a и b), либо явно, в виде постоянной величины -
константы (в нашем примере n и m), которая
не меняет своего значения в конце выполнения алгоритма.
Переменная - это имя, с которым связано конкрентное множество
значений. В каждый конкретный момент времени исполнения алгоритма каждая
переменная принимает одно конкретное значение, из связанного с ней множества.
Определение 1.1
Типом переменной называется множество возможных ее значений.
Пусть у нас есть множество переменных i=1,k. (Примеры!)
Определение 1.2
Состоянием на множестве переменных vi называется набор значений этих переменных.
Пусть А - алгоритм, i=1,k - набор всех переменных, используемых в этом алгоритме.
Добавим к этому набору еще одну переменную p, тип
которой есть множество индексов действий в алгоритме. Каждый шаг исполнения
алгоритма можно однозначно охарактеризовать сосотоянием на множестве переменных
(i=1,k,p).
Определение 1.3
Рекомендуем скачать другие рефераты по теме: социально реферат, мцыри сочинение.