Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Матвеев&Матвеева. Теория Алгоритмов.pdf
Скачиваний:
73
Добавлен:
02.06.2015
Размер:
319.81 Кб
Скачать

16

4. Формальные преобразования операторных схем алгоритмов

Проблема равносильных преобразований является важной составной частью общей теории алгоритмов. Практически вся творческая деятельность человека сводится к разработке алгоритмов – точных правил решения самых разных задач, и не только математических. Научить человека выполнять какую-либо работу – это означает, что ему сообщён алгоритм. Автоматизировать некоторый вид работы означает, что необходимо разработать алгоритм, а затем «погрузить» его в аппаратную реализацию. Первоначально созданный алгоритм как правило далеко не самый удачный, но если есть правила преобразования, то использование их может привести к получению удовлетворительного равносильного алгоритма. Поэтому формальные равносильные преобразования алгоритмов в сочетании с эвристическим поиском нередко приводят к открытию новых методов решения задач.

4.1 Формулы перехода

Так как реализация алгоритмов сводится к последовательному выполнению операторов, независимо от операторной формы представления (ЛСА, МСА или ГСА), то логично предположить, что всю последовательность можно представить

**

как набор цепочек A0 Ø A1 , A1 Ø A2 ,… Символ «Ø» условимся расшифровывать как следование: за оператором A1 следует оператор A2, а символ «*» обозначает логическую функцию этого перехода. Эта функция ai (i = 1, n) может принимать три различных значения:

1.ai ( p1, p2 ,...) = 0 , т.е. переход невозможен.

2.ai ( p1, p2 ,...) =1 , т.е. переход обязателен.

 

~ ~

~

3. ai ( p1, p2 ,...) = p1 p2 ...pn , т.е. переход к одному из операторов возможен при

~ ~

~

. Волнистая линия над логической переменной означает,

условии, что p1 p2

...pn =1

что каждая переменная может иметь два значения – 0 и 1.

Условимся называть запись вида αA – отмеченной функцией, а запись вида

pA – отмеченной переменной. Как указано в [4], формула перехода от оператора Ai имеет следующий вид:

Ai Øai1 A1 Úai 2 A2 Ú ...ain An

(4.1)

где A1 , A2 ,..., An – операторы ЛСА;

aij = aij ( p1 , p2 ,..., ps ) – логические функции от переменных;

aij Aj – отмеченная функция.

Вполне понятно, что в детерминированном алгоритме после оператора Ai может быть выполнен только один из операторов A1, A2,… , входящих в правую часть формулы (4.1), поэтому множество функций {αij} должно обладать двумя обязательными свойствами:

1. Ортогональностью, т.е. aij ×a jk = 0

p1, p2 ,..., pk

17

n

2. Полнотой, т.е. Ú aij º1.

j=1

Полное ортогональное множество функций будем называть «нормальным». Отметим, что нормальным оказывается и множество отмеченных функций. Кроме того, нетрудно показать, что понятие формулы перехода применимо не только к ЛСА, но и к алгоритмам в терминах МСА и ГСА. В МСА формулой перехода является любая строка матрицы, а в ГСА – множество ветвей графа, исходящих из оператора Ai.

Алгоритм переработки информации в общем виде можно представить конечной системой формул перехода S1:

 

n

 

 

 

A

ü

 

A ØÚa

0 j

 

0

1

 

 

 

j ï

 

 

n

 

 

A

 

ï

 

A ØÚa

 

 

 

ï

(4.2)

1

1

1 j

 

 

j ý

.................

 

ï

 

 

n

 

 

 

 

 

ï

 

 

 

 

 

A

ï

 

A ØÚa

nj

 

 

n

1

 

 

 

j þ

 

Пусть имеется система формул перехода S1, в которой – набор независимых логических переменных, всевозможные наборы этих переменных обозначим, как и ранее, последовательностью

D1 , D2 ,...,Dm , Dm+1 ,... (4.3)

Теперь нетрудно определить процесс выполнения системы S1:

1. Выбираем значения переменных в соответствии с набором D1 и определяем значение функции a0 j в формуле перехода для оператора A1. В резуль-

тате происходит переход от A1 к Ai. Это и есть значение формулы перехода A1 при наборе D1 .

2.Выбираем значения переменных в соответствии с набором Di и таким же образом получается значение формулы перехода Ai.

Процесс происходит до тех пор, пока не будет выполнен заключительный оператор алгоритма An. Полученную таким образом строку операторов будем называть значением системы формул перехода для последовательности (4.3). Указанную последовательность будем называть «допустимой», если значение набора переменных Dm+1 совпадает с набором Dm или отличается от него значением лишь тех переменных, которые изменяются во время выполнения оператора Am, т.е. заданным распределением сдвигов.

Две формулы перехода назовём «равносильными», если их значения на данном наборе логических переменных при допустимой последовательности совпадают.

Будем называть логическую функцию αij «приведённой» по переменной ps, если она может быть представлена в виде:

18

 

 

 

(4.4)

aij = psaij¢ Ú psaij¢¢

где ps – логическая переменная,

aij¢ ,aij¢¢ - логические функции не содержащие переменной ps и её отрицания

ps .

