Сделай Сам Свою Работу на 5

Общие понятия алгоритма и вычислимой функции.





Для каждого алгоритма A имеется множество DA возможных исходных данных этого алгоритма.

В результате применения A к любому xÎDA возможны три исхода:

1) применение A к x закончится за конечное число шагов и алгоритм выдаст результат A(x),

2) применение алгоритма A к значению x закончится без какого-либо результата,

3) применение алгоритма A к значению x ничем не закончится.

В первом случае говорят, что алгоритм A применим к значению x, и в остальных двух случаях - что алгоритм A не применим к значению x.

Множество всех xÎDA , к которым применим алгоритм A, называется областью применения алгоритма A .

Для алгоритма A на множестве DA определяется частичная функция f со значениями f(x)=A(x) для всех значений xÎDA , принадлежащих области применения алгоритма A. В этом случае принято говорить, что алгоритм A вычисляет частичную функцию f.

Функция называется вычислимой, если существует вычисляющий ее алгоритм.

Понятие алгоритма имеет смысл лишь в том случае, если множество его возможных исходных данных является потенциально обозримым множеством, которое состоит из последовательно конструируемых объектов. Примеры: N и А* .



Далее при изучении алгоритмов A и вычислимых функций будем предполагать, что соответствующие множества DA,X,Y являются потенциально обозримым бесконечными множествами последовательно конструируемых объектов.

Аксиома: для любых двух таких множеств X,Y существует вычислимая биекция X на Y.

Пример. Сопоставление последовательно конструируемых элементов множеств N0и А* определяет вычислимую биекцию f : N ® А* по правилу:

и , если и – представление натурального числа x в p–ичной системе со значениями

Подмножество A множества X называется разрешимым (или рекурсивным), если имеется алгоритм, который для любого элемента xÎX позволяет определить, является x элементом множества A или нет.

Другими словами, A разрешимо, есливычислима характеристическая функция этого множества.

Свойства: дополнения, конечные пересечения и конечные объединения разрешимых множеств являются разрешимыми множествами.

Подмножество A множества X называется перечислимым, если оно пусто или является областью применения некоторого алгоритма.



Другими словами, непустое множество A перечислимо, еслиимеется алгоритм, который применим к элементам множества A и не применим к элементам множества X\A.

Теорема. Непустое подмножество A множества X в том и только том случае перечислимо, если оно является множеством значений всюду определенной вычислимой функции f:N ® X.

Свойства: конечные пересечения и конечные объединения перечислимых множеств являются перечислимыми множествами.

Теорема Поста. Подмножество A множества X в том и только том случае разрешимо, если A и X\A перечислимы.

Теорема. Функция f из X в Y вычислима в том и только том случае, если ее график является перечислимым подмножеством множества X´Y.

Теорема об универсальной функции. Пусть - множество всех вычислимых функций из X в Y . Тогда найдется такая вычислимая функция F изN´X в Y, что для любой функции найдется такое nÎN, что f совпадает с частичной функцией из X в Y.

F называется универсальной функцией для множества функций , число nÎN, для которого функция совпадает с частичной функцией , называется номером f относительно универсальной функции F и соответствие называется нумерацией вычислительных функций, соответствующей универсальной функции F.

Для множества всех вычислимых функций из N в Nнайдется универсальная вычислимая функция G изN´Nв N. Тогда уравнение определяет вычислимую функцию из N в N,которая имеет некоторый номер m относительно универсальной функции G, т.е. .

По определению для всех n из области определения функции f.

Значит, номер m не может принадлежать области определения функции f.



Таким образом, f не является всюду определенной функцией на множестве N.

Пусть g:N®N – всюду определенная функция, которая является продолжением частичной функции f, т.е. для любых n из области определения функции f выполняется равенство .

Тогда .

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

Следствие. Существует перечислимое неразрешимое множество.

Другими словами, существует алгоритм A с множеством возможных исходных данных N, для которого алгоритмически неразрешима следующая задача: «определить по данному xÎN, применим ли алгоритм A к значению x»?

Формальные грамматики

Определение. Грамматикой называется алгебраическая система , состоящая из непустых конечных множеств А,G иконечного бинарного отношения p между словами из множества G+ и словами из множества (AÈG)* . Множество А называется алфавитом грамматики имножество V=AÈG – полным словарем грамматики. Элементы множества G не принадлежаталфавиту А и называются грамматическими (или металингвистическими) символами грамматики. Элементы (u,v)Îp отношения p называются правилами грамматики и символически обозначаются u®v . В этом случае говорят, что слово v получается из слова u по правилу p.

Правила грамматики позволяют преобразовать слова ее полного словаря. Для любого g0ÎG образуется некоторое множество слов .

Определение. Пусть у,z ÎV* – слова над полным словарем V грамматики . Будем говорить, что:

- слово z непосредственно выводится из слова у и писать ,если z можно получить из у заменой некоторого его подслова u на слово w по некоторому правилу грамматики u®w,;

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

Определение. Для произвольно фиксированного грамматического символа g0ÎG множество всех слов над алфавитом А, которые выводятся из g0, обозначается и называется языком, порождаемым грамматикой и начальным символом g0ÎG.

Таким образом, по определению

.

Примеры.

