Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MU_KR_TA / VVED_N.DOC
Скачиваний:
27
Добавлен:
10.02.2016
Размер:
379.9 Кб
Скачать

Пример 2.3

Постановка задачи. Синтезировать МТ, выполняющую копирование числа уисх=а (крайнее правое в последовательности чисел). Результатом работы МТ должна быть конкатенация вида yрез=a.0.a. Сохранить исходное число. После завершения работы МТ головка должна быть установлена в начале исходного числа.

Идея решения. Поочередно копировать каждую “1” из исходного числа на ленту после числа а, последовательно формируя результирующую последовательность ”1”. Копируемую ”1” отмечать, инвертируя её значение. Промежуточные результаты удобно представить конкатенацией вида yпром=a’ a’’aгде aa - ”расщеплённое” меткой ”0” число a; a’’’ - часть копии числа a. При переходе к обработке следующей “1” из исходного числа а пометку снимать, выполняя обратное инвертирование.

Словесное описание алгоритма

1. Головка МТ движется вправо вдоль исходной последовательности “1”, пока не встретит пустую ячейку.

2. Затем головка возвращается влево на одну ячейку, инвертирует “1”, находящуюся в текущей ячейке, и сдвигается вправо на одну ячейку.

3. Если в текущей ячейке записана “1” (a - частично копирование уже выполнено), то головка движется вправо, пропуская ячейки с “1”, пока не встретит пустую ячейку; иначе (обрабатывается первая “1” исходного числа) выполняется п.2).

4. Головка сдвигается вправо, пропуская пустую ячейку.

5. Если в текущей ячейке записана “1” (a частично результат уже сформирован), то головка движется вправо, пропуская ячейки с “1”, пока не встретит пустую ячейку; иначе (обрабатывается первая “1” исходного числа, обработка ведётся с конца) выполняется переход к следующей операции.

6. Инвертируется значение текущей ячейки (копируется очередная “1”) и головка сдвигается влево на одну ячейку.

7. Если в текущей ячейке “1”, то головка движется влево, пропуская “1”, до пустой ячейки; (пропуская число a); иначе выполняется следующая операция.

8. Головка движется влево, пропуская пустую ячейку.

9. Если в текущей ячейке “1”, то головка движется влево до ячейки с “0” (проходит число a); иначе выполняется переход к следующей операции.

10. Инвертируется значение текущей ячейки (восстанавливается “1”) и головка движется влево на одну ячейку.

11. Если в текущей ячейке “0” (обработаны все “1” исходного числа а; a’ = ), то головка сдвигается вправо и МТ останавливается; иначе зна-чение текущей ячейки инвертируется, головка сдвигается вправо на одну ячейку, и вновь выполняется последовательность операций из пп. 3 – 11.

Анализ словесного описания алгоритма

Ясно, что МТ должна выполнять простые (R, L) и групповые (по усло-вию наличия 1 в текущей ячейке - GR1(0), GL1(0)) операции сдвига голо-вки, а также операции инвертирования содержимого текущей ячейки - INV. Кроме того, требуется операция проверки «z=0?» для нахождения левого разделителя числа a’. Операция GR1(0) выполняется в пп. 1, 3, 5; операция GL1(0) выполняется в пп. 7, 9 словесного описания. Множество используемых символов: X={0,1}; очевидно, что дополнительные символы не требуются. Рассмотренных операций и знания их последовательности достаточно для построения схемы алгоритма (рис. 2.4).

Анализ схемы алгоритма

Отметим, что групповой операции, например GR1(0), соответствует такая строка в ФС: qi: х х qj; 1 R qi (в ячейке (qi, 0) описываются действия х х qj, следующие за групповой операцией; последнее действие означает безусловный переход на метку qj). Аналогично записываются строки и для других операций (они описаны в подразд. 2. 2. 2).

Таблица 2.4

М2

0

1

Q1

L q2

R q1

Q2

-

0 R q3

Q3

R q4

R q3

Q4

1 L q5

R q4

Q5

L q6

L q5

Q6

1 L q7

L q6

S7

R !

0 R q3

Итак, ФС для функции у=а.0.а имеет следующий вид (табл. 2.4); в начальном состоянии головка МТ всегда обозревает “1”.

В табл. 2.5 и 2.6 приведены результаты работы машины М2 для различных исходных данных (Т - такты, Q - состояния). Здесь жирным шрифтом выделены значения инвертированных символов на ленте; в табл. 2.6, кроме того, объединены такты с неизменным состоянием, а фрагменты ситуации на ленте усечены до минимума.

Пример 2.4

