Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Математическая логика и теория алгоритмов.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
8.15 Mб
Скачать

Раздел 4

Подраздел 4.3

1) Первое равенство соответствует стандартной форме СПР, т.е. , второе же равенство еще нужно привести к соответствующей форме. По определению СПР, . На основании второго равенства заданной системы . Сделаем замену и обозначим . Тогда

. Таким образом, стандартная форма СПР будет иметь вид

Выполняя последовательные вычисления, найдем . Из первого равенства системы находим Из второго равенства системы последовательно находим:

;

;

.

Аналитический вид функции найдем, исходя из второго равенства заданной системы равенств:

.

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

2) Эта задача по существу является обратной к предыдущей задаче, и ответ может быть простым: функция была выше получена по СПР из простейшей функции (оператор аннулирования), которая, согласно определению, является всюду определенной, и из функции . Эта последняя функция также является всюду определенной, так как она, в свою очередь, была получена в примере 1 подразд. 4.3 по СПР из всюду определенных функций и . Поэтому функция частично рекурсивна и всюду определена и, согласно определению, является общерекурсивной.

Однако нас должен интересовать вопрос сведения аналитически заданной функции, в данном случае к СПР.

Выполним такое сведение:

Очевидно, что можно обозначить: , а представить в стандартном виде для СПР, т.е. . Тогда окончательный вид СПР для данной функции будет

Таким образом, отталкиваясь в данном примере от аналитически заданной функции мы сводим ее к СПР, которая была исходно задана в предыдущем примере.

3) Функцию можно представить в виде системы двух равенств:

Эта система может быть записана в виде СПР так:

Из первого равенства этой СПР можно записать Из второго равенства этой СПР последовательно получим

;

;

;

;

.

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

4) Функцию можно представить в виде системы двух равенств

Поскольку данная функции зависит лишь от одного аргумента, то для нее СПР должна быть представлена в виде (3), т.е.

Определим конкретный вид функции

.

Теперь вычислим по приведенной СПР значение функции при

;

;

;

.

5) В соответствии с определением СПР запишем:

Вычислим по этой СПР несколько значений :

;

;

;

.

Продолжая этот процесс раз, получим . Теперь найдем по данной СПР :

;

;

.

Если мы вычислим значение непосредственно по аналитическому выражению, то получим тот же самый результат: .

Подраздел 4.4

1) Так как, по условию, задана десятичная система счисления, то внешний алфавит МТ должен содержать все цифры от 0 до 9 и символ пустой клетки

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

Если же последняя цифра числа была 9, то МТ должна стереть её, записать в освободившуюся клетку цифру 0 и произвести сдвиг головки влево на одну клетку, оставаясь в том же начальном состоянии. Во втором такте МТ должна прибавить единицу к цифре, стоявшей в левой клетке, т.е. в клетке, куда сдвинулась головка.

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

Q

А

0

1

2

3

4

5

6

7

8

9

q0

q0

q0

q0

q0

q0

q0

q0

q0

q0

q1

Конфигурации для будут иметь вид:

a05 6a0; a05 7a0; .

q1 q0

Конфигурации для будут такими:

a01 9 9a0; a01 9 0a0; a01 0 0a0; a02 0 0a0; .

q1 q1 q1 q0

Для будем иметь конфигурации:

a09 9a0; a09 0a0; a00 0a0; a01 0 0a0; .

q1 q1 q1 q0

2) В двоичной системе счисления сложение двух чисел выполняется в соответствии с правилами

,

,

,

.

Очевидно, что внешний алфавит должен состоять из символов , число состояний МТ должно быть равно двум: , а функциональная схема иметь вид таблицы

Q

A А

0

1

q0

q0

q1


Соответствующие конфигурации будут иметь вид:

, a01 0 1a0; a01 0 0a0; a01 1 0a0; ;

q1 q1 q0

, a01 1 0a0; a01 1 1a0; ;

q1 q0

, a01 1 1a0; a01 1 0a0; a01 0 0a0; a00 0 0a0;

q1 q1 q1 q1

a01 0 0 0a0;

q0

3) Внешний алфавит будет . Для реализации алгоритма необходимо, чтобы МТ, находясь в начальном состоянии заменяла последнюю цифру числа если она меньше 6, цифрой, на четыре единицы большей, и переходила в состояние .

Если последняя цифра числа равна 6,7,8 или 9, то ее нужно заменить соответственно на цифру 0,1,2 или 3 и сдвинуться влево на одну клетку, перейдя в состояние . Состояние должно добавлять 1 к следующему разряду.

Таким образом, МТ будет иметь три состояния: , а ее функциональная схема будет представлена таблицей

Q

A А

0

1

