Скачиваний:
70
Добавлен:
09.05.2014
Размер:
935.42 Кб
Скачать

Применение в теории алгоритмов.

Логическое отношение алгоритмов может быть сформулировано на основе неформального описания (например, блок-схемы алгоритмов, граф-схемы). Блок-схемы используются для описания «предшествующих» алгоритмов («вычислить - х» алгоритмов). Описание состоит из последовательности шагов – операторов и инструкции. Предписывающие алгоритмы исполняются (интерпретируются) неймановской машиной и является программой: предикатный символ  Qi(t1, . . . tn).

В программе выбираются контрольные точки (узлы), которые ставят в соответствие предикаты, обозначающие состояние программы в i-том узле.

ti – термы, обозначение состояния (значения) i-той переменной.

Порядок записи уравнения:

1) еслиi и j – это вход и выход операторной вершины (смотри рисунок S – оператор с инструкцией на выполнение преобразования). Переход из i в j – это дуга, которая определяется формулой: Qi(t1t2 . . . tn)  Qj(l1l2 . . .ln)

где lj = f(f1 . . . fn)

2) еслиi и j – вход и выход условной вершины. Тогда дуге «i  j» ставится в соответствие формула с контрольным предикатом:

Qi & P  Qi, P = P(t1 . . . tn)

3) начало программы Q0 -  - местный предикат - высказывание

4) конец программы Qk.

Пример: программа «умножение» х,у – целые

x – множимое; у – множитель

x  значит «ввод х»; z  «вывод z»

Контрольные формулы вводятся:

Q3 (x,y,z) & (z > 0)  Q5 (x,y - 1,z + x) & (z > x)

Q3 (x,y,z) & (z = 0)  Q5 (x,y - 1, x)

Пример задачи:

1  xy Q6 (x,y) & (y = 0)

- если эта формула выводится, то программа завершена.

2. Интерпретация формул для конкретных чисел данных обозначает исполнение алгоритма.

Интерпретация включает:

1) подстановка значений переменных после ввода данных.

2) интерпретация формул после подстановки значений переменных.

3) запуск итерационного процесса (Q1=T) который выполняется с формулами пока Fi+1 не равно Fi.

Формулы можно упорядочить для ускорения итерации. Формулы можно интерпретировать параллельно – это логическое программирование – запись алгоритмов в виде формул и исполнение алгоритмов осуществляется машиной, интерпретирующей формулу.

3. Символическое тестирование – при неполностью определенных данных с целью тестирования алгоритма, в результате интерпретации при частично определенных данных будет получена формула, которая совпадает с исходным определением метода вычисления.

Задаемся множимым х = а; и множителем у = 3.

Интерпретация: подстановки

Q0Q1(x = a, y = 3, z = )

Q2(a, 3, )Q3(a, 3, )

Q5(a, y = 2, z = z + a)

Q2(a, 3, a)

Q5(a, y = 1, z = a + a)

Q2(a, 1, a + a)

Q5(a, y = , z = a + a + a)

Q2(a, , a + a + a)

Q4(a, , a + a + a)

Qk(a, ) - конец программы.

Подтверждается:

4. Частичные вычисления при ограниченных условиях. При интерпретации сохраняется только те формулы, которые применимы при ограниченных данных. Программа адаптируется для конкретных условий работы.

5. В традиционном программирований в неймановской машине используется контрольные формулы, в которых проверяется свойства данных в конкретных точках программы. Практически во всех процедурных языках программирования используется оператор assert(формула), сохраняется признак ( и 1), по которым можно судить о наличии ошибки.