
- •1/ Какая функция называется булевой? Как связаны булевы функции и формулы алгебры логики?
- •2/ Сформулировать тезис Чёрча- Тьюринга.
- •3/ Какие математические модели алгоритма Вы знаете?
- •4/ Из чего состоит машина Тьюринга? Как она работает?
- •5/ Как определяется словарная функция f? в каком случае мы говорим, что машина
- •37.Машины Тьюринга как словарные функции.
- •8/ В чем заключается проблема остановки машины Тьюринга. Является ли она алгоритмически разрешимой?
- •9/ Как определяется временная сложность алгоритма?
- •10/ Что означает выражение «Задача решается за реальное время»?
- •11/ Какие задачи попадают в класс p? Какие задачи попадают в класс np? Как эти классы связаны между собой? (p-np – проблема).
- •Перечислите основные типы грамматик по классификации Хомского. Какому типу соответствуют алгоритмические языки?
- •Что такое регулярные (автоматные) грамматики? Какие типы распознающих устройств используются для распознавания регулярных грамматик?
- •Какая модель представления знаний называется продукционной? в чем ее достоинства и недостатки?
- •В чем состоит задача синтаксического анализа? Что такое синтаксические деревья? Каким образом они строятся?
- •Какие две основные стратегии синтаксического разбора вы знаете? в чем состоит основная проблема разбора?
- •2/ Какие базовые понятия лежат в основе ооп?
- •6/ Поясните такие понятия объектно-ориентированного программирования как класс, объект класса.
- •7/ Что такое наследование классов? Простое и множественное наследования.
- •8/ Инкапсуляция. Что дает инкапсуляция?
- •9/ Определите понятие конструктора класса.
- •10/ Полиморфизм. Примеры реализации полиморфизма.
5/ Как определяется словарная функция f? в каком случае мы говорим, что машина
Тьюринга вычисляет словарную функцию f?
Конфигурация машины Тьюринга называется заключительной,
если головка машины Тьюринга находится в состоянии останова q0.
Работу машины Тьюринга можно описать как
последовательную смену ее конфигураций, причем машина
переходит от конфигурации Kt к конфигурации Kt+1 в соответствии
со своей программой. Любая начальная конфигурация K0, которой
соответствует состояние q1, порождает последовательность
конфигураций K0, K1, K2, …, Kt,… .
Эта последовательность обрывается, если машина оказывается
в заключительной конфигурации. В этом случае будем говорить, что
машина Тьюринга применима к конфигурации K0.
Если последовательность конфигураций K0, K1, K2, …, Kt,…
никогда не обрывается, т.е. машина работает вечно
(“зацикливается”), будем говорить, что машина Тьюринга
неприменима к конфигурации K0.
Для решения задачи исходные данные должны быть
закодированы некоторым “естественным” образом символами
некоторого алфавита A и записаны в виде слова X на ленте машины,
причем головка в начальном состоянии q1∈Q обозревает самый
левый символ слова X, т.е. начальная конфигурация имеет вид q1X.
Результирующая конфигурация имеет вид q0 f(X).
В этом случае будем говорить, что машина Тьюринга
вычисляет словарную функцию f(⋅), причем слово f(X) есть значение
этой функции для аргумента X. Числовые функции – это частный
случай словарных, поскольку конкретный вид символов, которыми
оперирует машина, несуществен, также как и тип данных: цифровых,
алфавитно-цифровых и т.д.
37.Машины Тьюринга как словарные функции.
Машина Тьюринга задается следующими параметрами:
•Внешним алфавитом A={a0, a1,…ak-1}
•Внутренним алфавитом Q={q0,q1,…,qr-1}
•Начальной конфигурацией K0
•Программой работы.
Будем считать начальной конфигурацию: q1 m1…mp
Будем считать конечной конфигурацию: q0 m1…mp
На ленте машины Тьюринга в начальный момент времени t0 записано какое-то слово Р в алфавите А. В результате выполнения программы слово Р перерабатывается машиной в какое-то (вполне определенное слово S) в том же алфавите А. Таким образом, машина Тьюринга задает накоторое отображение слов в алфавите А в слова в том же алфавите. Отображение это является функцией, чаще всего не всюду, а частично опредленной (ф-ия называется частично определенной на множестве Х, если ее значения определены не на всех х из Х. Например, функция y=In x). Если обозначить через A* множество всех слов в алфавите А, то любая машина Тьюринга М, внешним алфавитом которой является множество А, отображает множество А* во множество A*: fм: A* ->A*.
Такие функции называются словарными функциями, поэтому можно говорить о том, тчо машина Тьюринга М «вычисляет» некоторую частично определенную словарную функцию.
Это вычисление понимается в следующем смысле: если в начальной конфигурации на ленте записано слова Р и головка в состоянии q1 обозревает самый левый символ этого слова, то если значение fм(Р) определено, то после конечного числа шагов машина должна перейти в заключительную конфигурацию, в которой на ленте машину будет записано слово fм(Р) и головка в состоянии q0 находится у самого левого символа этого слова, то есть конфигурация q1 P переводится в конфигурацию q0 fм (Р). В противном случае машина должна работать бесконечно, то есть никогда не останавливаться. В первом случае говорят, что машина М применима к слову Р, во втором, что не применима.
6/ В каком случае мы говорим, что машина Тьюринга вычисляет числовую функцию f?
7/ Какая задача называется алгоритмически неразрешимой?
В теории вычислимости алгоритмически неразрешимой задачей называется задача, имеющая ответ да или нет для каждого объекта из некоторого множества входных данных, для которой (принципиально) не существует алгоритма, который бы, получив любой возможный в качестве входных данных объект, останавливался и давал правильный ответ после конечного числа шагов.
Алгоритмическая неразрешимость - Понятие математической логики, означающее, что существуют задачи, для решения которых невозможно в принципе построить алгоритм. Для того чтобы доказать алгоритмическую неразрешимость каких-либо задач, необходимо было уточнить понятие алгоритма, сделать его математически строгим. Математически строгие понятия алгоритма существуют. Это машина Поста, машина Тьюринга, нормальный алгоритм Маркова и пр. Доказательства неразрешимости какой-либо задачи, в большинстве случаев, очень сложны. Приведем формулировку классической алгоритмически неразрешимой задачи: десятой проблемы Гильберта. Задано произвольное алгебраическое уравнение с целыми коэффициентами, надо определить, существует ли у данного уравнения решение в целых числах. Через 70 лет после постановки задачи, в 1970 г., математик Ю. Матиясевич (СССР) доказал невозможность разработки алгоритма, который бы решал эту задачу. Ясна практическая ценность введения понятия «алгоритмическая неразрешимость»: задачи, для которых доказана алгоритмическая неразрешимость, не надо и пытаться решать на компьютере.
За время своего существования человечество придумало множество алгоритмов для решения разнообразных практических и научных проблем. Зададимся вопросом – а существуют ли какие-нибудь проблемы, для которых невозможно придумать алгоритмы их решения?
Утверждение о существовании алгоритмически неразрешимых проблем является весьма сильным – мы констатируем, что мы не только сейчас на знаем соответствующего алгоритма, но мы не можем принципиально никогда его найти.
Успехи математики к концу XIX века привели к формированию мнения, которое выразил Д. Гильберт – «в математике не может быть неразрешимых проблем», в связи с этим формулировка проблем Гильбертом на конгрессе 1900 года в Париже была руководством к действию, констатацией отсутствия решений в данный момент.
Первой фундаментальной теоретической работой, связанной с доказательством алгоритмической неразрешимости, была работа Курта Гёделя – его известная теорема о неполноте символических логик. Это была строго формулированная математическая проблема, для которой не существует решающего ее алгоритма. Усилиями различных исследователей список алгоритмически неразрешимых проблем был значительно расширен. Сегодня принято при доказательстве алгоритмической неразрешимости некоторой задачи сводить ее к ставшей классической задаче – «задаче останова».
Имеет место быть следующая теорема:
Теорема 3.1. Не существует алгоритма (машины Тьюринга), позволяющего по описанию произвольного алгоритма и его исходных данных (и алго-ритм и данные заданы символами на ленте машины Тьюринга) определить, останавливается ли этот алгоритм на этих данных или работает бесконечно.
Таким образом, фундаментально алгоритмическая неразрешимость связана с бесконечностью выполняемых алгоритмом действий, т.е. невозможностью предсказать, что для любых исходных данных решение будет получено за конечное количество шагов.
Тем не менее, можно попытаться сформулировать причины, ведущие к алгоритмической неразрешимости, эти причины достаточно условны, так как все они сводимы к проблеме останова, однако такой подход позволяет более глубоко понять природу алгоритмической неразрешимости: