37
Хакасский государственный университет им. Н.Ф. Катанова Теория вычислительных процессов Лекция: Схемы программ: алгоритмические проблемы, стандартные схемы Николай Гребенщиков, www.grebenshikov.ru

Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Embed Size (px)

Citation preview

Page 1: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Хакасский государственный университет им. Н.Ф. Катанова

Теория вычислительных процессов

Лекция: Схемы программ:

алгоритмические проблемы, стандартные

схемы

Николай Гребенщиков, www.grebenshikov.ru

Page 2: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Вычислимость

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

Машина Тьюринга - абстрактная математическая машина.

Тезис Тьюринга: для каждой функции, для которой суще-ствует алгоритм нахождения ее значения, может быть по-строена машина Тьюринга.

Эмпирический термин алгоритм ⇒ Тезиз не доказан!

Но опровергающие примеры также отсутствуют.

1

Page 3: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Машина Тьюринга - словарная функция:

• V - алфавит;

• Q— конечное непустое множество символов, называемыхсостояниями машины (Q

⋂V = �);

• q0 — выделенный элемент множества Q, называемый на-чальным состоянием;

• # — специальный «пустой» символ, не принадлежащийни V, ни Q;

• I — программа машины.

2

Page 4: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Программа машины Тьюринга - конечное множество ко-манд.

