Меню
Разработки
Разработки  /  Информатика  /  Практикумы  /  11 класс  /  Практическая работа по теме "Алгоритмические машины"

Практическая работа по теме "Алгоритмические машины"

Практическая работа по теме "Алгоритмические машины" (по учебнику К.Ю.Полякова, глава 5)
29.11.2024

Содержимое разработки

29.11.2024

Информатика, 11 класс К.Ю. Поляков, Е.А. Еремин

  1. Элементы теории алгоритмов

Практические работы
1. Машина Тьюринга

Тренажёр «Машина Тьюринга» — это учебная модель универсального исполнителя (абстрактной вычислительной машины), предложенного в 1936 году А. Тьюрингом для уточнения понятия алгоритма. Согласно тезису Тьюринга, любой алгоритм может быть записан в виде программы для машины Тьюринга. Доказано, что машина Тьюринга по своим возможностям эквивалентна машине Поста и нормальным алгорифмам Маркова.

Машина Тьюринга состоит из каретки (считывающей и записывающей головки) и бесконечной ленты, разбитой на ячейки. Каждая ячейка ленты может содержать символ из некоторого алфавита A={a0,a1,…,aN}. Любой алфавит содержит символ «пробел», который обозначается как a0 или Λ. При вводе команд пробел заменяется знаком подчеркивания «_».

Машина Тьюринга — это автомат, который управляется таблицей. Строки в таблице соответствуют символам выбранного алфавита A, а столбцы — состояниям автомата Q={q0,q1,…,qM}. В начале работы машина Тьюринга находится в состоянии q1. Состояние q0 — это конечное состояние: попав в него, автомат заканчивает работу.

В каждой клетке таблицы, соответствующей некоторому символу ai и некоторому состоянию qj, находится команда, состоящая из трех частей:

  1. символ из алфавита A;

  2. направление перемещения:  (вправо),  (влево) или . (на месте);

  3. новое состояние автомата


  1. Наберите программу из учебника, которая увеличивает двоичное число на 1 и проверьте её работу.

Будет ли правильно работать эта программа, если вначале каретка расположена справа от числа? Почему?

Ответ:



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


    q1

    q2

    0

    1 . q0

    1

    0 

    q2

    1 . q0

  2. Опишите алгоритм работы программы для машины Тьюринга:


q1

q2

а

q2

 

б

q2

 

 

q0

Ответ:

q1

q2

При каком начальном состоянии ленты и положении каретки эта программа зацикливается?

Ответ:

Лента:

Каретка:

  1. Составьте программу для машины Тьюринга, которая заменяет в двоичном числе все 0 на 1 и все 1 на 0 (из числа 10101100 получается 01010011). Каретка находится слева от числа.


q1

q2

0



1





Описание состояний:

q1

q2

  1. Составьте программу для машины Тьюринга, которая умножает двоичное число на 2. Каретка находится над числом.


q1

0


1



Описание состояний:

q1

  1. Составьте программу для машины Тьюринга, которая увеличивает троичное число на 1. Каретка находится справа от числа.


q1

q2

0



1



2





Описание состояний:

q1

q2

При каком начальном положении каретки эта программа зацикливается?

Ответ:



  1. Составьте программу для машины Тьюринга, которая уменьшает двоичное число на 1. Каретка находится над числом.


q1

q2

q3

q4

0





1









Описание состояний:

q1

q2

q3

q4

При каком начальном положении каретки эта программа зацикливается?

Ответ:





2. Машина Поста

Тренажёр «Машина Поста» — это учебная модель универсального исполнителя (абстрактной вычислительной машины), основанного на работах Э.Л. Поста по уточнению понятия алгоритма. Согласно тезису Поста, любой алгоритм может быть записан в виде программы для машины Поста. Доказано, что машина Поста по своим возможностям эквивалентна машине Тьюринга и нормальным алгорифмам Маркова.

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