Постановка задачи. Построить МТ в алфавите X={0, 1, #}, где # - сигнал об аварийном завершении работы, вычисляющую разность двух натуральных чисел у=а-b (a, b . Предусмотреть случай a<b, когда разность не определяется, но выдается сигнал # об аварийном завер-шении работы МТ. Сохранение исходных чисел и очистка ленты до и после результата не предусматриваются.

В этом примере приведём только схему алгоритма и ФС построенной МТ.

Т

Q

Ситуация на ленте

0

Q1

... 0 1 0 0 0 ...

1

q1

... 0 1 0 0 0 ...

2

q2

... 0 1 0 0 0 ...

3

q3

... 0 0 0 0 0 ...

4

q4

... 0 0 0 0 0 ...

5

q5

... 0 0 0 1 0 ...

6

q6

... 0 0 0 1 0 ...

7

q7

... 0 1 0 1 0 ...

8

!

... 0 1 0 1 0 ...

Таблица 2.5

Таблица 2.6

Т

Q

Ситуация на ленте

0

q1

... 0 1 1 1 0 0 0 0 0 ...

1-3

q1

... 1 1 1 0 0...

4

q2

... 1 1 0 ...

5

q3

... 0 0 0 ...

6

q4

... 0 0 0 ...

7

q5

... 0 0 1 ...

8

q6

... 1 0 0 ...

9

q7

... 1 1 1 ...

10, 11

q3

... 0 1 0 1 ...

12, 13

q4

... 0 1 0 0 ...

14, 15

q5

... 1 0 1 1 ...

16, 17

q6

... 1 0 1 0 ...

18

q7

... 0 1 1 ...

19

q3

... 0 1 1 ...

...

...

. . .

31

!

... 0 1 1 1 0 1 1 1 0 ...

Схема алгоритма представлена на рис. 2.5, а её ФС - в табл. 2.7, в которой для упрощения опущен столбец, соответствующий символу “#”, так как для этой МТ символ “#” является только выходным.

Таблица 2.7

М3

0

1

q1

R q2

R q1

q2

R q2

R q3

q3

L q4

L q7

q4

-

0 L q5

q5

L q5

L q6

q6

R !

L q6

q7

-

0 L q8

q8

L q8

0 L q9

q9

R q10

R q2

q10

# q6

-

Часто при синтезе МТ допускаются ошибки, приводя-щие к неверной работе МТ, к так называемым аварийным ситуациям, например, к зависанию или зацикливанию машины. Эти ошибки обычно вызываются неправильно составленным алгоритмом, неверным восприятием конфигурации машиной, невниманием при составлении ФС.

Рассмотрим типичные аварийные ситуации.

  • Останов машины до достижения состояния покоя. Этот случай представлен на рис.2.6 фрагментами ФС и графа состояний (“ххх” означает, что содержимое ячейки в данной ситуации безразлично).

0

1

. . .

. . .

. . .

qi

0 S qi

ххх

. . .

. . .

. . .

Рис. 2.6. Пример нештатного останова

  • Переход в недетерминированную область. Пусть конфигурация МТ в некоторый момент имеет вид: qi ... 0 1 1 0 ..., а фрагмент ФС, относящийся к этому моменту, такой, какой приведен на рис. 2.7. Тогда на следующем такте машина перейдёт в состояние qj, которое не определено, поскольку текущая ячейка не пуста.

0

1

. . .

. . .

. . .

si

х х х

0 R sj

. . .

. . .

. . .

sj

0 L sj

-

. . .

. . .

. . .

Рис. 2.7. Пример перехода в недетерминированную область

  • Циклическое зависание имеет место в случае, который может быть представлен следующими фрагментами ФС и графа перехода (рис. 2.8). Например, исходная конфигурация qi ...1 0 ... приводит к циклу qi - qj - qi - qj ...

Отметим, что цепочка зависающего цикла может состоять из любого количества состояний.

0

1

. . .

Si

х х х

1 R sj

. . .

Qj

0 Lsi

x x x

. . .




Рис. 2.8. Пример циклического зависания

  • Зацикливание в работе МТ с уходом головки в “бесконечность”.

Этот случай показан на рис. 2.9. Пусть исходная конфигурация МТ такова: qi ... 0 1 1 1 1 0 0 0 0 ... . Тогда после прохождения ряда единиц машина переходит в состояние qj, и далее её головка бесконечно движется вправо, обозревая лишь пустые ячейки.

0

1

. . .

. . .

. . .

qi

0 R qj

1 R qi

. . .

. . .

. . .

qj

0 R qj

x x x

. . .

. . .

. . .

Рис. 2.9. Пример ухода головки в бесконечность

Если происходит уход головки “в бесконечность” в сторону левого края ленты, то через некоторое время головка достигнет этого края, но, как говорилось ранее, программист не может отслеживать этот факт, он может только видеть аварийное завершение работы МТ.

Рассмотренная на рис. 2.10 ситуация не приводит к аварийной работе МТ, но ее тоже нужно избегать, так как она влечёт за собой лишние действия МТ и неоправданное увеличение ФС. В данном случае состояние qj является избыточным, и его можно убрать.

Рассмотренные примеры не охватывают всего многообразия поведения МТ, однако достаточны для выполнения заданий по данному разделу.

0

1

. . .

. . .

. . .

Qi

0 S qj

x x x

. . .

. . .

. . .

Qj

1 R qt

1 R qj

. . .

. . .

. . .

Qt

x x x

x x x

. . .

. . .

. . .



Рис. 2.10. Пример особого случая

Список литературы

1. ГСТУ 3008-95. Документация. Отчёты в сфере науки и техники. Структура и правила оформления. - Киев: Изд-во стандартов, 1995. – 38 с.

2. Единая система программной документации / Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выпол-нения. ГОСТ 19.701-90. – М.: Госкомитет СССР по управлению качеством продукции и стандартизации, 1990. –25 с.

3. Методические указания к курсовому и дипломному проектированию для студентов специальности 7.080403: Организация и выполнение курсо-вых и дипломных работ/ Сост. В.И. Давыдов, А.Б. Кунгурцев. – Одесса: ОГПУ, 1994. – 18 с.

4. Методические указания и задачи к практическим занятиям по курсу "Теория алгоритмов и вычислительных процессов" для студентов специ-альности 7.080403 и 7.091501: Часть 1 / О.Н. Паулин, В.М. Рувинская, Е.С. Осадчук – Одесса: ОГПУ, 1996. – 54 с.

5. Гудман С., Хидетниеми С. Введение в разработку и анализ алго-ритмов. -М.: Мир, 1981.- 368 с.

6. Вирт Н. Алгоритмы + структуры данных = программы.- М.: Мир, 1985. - 406 с.

32

Соседние файлы в папке MU_KR_TA