2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Из пары не тьюринг полных языков получить тьюринг полный
Сообщение05.04.2015, 19:02 


04/02/14
69
Есть два не полных по тьюрингу языка $L_1$ и $L_2$. Пусть $P_1$ - программа на языке $L_1$ и $x$ - входные данные. Вычисления происходят следующим образом. Применяем $x$ к $P_1$ и получаем какой-то результат $z$. Дальше, считаем, что $z$ - это программа на языке $L_2$ и выполняем ее. Можно ли таким образом вычислить любую вычислимую функцию. Т.е. может ли такая конструкция из двух не тьюринг полных языков быть эквивалентной машине тьюринга?

 Профиль  
                  
 
 Re: Из пары не тьюринг полных языков получить тьюринг полный
Сообщение05.04.2015, 21:15 


04/02/14
69
Очевидно, что если все программы на этих двух языках всегда завершаются, то ответ отрицательный. Но интересен еще и другой вопрос. Если все программы на этих двух языках всегда завершаются, то могут ли они оба вычислить все общерекурсивные функции?

 Профиль  
                  
 
 Re: Из пары не тьюринг полных языков получить тьюринг полный
Сообщение05.04.2015, 21:56 
Заблокирован
Аватара пользователя


07/08/06

3474
cscscs в сообщении #1000622 писал(а):
Применяем $x$ к $P_1$ и получаем какой-то результат $z$.

А здесь не наоборот - $P_1$ к $x$? И количество запусков только 2 - сперва $P_2 = z = P_1(x)$, а потом $P_2()$?

Допустим, что $L_1$ не содержит одну из примитивно-рекурсивных ф-ций ($f_1$), а $L_2$ - другую ($f_2$), а для получения результата необходимо выполнить $f_1(f_2(x))$. Программа $P_1$ не умеет вычислять $f_2$.

Так можно?

Чем-то похожая задача была тут. Хотя нет, там параметра $x$ не было.

 Профиль  
                  
 
 Re: Из пары не тьюринг полных языков получить тьюринг полный
Сообщение05.04.2015, 22:57 


04/02/14
69
AlexDem в сообщении #1000681 писал(а):
А здесь не наоборот - $P_1$ к $x$?

Да, наоборот. :D Только сейчас заметил.
AlexDem в сообщении #1000681 писал(а):
И количество запусков только 2 - сперва $P_2 = z = P_1(x)$, а потом $P_2()$?

Да.
AlexDem в сообщении #1000681 писал(а):
Допустим, что $L_1$ не содержит одну из примитивно-рекурсивных ф-ций ($f_1$), а $L_2$ - другую ($f_2$), а для получения результата необходимо выполнить $f_1(f_2(x))$. Программа $P_1$ не умеет вычислять $f_2$.

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

 Профиль  
                  
 
 Re: Из пары не тьюринг полных языков получить тьюринг полный
Сообщение05.04.2015, 23:13 
Заблокирован
Аватара пользователя


07/08/06

3474
cscscs в сообщении #1000692 писал(а):
Но ведь оба языка могу содержать все примитивно-рекурсивные функции и при этом не быть полными по тьюрингу языками.

А это возможно? Я просто не в курсе - не приходилось разбираться с этим. А можно пример?

 Профиль  
                  
 
 Re: Из пары не тьюринг полных языков получить тьюринг полный
Сообщение05.04.2015, 23:24 


22/01/11
309
cscscs в сообщении #1000671 писал(а):
Очевидно, что если все программы на этих двух языках всегда завершаются, то ответ отрицательный. Но интересен еще и другой вопрос. Если все программы на этих двух языках всегда завершаются, то могут ли они оба вычислить все общерекурсивные функции?


Разве из того, что ответ отрицательный для вычислимых функций, не следует, что ответ отрицательный для общерекурсивных?

 Профиль  
                  
 
 Re: Из пары не тьюринг полных языков получить тьюринг полный
Сообщение05.04.2015, 23:29 
Заблокирован
Аватара пользователя


07/08/06

3474
AlexDem в сообщении #1000698 писал(а):
А это возможно? Я просто не в курсе - не приходилось разбираться с этим. А можно пример?

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

 Профиль  
                  
 
 Re: Из пары не тьюринг полных языков получить тьюринг полный
Сообщение05.04.2015, 23:47 
Заслуженный участник
Аватара пользователя


20/08/14
8072
AlexDem в сообщении #1000698 писал(а):
А это возможно?

Да, это возможно. Чтобы реализовать все примитивно-рекурсивные функции, достаточно уметь прибавлять единицу, вычислять проекции и применять оператор примитивной рекурсии. Так что такой язык построить просто.

Но функции Аккермана - которые, кстати, общерекурсивны - вычислить не получится. Это ответ на
cscscs в сообщении #1000671 писал(а):
могут ли они оба вычислить все общерекурсивные функции

Нет, не могут.

cscscs в сообщении #1000671 писал(а):
Очевидно, что если все программы на этих двух языках всегда завершаются, то ответ отрицательный.

Мне не очевидно, поясните.

 Профиль  
                  
 
 Re: Из пары не тьюринг полных языков получить тьюринг полный
