Автор: a*******@list.ru, 27 Ноября 2011 в 23:06, курсовая работа
Для начала, в конце слова поставим #. Вернёмся обратно до начала и возьмём первый элемент, отметим его штрихом, дойдём до первой звёздочки, его тоже отмечаем и идём направо до пустышки. Вместо пустышки поставим тот элемент, который запоминали. Вернёмся влево до отмеченной звёздочки и идём направо, берём первый не штрихованный элемент и доходим до первой звёздочки справа от этого элемента, а затем отмечаем эту звёздочку и идём направо до пустышки, ставим элемент, который запоминали. Когда взяли все первые элементы каждой строки, то идём направо до конца, вставим в конец звёздочку. Наш цикл продолжаем до тех пор, пока есть не заштрихованные элементы.
Федеральное агентство по образованию РФ
Государственное образовательное учреждение
высшего профессионального образования
Тверской государственный университет
Факультет прикладной математики и кибернетики
КУРСОВАЯ РАБОТА
По дискретной математике
Тема 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);
Информация о работе Машина Тьюринга для транспонирования булевых матриц