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

Автор работы: Пользователь скрыл имя, 19 Сентября 2012 в 09:01, курсовая работа

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

А) Построить программу м.Т. для транспонирования квадратных булевых матриц. Квадратная n X n матрица A =(), , представляется перечислением строк, разделенных символов *.
Вход имеет вид: a11a12.... a1n * a21a22 … a2n * … * an1 an2… ann . Выход: транспонированная матрица в виде:
a11a21.... an1 * a12a22 … an2 * … * a1n a2n… ann
Б) Обосновать правильность построенной программы.
В) Привести протокол вычисления программы для значения аргумента:

Файлы: 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);


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