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

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

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

гласованное выполнение многих актов «повсеместно» в ма­ шине. Обстоятельства такого или подобного им рода могут привести к тому, что в зависимости от природы решаемых типов задач предпочтительны машины (и алгоритмы) раз­ ных типов, даже если все они равносильны, т. е. пригодны для получения одних и тех же окончательных результатов. Иначе говоря, равносильные алгоритмы или машины могут оказаться неравноценными в той или иной ситуации. Та­ ким образом, в рамках второго вопроса, сформулированного столь обще, возникают многие более специальные вопросы, связанные с классификацией вычислительных машин и оцен­ кой качества алгоритмов, реализуемых ими. Рассмотрению этих вопросов и посвящены § 17—23 книги.

Сделаем еще два замечания по поводу принятой нами манеры изложения.

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

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

Ч А С Т Ь I А л г о р и т м ы

§1. ЧИСЛЕННЫЕ АЛГОРИТМЫ

1.1.Арифметические действия; алгоритм Евклида. Как уже говорилось во введении, простейшими алгоритмами являются правила, по которым выполняются арифметиче­ ские действия по десятичной системе счисления. Например,

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

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

заметно

в правиле извлечения

корня).

В качестве дальнейшего примера рассмотрим алгоритм

Евклида,

решающий все задачи

следующего типа.

Для данных двух натуральных

чисел а, Ъ найти их общий

наибольший

делитель.

 

Очевидно, различных задач такого типа существует

столько, сколько различных пар чисел а, Ъ.

Как известно, решение любой из этих задач можно по­

лучить

путем

построения убывающей последовательности

чисел, из которых первое является большим

из двух дан­

ных, второе — меньшим,

третье

получается

как

остаток

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

второе,

четвертое — как

остаток

11

от деления второго на третье и так далее, пока не будет совершено деление без остатка. Делитель в это№ последнем делении и будет искомым результатом.

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

можно

было бы

задать

в виде следующей

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

ности

указаний.

 

 

 

 

два числа: а и

Ь. Пе­

У к а з а н и е

1.

Обозревайте

реходите к следующему

указанию.

 

 

 

У к а з а н и е .

 

2.

Сравните

обозреваемые

числа

(а = Ь, или а <

Ь, или

а >

Ь)\ переходите

к следующему

указанию.

 

 

 

 

 

 

 

У к а з а н и е

3.

Если

обозреваемые

числа

равны,

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

У к а з а н и е 4. Если первое обозреваемое число меньше второго обозреваемого числа, переставьте их мес­ тами и продолжайте обозревать их. Переходите к следую­

щему

указанию.

 

 

 

 

У к а з а н и е

5.

Вычитайте

второе

из обозреваемых

чисел

из первого

и

обозревайте

два числа: вычитаемое

и остаток. Переходите к указанию 2.

 

Итак, после того, как все 5 указаний

выполнены, надо

опять возвратиться ко второму, потом к третьему, четвер­ тому, пятому и опять ко второму, третьему и т. д., пока не получатся равные числа, т. е. пока не окажется выпол­ ненным условие, содержащееся в третьем указании; тогда процесс прекращается.

Правда, в математике алгоритмы не всегда формули­ руются в таком педантично формальном виде; однако воз­ можность такого формального задания любого из известных алгоритмов, по-видимому, ни у кого сомнения не вызывает.

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

12

1.2. Численные алгоритмы. Алгоритмы, в которых основную роль играют четыре арифметических действия, принято называть численными алгоритмами*'1. Они играют важную роль в самых разнообразных областях как эле­ ментарной, так и высшей математики и задаются обычно

в виде словесных предписаний

или же разного рода формул

и схем. Например, алгоритм

решения системы двух урав­

нений

первой степени с двумя

неизвестными:

 

aLx

+ byij = съ

 

а2х + Ь2у = са

дается

формулами

 

 

 

а^Ь}—аг

Ь\

aib2Q-ibi

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

В частности, так обстоит дело и в случае алгоритма Евклида, где число вычитаний, могущих понадобиться, за­ висит от выбора той или иной пары чисел а, Ь.

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

Если математик не обладает алгоритмом для решения всех задач данного типа, то в каждом отдельном случае при-

*) Следует иметь в виду, что этот термин отчетливого смысла не имеет.

13

ходнтся придумывать специальную процедуру решения, непригодную уже для большинства случаев.

1.3. Диофантовы уравнения. Приведем пример такого класса однотипных задач, для решения которых математи­ ка не располагает алгоритмом.

Рассмотрим всевозможные диофантовы уравнения, т. е. уравнения вида Р = 0 , где Р является многочленом с цело­ численными коэффициентами. Такими будут, например, уравнения

