Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Трахтенброт, Б. А. Алгоритмы и вычислительные автоматы

.pdf
Скачиваний:
33
Добавлен:
21.10.2023
Размер:
9.86 Mб
Скачать

трическне сигналы, изображающие выходные данные. Вход­ ные сигналы поступают в арифметический блок из ячеек па­ мяти, где они хранились, а выходной сигнал отправляется из него в ту ячейку, в которой он будет храниться. Схема­ тически это изображено на рис. 10, б, где числа из ячеек 11 и 12 складываются, а результат отправляется в ячейку 15. Для того чтобы такая операция была осуществлена в ма­ шине в некотором такте, необходимо, чтобы к началу этого такта были произведены соединения ячеек 11 н 12 с ариф­ метическим блоком и арифметического блока с ячейкой 15;

также необходимо, чтобы

арифмометр был включен на нуж­

ную операцию (в данном

случае на сложение). Все это вхо­

дит уже в «компетенцию»

блока управления.

3. Б л о к у п р а в л е н и я предназначен для выпол­ нения функций, которые в схеме рис. 10, а выполняет сам

вычислитель. Именно,

на каждом этапе

работы

машины

у п р а в л я ю щ е е

у с т р о й с т в о

создает

условия

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

5.3. Машинные команды. Для более точного описания возникающей здесь картины укажем, что каждая машина характеризуется вполне определенной системой команд (при­ казов), которые она может принимать к исполнению. При этом всякая программа, вкладываемая в машину, представ­

ляет собой

определенную комбинацию команд и некоторых

вспомогательных

чисел (параметров), которые помещаются

в ячейки

«памяти».

Например, в вычислительной

машине

М-20 принята

так

называемая трехадресная

система

команд, каждая из которых является последовательностью

четырех

чисел: сфуб,

из которых

первое указывает н о-

м е р предписываемой

операции,

последующие

два — ад­

р е с а

двух

ячеек, над содержимым

которых

совершает­

ся операция,

а последнее — а д р е с

ячейки,

в которую

следует

поместить результат (всего три адреса)*).

*) В машине БЭСМ-6 и в машинах серии «Урал» принята одно­ адресная система; в машинах серии «Минск» — двухадресная.

50

Практически каждая команда записывается в одной ячейке в виде одного числа, цифры которого разбиваются на четыре группы, имеющие соответствующие назначения. Например, на рис. 10, б в ячейке 1 запоминающего устрой­ ства записано число 1 11 12 15, которое представляет собой следующий зашифрованный приказ:

«Сложить (операция № 1) числа из ячек 11, 12 и резуль­ тат отправить в ячейку 15».

(Здесь принято разделение на группы справа налево по два разряда. Для определенности мы будем и дальше при­ держиваться такого метода записи команд.)

Обычно система команд насчитывает несколько десятков команд (хотя наблюдается общая тенденция к увеличению

их числа

и разнообразия

до сотен, а в отдельных

случаях

до тысяч команд). Укажем самые употребительные.

1. А р и ф м е т и ч е с к и е

к о м а н д ы :

 

а) 1 Руб — с л о ж и т ь

число из

р с числом из у

и сумму

б) 2 Руб

отправить в б;

 

 

 

 

 

 

— в ы ч е с т ь

из числа, хранящегося в Р, число

 

из у и разность отправить в б;

 

в) 3 Руб у м н о ж и т ь

 

число из

Р

на число из у и про­

 

изведение отправить в б;

 

 

 

г) 4 Руб — р а з д е л и т ь

 

число из р на число из у и част­

 

ное отправить

в б.

 

 

 

 

П. К о м а н д ы

п е р е д а ч и

 

у п р а в л е н и я :

д) 5 00 00 б — переходить

 

к команде, хранящейся в б

 

(безусловная

передача

управления);

 

е) 5 01 уб — переходить к

команде,

хранящейся

в б, при

 

условии,

что

в ячейке

у

хранится

положи­

 

тельное число;

 

 

 

 

 

ж) 5 02 у б — переходить

к команде, хранящейся в б, при

 

условии, что в ячейке у хранится отрицатель­

 

ное число.

 

 

 

 

 

 

