Машина Тьюринга для транспонирования булевых матриц

Автор: a*******@list.ru, 27 Ноября 2011 в 23:06, курсовая работа

Описание работы

Для начала, в конце слова поставим #. Вернёмся обратно до начала и возьмём первый элемент, отметим его штрихом, дойдём до первой звёздочки, его тоже отмечаем и идём направо до пустышки. Вместо пустышки поставим тот элемент, который запоминали. Вернёмся влево до отмеченной звёздочки и идём направо, берём первый не штрихованный элемент и доходим до первой звёздочки справа от этого элемента, а затем отмечаем эту звёздочку и идём направо до пустышки, ставим элемент, который запоминали. Когда взяли все первые элементы каждой строки, то идём направо до конца, вставим в конец звёздочку. Наш цикл продолжаем до тех пор, пока есть не заштрихованные элементы.

Работа содержит 1 файл

Машина Тьюринга.docx

— 28.49 Кб (Скачать)

Федеральное агентство по образованию  РФ

Государственное образовательное  учреждение

высшего профессионального  образования

Тверской  государственный  университет

Факультет прикладной математики и кибернетики

 
 
 

КУРСОВАЯ  РАБОТА

По  дискретной математике

Тема 9. <<Машина Тьюринга для транспонирования булевых матриц>>

 
 
 
 
 
 
 
 
 

                  Выполнил:

                  Студент 17-группы

                  Шарифов Фарход Сурурриллоевич

 
 
 

Тверь 2011

Тема 9. Машина Тьюринга для  транспонирования булевых  матриц

А) Построить программу м.Т. для транспонирования квадратных  булевых матриц. Квадратная  n X n матрица   A =(),  , представляется перечислением строк, разделенных символов  *.

Вход  имеет вид: a11a12.... a1n * a21a22 … a2n * … * an1 an2… ann . Выход: транспонированная матрица  в виде:

a11a21.... an1 * a12a22 … an2 * … * a1n a2n… ann

Б)  Обосновать правильность построенной программы.

В)  Привести протокол вычисления программы для  значения аргумента:

  А =

Г)  Оценить (по порядку) время работы программы  как функцию от размера матрицы  т .

Алгоритм  построения машины Тьюринга:

     Для начала, в конце слова поставим #. Вернёмся обратно до начала и возьмём  первый элемент, отметим его штрихом, дойдём до первой звёздочки, его тоже отмечаем и идём направо до пустышки. Вместо пустышки поставим тот элемент, который запоминали. Вернёмся влево  до отмеченной звёздочки и идём направо, берём первый не штрихованный элемент и доходим до первой звёздочки справа от этого элемента, а затем отмечаем эту звёздочку и идём направо до пустышки, ставим элемент, который запоминали. Когда взяли все первые элементы каждой строки, то  идём направо до конца, вставим в конец звёздочку. Наш цикл продолжаем до тех пор, пока есть не заштрихованные элементы. Когда все элементы, стоящие слева от # будут заштрихованными, то заканчиваем цикл и стираем эти элементы, потом дойдём до конца и стираем самую конечную звёздочку.

 
 
 
 
 
 

А)    a11a12.... a1n * a21a22 … a2n * … * an1 an2… ann

;

Поставим в конец #:

q01→ q01 П

q00→ q00 П

q0*→ q0* П

q0Λ→ q1# Л

q11→ q11 Л

q10→ q10 Л

q1*→ q1* Л

q1 Λ→ q2 Λ П

a11a12.... a1n * a21a22 … a2n * … * an1 an2… ann#

Составим новую  строку из первых элементов каждой строки 

q2a→ qaa’ П,  a{0,1} //запоминаем 1-ю элемент первой строки

qa b→ qab П, b {0,1} //пропускаем любую букву до первой

qa *→ q1a *’ П   //отметим 1-ю * штрихом *’

q1a b→ q1a b П, b {0,1}  

q1a *→ q1a * П

q1a # → q1a # П

            q1a Λ → q3a Л, a{0,1} //дошли до Λ, поставим на её место элемент который запомнили и вернёмся до *’

q3b→ q3b Л

q3# → q3# Л

q3* → q3* Л

q3*’ → q2*’ П   

q2a’ → q2a’ П, a{0,1}

q2b → q2b П,  b {0,1}

после того как получили очередную строку транспонированной  матрицы поставим * в её конец

q2# → q4# П

q4b → q4b П, b {0,1}

q4* → q4* П

q4 Λ → q5* Л  //поставили *, вернёмся к самому началу

и по пути расштрихуем все *’

q5b → q5b Л, b {0,1}

q5* → q5* Л

q5# → q5# Л

q5a’ → q5a’ Л,  a{0,1}

q5*’ → q5* Л

q5 Λ → q6 Λ П

q6b’ → q6b’ П, b {0,1} //пропускаем все b и берём 1-й b и

q6a → qaa’ П, a{0,1} // заново входим в цикл (qa)

q6* → q6* П

q6# → q7Λ Л   //стираем # и ВСЁ что слева от него

q7a → q7Λ Л, a{0,1}

q7b’ → q7Λ Л, b {0,1}

q7* → q7Λ Л

q7Λ → q7Λ П

q7 a → q8 a П, a{0,1}

q8 a → q8 a П , a{0,1} 

q8 * → q8 * П

q8 Λ → q9 Λ Л   //дойдём до конца, «шаг налево» и сотрём (последнюю) *

q9 * → qf Λ Н   //КОНЕЦ РАБОТЫ ПРОГРАММЫ

 

Б)   a11a12.... a1n * a21a22 … a2n * … * an1 an2… ann # a11a21.... an1 * *a12a22 … an2 * … * a1n a2n… ann

  Wq2 * … … * ... * … … # u W … … * … * … … #u

В)

                                                               

                                                             

                                                             

                                                      

                                                       

                                                        

                                                        

                                                        

                                                  

 

                                                        

                                                        

                                                        

                                              

                                 

                               

Г) N = n2+n+1  - длина слова

       Поставить # : 0(N)

      Число итераций: n x n= 0(N)

       Cтереть: 0(N)

Время :0(N x N)= 0(N2);

Информация о работе Машина Тьюринга для транспонирования булевых матриц