1. Пусть грамматика имеет однобуквенный алфавит А = {a}, один грамматический символ g0ÎG, g0¹ а и два правила: g0®а, g0®аg0.

Схематически процесс построения языка можно изобразить на следующей диаграмме:

  a   aa aaa   aaaa
g0   ag0   aag0   aaag0

={a, aa, ааа, aaaa,…}=A+.

2. Пусть грамматика имеет двухбуквенный алфавит А={a,b}, один грамматический символ g0ÎG, g0¹ а,b и три правила: g0®а, g0®аba, g0®аg0a.

 

  a   aaa   aaaaa    
g0   ag0a   aag0aa   aaag0aaa
  aba   aabaa   aaabaaa    

 

={a,aba, а3, ,a5, ,…}.

 

В качестве еще одного применения грамматик рассмотрим общепринятый подход к языкам программирования на примере построения известного языка ALGOL 60.

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

Грамматика с алфавитом

А={А,В,...,Z,а,b,...,z,0,1,…,9,+,-,*,/,¸,­,=,¹,<,£,>,³,Ù,Ú,º,;,×,:,(,),[,], BEGIN, TRUE, FALSE, GOTO, FOR, STEP, UNTIL, END}

и множеством грамматических символов G, состоящим из множеств I,U,R,В,D,L,… подмножеств множества A*, которые обозначаются символами <идентификатор>, <целое без знака>, <вещественное>, <булево>, <цифра>, <буква>,… и неявно определяются последовательностью уравнений вида:

I = L È IL È ID, U = D È UD и т.д.,

где IL,ID,UD – произведения подмножеств в полугруппе слов А*.

Эти уравнения определяются соответствующими правилами языка ALGOL:

<идентификатор> ::= <буква> | <идентификатор><буква> | <идентификатор><цифра>,

<число без знака> ::= <цифра>|<число без знака><цифра>, …

Пусть g0 – произвольный начальный символ, удовлетворяющий условию g0ÏA и p – множество правил грамматики вида: g0®I, g0®g0D, g0®g07и т. п. Языки, порождаемые такими грамматиками с произвольным конечным алфавитом А и определяемым уравнениями множеством грамматических символов GÌА*, называются языками типа ALGOL.

Определение. Язык LÌA+называется языком, порожденным грамматикой (или языком типа 0), если для некоторой грамматики с начальным символом g0.

Теорема 1. Язык LÌA+в том и только том случае порождается некоторой грамматикой, если он последовательно порождается некоторой эффективной процедурой (алгоритмом) P, т.е. , где каждый элемент является результатом применения процедуры P к последовательным значениям .

Такие языки называются рекурсивно перечислимыми.

Определение. Грамматика называется:

- контекстно-зависимой (или типа 1), если любое ее правило имеет вид для некоторых , , ;

- контекстно-свободной (или типа 2), если любое ее правило имеет вид для некоторых и ;

- праволинейной (или рациональной, или типа 3), если любое ее правило имеет вид или для некоторых и .

Для каждого типа обозначим Ki класс всех языков, порожденных грамматиками типа i. Известно, что , причем все эти включения строгие.

Теорема 2. Язык LÌA+в том и только том случае порождается некоторой контекстно-зависимойграмматикой, если найдется такая эффективная процедура (алгоритм), которая для любого слова wÎA+ позволяет определить, принадлежит ли это слово языку L или нет.

Такие языки называются рекурсивными.

Теорема 3. Язык LÌA+в том и только том случае порождается некоторой контекстно-свободнойграмматикой, если он является языком типа языка программирования ALGOL.

Теорема 4. Язык LÌA+в том и только том случае порождается некоторой праволинейнойграмматикой, если он получается из однобуквенных языков с помощью алгебраических операций сложение +, умножение × и итерация +.

Такие языки называются рациональными, поскольку они определяются формулами с постоянными символами и символами трех алгебраических операций +, × и +. Например, рациональный язык в примере 2 определяется формулой .

Так как конструктивные объекты можно кодировать словами конечного множества A (например, состоящего из двоичных символов 0 и 1), то алгоритм моделируется устройством, перерабатывающим слова алфавита A.

Пусть А – произвольное конечное множество, называемое алфавитом.

Элементы aÎА называются буквами.

Словом над алфавитом А называется конечная последовательность букв алфавита А.

Слово без букв называется пустым словом и обозначается символом .

Обозначим символом множество всех непустых слов над алфавитом и символом множество слов .

На этих множествах определена операция умножения слов по следующему правилу:

любым двум словам , ставится в соответствие слово

,

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

Подмножества множества называются языками над алфавитом А. Для языков K,L определяются алгебраические операции:

1) сложение K+L = { u : u Î K или u Î L };

2) умножение и ;

итерация для всех N}. Примеры.

1. Для однобуквенного алфавита A={a} словами являются последовательности: a, aa, aaa, …

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

Языками над алфавитом A={a} являются всевозможные множества слов, образованных из одной буквы a.

2. Для двухэлементного алфавита A={a,b} словами являются последовательности: a, b, aa, ab, ba, bb,…

В этом случае множество слов и также бесконечны.

Языками над алфавитом A={a,b} являются всевозможные множества слов, образованных из двух букв a,b.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.