I I I .

К о м а н д а

о с т а н о в к и: 0 00 00 00.

 

Кроме перечисленных команд имеются еще и команды

так называемых логических

 

операций

и другие, на

которых

мы здесь

останавливаться

не будем. Перечисленных команд

вполне достаточно

для составления из них самых разнооб­

разных программ;

некоторые примеры будут рассмотрены

в следующем

параграфе.

Команды

е ж называются условными; они принима­

ются к исполнению лишь в том случае, если выполнено со-

51

ответствующее условие, в противном случае они пропуска­ ются управляющим устройством без выполнения.

Обычно команды выполняются машиной в том порядке в каком они записаны в ячейках памяти, причем отклонение от этого порядка может произойти только в результате ко­ манды о передаче управления (безусловной или условной, если выполнено соответствующее условие).

Работа машины распадается на такты, в течение каж­ дого из которых выполняется одна очередная команда. К на­ чалу каждого такта из одной ячейки памяти поступает в блок управления содержащееся в этой ячейке число-команда. Как только команда попадает туда, управление осуществля­ ет автоматически соответствующие соединения и тем самым обеспечивает выполнение очередной операции процесса. После этого в блок управления поступает следующая коман­ да, и машина срабатывает на следующую операцию и т. д. до результативной остановки машины.

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

Таковы основные три устройства вычислительной маши­ ны. Правда, в ней имеется еще ряд важных органов, в част­ ности, для ввода данных в машину, для вывода из нее выработанных ею результатов. Однако эти устройства не имеют значения при рассмотрении принципов работы маши­ ны и выяснении ее логических и математических возможно­ стей. Поэтому мы можем и не привлекать их в дальнейшем к рассмотрению, предполагая, что подача информации в ма­ шину и снятие результативной информации производится непосредственно на запоминающем устройстве.

§ 6. ПРОГРАММА (МАШИННЫЙ АЛГОРИТМ)

В этом параграфе мы рассмотрим примеры программ, со­ ставленных для электронной вычислительной машины стрехадресной системой команд. Эти программы получаются из рассмотренных ранее алгоритмов путем их переработки с учетом того, что их исполнителем будет теперь уже не че­ ловек, а автоматическая машина с рассматриваемой систе­ мой команд. Разбор предлагаемых примеров призван уяс-

52

нить реальный смысл употребляемого обычно выражения

«машина руководствуется в своей работе введенной в нее про­ граммой». Именно, будет выяснено, каким образом регу­ лируется тот или иной порядок поступления команд в блок управления и как удается при помощи сравнительно не­ большого числа команд обеспечить зачастую очень длинную цепь операций, необходимых для решения того или дру­ гого варианта решаемой задачи.

В дальнейшем мы полагаем, что арифметические опера­ ции сложения, вычитания, умножения и деления указыва­ ются в командах номерами I , 2, 3, 4 соответственно (см.

п5.3).

6.1.Программа для линейных уравнений. П р и м е р 1. Запрограммируем решение системы уравнений

ах - f by =

о,

dx + еу =

f.

Примем для определенности,

что коэффициенты а,Ь,

с, d, е, f помещены подряд в ячейки памяти, начиная с номе­ ра 51:

Адрес

Содержимое

Адрео

Содержимое

51

а

54

d

52

Ь

55

е

53

с

56

/

Далее для промежуточных и окончательных результатов вычислений отведем ячейки 31—50.

Как видно из формул

х =

се—fb

af — cd

,

— ,

У = -

 

ае—bd

ае—bd

 

для получения результата нужно совершить последователь­ но 6 умножений, три вычитания и два деления. В соответ­ ствии с этим предлагаемая нами программа состоит из 12

команд, записанных

в ячейках

1—12:

 

 

 

 

Адрес

Содержимое

Адрео

Содержимое

 

(команды)

 

(команды)

1

3

53

55

31

7

2

31

32

37

2

3

56

52

32

8

2

33

34

38

3

3

51

55

33

9

2

35

36

39

4

3

53

54

34

10

4

37

39

40

5

3

51

55

35

11

4

38

39

41

6

3

52

54

36

12

0

00

00

00

53

