Задание №6515. Исполнитель МТ представляет собой читающую и записывающую головку, которая может передвигаться вдоль бесконечной горизонтальной ленты, разделённой на равные ячейки. В каждой ячейке находится ровно один символ из алфавита исполнителя (множество символов A = {a0, a1, …, an–1}), включая специальный пустой символ a0. Время работы исполнителя делится на дискретные такты (шаги). На каждом такте головка МТ находится в одном из множества допустимых состояний Q = {q0, q1, …, qn–1}. В начальный момент времени головка находится в начальном состоянии q0. На каждом такте головка обозревает одну ячейку ленты, называемую текущей ячейкой. За один такт головка исполнителя может переместиться в ячейку справа или слева от текущей, не меняя находящийся в ней символ, или заменить символ в текущей ячейке без сдвига в соседнюю ячейку. После каждого такта головка переходит в новое состояние или остаётся в прежнем состоянии. Программа работы исполнителя МТ задаётся в табличном виде.  a0a1...an–1q0командакоманда...командаq1командакоманда...команда...............qn–1командакоманда...команда В первой строке перечислены все возможные символы в текущей ячейке ленты, в первом столбце – возможные состояния головки. На пересечении i-й строки и j-го столбца находится команда, которую выполняет МТ, когда головка обозревает j-й символ, находясь в i-м состоянии. Если пара «символ – состояние» невозможна, то клетка для команды остаётся пустой. Каждая команда состоит из трёх элементов, разделённых запятыми: первый элемент – записываемый в текущую ячейку символ алфавита (может совпадать с тем, который там уже записан). Второй элемент – один из четырёх символов «L», «R», «N», «S». Символы «L» и «R» означают сдвиг в левую или правую ячейки соответственно, «N» – отсутствие сдвига, «S» – завершение работы исполнителя МТ после выполнения текущей команды. Сдвиг происходит после записи символа в текущую ячейку. Третий элемент – новое состояние головки после выполнения команды. Например, команда 0, L, q3 выполняется следующим образом: в текущую ячейку записывается символ «0», затем головка сдвигается в соседнюю слева ячейку и переходит в состояние q3. Приведём пример выполнения программы, заданной таблично. На ленте записано неизвестное ненулевое количество расположенных подряд в соседних ячейках символов «Z», все остальные ячейки ленты заполнены пустым символом «λ». В начальный момент времени головка находится на неизвестном ненулевом расстоянии справа от самого правого символа «Z». Программа  λZq0λ, L, q0X, L, q1q1λ, S, q1X, L, q1 заменяет на ленте все символы «Z» на «X» и останавливает исполнителя в первой ячейке слева от последовательности символов «X». Возможное начальное состояние исполнителя: ...λλZZZZλλ...        ▲ q0  Конечное состояние исполнителя после завершения выполнения программы: ...λλXXXXλλ...   ▲ q1        Выполните задание. На ленте в соседних ячейках записана последовательность из 1000 символов, включающая только нули и единицы. Ячейки справа и слева от последовательности заполнены пустыми символами «λ». В начальный момент времени головка расположена в ближайшей ячейке справа от последовательности. Программа работы исполнителя:  λ10q0λ, L, q1   q1λ, S, q10, S, q11, L, q1 После выполнения программы на ленте осталось ровно 343 нуля. Определите максимально возможное число нулей в исходной последовательности.

Задание №6515.
Исполнение алгоритма для конкретного исполнителя. ЕГЭ по информатике

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

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

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

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

 a0a1...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, q0X, L, q1
q1λ, S, q1X, L, q1

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

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

...λλZZZZλλ...
        q0 

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

...λλXXXXλλ...
   ▲ q1       

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

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

Программа работы исполнителя:

 λ10
q0λ, L, q1   
q1λ, S, q10, S, q11, L, q1

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

Пояснение:
Анализ программы:

• Начинаем справа от последовательности, переходим влево в состояние \( q_{1}. \)

• В \( q_{1}: \)

- Видим 0 → меняем на 1, идём влево.

- Видим 1 → меняем на 0, останов.

- Видим λ → останов.

Это операция «вычитание 1» в двоичной системе над числом длины 1000, кроме случая \( x = 0 \), когда получаем все единицы.

Условие: после выполнения нулей осталось 343 ⇒ единиц = 657.

Если \( x \ne 0, \) то \( f(x) = x-1. \)

Чтобы число нулей в исходном x было максимальным, нужно минимизировать число единиц в x.

Единственный способ получить 657 единиц в \( x−1 \) при малом числе единиц в \( x \) — взять \( x \) как степень двойки: $$ x = 2^{k} \Rightarrow x-1 $$ состоит из \( k \) единиц и \( 1000-k \) нулей.

Требуется $$ k = 657 \Rightarrow x = 2^{657}. $$ В двоичном виде: 1 и 999 нулей.

Исходное число нулей: 1000 – 1 = 999.

Показать ответ

Источник: Демонстрационный вариант ЕГЭ — 2026
Сообщить об ошибке


Тест с похожими заданиями