хп~ + у* -

г2 =

О,

6.v18 х +

3 =

О,

из которых первое — с тремя

неизвестными, в второе —

с одним неизвестным (вообще же рассматриваются уравне­ ния с любым числом неизвестных). Уравнение может иметь целочисленное решение, а может и не иметь такового. Так, первое из приведенных уравнений имеет целочисленное ре­ шение л; = 3, г/ = 4, 2 = 5; второе же уравнение не име­ ет целочисленного решения, ибо для любого целого х легко устанавливается неравенство 6х1 8 > х — 3.

В 1901 году на международном математическом конгрес­ се в Париже знаменитый немецкий математик Давид Гиль­ берт огласил список 20 трудных проблем, на важность реше­ ния которых он обращал внимание математической общест­ венности. Среди них была и следующая проблема (10-я проб­

лема Гильберта): требуется выработать алгоритм,

позво­

ляющий для

любого диофантова

уравнения

выяснить,

имеет

ли

оно целочисленное

решение.

 

 

 

 

 

 

 

 

Для частного случая диофантова

уравнения с одним

не­

известным

такой

 

алгоритм уже

давно известен. Именно,

установлено, что

если уравнение

 

 

 

 

 

 

 

 

 

апхп +

an-i

хп~1 +

... +

<2i х + а0

= 0

 

 

с

целочисленными

коэффициентами

имеет

целый

корень

х0,

то обязательно

а0

делится

на х0.

В соответствии с этим

можно предложить такой алгоритм:

 

 

 

 

 

 

1) найти все делители числа а0

(их конечное число);

ле­

 

2)

подставлять

поочередно

найденные

 

делители

в

вую

часть

уравнения и вычислять численное значение

ее;

 

3)

если

при

подстановке

некоторого

делителя

левая

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

14

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

Уже в рассмотренных до сих пор примерах довольно от­ четливо выступают следующие черты численных алгорит­ мов, присущие и любому другому алгоритму:

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

М а с с о в о с т ь

а л г о р и т м а .

Алгоритм — это

е д и н о е

предписание,

определяющее

вычислительный

процесс,

который может

начинаться от

р а з л и ч н ы х

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

§ 2. АЛГОРИТМЫ ИГР

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

подобных л о г и ч е с к и

х задач

от обычных м а т е м а ­

т и ч е с к и х задач. Не

вдаваясь

в дальнейшее обсужде­

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

15

однотипных задач; однако в рассматриваемых случаях эти алгоритмы уже не являются численными.

2.1. Одиннадцать предметов. В книге Б. А. Кордемского «Математическая смекалка» разбирается ряд игр, успеш­ ное проведение которых зависит не от случайного стече­

ния благоприятных

обстоятельств, а от смекалки

игроков

и предварительного

расчета. Следуя этой книге,

начнем

с рассмотрения игры «Одиннадцать предметов».

 

На столе — одиннадцать предметов, например

спичек.

Первый играющий берет себе из этого количества по своему усмотрению 1, 2 или 3 спички. Затем второй играющий бе­ рет себе из числа оставшихся спичек также по своему усмо­

трению I , 2 или 3. Потом

опять

берет первый и т. д. Так

поочередно оба играющих

берут

каждый раз не более чем

потри спички. П р о и г р ы в а е т

тот, которому приходит­

ся взять последнюю спичку. Может ли игрок А, начинаю­ щий игру, поставить своего партнера В перед необходимо­ стью взять последнюю спичку?

Анализ игры показывает, что игрок А может вынудить игрока В взять последним спичку, если он будет руковод­ ствоваться следующей системой указаний:

1.П е р в ы й х о д . Л берет 2 спички.