Команды поступают в блок управления и выполняются в порядке возрастания их адресов. После выполнения по­ следней команды в ячейках 31—41 приняты на хранение следующие числа:

Адрео

Содержимое

Адрео

Содержимое

31

се

37

се —/6

32

fb

38

af — cd

33

at

39

ае — bd

 

се—lb

34

cd

40

ае — bd

35

ае

 

 

af—cd

36

bd

41

ае — bd

 

 

 

представляющие собой промежуточные результаты вычис­ лений и окончательный результат (помещенный в ячейках 40,41).

6.2. Повторение.

П р и м е р

2.

Пусть требуется най­

ти решения п заданных систем уравнений:

atx+biy

= ct

. =

1 ) 2

п

dtx+

ely = ii

 

 

 

Разрешающий алгоритм представляет собой «-кратное

повторение алгоритма решения

одной системы такого вида,

и соответствующую программу для машины можно было бы легко составить по указанному выше образцу так, чтобы 6/г коэффициентов располагались в б/z ячейках памяти, и чтобы программа насчитывала lln + 1 команд.

После того, как первый цикл из 11 команд выработает решение первой системы, второй цикл из И команд выра­ ботает решение второй системы и так дальше п раз, (11/г -f- + 1)-й командой является команда остановки.

Однако такое значительное увеличение объема програм­ мы нецелесообразно и его можно избежать. Для этого за­ метим, что каждый последующий цикл из 11 команд может быть получен из предыдущего путем изменения адресов, участвующих в командах. Именно, если 6/z коэффициентов расположены по одному в ячейках, следующих подряд одна за другой, например, начиная с № 51, то в первых шести командах адреса множителей должны быть увеличены каж­ дый на 6, для того чтобы получить соответствующие коман­ ды второго цикла.

Далее, для того чтобы решение очередной системы ока­ залось записанным в двух ячейках, следующих за ячей-

54

«ами хранящими решение предыдущей системы, необходи­ мо увеличить каждый из последних адресов в десятой и один­ надцатой командах на два. Такое изменение адресов может быть осуществлено посредством так называемых команд пе­ реадресации, которых в нашем случае будет 8. Для этого поместим в ячейки 25 и 26 параметры:

№ ячейки

Содержимое

25

О 06

06

00

26

0

00

00

02,

а в ячейки 12—19 восемь команд переадресации:

№ ячейки

Со '.ержимое

№ ячейки

Содержимое

12

1

01

25

01

16

1

05

25

05

13

1

02

25

02

17

1

06

25

06

14

1

03

25

03

18

1

10

26

10

15

I

04

25

04

19

1

I !

26

11

После выполнения команд из ячеек 1 —19 в ячейках 40— 41, как и прежде, будет принято на хранение решение первой

системы уравнений, но вместе с тем в ячейках

1—6

и

10—11

уже окажутся следующие переадресованные команды:

 

№ ячейки

Содержимое

№ ячейки

Содержимое

1

3

59

61

31

5

3

57

61

35

2

3

62

58

32

6

3

58

60

36

3

3

57

62

33

10

4

37

39

42

4

3

59

60

34

11

4

38

39

43

Поэтому, если теперь вторично принять к исполнению команды из ячеек 1 —19, то в результате такого второго цик­ ла работы машины уже будет найдено решение второй си­ стемы уравнений, которое будет направлено на хранение в ячейки 42—43; кроме того, будет осуществлена очередная переадресация команд 1—6 и 10—11, создающая условия для аналогичного третьего цикла работы и т. д.

Как же обеспечить подобное циклическое выполнение 19 команд столько раз, сколько дано систем уравнений с тем, однако, чтобы после того, как будут найдены решения всех заданных систем, машина остановилась? Для этого поме­ стим еще в ячейки 27 и 28 параметры 0 00 00 01 и и (п равно числу всех заданных систем), а к рассмотренным ранее 19 командам присоединим следующие три:

№ ячейки

Содержимое

20

2

28

27

28

21

5

01

28

01

22

0

00

00

00

55

Команда 20 уменьшает на единицу содержимое

ячейки

28 после каждого выполнения цикла команд 1 —19.

Коман­

