Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » В.Н. Пильщиков, В.Г. Абрамов, А.А. Вылиток, И.В. Горячая - Машина Тьюринга и алгоритмы Маркова. Решение задач

В.Н. Пильщиков, В.Г. Абрамов, А.А. Вылиток, И.В. Горячая - Машина Тьюринга и алгоритмы Маркова. Решение задач, страница 2

PDF-файл В.Н. Пильщиков, В.Г. Абрамов, А.А. Вылиток, И.В. Горячая - Машина Тьюринга и алгоритмы Маркова. Решение задач, страница 2 Практика расчётов на ПЭВМ (36993): Книга - 1 семестрВ.Н. Пильщиков, В.Г. Абрамов, А.А. Вылиток, И.В. Горячая - Машина Тьюринга и алгоритмы Маркова. Решение задач: Практика расчётов на ПЭВМ - PDF, стран2019-04-28СтудИзба

Описание файла

PDF-файл из архива "В.Н. Пильщиков, В.Г. Абрамов, А.А. Вылиток, И.В. Горячая - Машина Тьюринга и алгоритмы Маркова. Решение задач", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 1 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 2 страницы из PDF

Перегнать автомат под последнюю цифру числа.2. Если это цифра от 0 до 8, то заменить её цифрой на 1 больше иостановиться; например:1↑95→7195→7↑1958↑3. Если же это цифра 9, тогда заменить её на 0 и сдвинуть автомат кпредыдущей цифре, после чего таким же способом увеличить на 1 этупредпоследнюю цифру; например:6↑49→649↑→64↑→065↑04. Особый случай: в Р только девятки (например, 99).

Тогда автомат будетсдвигаться влево, заменяя девятки на нули, и в конце концов окажется под пустойклеткой. В эту пустую клетку надо записать 1 и остановиться (ответом будет 100):9↑9→99↑→9↑0→00→↑1↑00В виде программы для МТ эти действия описываются следующим образом:q1q200,R,q11,N,!11,R,q12, N,!22,R,q13, N,!33,R,q14, N,!44,R,q15, N,!55,R,q16, N,!66,R,q17, N,!77,R,q18, N,!88,R,q19, N,!99,R,q10,L,q2ΛΛ,L,q21,N,!Пояснения.q1 – это состояние, в котором автомат «бежит» под последнюю цифру числа.Для этого он всё время движется вправо, не меняя видимые цифры и оставаясь втом же состоянии. Но здесь есть одна особенность: когда автомат находится под7последней цифрой, то он ещё не знает об этом (ведь он не видит, что записано всоседних клетках) и определит это лишь тогда, когда попадёт на пустую клетку.Поэтому, дойдя до первой пустой клетки, автомат возвращается назад под последнюю цифру и переходит в состояние q2 (вправо двигаться уже не надо).q2 – это состояние, в котором автомат прибавляет 1 к той цифре, которуювидит в данный момент.

Сначала это последняя цифра числа; если она – в диапазонеот 0 до 8, то автомат заменяет её цифрой, которая на 1 больше, и останавливается. Ноесли это цифра 9, то автомат заменяет её на 0 и сдвигается влево, оставаясь всостоянии q2. Тем самым, он будет теперь прибавлять 1 к предыдущей цифре. Еслии эта цифра равна 9, то автомат заменяет её на 0 и сдвигается влево, оставаясь попрежнему в состоянии q2, т.к. должен выполнить то же самое действие – увеличитьна 1 видимую цифру. Если же автомат сдвинулся влево, а в видимой клетке нетцифры (а есть «пусто»), то он записывает сюда 1 и останавливается.Отметим, что для пустого входного слова наша задача не определена,поэтому на этом слове МТ может вести себя как угодно.

В нашей программе,например, при пустом входном слове МТ останавливается и выдает ответ 1.Выше мы привели запись программы в полном, несокращённом виде.Теперь же приведём запись программы в сокращённом, более наглядном виде,при этом справа дадим краткое пояснение действий, которые реализуются всоответствующих состояниях автомата:q10,R,1,R,2,R,3,R,4,R,5,R,6,R,7,R,8,R,9,R,Λ,L,q2под последнюю цифруq21, ,!2, ,!3, ,!4, ,!5, ,!6, ,!7, ,!8, ,!9, ,!0,L,1, ,!видимая цифра + 1Именно так мы и будем в дальнейшем записывать программы.Пример 2 (анализ символов)А={a,b,c}. Перенести первый символ непустого слова Р в его конец.Например:abcb→bcbaРешение.Для решения этой задачи предлагается выполнить следующие действия:1.