Сообщение05.04.2015, 23:54 
Заблокирован
Аватара пользователя


07/08/06

3474
Anton_Peplov в сообщении #1000714 писал(а):
Да, это возможно. Чтобы реализовать все примитивно-рекурсивные функции, достаточно уметь прибавлять единицу, выполнять подстановку и применять оператор примитивной рекурсии.

Если только это, то можно было написать "не содержит одну из частично-рекурсивных ф-ций", и всё.

Anton_Peplov в сообщении #1000714 писал(а):
Мне не очевидно, поясните.

Запусков-то всего два, нет бесконечной серии запусков $L_1 \leftrightarrow L_2$. Бесконечный цикл $while$ не реализовать, как я понял.

 Профиль  
                  
 
 Re: Из пары не тьюринг полных языков получить тьюринг полный
Сообщение06.04.2015, 00:14 
Заслуженный участник
Аватара пользователя


20/08/14
8072
AlexDem в сообщении #1000717 писал(а):
Если только это, то можно было написать "не содержит одну из частично-рекурсивных ф-ций", и всё.

1) все примитивно-рекурсивные функции частично-рекурсивны (но не обратно)
2) что вообще понимать под словами "содержит функцию"? Если он содержит три вышеназванных оператора, то любая примитивно-рекурсивная функция может быть реализована как конечная череда их применений. Если добавить неограниченный оператор минимизации, можно построить все частично-рекурсивные (т.е. все вычислимые) функции.

 Профиль  
                  
 
 Re: Из пары не тьюринг полных языков получить тьюринг полный
Сообщение06.04.2015, 00:27 
Заблокирован
Аватара пользователя


07/08/06

3474
Anton_Peplov в сообщении #1000725 писал(а):
1) все примитивно-рекурсивные функции частично-рекурсивны (но не обратно)

Да, я и говорю, переписываем:
Цитата:
Допустим, что $L_1$ не содержит одну из частично-рекурсивных ф-ций ($f_1$), а $L_2$ - другую ($f_2$), а для получения результата необходимо выполнить $f_1(f_2(x))$. Программа $P_1$ не умеет вычислять $f_2$.


Anton_Peplov в сообщении #1000725 писал(а):
2) что вообще понимать под словами "содержит функцию"? Если он содержит три вышеназванных оператора, то любая примитивно-рекурсивная функция может быть реализована как конечная череда их применений.

Ну вот допустим, один из операторов он не содержит. Кстати, Вы не в курсе, почему операторы языка назвали операторами? На каком множестве функций они определены?

 Профиль  
                  
 
 Re: Из пары не тьюринг полных языков получить тьюринг полный
Сообщение06.04.2015, 00:38 
Заслуженный участник
Аватара пользователя


20/08/14
8072
AlexDem в сообщении #1000730 писал(а):
я и говорю, переписываем

Ах, вот что Вы переписываете. Теперь понятно.

AlexDem в сообщении #1000730 писал(а):
Кстати, Вы не в курсе, почему операторы языка назвали операторами? На каком множестве функций они определены?

Я наивно полагал, что в языках программирование слово "оператор" употребляется не в смысле "функция, определенная на пространстве функций". Но буду рад, если Вы меня просветите.

 Профиль  
                  
 
 Re: Из пары не тьюринг полных языков получить тьюринг полный
Сообщение06.04.2015, 00:42 
Заблокирован
Аватара пользователя


07/08/06

3474
Anton_Peplov в сообщении #1000732 писал(а):
Я наивно полагал, что в языках программирование слово "оператор" употребляется не в смысле "функция, определенная на пространстве функций". Но буду рад, если Вы меня просветите.

Ну а я решил не заморачиваться и просто употребил термин по назначению. Сожалею, если ввёл в заблуждение. Просто нужно терминологию повторять тогда, чтобы грамотно выражаться, а неохота.

 Профиль  
                  
 
 Re: Из пары не тьюринг полных языков получить тьюринг полный
Сообщение06.04.2015, 01:17 


04/02/14
69
AlexDem в сообщении #1000730 писал(а):
Да, я и говорю, переписываем:
Цитата:
Допустим, что $L_1$ не содержит одну из частично-рекурсивных ф-ций ($f_1$), а $L_2$ - другую ($f_2$), а для получения результата необходимо выполнить $f_1(f_2(x))$. Программа $P_1$ не умеет вычислять $f_2$.

Т.е. Вы хотите сказать, что функцию $f_1 \circ f_2$ нельзя будет реализовать? А вдруг эту композицию можно переписать таким образом, что станет можно реализовать?
Или вдруг $L_1$ содержит $f_1 \circ f_2$, хоть и не содержит $f_1$, почему нет?

 Профиль  
                  
 
 Re: Из пары не тьюринг полных языков получить тьюринг полный
Сообщение06.04.2015, 07:12 
Заблокирован
Аватара пользователя


07/08/06

3474
Так частично-рекурсивных функций-то всего четыре (вроде не вру). Нужно показать, что они не выражаются друг через друга, и не коммутируют.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group