да 21 — это условная передача управления команде 1: она выполняется до тех пор, пока в ячейке 28 все еще хранится

положительное

число, и тем

самым обеспечивает

переход

к следующему

циклу команд 1 —19 для решения следующей

системы уравнений. Если же в ячейке 28 хранится 0,

а это

случится в точности после п

циклов 1—19,

то

передача

управления не осуществляется, а выполняется

следующая

команда 22, которая останавливает машину.

 

 

 

 

Из всего сказанного ясно, что для поставленной

зада­

чи о решении п систем уравнений

пригодна программа из

указанных выше команд 1—22,

G

учетом параметров, вводи­

мых в ячейки 25—28. Структуру

этой программы

в целом

удобно изобразить в виде следующей схемы:

 

 

 

 

К о м а н д ы

 

П а р а м е т р ы

 

 

 

25

0

06

06

00

 

 

 

26

0

00

00

02

 

 

 

27

0

00

00

01

 

 

 

28

 

 

п

 

Арифметических операций

Переадресааии

Счет циклов

Условия передачи управления

Остановка

56

6.3. Программирование алгоритма Евклида. П р и м е р 3.

Рассмотрим

теперь

программу

для

 

нахождения

общего

наибольшего

делителя

двух

чисел а, Ь. Условимся отвес­

ти ячейки

12 и 13 для

исходных данных a, b соответственно,

а ячейки 14 и 15 для промежуточных

вычислений с тем, что­

бы окончательный

результат после остановки машины

ока­

зался в ячейке 15. Предлагаемая

ниже программа

состав­

лена в соответствии

с

приведенной

в

§ 1 формулировкой

алгоритма

Евклида.

 

 

 

 

 

 

 

 

 

JVs ячейки

 

Содержимое

 

 

 

Пояснение

 

 

 

 

 

(команда)

 

 

 

 

 

 

 

 

01

 

1

12

05

15

 

Пересылка числа из 12 в 15

 

02

 

1

12

13

14

 

Разность чисел из 12 и 13 отправ­

 

 

 

 

 

 

 

ляется

в

14

 

 

 

03

 

5 02

14

06

 

Переход

к

команде 06

при

усло­

 

 

 

 

 

 

 

вии, что в 14 отрицательное

число

04

 

5 01

14

09

 

Переход к команде 09 при

условии,

 

 

 

 

 

 

 

что в

14

положительное

число

05

 

0 00

00

00

 

Остановка

 

 

 

 

06

 

I

13

05

12

 

Пересылка

числа из 13 в 12

 

07

 

1

15

05

13

 

Пересылка

числа из 15 в 13

 

08

 

5 00

00

01

 

Безусловный переход к

команде 01

09

 

1

13

05

12

 

Пересылка

числа из 13

в

12

 

ЮI 14 05 13 Пересылка числа из 14 в 13

П5 00 00 01 Безусловным переход к команде 01

После первых двух тактов в ячейках 12—15 возникают следующие числа:

№ ячейки

Содержимое

12

а

13

Ь

14

а—Ь

15

а

Если а — b = 0 (т. е. а — Ь), то команды 03 и 04 условной передачи управления пропускаются и выполня­ ется команда 05, которая останавливает машину. К этому моменту в ячейке 15, действительно, уже содержится нуж­ ный результат (сравнить с указанием 3 п. 1.1).

Если а — b <. 0 (т. е.

а < Ь), то команда

03 передает

управление команде 06,

которая

вместе со следующей

за

ней командой 07 осуществляет

перестановку

местами

чи­

сел a, b в ячейках 12 и 13 (сравнить с указанием 4). Потом команда 08 обеспечивает безусловный переход к 01 и тем самым начинается второй цикл работы машины.

67

Если же а b > 0, т. е. а > Ь, то команда 03 пропуска­ ется, а команда 04 передает управление команде 09, кото­ рая вместе со следующей за ней командой 10 пересылает в ячейки 12 и 13 прежнее вычитаемое и остаток, т. е. 6 и а —

— b соответственно (сравните с указанием 4). Лотом команда 11 обеспечивает безусловный переход к команде 01, и тем самым начинается второй цикл работы машины.