Запомнить первый символ слова P, а затем стереть этот символ.2. Перегнать автомат вправо под первую пустую клетку за P и записать в неёзапомненный символ.Как «бегать» вправо, мы уже знаем из предыдущего примера. А вот какзапомнить первый символ? Ведь в МТ нет другого запоминающего устройства,кроме ленты, а запоминать символ в какой-то клетке на ленте бессмысленно:как только автомат сдвинется влево или вправо от этой клетки, он тут жезабудет данный символ. Что делать?Выход здесь таков – надо использовать разные состояния автомата.

Еслипервый символ – это a, то надо перейти в состояние q2, в котором автомат8бежит вправо и записывает в конце a. Если же первым был символ b, тогда надоперейти в состояние q3, где делается всё то же самое, только в конце записывается символ b. Если же первым был символ c, тогда переходим в состояниеq4, в котором автомат дописывает за входным словом символ c. Следовательно,то, каким был первый символ, мы фиксируем переводом автомата в разныесостояния.

Это типичный приём при программировании на МТ.С учётом сказанного программа будет такой:q1q2q3q4aΛ,R,q2,R,,R,,R,bΛ,R,q3,R,,R,,R,cΛ,R,q4,R,,R,,R,Λ,R,a, ,!b, ,!c, ,!анализ 1-го символа, удаление его, разветвлениезапись a справазапись b справазапись c справаРассмотрим поведение этой программы на входных словах, содержащихне более одного символа. При пустом слове, которое является «плохим» длязадачи, программа зациклится – автомат, находясь в состоянии q1 и попадая всёвремя на пустые клетки, будет бесконечно перемещаться вправо.

(Конечно, вэтом случае программу можно было бы остановить, но мы специально сделализацикливание, чтобы продемонстрировать такую возможность.)Если же во входном слове ровно один символ, тогда автомат сотрёт этотсимвол, сдвинется на одну клетку вправо и запишет в неё данный символ:c↑q1→→↑q4c↑!Таким образом, слово из одного символа попросту сдвинется на клетку вправо.Это допустимо. Ведь клетки ленты не нумерованы, поэтому местоположениеслова на ленте никак не фиксируется и перемещение слова влево или вправозаметить нельзя. В связи с этим не требуется, чтобы выходное словообязательно находилось в том же месте, где было входное слово, результатможет оказаться и левее, и правее этого места.Пример 3 (сравнение символов, стирание слова)А={a,b,c}.

Если первый и последний символы (непустого) слова Р одинаковы,тогда это слово не менять, а иначе заменить его на пустое слово.Решение.Для решения этой задачи предлагается выполнить следующие действия:1. Запомнить первый символ входного слова, не стирая его.2. Переместить автомат под последний символ и сравнить его с запомненным.Если они равны, то больше ничего не делать.3. В противном случае уничтожить всё входное слово.Как запоминать символ и как перегонять автомат под последний символ слова,мы уже знаем из предыдущих примеров. Стирание же входного слова реализуется9заменой всех его символов на символ Λ. При этом, раз уж автомат оказался в концеслова, будем перемещать автомат справа налево до первой пустой клетки.Эти действия описываются следующей программой для МТ (напомним,что крестик в ячейке таблицы означает невозможность появлениясоответствующей конфигурации при выполнении программы):q1q2q3q4q5q6q7q8a, ,q2,R,, ,!,R,, , q8,R,, , q8Λ,L,b, ,q4,R,, , q8,R,, ,!,R,, , q8Λ,L,c, ,q6,R,, , q8,R,, , q8,R,, ,!Λ,L,Λ, ,!, L,q3×, L,q5×, L,q7×, ,!анализ 1-го символа, разветвлениеидти к последнему символу при 1-м символе aсравнить посл.

