Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
§ 6. ПРОГРАММА (машинный алгоритм)В этом параграфе мы рассмотрим примеры программ, составленных для электронной вычислительной машины с трехадресной системой команд. Эти программы получаются из рассмотренных ранее алгоритмов путем их переработки с учетом того, что их исполнителем будет теперь уже не человек, а автоматическая машина с рассматриваемой системой команд. Разбор предлагаемых примеров призван уяснить реальный смысл употребляемого обычно выражения «машина руководствуется в своей работе введенной в нее программой». Именно, будет выяснено, каким образом регулируется тот или другой порядок поступления команд в блок управления и как удается при помощи сравнительно небольшого числа команд обеспечить зачастую очень длинную цепь операций, необходимых для решения того или другого варианта решаемой задачи. В дальнейшем мы полагаем, что арифметические операции сложения, вычитания, умножения и деления указываются в командах номерами 1, 2, 3, 4 соответственно (см. § 5). Пример 1. Запрограммируем решение системы уравнений
Примем для определенности, что коэффициенты
Далее, для промежуточных и окончательных результатов вычислений отведем ячейки 31—50. Как видно из формул
для получения результата нужно совершить последовательно 6 умножений, три вычитания и два деления. В соответствии с этим предлагаемая нами программа состоит из 12 команд, записанных в ячейках 1—12:
Команды поступают в блок управления и выполняются в порядке возрастания их адресов. После выполнения последней команды в ячейки 31—41 приняты на хранение следующие числа:
представляющие собой промежуточные результаты вычислений и окончательный результат (помещенный в ячейках 40, 41). Пример 2. Пусть требуется найти решения
Разрешающий алгоритм представляет собою После того, как первый цикл из 11 команд выработает решение первой системы, второй цикл из 11 команд выработает решение второй системы и так дальше Однако такое значительное увеличение объема программы нецелесообразно и его можно избежать. Для этого заметим, что каждый последующий цикл из 11 команд может быть получен из предыдущего путем изменения адресов, участвующих в командах. Именно, если Далее, для того чтобы решение очередной системы оказалось записанным в двух ячейках, следующих за ячейками, хранящими решение предыдущей системы, необходимо увеличить каждый из последних адресов в десятой и одиннадцатой командах на два. Такое изменение адресов может быть осуществлено посредством так называемых команд переадресации, которых в нашем случае будет 8. Для этого поместим в ячейки 25 и 26 параметры:
а в ячейки 12—18 восемь команд переадресации:
После выполнения команд из ячеек 1—19 в ячейках 40—41, как и прежде, будет принято на хранение решение первой системы уравнений, но вместе с тем в ячейках 1—6 и 10—11 уже окажутся следующие переадресованные команды:
Поэтому, если теперь вторично принять к исполнению команды из ячеек 1 —19, то в результате такого второго цикла работы машины уже будет найдено решение второй системы уравнений, которое будет направлено на хранение в ячейки 42—43; кроме того, будет осуществлена очередная переадресация команд 1—6 и 10—11, создающая условия для аналогичного третьего цикла работы и т. д. Как же обеспечить подобное циклическое выполнение 19 команд столько раз, сколько дано систем уравнений с тем, однако, чтобы после того, как будут найдены решения всех заданных систем, машина остановилась? Для этого поместим еще в ячейки 27 и 28 параметры
Команда 20 уменьшает на единицу содержимое ячейки 28 после каждого выполнения цикла команд 1 —19. Команда 21 — это условная передача управления команде 1: она выполняется до тех пор, пока в ячейке 28 все еще хранится положительное число, и тем самым обеспечивает переход к следующему циклу команд 1 —19 для решения следующей системы уравнений. Если же в ячейке 28 хранится 0, а это случится в точности после осушествлястся, а выполняется следующая команда 22, которая останавливает машину. Из всего сказанного ясно, что для поставленной задачи о решении (см. скан) Пример 3. Рассмотрим теперь программу для нахождения общего наибольшего делителя двух чисел (см. скан) После первых двух тактов в ячейках 12—15 возникают следующие числа:
Если Если Если же Последовательность циклов работы машины будет порождать в ячейках 12 и 13 последовательность пар чисел:
а в ячейке 15 последовательность чисел
до тех пор, пока появится первая пара равных чисел Уже в разобранных примерах с достаточной ясностью отражены следующие два основных принципа работы автоматической вычислительной машины: 1. Обычно команды программы выполняются машиной в том порядке, в каком они записаны в ячейках памяти. Однако машина способна автоматически изменить ход вычислительного процесса в зависимости от получающихся текущих результатов вычислений. Это достигается путем введения условных команд. 2. При сравнительно небольшом объеме программы машина способна производить довольно длинные цепи вычислений благодаря тому, что она может сама преобразовывать и многократно повторять всю программу или отдельные части ее. Такая возможность обеспечивается тем, что программа, закодированная числами, хранится в том же запоминающем устройстве, где хранятся и обычные числа, а следовательно, машина может производить операции и над условными числами, являющимися кодами команд. Так, например, машина может осуществить переадресацию некоторых команд. Эти же принципы характеризуют работу машины и при решении таких задач, которые не носят явного вычислительного (арифметического) характера. Например, можно запрограммировать алгоритм Тезея (поиск в лабиринте) или известные алгоритмы для проблемы слов в некоторых ассоциативных исчислениях и осуществлять соответствующие процессы в машине. Правда, для этого необходимо, чтобы машина могла производить некоторые дополнительные элементарные операции, кроме арифметических операций, и передачи управления, которые участвовали в рассмотренных выше арифметических задачах. В действующих электронных машинах эти немногие виды простых операций выполнимы (предусмотрены соответствующие команды). Поэтому достаточно только менять программу для того, чтобы та же самая машина переключалась на нужный вид работы. Однако не только в математике, но и в самых разнообразных других областях человеческой деятельности встречаются процессы, протекающие по строго определенному формальному предписанию (т. е. алгоритму), которые также можно запрограммировать. Так, например, в бухгалтерском и плановом деле анализ поступающих данных, их обработка и составление материальных балансов для получения оптимальных результатов складываются из длинной цепи элементарных операций нескольких типов, которые осуществляются в строгом соответствии со специальными инструкциями и схемами. В других случаях хотя и отсутствует пока еще четкий, завершенный алгоритм, однако его можно было бы создать и довести до формального совершенства. Это относится, в частности, к задаче перевода с одного языка на другой. При достаточной формальной обработке и классификации основных грамматических и стилистических правил, а также приемов пользования словарем можно создать вполне удовлетворительный алгоритм для перевода, скажем, научного или делового текста (для некоторых языков такие алгоритмы уже созданы). Обсудим кратко возможность успешного ведения игры с помощью машин. Во-первых, в принципе можно поручить машине отыскание наилучшей стратегии в соответствии с алгоритмом § 2. Практически это осуществимо лишь для игр с не очень большим деревом, например, типа игр со спичками при сравнительно небольшом их числе. Во-вторых, можно запрограммировать применительно к данной индивидуальной игре наилучшую стратегию, которая предполагается уже известной. В случае же сложных игр, для которых стратегии еще не установлены, или же установлены чрезмерно громоздкие стратегии, приходится ограничиваться методами, основанными лишь на частичном анализе игры и составляющими так называемую тактику игры. Так, например, в шахматной игре можно ввести систему оценок для фигур, при которой король оценивается очень большим числом очков, ферзь меньшим, ладья еще меньшим и т. д., причем пешка имеет наименьшую стоимость. Кроме того, определенным образом оцениваются позиционные преимущества (расположение фигур на доске ближе к центру, подвижность и т. д.). Разность между суммой очков для белых фигур и суммой очков для черных фигур характеризует в смысле данной тактики материальный и позиционный перевес белых над черными на данной стадии игры. Самая простая тактика игры заключается в переборе всех ходов, возможных при данной позиции, и в выборе среди них того, который приводит к наибольшему перевесу с точки зрения установленной системы оценок. Лучше, но сложнеебудет тактика, перебирающая все возможные комбинации из трех или, скажем, пяти ближайших ходов, и на основе этого делающая выбор оптимального хода. Из всего сказанного становится ясно, насколько многообразны те виды умственного труда, которые совершаются или могут совершаться в соответствии с определенными алгоритмами. Во всех таких случаях можно в принципе запрограммировать эти алгоритмы и возложить выполнение соответствующей работы на машину с автоматическим управлением. В частности, уже теперь составлены программы для перевода с одного языка на другой и для игры в шахматы, которые успешно выполняются современными машинами.
|
1 |
Оглавление
|