Программа состоит из пронумерованных строк. В каждой строке записывается одна из следующих команд:
     N    переместить каретку вправо на 1 ячейку и перейти к строке с номером N;
        переместить каретку влево на 1 ячейку и перейти к строке с номером N
    0 N    записать в текущую ячейку «0» (стереть метку) и перейти к строке с номером N
    1 N    записать в текущую ячейку «1» (поставить метку) и перейти к строке с номером N
    ? N, M   если текущая ячейка содержит «0» (не отмечена), то перейти к строке с номером N, иначе перейти к строке M
    .   остановить программу

Номер строки перехода в командах 0 и 1 можно не указывать, при этом происходит переход к следующей строке.

Для завершения работы программы достаточно сделать переход на строку 0, например, так:
    ? 25, 0    остановить программу, если текущая ячейка содержит «1», иначе перейти к строке 25.


  1. Что делает следующая программа для машины Поста?

1

2

? 3,4

3

1 1

4

стоп

Ответ:



Как она будет работать при различных начальных состояниях ленты?

Ответ:



  1. Напишите программу для машины Поста, которая неприменима (то есть зацикливается) при любом начальном состоянии ленты.

    1


    2


    3


  2. Напишите программу для машины Поста, которая увеличивает на 1 число, записанной в унарной системе счисления. Каретка стоит над первой (самой левой) отметкой.

    1


    2


    3


    4


  3. Решите задачу 2 при условии, что в начале работы каретка расположена где-то справа от записи числа.

    1


    2


    3


    4


    5


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

    1


    2


    3


    4


    5


  5. На ленте расставлены метки, между которыми могут быть пропуски длиной в одну ячейку. Заполнить все пропуски метками. Каретка стоит над самой левой меткой.



3.Нормальные алгорифмы Маркова (НАМ)

Тренажёр «Нормальные алгорифмы Маркова» — это учебная модель универсального исполнителя, предложенного в 1940-х годах А.А. Марковым для уточнения понятия алгоритма. Марков предположил, что любой алгоритм может быть записан в виде нормального «алгорифма» (учёный считал, что правильно произносить это иностранное слово именно так). Позднее было доказано, что нормальные алгорифмы Маркова эквивалентны по своим возможностям другим универсальным исполнителям: машине Тьюринга и машине Поста.

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

Слова слева и справа от знака «-» могут быть (а могут и не быть) заключены в апострофы или двойные кавычки. Следующие подстановки равносильны и определяют замену буквы «а» на сочетание «бв»:
    а - бв
    'а' - 'бв'
    "а" - "бв"
    'а' - "бв"

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

Правая часть подстановки тоже может отсутствовать (при стирании образца).

Символ «.» после слова-замены обозначает терминальную подстановку, после которой выполнение алгоритма заканчивается. Например:
    'а' - 'б'.  заменить «а» на «б» и остановить программу
        * - .    стереть знак «*» и остановить программу


  1. Что делает следующий НАМ, если применить его к символьной цепочке, состоящей из нулей и единиц:

*0 0*

*1 1*

* =.

*

Ответ:



Как будет работать этот алгоритм при различных начальных состояниях ленты?

Ответ:



  1. Напишите НАМ, который «сортирует» цифры двоичного числа так, чтобы сначала стояли все нули, а потом – все единицы.

Ответ:



  1. Напишите НАМ, который удаляет последний символ строки, состоящей из цифр 0 и 1. Какую операцию он выполняет, если рассматривать строку как двоичную запись числа?

Ответ:



  1. Напишите НАМ, который умножает двоичное число на 2, добавляя 0 в конец записи числа.

Ответ:



  1. Напишите НАМ, который переводит число из двоичной системы счисления в единичную (унарную).

Ответ:



  1. Дано слово, состоящее из букв «а», «б» и пробелов. Постройте нормальный алгоритм Маркова, который символы «а» переносит влево, символы «б» – вправо, а пробелы оставляет посередине.

Ответ:








-80%
Курсы профессиональной переподготовке

Учитель, преподаватель математики и информатики

Продолжительность 600 или 1000 часов
Документ: Диплом о профессиональной переподготовке
17800 руб.
от 3560 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Практическая работа по теме "Алгоритмические машины" (679.35 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт

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