СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Тип №12 ЕГЭ по информатике «Машина Тьюринга»

Категория: Информатика

Нажмите, чтобы узнать подробности

Тип №12 ЕГЭ по информатике «Машина Тьюринга». Практическая работа.

Просмотр содержимого документа
«Тип №12 ЕГЭ по информатике «Машина Тьюринга»»

Тип 12 «Машина Тьюринга» №  82960 (https://inf-ege.sdamgia.ru/problem?id=82960)

Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться вдоль бесконечной горизонтальной ленты, разделённой на равные ячейки. В каждой ячейке находится ровно один символ из алфавита исполнителя (множество символов A  =  {a0, a1, ..., an − 1}), включая специальный пустой символ a0.

Время работы исполнителя делится на дискретные такты (шаги). На каждом такте головка МТ находится в одном из множества допустимых состояний Q  =  {q0, q1, ..., qn − 1}. В начальный момент времени головка находится в начальном состоянии q0.

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

Программа работы исполнителя МТ задаётся в табличном виде.


a0

a1

...

an-1

q0

команда

команда

...

команда

q1

команда

команда

...

команда

...

...

...

...

...

qn-1

команда

команда

...

команда

В первой строке перечислены все возможные символы в текущей ячейке ленты, в первом столбце  — возможные состояния головки. На пересечении i⁠-й строки и j⁠-го столбца находится команда, которую выполняет МТ, когда головка обозревает j⁠-й символ, находясь в i⁠-м состоянии. Если пара «символ  — состояние» невозможна, то клетка для команды остаётся пустой.

Каждая команда состоит из трёх элементов, разделённых запятыми: первый элемент  — записываемый в текущую ячейку символ алфавита (может совпадать с тем, который там уже записан). Второй элемент  — один из четырёх символов «L», «R», «N», «S». Символы «L» и «R» означают сдвиг в левую или правую ячейки соответственно, «N»  — отсутствие сдвига, «S»  — завершение работы исполнителя МТ после выполнения текущей команды.

Сдвиг происходит после записи символа в текущую ячейку. Третий элемент  — новое состояние головки после выполнения команды.

Например, команда 0, L, q3 выполняется следующим образом: в текущую ячейку записывается символ «0», затем головка сдвигается в соседнюю слева ячейку и переходит в состояние q3.

Приведём пример выполнения программы, заданной таблично. На ленте записано неизвестное ненулевое количество расположенных подряд в соседних ячейках символов «Z», все остальные ячейки ленты заполнены пустым символом «λ». В начальный момент времени головка находится на неизвестном ненулевом расстоянии справа от самого правого символа «Z».

 



Программа.


λ

Z

q0

λ, L, q0

X, L, q1

q1

λ, S, q1

X, L, q1

заменяет на ленте все символы «Z» на «X» и останавливает исполнителя в первой ячейке слева от последовательности символов «X».

Возможное начальное состояние исполнителя.

...

λ

λ

Z

Z

Z

Z

λ

...

  Конечно состояние исполнителя после завершения выполнения программы.

...

λ

X

X

X

X

λ

λ

...

 



































ПРАКТИЧЕСКАЯ ЧАСТЬ

Подготовим таблицу:

Пусть в начальный момент времени будет 0-«0», 0-«1», 0-«2».

Укажем, как изменятся цифры по условию задачи:

Посчитаем сумму до работы МТ и сумму после работы МТ:

Добавим ограничение по условию (последовательность состоит из 1000 символов):

Далее вызовем инструмент «Поиск решения».

Укажем по какому критерию будем оптимизируем функцию (по количеству «2»):

Укажем какие ячейки будут изменяться:











Добавим ограничения:

  1. Данные должны быть целые.

  1. Сумма после работы МТ должна быть 371.

  1. Последовательность состоит из 1000 символов.

Зададим команду «Найди решение»



Выполните задание.

На ленте в соседних ячейках записана последовательность из 1000 символов, которые могут включать только нули, единицы и тройки. Ячейки справа и слева от последовательности заполнены пустыми символами «λ». В начальный момент времени головка расположена в ближайшей ячейке справа от последовательности. Программа работы исполнителя:   

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