РефератыИнформатика, программированиеМоМоделирование машины Тьюринга

Моделирование машины Тьюринга

Саратовский государственный технический университет


Кафедра «Системотехника»


Расчетно-графическая работа


по математической логике


на тему: «Моделирование машины Тьюринга»


Выполнил:


студент группы АСУ-21


Мустафин Ш. Р.


Проверил:


преподаватель


Минаев С.В.


Саратов 2010


Цель


Изучение принципов работы машины Тьюринга, приобретение практических навыков программирования машины Тьюринга.


Задание


Изучить правила написания алгоритмов на эмуляторе машины Тьюринга;


Получить у преподавателя вариант задания для реализации алгоритма;


Разработать алгоритм в соответствии с полученным заданием;


Отладить написанный алгоритм на эмуляторе машины Тьюринга.


Задача


Сложение нескольких чисел в двоичной системе.


Описание метода решения


Для более удобной реализации алгоритма на эмуляторе, сложение будет выполняться поэтапно. Сначала будем складывать два первых слагаемых, затем результат этого сложения с третьим и так далее, пока не дойдем до знака «=». Первым шагом ищется самый младший, неиспользованный разряд первого слагаемого. В зависимости от его значения переходим в следующие соответствующие состояния. Далее ищем самый младший, неиспользованный разряд второго слагаемого и записываем на его место результат сложения этих двух разрядов. Затем снова возвращаемся на первый шаг. Этот цикл осуществляется до тех пор, пока у одного из слагаемых не кончатся разряды. Записываем оставшиеся старшие разряды к результату, с учетом переноса, если он есть. Стираем лишние символы, находящиеся до старших разрядов результата. Проверяем какой знак стоит после результата. Если «+», то возвращаемся к первому шагу, если «=», то конец подсчетам.


Описание программы


Для удобства в программе все 1 и 0 заменяются на I и O соотвественно. Далее состояние q5 доходит до + и переходит в состояние q6, в зависимости от того, какой символ стоит перед + q6 переходит в q16 – i, q15 – o. q16, q7, q9 – это состояния которые несут единицу во второе слагаемое без переноса, и в зависимости от значения, записывают в самый младший, неиспользованный разряд результат сложения. Если переноса нет, то переходим в состояние q11, есть – q10. Q11,q13 – бегут к первому слагаемому и анализируют самый младший, неиспользованный разряд и в зависимости от значения переходят в состояния q16 и q15, если разрядов нету, то в q14. Q14 и q17 затирают ненужные символы и переходят в состояние q6. Q15, q37,q39 - это состояния которые несут ноль во второе слагаемое без переноса, и в зависимости от значения, записывают в самый младший, неиспользованный разряд результат сложения и переходят в состояние q11. Q10,q23 – бегут с переносом к первому слагаемому и анализируют самый младший, неиспользованный разряд и в зависимости от значения переходят в состояния q16 и q26, если разрядов нету, то в q24. Q26 аналог q15, только несет значение 0 с переносом. Q24 аналог q14, но с учетом переноса. Программа останавливается, когда одно из состояний, преобразую частичную сумму, после младшего разряда находит символ «=».


Алгоритм решения




Код программы


[MoT Data]


1110111+111111+10101010101010101010+…++11=


q1s q1s dR


q1s1q1sidR


q1s0q1sodR


q1s+q1s+dR


q1s=q2s=dL


q2siq2sidL


q2soq2sodL


q2s+q2s+dL


q2s q5s dR


q5s q5s dR


q5siq5sidR


q5soq5sodR


q5s+q6s+dL


q5s=q100s=dE


q6siq16s*dR (если цифра первого слагаемого 1 без переноса)


q6soq15s*dR ( если цифра первого слагаемого 0 без переноса)


q16s+q16s+dR


q16s*q16s*dR


q16siq7sidR


q16soq7sodR(проход по звездочкам и + до еденичек или и и о)


q16s1q40s1dL


q16s0q40s0dL


q40s+q12s1dL(q12 когда разряды кончились во втором слагаемом)


q7siq7sidR


q7soq7sodR


q7s+q9s+dL(q7 и q9 - несу 1 без переноса )


q7s1q9s1dL


q7s0q9s0dL


q7s=q9s=dL


q9siq10s0dL (q10 - c переносом единичкой)


