Методические указания к проведению семинарских занятий по

advertisement
Методические указания к проведению семинарских занятий по курсу ДМ-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, результат записать вместо входного слова. (÷ псевдоразность).
Внимание: ноль кодируется одной палочкой.
Download