Команда: qa → q′a′d, где q, q′ ∈ Q, a, a′ ∈ V⋃{#};→ — вспо-

могательный символ-разделитель; d — элемент множества{l, r, }.

Никакие две команды не могут иметь одинаковую пару пер-вых двух символов!

3

Page 5: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Машина Тьюринга

4

Page 6: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Работа машины Тьюринга

1. считывание символа, находящегося против головки;

2. поиск команды qa → q′a′d, в которой q — текущее состо-яние, — считанный символ;

3. выполнение команды

Машина останавливается в том и только в том случае, еслина очередном шаге ни одна из команд не применима.

Результат работы — заключительное слово на ленте оста-новившейся машины.

5

Page 7: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Свойства машины Тьюринга

1. конструктивность —МТ есть конечный объект, постро-енный по определенным правилам из базовых объектов;

2. конечность — нахождение значений для значений аргу-ментов, для которых она определена, состоит из конеч-ного числа шагов;

3. однозначность— результат единственным образом опре-деляется начальным словом;

4. массовость — машина работает с любым начальнымсловом, составленным из символов ее алфавита.

6

Page 8: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Автоматизация программирования - одна из целей изуче-ния теоретического программирования.

Алгоритмические проблемы:

• узнать будет ли программа работать бесконечно;

• дают ли две программы одинаковый результат;

• является ли программа синтаксически правильной;

7

Page 9: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Алгоритмическая проблема, как проблема принадлеж-ности множеству. Разрешимость. Перечислимость.

Пусть V – алфавит, M ⊆ V – множество слов в V .

Характеристическая функция множества M :FM : V ∗ → {0,1}, всюду определенный на V ∗ : FM(a) = 1, еслиa ∈M , и FM(a) = 0, если a /∈M .

Частичная характеристическая функция множества M :HM : V ∗ → {1}, определенная только для слов из M и имею-щая вид HM(a) = 1 для всех a ∈M .

8

Page 10: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Важные теоремы

1. Множество M ⊆ V ∗ разрешимо тогда и только тогда, ко-гда M и его дополнение M ′ = V ∗\M перечислимы.

2. Проблема остановки машины Тьюринга неразрешима.

3. Проблема зацикливания машины Тьюринга не являетсячастично разрешимой.

9

Page 11: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Универсальная машина Тьюринга c© 2003 Jin Wicked, USA.

10

Page 12: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

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

11

Page 13: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Классы схемы программ

• Стандартные

• Рекурсивные

• Обогащенные

• Структурированные

12

Page 14: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Стандартные схемы программ - характеризуются базисоми структурой.

13

Page 15: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Базис стандартных схем

• Переменные - X = {x, x1, x2, . . . , y, y1, y2, . . . , z, z1, z2, . . .}

• Функциональные символы -F = {f(0), f(1), f(2), . . . , g(0), g(1), g(2), . . . , f(0), h(1), h(2), . . .}.f0, g0, h0, . . . - константы, и обозначаются a, b, c, . . .

• Предикатные символы - P = {p(0), p(1), p(2), . . . , q(0), q(1), q(2)}.p0, q0, . . . - логические константы.

• Специальные символы - {start, stop, . . .}

14

Page 16: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Базис стандартных схем. Термы.Термы (функциональные выражения) - слова, построенныеиз переменных, функциональных и специальных символов последующим правилам:

• односимвольные слова, состоящие из переменных или кон-стант, являются термами;

• слово τ вида f(n)(τ1, τ2, . . . , τn), где τ1, τ2, . . . , τn - термы,является термом;

• те и только те слова, о которых говорится в п.п. 1,2,являются термами.

Примеры термов: , f : (0), , f(1)(), g(2)(x, h(2)(y, a)).15

Page 17: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Базис стандартных схем. Тесты.

Тесты (логические выражения) логические константы и сло-ва вида p(n)(τ1, τ2, . . . , τn).

Примеры: p(0), p(1)(x), q(3)(x, y, z), p(1)(f(2)(x, y)).

Допускается в функциональных и логических выраженияхопускать индексы местности, если это не приводит к дву-смысленности или противоречию.

16

Page 18: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Базис стандартных схем. Операторы.

• начальный оператор - слово вида start(x1, x2, . . . , xk), гдеk ≥ 0, а x1, x2, . . . , xk - переменные, называемые результа-том этого оператора;

• заключительный оператор - слово вида stop(τ1, τ2, . . . , τn),где n ≥ 0, а τ1, τ2, . . . , τn - термы; вхождения переменныхв термы τ называются аргументами этого оператора;

• оператор присваивания - слово вида x := τ , где x – пе-ременная (результат оператора), а τ - терм; вхожденияпеременных в термы называются аргументами этого опе-ратора;

17

Page 19: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

• условный оператор (тест) - логическое выражение; вхож-дения переменных в логическое выражение называютсяаргументами этого оператора;

• оператор петли - односимвольное слово loop.

Page 20: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Пример базиса стандартных схем

Подкласс V 1

{x1, x2}, {a, f(1)}, {p(1)}, {start, stop, (, ), :=, , },

{start(x1, x2);x1 := f(x1), x2 := f(x2),

x1 := a, x2 := a, p(1), p(x2), stop(x1, x2)}

18

Page 21: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Структура стандартной схемы. Графовое представление.

Стандартной схемой в базисе В - конечный размеченный ори-ентированный граф без свободных дуг и с вершинами сле-дующих пяти видов:

1. Начальная вершина (ровно одна) помечена начальнымоператором. Из нее выходит ровно одна дуга. Нет дуг,ведущих к начальной вершине.

2. Заключительная вершина (может быть несколько). По-мечена заключительным оператором. Из нее не выходитни одной дуги.

19

Page 22: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

3. Вершина-преобразователь. Помечена оператором присва-ивания. Из нее выходит ровно одна дуга.

4. Вершина-распознаватель. Помечена условным операто-ром (называемым условием данной вершины). Из нее вы-ходит ровно две дуги, помеченные 1 (левая) и 0 (правая).

5. Вершина-петля. Помечена оператором петли. Из нее невыходит ни одной дуги.

Page 23: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Структура стандартной схемы. Графовое представление.

20

Page 24: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Структура стандартной схемы. Графовое представление.

21

Page 25: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Структура стандартной схемы. Линейная форма.

Множество операторов необходимо расширить {goto, if, then, else}

0: start(х) goto 1,1: у:=а goto 2,2: if р(х) then 5 else 3,3: у:=g(x,y) goto 4,4: х:=h(x) goto 2,5: stop(у).

22

Page 26: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Структура стандартной схемы. Сокращенная линейная фор-ма.

start(х),у:=а,2: if р(х) then 5 else 3,3: у:=g(x,y),х:=h(x) goto 2,5: stop(у).

23

Page 27: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Интерпретация стандартной схемы c базисом B в областиинтерпретации D называется функция I, которая сопостав-ляет:

1. каждой переменной x из базиса B - некоторый элементd = I(x) из области интерпретации D;

2. каждой константе a из базиса B - некоторый элементd = I(a) из области интерпретации D;

3. каждому функциональному символу f(n) - всюду опреде-ленную функцию F (n) = I(f(n));

24

Page 28: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

4. каждой логической константе p(0) - один символ множе-ства {0,1};

5. каждому предикатному символу p(n) - всюду определен-ный предикат P (n) = I(p(n)).

Page 29: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Стандартная программа - пара (S, I), где S - стандартнаясхема, а I ее интерпертация.

Память схемы XS конечное множество переменных схемы S.

Состоянием памяти программы (S, I) называют функциюW :

XS → D, которая каждой переменной x из памяти схемы S

сопоставляет элемент W (x) из области интерпретации D.

Значение терма τ при интерпретации I и состоянии памятиW (обозначим τI(W )) определяется следующим образом:

• если τ = x, x – переменная, то τI(W ) = W (x);

25

Page 30: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

• если τ = a, a – константа, то τI(W ) = I(a);

• если τ = f(n)(τ1, τ2, . . . , τn), тоτI(W ) = I(f(n))(τ1I(W ), τ2I(W ), . . . , τnI(W ));

• если p = (n)(τ1, τ2, . . . , τn), тоpI(W ) = I(p(n))(τ1I(W ), τ2I(W ), ...τnI(W )), n ≥ 0

Page 31: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Выполнение стандартной программы

Конфигурация программы - пара U = (L,W ), где L - меткавершины схемы S, а W - состояние ее памяти.

протоколом выполнения программы (ПВП) - конечная илибесконечная последовательность конфигураций(U0, U1, . . . , Ui, Ui+1, . . .) выполнения программы (S, I)

U0 = (0,W0), W0 – начальное состояние памяти схемы S приинтерпретации I.

26

Page 32: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Выполнение стандартной программы Пусть Ui = (ki,Wi)

- i-я конфигурация ПВП, а O - оператор схемы S в вершинес меткой ki, тогда Ui+1 = (ki+1,Wi+1)

• O = start(τ1, . . . , τn) и следующая вершина с меткой L, тоki+1 = L и Wi+1 = Wi;

• O = x := τ и следующая вершина с меткой L, то ki+1 =

L,Wi+1 = Wi,Wi+1(x) = τI(Wi);

• O - условный оператор p и pI(Wi) = ∆, где ∆ ∈ {0,1}иследующая вершина с меткой L, то ki+1 = L и Wi+1 = Wi;

27

Page 33: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

• O - оператор петли, то ki+1 = ki и Wi+1 = Wi, так чтопротокол бесконечен.

Page 34: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Результат выполнения стандартной программы val(S, I)

выполнения программы (S, I) - последовательность значенийτ1I(W ), τ2I(W ), . . . , τnI(W ) из последней конфигурации прото-коле, где O = stop(τ1, τ2, . . . τm)

28

Page 35: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Пример интерпретации

I1(x) = 4; I1(y) = 0; I1(a) = 1;

I1(g) = G, где G - функция умножения чисел, т. е. G(d1, d2) =

d1 ∗ d2;

I1(h) = H, где H - функция вычитания единицы, т. е. H(d) =

d− 1;

I1(p) = P1, где P1 - предикат «равно 0», т.е. P1(d) = 1, еслиd = 0.

29

Page 36: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

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

30

Page 37: Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Теория вычислительных процессов"

Список литературы

• Рабинович Е.В. Теория вычислительных процессов. Раз-дел “Стандартные схемы” .

• Котов В.Е., Сабельфельд В.К. Теория схем программ. -М.: Наука, 1991. - 248 с. сс.1-91.

31