SlideShare a Scribd company logo
1 of 37
Download to read offline
Хакасский государственный университет им. Н.Ф. Катанова

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

          Лекция: Схемы программ:
алгоритмические проблемы, стандартные
                       схемы

       Николай Гребенщиков, www.grebenshikov.ru
Вычислимость

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

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

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

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

Но опровергающие примеры также отсутствуют.
                                                   1
Машина Тьюринга - словарная функция:


 • V - алфавит;


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


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


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


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

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

Команда: qa → q a d, где q, q ∈ Q, a, a ∈ V {#}; →   вспо-
могательный символ-разделитель; d        элемент множества
{l, r, }.

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




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




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


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


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


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


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

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


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


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


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


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

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

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


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


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


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


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

Пусть 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
Важные теоремы


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


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


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



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




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




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


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


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


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


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



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




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


 • Переменные - 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), . . .}.
   f 0, g 0, h0, . . . - константы, и обозначаются a, b, c, . . .


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


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

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


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


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


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


Примеры термов: , f : (0), , f (1)(), g (2)(x, h(2)(y, a)).
                                                                    15
Базис стандартных схем. Тесты.

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

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

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



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


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


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


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


• оператор петли - односимвольное слово loop.
Пример базиса стандартных схем

Подкласс 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
Структура стандартной схемы. Графовое представление.

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


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


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


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


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




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




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