символ с a, не равны – на q8 (стереть P)аналогично при 1-м символе bаналогично при 1-м символе cстереть всё слово, двигаясь справа налевоПример 4 (удаление символа из слова)А={a,b}. Удалить из слова Р его второй символ, если такой есть.Решение.Казалось бы, эту задачу решить просто: надо сдвинуть автомат подклетку со вторым символом и затем очистить эту клетку:a↑bba→ab↑ba→aba↑Однако напомним, что внутри выходного слова не должно быть пустых клеток.Поэтому после удаления второго символа надо «сжать» слово, перенеся первыйсимвол на одну клетку вправо. Для этого автомат должен вернуться к первомусимволу, запомнить его и стереть, а затем, снова сдвинувшись вправо, записатьего в клетку, где был второй символ. Однако начальный «поход» вправо ковторому символу, чтобы его стереть, и последующий возврат к первомусимволу являются лишними действиями: какая разница – переносить первыйсимвол в пустую клетку или в клетку с каким-то символом? Поэтому сразузапоминаем первый символ, стираем его и записываем вместо второго символа:a↑bba→b↑ba→a↑baВ виде программы для МТ всё это записывается так:q1q2q3aΛ,R,q2,,!b, ,!bΛ,R,q3a, ,!,,!Λ, ,!a, ,!b, ,!анализ и удаление 1-го символа, разветвлениезамена 2-го символа на aзамена 2-го символа на bПример 5 (сжатие слова)А={a,b,c}.

Удалить из слова Р первое вхождение символа a, если такое есть.Решение.В предыдущем примере мы переносили на позицию вправо только один сим10вол. В данном же примере мы будем в цикле переносить вправо все начальныесимволы b и c входного слова – до первого символа a или до пустой клетки:bb↑bccbaa→b↑ba→abca↑a→bcb↑aЦентральный момент здесь – как перенести символ x из левой клетки вочередную клетку, где находится некоторый символ y, чтобы затем этот символy можно было перенести в правую клетку? Если через qx обозначить состояние,в котором в видимую клетку надо записать символ x, находившийся ранее вклетке слева, тогда это действие можно изобразить так:x…yyz…→…xz↑↑qxqy…Для этого предлагается выполнить такт x,R,qy , в котором объединены следующие три действия: во-первых, в видимую клетку записывается символ x,взятый из клетки слева; во-вторых, автомат сдвигается вправо – под клетку, вкоторую затем надо будет записать только что заменённый символ y; в-третьих,автомат переходит в состояние qy, в котором он и будет выполнять эту запись.Повторение таких тактов в цикле и приведёт к сдвигу вправо на однупозицию начальных символов входного слова.

Этот цикл должен закончиться,когда в очередной клетке окажется символ a или Λ (y=a или y=Λ), а в началецикла можно считать, что на место первого символа слева переносится символ«пусто» (x=Λ). В итоге получается следующая программа для МТ:q1q2q3aΛ,R,!b, ,!c, ,!bΛ,R,q2,R,c,R,q2cΛ,R,q3b,R,q3,R,Λ, ,!b, ,!c, ,!qΛ: стереть 1-й символ и перенести его вправоqb: запись b, перенос ранее видимого символа вправоqc: запись c, перенос ранее видимого символа вправоВ этой программе следует обратить внимание на такт Λ,R,! , которыйвыполняется в конфигурации <a, q1>, т.е. когда первым символом входногослова является a. Ясно, что надо просто стереть этот символ и остановиться.Однако в этом такте указан ещё и сдвиг вправо.

Зачем? Напомним, что в моментостанова автомат должен находиться под выходным словом (под любым егосимволом), поэтому мы и сдвигаем автомат с пустой клетки на клетку с первымсимволом выходного слова, который во входном слове был вторым.Пример 6 (вставка символа в слово)А={a,b,c}. Если Р – непустое слово, то за его первым символом вставить символ a.Решение.Ясно, что между первым и вторым символами слова Р надо освободитьклетку для нового символа a.

Для этого надо перенести на одну позицию влево11первый символ (на старом месте его можно пока не удалять), а затем,вернувшись на старое место, записать символ a:b c a↑→b c a→↑bb c↑a→b a c a↑Перенос символа на одну позицию влево аналогичен переносу символавправо, о чём говорилось в двух предыдущих примерах, поэтому приведемпрограмму для МТ без дополнительных комментариев.

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5160
Авторов
на СтудИзбе
439
Средний доход
с одного платного файла
Обучение Подробнее