2

3

4

5

6

7

8

9

q0

q0

q0

q0

q0

q0

q2

q2

q2

q2

q0

q0

q0

q0

q0

q0

q0

q0

q0

q0

q2

Соответствующие конфигурации будут иметь вид:

, a04 8a0; a04 2a0; a05 2a0; ;

q1 q2 q0

, a02 9 7a0; a02 9 1a0; a02 0 1a0; a03 0 1a0; .

q1 q2 q2 q0

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

a0а1а2…аna0

q1

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

Если же головка в исходном состоянии обозревает букву , то она должна заменить ее на букву и, сдвинувшись вправо, перевести МТ в новое состояние . Это состояние во всех следующих тактах не должно менять буквы.

Находясь же в состоянии и обозревая головкой правую пустую клетку , МТ должна вписать в эту клетку букву , остаться на месте и перейти в состояние . Находясь в состоянии и обозревая правый символ , МТ должна вписать в эту клетку букву , остаться на месте и перейти в состояние .

Обобщая всё изложенное, функциональную схему МТ для решения данной задачи можно представить в виде

Q

А

а0пq2

а0пq3

а1нq0

а1пq2

а2пq2

а2нq0

а1пq3

а2пq3


Последовательности всех конфигураций для заданных слов

а0а1а2а2а1а2а0,; а0а2а1а2а1а2а0,;

q1 q1

а0а0а2а2а1а2а0; а0а0а1а2а1а2а0;

q2 q3

а0а2а2а1а2а0; а0а1а2а1а2а0;

q2 q3

а0а2а2а1а2а0; а0а1а2а1а2а0;

q2 q3

а0а2а2а1а2а0; а0а1а2а1а2а0;

q2 q3

а0а2а2а1а2а0; а0а1а2а1а2а0;

q2 q3

а0а2а2а1а2а1а0; а0а1а2а1а2а2а0.

q0 q0

5) Очевидно, что всё многообразие чисел, которые могут использоваться при заданных условиях, исчерпывается следующими словами: *, 0, и * 0 * * 0… …* *.

Таким образом, достаточно, чтобы управляющая головка различала всего лишь три символа: 0 и *. Тогда, если слово представлено всего лишь одним символом *, то для решения задачи достаточно, чтобы головка МТ, обозревая в исходном состоянии правую пустую клетку (с символом ), сдвинулась влево на одну клетку. Поскольку там записан символ *, то МТ должна во втором такте выработать команду, которая в правой пустой клетке сохранила бы символ и, обозревая символ *, перешла бы в состояние

Если задано , то нужно в первом такте сдвинуться влево на одну клетку, сохранив символ . Но поскольку любое число большее 9, может состоять из 0 в младшем разряде и из любых чисел в последующих разрядах, то это нужно проверить. То есть во втором такте нужно вновь сдвинуться на клетку влево, сохранив в предыдущей клетке 0, и перейти в новое состояние. Если окажется, что новая клетка будет пуста, т.е. в ней записан символ , то в следующем такте нужно возвратиться в предыдущую клетку, сохранив левый символ и изменив состояние МТ на новое. Поскольку в клетке, к которой возвратится головка, записан 0, то его надо зафиксировать. Для этого нужно выработать команду подтверждения 0 и переход в состояние .

Если же после 0 в младшем разряде в заданном слове окажется хотя бы один символ, то это значит, что заданное число . Следовательно, все символы, располагающиеся левее первого нуля в младшем разряде, нужно стереть, заменить их на символ пустой клетки , возвратиться к первому нулю, заменить его на символ * (что будет эквивалентно 1) и перейти в состояние .

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

Q

А

0

*

а0лq2

q3

q0

а0пq4

а0лq3

а0лq5

а0пq4

q0

q0

а0пq7

а0лq5

а0лq6

а0пq6

q0

а0пq7

q0


1. а0 * а0, 1. а0 0 а0, 4. а0 0 а0,

q1 q1 q4

2. а0 * а0, 2. а0 0 а0, 5. а0 0 а0 − результат

q2 q2 q0

3. а0 * а0 − результат. 3. а0 0 а0,

q0 q3

/ 1. a0 * 0 * 0 a0, 6. a0 a0 a0 a0 0 a0,

q1 q6

2. a0 * 0 * 0 a0, 7. a0 a0 a0 a0 0 a0,

q2 q6

3. a0 * 0 * 0 a0, 8. a0 a0 a0 0 a0,

q3 q6

4. a0 * 0 * 0 a0, 9. a0 a0 0 a0,

q5 q6

5. a0 * a0 a0 0 a0, 10. a0 0 a0,

q5 q6

11. a0 * a0 – результат

q0.