Множество операторов необходимо расширить {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
Структура стандартной схемы. Сокращенная линейная фор-
ма.

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




                                                23
Интерпретация стандартной схемы 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
4. каждой логической константе p(0) - один символ множе-
   ства {0, 1};


5. каждому предикатному символу p(n) - всюду определен-
   ный предикат P (n) = I(p(n)).
Стандартная программа - пара (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
• если τ = 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
Выполнение стандартной программы

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

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

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


                                                        26
Выполнение стандартной программы Пусть 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
• O - оператор петли, то ki+1 = ki и Wi+1 = Wi, так что
  протокол бесконечен.
Результат выполнения стандартной программы val(S, I)
выполнения программы (S, I) - последовательность значений
τ1I (W ), τ2I (W ), . . . , τnI (W ) из последней конфигурации прото-
коле, где O = stop(τ1, τ2, . . . τm)




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

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) = P 1, где P1 - предикат     равно 0 , т.е. P1(d) = 1, если
d = 0.


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




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


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


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




                                                  31

More Related Content

What's hot

Use of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureUse of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureAndrei Poliakov
 
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовTheoretical mechanics department
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Nikolay Grebenshikov
 
A Method of Reducing Computational Complexity in Verification of Programming ...
A Method of Reducing Computational Complexity in Verification of Programming ...A Method of Reducing Computational Complexity in Verification of Programming ...
A Method of Reducing Computational Complexity in Verification of Programming ...Iosif Itkin
 
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIДмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIPlatonov Sergey
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовMikhail Kurnosov
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовMikhail Kurnosov
 
Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Technopark
 
Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...
Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...
Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...Mikhail Kurnosov
 
Тригонометрические функции числового аргумента
Тригонометрические функции числового аргументаТригонометрические функции числового аргумента
Тригонометрические функции числового аргументаFormula.co.ua
 
теория рекурсивных функций
теория рекурсивных функцийтеория рекурсивных функций
теория рекурсивных функцийMariya_Lastochkina
 
TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevIosif Itkin
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыsimple_people
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовMikhail Kurnosov
 

What's hot (20)

Use of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signatureUse of eliptic curves for generating digital signature
Use of eliptic curves for generating digital signature
 
10474
1047410474
10474
 
Решение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементовРешение краевых задач методом конечных элементов
Решение краевых задач методом конечных элементов
 
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
Лекция №13. Графы: сильно связные компоненты и остовные деревья. Предмет "Стр...
 
A Method of Reducing Computational Complexity in Verification of Programming ...
A Method of Reducing Computational Complexity in Verification of Programming ...A Method of Reducing Computational Complexity in Verification of Programming ...
A Method of Reducing Computational Complexity in Verification of Programming ...
 
Integral1
Integral1Integral1
Integral1
 
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках IIДмитрий Кашицын, Вывод типов в динамических и не очень языках II
Дмитрий Кашицын, Вывод типов в динамических и не очень языках II
 
23
2323
23
 
Основы MATLAB. Численные методы
Основы MATLAB. Численные методыОсновы MATLAB. Численные методы
Основы MATLAB. Численные методы
 
Лекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмовЛекция 11. Методы разработки алгоритмов
Лекция 11. Методы разработки алгоритмов
 
Лекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмовЛекция 11: Методы разработки алгоритмов
Лекция 11: Методы разработки алгоритмов
 
Funkciya y cos_ee_svojstva_i_grafik
Funkciya y cos_ee_svojstva_i_grafikFunkciya y cos_ee_svojstva_i_grafik
Funkciya y cos_ee_svojstva_i_grafik
 
Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8
 
Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...
Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...
Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...
 
Тригонометрические функции числового аргумента
Тригонометрические функции числового аргументаТригонометрические функции числового аргумента
Тригонометрические функции числового аргумента
 
теория рекурсивных функций
теория рекурсивных функцийтеория рекурсивных функций
теория рекурсивных функций
 
TMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry ZaitsevTMPA-2013 Dmitry Zaitsev
TMPA-2013 Dmitry Zaitsev
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмы
 
Get Ft
Get FtGet Ft
Get Ft
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
 

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

Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...
Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...
Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...Tech Talks @NSU
 
Обработка коллекций наизнанку: как применить много функций к одному аргументу...
Обработка коллекций наизнанку: как применить много функций к одному аргументу...Обработка коллекций наизнанку: как применить много функций к одному аргументу...
Обработка коллекций наизнанку: как применить много функций к одному аргументу...corehard_by
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияPositive Hack Days
 
практика 4
практика 4практика 4
практика 4student_kai
 
элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данныхЕлена Ключева
 
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...corehard_by
 
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Fwdays
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMTech Talks @NSU
 
понятие функции
понятие функциипонятие функции
понятие функцииttku
 
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Positive Hack Days
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Technopark
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02Computer Science Club
 
Запись алгоритмов на языках программирования
Запись алгоритмов на языках программированияЗапись алгоритмов на языках программирования
Запись алгоритмов на языках программированияssusere39acb
 
семенищев
семенищевсеменищев
семенищевIvan
 

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

структура программы
структура программыструктура программы
структура программы
 
Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...
Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...
Tech Talks @NSU: Теоретические основы программирования: проекции Футамуры-Тур...
 
Обработка коллекций наизнанку: как применить много функций к одному аргументу...
Обработка коллекций наизнанку: как применить много функций к одному аргументу...Обработка коллекций наизнанку: как применить много функций к одному аргументу...
Обработка коллекций наизнанку: как применить много функций к одному аргументу...
 
Советский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисленияСоветский суперкомпьютер К-340А и секретные вычисления
Советский суперкомпьютер К-340А и секретные вычисления
 
практика 4
практика 4практика 4
практика 4
 
Синтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблицСинтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблиц
 
элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данных
 
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
C++ CoreHard Autumn 2018. Обработка списков на C++ в функциональном стиле - В...
 
Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"Николай Паламарчук "Functional Programming basics for PHP developers"
Николай Паламарчук "Functional Programming basics for PHP developers"
 
555
555555
555
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
 
понятие функции
понятие функциипонятие функции
понятие функции
 
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
 
Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
алгоритм
алгоритмалгоритм
алгоритм
 
Урок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графовУрок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графов
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02
 
Запись алгоритмов на языках программирования
Запись алгоритмов на языках программированияЗапись алгоритмов на языках программирования
Запись алгоритмов на языках программирования
 
семенищев
семенищевсеменищев
семенищев
 

More from Nikolay Grebenshikov

Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простомуNikolay Grebenshikov
 
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Nikolay Grebenshikov
 
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Nikolay Grebenshikov
 
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...Nikolay Grebenshikov
 
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Nikolay Grebenshikov
 
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Nikolay Grebenshikov
 
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...Nikolay Grebenshikov
 
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Nikolay Grebenshikov
 
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Nikolay Grebenshikov
 
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 

More from Nikolay Grebenshikov (13)

Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простому
 
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
Лекция №12. Графы: представление, обходы, топологическая сортировка. Предмет ...
 
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
Лекция №11. Работа с внешней памятью (файлами). Предмет "Структуры и алгоритм...
 
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
Лекция №10. Сортировка. Часть №2. Предмет "Структуры и алгоритмы обработки да...
 
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
Лекция №9. Сортировка. Часть №1. Предмет "Структуры и алгоритмы обработки дан...
 
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
Лекция №8. Поиск. Хэширование. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
Лекция №5. Линейные структуры данных. Предмет "Структуры и алгоритмы обработк...
 
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
Лекция №4. Асимтотическая нотация. Предмет "Структуры и алгоритмы обработки д...
 
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
 
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
Лекция №3. Анализ алгоритмов. Предмет "Структуры и алгоритмы обработки данных"
 
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
Лекция №2. Абстрактные типы данных. ООП. Предмет "Структуры и алгоритмы обраб...
 
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
 

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

  • 1. Хакасский государственный университет им. Н.Ф. Катанова Теория вычислительных процессов Лекция: Схемы программ: алгоритмические проблемы, стандартные схемы Николай Гребенщиков, www.grebenshikov.ru
  • 2. Вычислимость Вычислимая функция - функция, которой можно задать способ ее вычисления. (формула, алгоритм). Машина Тьюринга - абстрактная математическая машина. Тезис Тьюринга: для каждой функции, для которой суще- ствует алгоритм нахождения ее значения, может быть по- строена машина Тьюринга. Эмпирический термин алгоритм ⇒ Тезиз не доказан! Но опровергающие примеры также отсутствуют. 1
  • 3. Машина Тьюринга - словарная функция: • V - алфавит; • Q конечное непустое множество символов, называемых состояниями машины (Q V = ); • q0 выделенный элемент множества Q, называемый на- чальным состоянием; • # специальный пустой символ, не принадлежащий ни V, ни Q; • I программа машины. 2
  • 4. Программа машины Тьюринга - конечное множество ко- манд. Команда: qa → q a d, где q, q ∈ Q, a, a ∈ V {#}; → вспо- могательный символ-разделитель; d элемент множества {l, r, }. Никакие две команды не могут иметь одинаковую пару пер- вых двух символов! 3
  • 6. Работа машины Тьюринга 1. считывание символа, находящегося против головки; 2. поиск команды qa → q a d, в которой q текущее состо- яние, считанный символ; 3. выполнение команды Машина останавливается в том и только в том случае, если на очередном шаге ни одна из команд не применима. Результат работы заключительное слово на ленте оста- новившейся машины. 5
  • 7. Свойства машины Тьюринга 1. конструктивность МТ есть конечный объект, постро- енный по определенным правилам из базовых объектов; 2. конечность нахождение значений для значений аргу- ментов, для которых она определена, состоит из конеч- ного числа шагов; 3. однозначность результат единственным образом опре- деляется начальным словом; 4. массовость машина работает с любым начальным словом, составленным из символов ее алфавита. 6
  • 8. Автоматизация программирования - одна из целей изуче- ния теоретического программирования. Алгоритмические проблемы: • узнать будет ли программа работать бесконечно; • дают ли две программы одинаковый результат; • является ли программа синтаксически правильной; 7
  • 9. Алгоритмическая проблема, как проблема принадлеж- ности множеству. Разрешимость. Перечислимость. Пусть 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
  • 10. Важные теоремы 1. Множество M ⊆ V ∗ разрешимо тогда и только тогда, ко- гда M и его дополнение M = V ∗M перечислимы. 2. Проблема остановки машины Тьюринга неразрешима. 3. Проблема зацикливания машины Тьюринга не является частично разрешимой. 9
  • 12. Схема программы - математическая модель программы, описывающая строение программы, или точнее строение мно- жества программ, где конкретные операции и функции заме- нены абстрактными функциональными и предикатными сим- волами. 11
  • 13. Классы схемы программ • Стандартные • Рекурсивные • Обогащенные • Структурированные 12
  • 14. Стандартные схемы программ - характеризуются базисом и структурой. 13
  • 15. Базис стандартных схем • Переменные - 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), . . .}. f 0, g 0, h0, . . . - константы, и обозначаются a, b, c, . . . • Предикатные символы - P = {p(0), p(1), p(2), . . . , q (0), q (1), q (2)}. p0, q 0, . . . - логические константы. • Специальные символы - {start, stop, . . .} 14
  • 16. Базис стандартных схем. Термы. Термы (функциональные выражения) - слова, построенные из переменных, функциональных и специальных символов по следующим правилам: • односимвольные слова, состоящие из переменных или кон- стант, являются термами; • слово τ вида f (n)(τ1, τ2, . . . , τn), где τ1, τ2, . . . , τn - термы, является термом; • те и только те слова, о которых говорится в п.п. 1,2, являются термами. Примеры термов: , f : (0), , f (1)(), g (2)(x, h(2)(y, a)). 15
  • 17. Базис стандартных схем. Тесты. Тесты (логические выражения) логические константы и сло- ва вида p(n)(τ1, τ2, . . . , τn). Примеры: p(0), p(1)(x), q (3)(x, y, z), p(1)(f (2)(x, y)). Допускается в функциональных и логических выражениях опускать индексы местности, если это не приводит к дву- смысленности или противоречию. 16
  • 18. Базис стандартных схем. Операторы. • начальный оператор - слово вида start(x1, x2, . . . , xk ), где k ≥ 0, а x1, x2, . . . , xk - переменные, называемые результа- том этого оператора; • заключительный оператор - слово вида stop(τ1, τ2, . . . , τn), где n ≥ 0, а τ1, τ2, . . . , τn - термы; вхождения переменных в термы τ называются аргументами этого оператора; • оператор присваивания - слово вида x := τ , где x – пе- ременная (результат оператора), а τ - терм; вхождения переменных в термы называются аргументами этого опе- ратора; 17
  • 19. • условный оператор (тест) - логическое выражение; вхож- дения переменных в логическое выражение называются аргументами этого оператора; • оператор петли - односимвольное слово loop.
  • 20. Пример базиса стандартных схем Подкласс 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
  • 21. Структура стандартной схемы. Графовое представление. Стандартной схемой в базисе В - конечный размеченный ори- ентированный граф без свободных дуг и с вершинами сле- дующих пяти видов: 1. Начальная вершина (ровно одна) помечена начальным оператором. Из нее выходит ровно одна дуга. Нет дуг, ведущих к начальной вершине. 2. Заключительная вершина (может быть несколько). По- мечена заключительным оператором. Из нее не выходит ни одной дуги. 19
  • 22. 3. Вершина-преобразователь. Помечена оператором присва- ивания. Из нее выходит ровно одна дуга. 4. Вершина-распознаватель. Помечена условным операто- ром (называемым условием данной вершины). Из нее вы- ходит ровно две дуги, помеченные 1 (левая) и 0 (правая). 5. Вершина-петля. Помечена оператором петли. Из нее не выходит ни одной дуги.
  • 23. Структура стандартной схемы. Графовое представление. 20
  • 24. Структура стандартной схемы. Графовое представление. 21
  • 25. Структура стандартной схемы. Линейная форма. Множество операторов необходимо расширить {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
  • 26. Структура стандартной схемы. Сокращенная линейная фор- ма. start(х), у:=а, 2: if р(х) then 5 else 3, 3: у:=g(x,y), х:=h(x) goto 2, 5: stop(у). 23
  • 27. Интерпретация стандартной схемы 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
  • 28. 4. каждой логической константе p(0) - один символ множе- ства {0, 1}; 5. каждому предикатному символу p(n) - всюду определен- ный предикат P (n) = I(p(n)).
  • 29. Стандартная программа - пара (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
  • 30. • если τ = 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
  • 31. Выполнение стандартной программы Конфигурация программы - пара U = (L, W ), где L - метка вершины схемы S, а W - состояние ее памяти. протоколом выполнения программы (ПВП) - конечная или бесконечная последовательность конфигураций (U0, U1, . . . , Ui, Ui+1, . . .) выполнения программы (S, I) U 0 = (0, W0), W0 – начальное состояние памяти схемы S при интерпретации I. 26
  • 32. Выполнение стандартной программы Пусть 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
  • 33. • O - оператор петли, то ki+1 = ki и Wi+1 = Wi, так что протокол бесконечен.
  • 34. Результат выполнения стандартной программы val(S, I) выполнения программы (S, I) - последовательность значений τ1I (W ), τ2I (W ), . . . , τnI (W ) из последней конфигурации прото- коле, где O = stop(τ1, τ2, . . . τm) 28
  • 35. Пример интерпретации 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) = P 1, где P1 - предикат равно 0 , т.е. P1(d) = 1, если d = 0. 29
  • 37. Список литературы • Рабинович Е.В. Теория вычислительных процессов. Раз- дел “Стандартные схемы” . • Котов В.Е., Сабельфельд В.К. Теория схем программ. - М.: Наука, 1991. - 248 с. сс.1-91. 31