2.О ч е р е д н о й х о д . Если В при своем очередном ходе взял / спичек (/ <[ 3), причем еще остались неотобран­ ные спички, то А берет 4 — / спичек.

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

Такая полная система

указаний в теории игр называет­

ся стратегией.

Стратегия

игрока А

называется выигрыш­

ной, если любая партия,

сыгранная

в соответствии с нею,

заканчивается для А выигрышем.

 

Предложенная стратегия для А действительно являет­

ся выигрышной,

ибо она обеспечивает А выигрыш незави­

симо от того, как будет играть В. Проиллюстрируем это на примере следующих двух партий:

А В А В А В

А В А В А В

2

2

2

1

3

1

2

3

1

1

3

1

Вместе с тем можно

показать, что если

первым

ходом

А берет одну или три спички, то В может вести игру так, чтобы наверняка ее выиграть.

16

2.2. Побеждает чет. Рассмотрим теперь игру «Побежда­ ет чет» из книги Б. А. Кордемского.

Из 27 спичек двое играющих поочередно берут не менее одной и не более четырех. Выигрывает тот, у кого по окон­ чании игры окажется четное число спичек.

Оказывается,

что для игрока

А, делающего первый ход

в игре, существует выигрышная

стратегия:

1. П е р в ы й

х о д . Л

берет 2 спички.

2. О ч е р е д н о й х о д А, е с л и 5 и м е е т ч е т ­

н о е

ч и с л о с п и ч е к .

Оставить противнику число спи­

чек,

которое на

1 больше

кратного шести (19, 13, 7). Если

это невозможно, то при наличии 5 или 3 еще неотобранных спичек взять 4 или 2 соответственно.

3. О ч е р е д н о й - х о д А, е с л и В и м е е т не ­

ч е т н о е ч и с л о с п и ч е к . Оставить противнику

ко­

личество спичек, которое на 1 меньше кратного шести

(23,

17, 11,5). Если это невозможно, то оставить число спичек кратное шести; если и это невозможно, то при наличии не­

отобранных

еще

3 спичек или 1 следует брать 3 или 1.

Приведем

пример

партии, разыгранной в соответствии

с этой стратегией игрока At

 

 

АВАВАВАВАВАВ

 

 

2 1

1 3 1 3 4 1 4 2 4

1.

Как и в случае предыдущей игры, мы опускаем здесь

изложение

расчетов,

позволивших

обнаружить сущест­

вование выигрышной

стратегии для игрока А и описать ее.

Подобные

расчеты применительно к

рассмотренным двум

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

2.3. Дерево игры. Наша ближайшая цель заключается в описании алгоритма, применимого к любой игре из неко­ торого весьма обширного класса игр, который устанавли­ вает для каждого игрока «наилучшую» из возможных для него стратегий. Чтобы избежать чрезмерной формализа­ ции, вместо точных определений употребляемых понятий будем иногда ограничиваться лишь разъяснением их со­

держания

с иллюстрацией

на примерах*'.

*) См.

В е н т ц е л ь

Е. С.

Элементы теории игр. М., Физмат-

гиз, 1959 и

О у э н Г.

Теория

игр. М., «Мир», 1971.

17

Отметим сначала следующие особенности, присущие

двум

изложенным

выше

играм:

 

 

 

 

 

 

1. В игре участвуют два игрока, ходы которых строго

чередуются.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.

Для

каждой

партии

возможен

лишь

один

из

двух

исходов:

 

 

 

 

 

А,

 

 

 

 

 

 

 

 

а)

выигрыш

игрока

начинающего

игру (обозначае­

мый в дальнейшем знаком «+»);

 

 

 

 

 

б) выигрыш

игрока

В

(обозначение

«—»).

 

 

 

1^.0.

 

]6

-Q

 

 

 

Рйнгб

 

 

5\Уб

\6

Те

Is

 

 

 

Pans 5

 

 

\ —

4—t-

-(+)-

-©• -©- -г- -©- •©-

 

 

 

А

15

s\p

5\Тб 6\ S\j£

Щб\б

 

 

 

 

 

 

з\

 

Л

 

Д А

 

 

s\/e

 

 

 

 

 

 

 

X.

 

 

у'-

 

 

-

 

Ранг

3

 

 

 

 

 

 

 

 

^

ос

 

 

 

 

Ранг

f

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.

1.

 

 

 

 

 

 

3.

Каждый

ход

представляет

собой в ы б о р

и г р о -

к о м

одного

из

допустимых

множества

вариантов

без

всякого участия

какого-либо механизма случайного выбора

(например,

бросания игральной

кости).

 

 

 

 

4. При каждом ходе игрок знает выборы и исходы всех

предыдущих

ходов в данной партии.

 

 

 

 

 

Ниже, без особых оговорок, под игрой подразумевается такая игра, которая обладает перечисленными свойствами 1—4.

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

На рис. 1 для определенности изображено дерево сле­ дующей игры (видоизменение игры «Одиннадцать предме­ тов»),

18

Двое берут поочередно спички со стола. Первоначально на столе лежит 6 спичек, а за один раз разрешается брать не более двух. Проигрывает тот, кто берет последнюю спичку.

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

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

На рис. 1 для каждой ветки указано общее число спичек, изъятых на данной стадии разыгрывания партии. Заштрихо­

ванная ломаная изображает

партию

А

В

А

В

2

1

2

1,

в которой А выигрывает.

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

в

данной игре. Вершины нечетного ранга изображают по­

зиции, в

которых ход делает игрок Л,

начинающий игру,

а

вершины четного ранга — позиции,

где очередь хода за

игроком

В.

 

 

До сих пор дерево рассматривалось лишь как некая гра­

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

19

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