Методические указания к проведению семинарских занятий по курсу ДМ-3 Семинар 2. Машины Тьюринга. Внимание: на 3-ем семинаре планируется проведение проверочной работы. Теория: принципы работы машины Тьюринга (продолжение) Задачи к рассмотрению на втором семинаре: 1 . Алфавит {0,1}. Скопировать слово в прямом порядке поставив в конце исходного слова разделитель «*» 2. Алфавит {0,1}. Скопировать слово в прямом порядке без всякого разделителя. 3. Алфавит {0,1}. Скопировать слово в обратном порядке поставив в конце исходного слова разделитель «*» 4. Алфавит {0,1}. Скопировать слово в обратном порядке без всякого разделителя. поставив в конце исходного слова разделитель «*» 5. Скопировать слово в обратном порядке вместо исходного слова. 6. Проверить слово на палиндромность: если слово есть палиндром, поставить в конце «+», если не палиндром «-». На семинаре по выбору группы следует рассмотреть любую задачу из 1,2,3,4 и любую задачу из 5,6. Про остальные проговорить решение устно. Мне самыми сложными представляются 2 и 5. Их неверно и стоит рассмотреть. 7. Задачка про Машу и Сашу ( слабонервных просьба не читать – нервы важнее учебы ). Жила-была девочка маленькая Маша, и было у нее несколько яблок (обозначим кол -во за х). В том же доме жил большой и очень прожорливый мальчик Саша. Саша может съесть аж у яблок. Если Маша и Саша встретятся во дворе, Саша будет отнимать у Маши яблоки до тем пор, пока сможет их есть. Вопрос: сколько яблок останется у Маши после такой встречи. Результат записать вместо исходного слова. Т.о. на ленте записано например σ11111%111λ Примечание: % - это подобие псевдоразности, только ноль на этот раз кодируется одной палочкой (звездочкой, яблоком что угодно). В этом случае не надо писать обработку ошибок (если не задано одно из слов) и вообще код программы пол учается очень красивый. Алгоритм. Наиболее коротким с точки зрения кол-ва строк вероятно является решение, когда начиная от % по очереди вправо и влево машина помечает символы 1 (например заменяя на *). Если раньше закончатся 1 справа, значит надо просто стереть все * и знак %. Если раньше закончатся 1 слева, то надо вообще очистить ленту (значит у Маши яблок не останется) Задача на дом 5. Алфавит унарный. Дано число n (закодировано n+1 палочкой). Найти значение функции f(n)=2n+2, результат записать вместо входного слова. Внимание: ноль кодируется одной палочкой. Методические указания к проведению семинарских занятий по курсу ДМ-3 Семинары 1 -3 . Машины Тьюринга. Теория: устройство машины Тьюринга (кратко) Пожелание: для унификации всех нотаций при написании алгоритмов разными группами давайте все придерживаться следующей схемы (порядка символов в команде) S0σ->σAR Aa->bBR Ac->bBL Ad->bBH Aλ->CΩH Жирным выделены зарезервированные символы (начальные состояние и символ, конечное состояние и пустой символ). Считается что: • Начальный символ трогать нельзя, он должен быть строго один на ленте • Пустых символов бесконечно много, и если такой символ появился - далее слово считается законченным. • Начальное состояние S0 можно использовать и как рабочее, т.е. смена состояния в первой строке должна производиться только по необходимости. • Если по каким то причинам задачу решить нельзя (не задано слово и т.д.), то машина должна закончить работу в состоянии Ω` (далее в скобках необх написать примечание, почему решения нет) Общие критерии оценки программ: 1 . Минимизация суммы: кол-во строк+кол-во новых состояний+кол-во новых символов на ленте. и / или 2. Время работы при входном слове размерности n Задачи к рассмотрению на первом семинаре: 1 . Алфавит {0, 1} . Поставить в конце слова символ « 1 ». 2. Алфавит {0,1}. Поставить в конце слова символ, который является первым символом слова. 3. Алфавит {0,1}. Поставить в конце слова символ, который является последним символом слова. Рассмотреть и сравнить два решения: -идем до конца слова, возврат на шаг назад, запоминаем и копируем символ -идем по слову, постоянно перезаписывая в память считанный только что символ пока не дойдем до конца слова - там его сразу печатаем. 4. Алфавит {0,1,2}. Найти в слове все последовательности {102} и заменить их на {***}. Рассмотреть и сравнить два решения: -идем по слову, по ходу меняя состояния фиксируем нахождение {102}, «2» меняем на *, возвращаемся к «1», меняем ее, и далее к «0». Затем перешагиваем через * и бредем дальше. -идем по слову, по ходу меняя состояния фиксируем нахождение {102}, «2» меняем на *, назад пока не возвращаемся, идем дальше. Когда слово кончится один раз возвращаемся назад и после каждой встреченной * ставим еще **. 5. Алфавит унарный. Дано число n (закодировано n+1 палочкой). Найти значение функции f(n)=n+2, результат записать вместо входного слова. (÷ псевдоразность). Внимание: ноль кодируется одной палочкой.