Последовательность циклов работы машины будет по­

рождать в

ячейках

12 и

13 последовательность пар чисел:

(alt

bt),

(а,

Ьг),

 

(at, bt), (ai+1,

bi+1),

а

в ячейке 15

последовательность

чисел

 

 

аи а2,

Оз)

•••> аи ai+i> •••

 

до тех пор, пока

появится первая пара равных чисел а^, bk.

Тогда команда

05 остановит

машину, а в ячейке 15 будет

помещен искомый результат

ah.

 

6.4, Функционирование вычислительной машины. В

разобранных примерах

уже с достаточной

ясностью отра­

жены следующие два основных принципа работы автома­ тической вычислительной машины:

1. Обычно команды программы выполняются машиной

втом порядке, в каком они записаны в ячейках памяти. Однако машина способна автоматически изменить ход

вычислительного процесса в зависимости от получающих­ ся текущих результатов вычислений. Это достигается пу­ тем введения условных команд.

2. При сравнительно небольшом объеме программы ма­ шина способна производить довольно длинные цепи вычис­ лений благодаря тому, что она может сама преобразовывать и многократно повторять всю программу или отдельные части ее. Такая возможность обеспечивается тем, что про­ грамма, закодированная числами, хранится в том же запоми­ нающем устройстве, где хранятся и обычные числа, а сле­ довательно, машина может производить операции и над условными числами, являющимися кодами команд. Например, машина может осуществить переадресацию не­ которых команд.

Эти же принципы характеризуют работу машины и при решении таких задач, которые не носят явного вычислитель­ ного (арифметического) характера. Например, можно запро­ граммировать алгоритм Тезея (поиск в лабиринте) или из­ вестные алгоритмы для проблемы слов в некоторых ассоциа­ тивных исчислениях и осуществлять соответствующие про-

58

цессы в машине. Правда, для этого необходимо, чтобы маши­ на могла производить некоторые дополнительные элемен­ тарные операции кроме арифметических операций и пере­ дачи управления, которые участвовали в рассмотренных вы­ ше арифметических задачах. В действующих электронных машинах эти немногие виды простых операций выполнимы (предусмотрены соответствующие команды). Поэтому доста­ точно только менять программу для того, чтобы та же самая машина переключалась на нужный вид работы.

6.5. Другие применения вычислительных машин. Как уже отмечалось во введении, не только в математике, по и в са­ мых разнообразных других областях человеческой деятель­ ности встречаются процессы, протекающие по строго опре­ деленному формальному предписанию (т. е. алгоритму), которые также можно запрограммировать. Это относится, в частности, к задаче перевода с одного языка на другой. При достаточной формальной обработке и классификации основных грамматических и стилистических правил, а также приемов пользования словарем можно создать вполне удовлетворительный алгоритм для перевода, скажем, на­ учного или делового текста (для некоторых языков такие алгоритмы уже созданы).

Обсудим кратко возможность, успешного ведения игры с помощью машин. Во-первых, в принципе можно поручить машине отыскание наилучшей стратегии в соответствии с алгоритмом п. 2.4. Практически это осуществимо лишь для игр с не очень большим деревом, например, типа игр со спичками при сравнительно небольшом их числе. Во-вторых, можно запрограммировать применительно к данной инди­ видуальной игре наилучшую стратегию, которая предпола­ гается уже известной. В случае же сложных игр,.для кото­ рых стратегии еще не установлены или установлены чрез­

мерно громоздкие

стратегии,

приходится

ограничиваться

методами, основанными лишь

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

и составляющими

так называемую тактику

игры. Напри­

мер, в шахматной игре можно ввести систему оценок для фигур, при которой король оценивался очень большим чис­ лом очков, ферзь меньшим, ладья еще меньшим и т. д., при­ чем пешка имеет наименьшую стоимость. Кроме того, опре­ деленным образом оцениваются позиционные преимущества (расположение фигур на доске ближе к центру, подвижность и т. д.). Разность между суммой очков для белых фигур и суммой очков для черных фигур характеризует в смысле дан­ ной тактики материальный и позиционный перевес белых

59

Соседние файлы в папке книги из ГПНТБ