Тогда формула перехода вида (4.1) может быть приведена по всем переменным, что выразится в том, что каждая переменная pi и её отрицание pi (или pi и pi ) окажутся вынесенными за скобки. Назовём такое представление формулы перехода «скобочной», а всю систему формул перехода системой «скобочных» формул перехода S2. Наконец, если в системе S2 заменить логические связи операторными с использованием стрелок вида (­s ) и (¯s ) , то можно от скобочных формул перейти к системе «схемных» формул перехода S3.

Пример 4.1

Дана ЛСА

U = A0 p1 ­1

A1 p2 ­2 A2 ¯1

A3 p3 ­3

p4 ­4 ¯6

A4 ¯2 p5 ­5 ¯3

A5 ¯4 A6 p6 ­6 A7 ¯5 Aк

(4.5)

Здесь A0 , Aк

 

– начальный и конечный установочные операторы,

 

Ai (i =

 

 

 

 

– операторы реализации алгоритма,

 

 

1,7)

 

 

 

p j ( j =

 

 

– логические переменные.

 

 

 

1,6)

 

 

 

Исходя из приведённых определений, построим систему формул перехода S1.

 

 

 

 

 

 

 

ìA Øp A Ú

 

 

A ,

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

ï 0

1 1

 

1

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ïA1Øp2 A2 Ú p2 p5 A5 Ú p2 p5 Aк ,

 

 

 

 

 

 

 

 

 

ïA ØA

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ï 2

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

S1

ïA Øp p A Ú p p A Ú p A

(4.6)

 

 

 

 

 

 

 

í 3

3 4

4

 

 

3 4 6 3 5

 

 

 

 

 

 

 

 

 

ïA4Øp5 A5 Ú p5 Aк ,

 

 

 

 

 

 

 

 

 

 

ïA ØA

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ï 5

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ïA6Øp6 A7 Ú p6 A4 ,

 

 

 

 

 

 

 

 

 

 

ïA ØA

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

î 7

к

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Далее перейдём от системы S1

к системе S2, для чего все формулы перехода

(4.6) преобразуем путём операции приведения по всем логическим переменным.

 

 

 

 

окажутся вынесенными за скобки.

При этом все пары pi

и pi

 

ìA Øp A Ú

p

A ,

 

 

ï 0

1 1

 

1

 

3

 

 

 

 

 

 

ïA1Øp2 A2 Ú p2 ( p5 A5 Ú p5 Aк ),

 

 

ïA ØA

 

 

 

 

 

 

 

 

 

 

 

ï 2

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

( p A Ú p A ),

 

S 2

ïA Øp A Ú p

(4.7)

í 3

3 5

 

3

4 4 4 6

 

ïA4Øp5 A5 Ú p5 Aк ,

 

 

ïA ØA

 

 

 

 

 

 

 

 

 

 

 

ï 5

6

 

 

 

 

 

 

 

 

 

 

 

 

ïA6Øp6 A7 Ú p6 A4 ,

 

 

ïA ØA

 

 

 

 

 

 

 

 

 

 

 

î 7

 

к

 

 

 

 

 

 

 

 

 

 

19

Затем, заменив логические связи на операторные с использованием стрелок (­i ,¯i ) , перейдём к равносильной системе схемных формул перехода S3

 

ìA0Øp1 ­1 A1* ¯1 A3 ,

 

 

 

 

 

 

 

ïA Øp

2

­2

A

* ¯2

p

 

­3

A

* ¯3

A ),

 

 

ï

1

 

 

 

2

 

5

 

5

 

 

к

 

 

ïA

ØA

 

 

 

 

 

 

 

 

 

 

 

 

ï

2

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

Øp

­4

A

* ¯4

p

 

­5

A

 

* A ¯56 ),

 

S 2

ïA

 

 

(4.8)

í

3

 

 

3

­6

5

* ¯6

 

4

 

4

 

 

 

ï

A

Øp

A

A ,

 

 

 

 

 

 

4

 

 

5

 

5

 

к

 

 

 

 

 

 

 

ïA

ØA

 

 

 

 

 

 

 

 

 

 

 

 

ï

5

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

ïA6Øp6 ­7 A7 * ¯7 A4 ,

 

 

 

 

 

 

ïA

ØA

 

 

 

 

 

 

 

 

 

 

 

 

î

7

 

 

к

 

 

 

 

 

 

 

 

 

 

 

Отметим, что в системе S3 использован вновь введённый символ «*» вместо знака логической операции ИЛИ, а сам процесс перехода от S2 к S3 состоит из трёх операций:

1.Опустить все скобки в формуле (если они имеются).

2.Заменить символ логического ИЛИ на «*».

 

 

 

 

 

 

 

 

 

 

 

 

3. Заменить связанные пары переменных p и

p

 

(или p

i

и p ) на пары p

i

­s

и

 

 

i

 

i

 

 

i

 

 

¯s (или

 

i ­s и ¯s ).

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

Порядок выполнения действий не имеет значения и определяется практическим удобством преобразования.

Таким образом, алгоритм любой сложности, представленный в операторном виде (ЛСА, МСА, ГСА), может быть детализирован до элементарных шагов перехода от одного оператора к другому. Если интерпретировать алгоритм как некую микропрограмму, то каждая формула перехода сводится к понятию микрооперация.