q9soq11s1dL (q11 без переноса )


q9s+q12s1dE (q12 когда разряды кончились во втором слагаемом без переноса)


q11siq11sidL


q11soq11sodL(бежит назад без переноса )


q11s+q11s+dL


q11s*q13s*dL


q13s*q13s*dL


q13siq16s*dR


q13soq15s*dR


q13s q14s dR( q14 если разряды закончились в первом слагаемом без переноса )


q14s q14s dR


q14s*q14s dR (восстановления числа в i и o )


q14s+q14s dR


q14siq14sidR


q14soq14sodR


q14s1q17s1dE


q14s0q17s0dE


q17s1q17sidR


q17s0q17sodR(вернуться в q6 после воосстановления)


q17s+q6s+dL


q17s=q100s=dE


q12s*q12s*dL(записать число без переноса )


q12s q21s dR


q12siq18s*dR


q12soq19s*dR


q18s*q18s*dR(нести единицу к цифрам через + и *)


q18s+q18s+dR


q18s1q20s1dL


q18s0q20s0dL


q20s+q12s1dL


q20s*q12s1dL


q19s*q19s*dR


q19s+q19s+dR (нести 0)


q19s1q22s1dL


q19s0q22s0dL


q22s+q12s0dL


q22s*q12s0dL


q21s q21s dR


q21s*q21s dR (q21 - шагает вправо стирает * и делает 1 и 0 - i и o до + или =)


q21siq21sidR


q21soq21sodR


q21s1q21sidR


q21s0q21sodR


q21s+q6s+dL


q21s=q100s=dE


q10siq10sidL (бежит назад с переносом )


q10soq10sodL


q10s+q10s+dL


q10s*q23s*dL


q23s*q23s*dL (бежит назад c переносом )


q23siq26s*dR


q23soq16s*dE


q23s q24s dR


q26s+q26s+dR проход по звездочкам и + до еденичек или и и о)


q26s*q26s*dR


q26siq25sidR


q26soq25sodR


q26s1q43s1dL


q26s0q43s0dL


q43s+q27s0dL


q25siq25sidR (q25 несу с переносом )


q25soq25sodR


q25s+q28s+dL


q25s1q28s1dL


q25s0q28s0dL


q25s=q28s=dL


q28siq10s1dL(q10 - c переносом единичкой)


q28soq10s0dL


q28s+q27s0dL


q24s*q24s dR


q24s+q24s dR ( q24 если разряды закончились в первом слагаемом с переносом)


q24siq24sidR


q24soq24sodR (восстановления числа в i и o )


q24s1q29s1dL


q24s0q29s0dL


q29siq29s0dL


q29soq30sodE


q29s q30s dE


q30soq17s1dE


q30s q17s1dE


q27s*q27s*dL (q27? когда разряды кончились во втором слагаемом с переносом)


q27s q31s dR


q27siq32s*dR


q27soq33s*dR


q32s*q32s*dR(нести единицу к цифрам через + и *)


q32s+q32s+dR


q32s1q34s1dL


q32s0q34s0dL


q34s+q27s0dL


q34s*q27s0dL


q33s*q33s*dR (нести 0)


q33s+q33s+dR


q33s1q35s1dL


q33s0q35s0dL


q35s+q12s1dL


q35s*q12s1dL


q31s*q31s*dR(q31 - шагает вправо стирает * и делает 1 и 0 - i и o до + или = надо дорисовать 1)


q31s0q36s0dL


q31s1q36s1dL


q36s*q21s1dL


q15s+q15s+dR


q15s*q15s*dR


q15siq37sidR


q15soq37sodR


q15s1q42s1dL


q15s0q42s0dL


q42s+q12s0dL


q37s*q37s*dR


q37siq37sidR


q37soq37sodR


q37s+q39s+dL


q37s1q39s1dL


q37s0q39s0dL


q37s=q39s=dL


q39siq11s1dL


q39soq11s0dL


q39s+q12s0dL


q100s=q100s=dL


q100siq100s1dL


q100soq100s0dL


q100s qz


Вывод


Входе выполнения задания были изучены принципы работы машины Тьюринга, приобретены практические навыки программирования машины Тьюринга.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Моделирование машины Тьюринга

Слов:834
Символов:8747
Размер:17.08 Кб.