Файл: Трахтенброт, Б. А. Алгоритмы и вычислительные автоматы.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 19.10.2024
Просмотров: 104
Скачиваний: 0
уже были предвосхищены математиками, точнее, математи ческими логиками. В 1936 г. А. Тьюринг (Англия) и одно временно с ним, хотя и не в столь явной форме, Э. Пост (США) сформулировали понятие абстрактной вычислитель ной машины. Машина Тьюринга не стала реально сущест вующим, кем-то сделанным устройством, хотя в принципе ее и можно было изготовить, например, как механическое устройство; технический прогресс привел к другому пути воплощения принципов конструирования больших (так на зываемых универсальных) вычислительных машин. Тем не менее умозрительные конструкции Тьюринга — Поста ос таются ярчайшими образцами научного предвидения; ведь именно на абстрактных математических моделях было стро го доказано существование универсальных вычислительных машин (см. § 14). Более того, и по сей день в теории алгоритмов машина Тьюринга постоянно используется в качестве основной модели для выяснения сущности таких понятий, как «вычислительный процесс», «алгоритм», а так же для выяснения связи между алгоритмами и вычисли тельными машинами*'.
Вторая часть данной книги (§ 7—13) посвящена деталь ному изучению тыорпнговых машин и реализации алго ритмов в них. Значительное место занимают здесь методы тьюрингова программирования, полезные также и для по нимания проблем программирования для реальных вычис лительных машин, включая проблему автоматизации прог раммирования (см. § 10, «Программирующие алгоритмы»). Хотя возможны и другие абстрактные модели вычисли тельных машин, отличные от машины Тьюринга, тем не ме нее все они равносильны друг другу (а значит, и тыоринговой модели) в следующем смысле: класс проблем, которые можно решать на моделях одного типа, в точности совпадает с классом проблем, которые можно решать на моделях
*) |
Конструкции |
современных |
автоматических |
вычислительных |
|
машин |
разительно |
отличаются от |
конструкции машин |
Тьюринга |
|
и Поста и имеют очень много общего с конструкцией |
Бэббиджа и дру |
||||
гих изобретателей. Поэтому А.Тьюринга и Э. Поста |
нельзя |
относить |
к творцам или пионерам в области современной вычислительной тех ники; они, скорее, осуществили философское осмысливание возмож ностей машины, доказали существование универсальных машин, и это в то время, когда самих машин еще не было. В дело разработки современных вычислительных машин большой вклад внес один из крупнейших математиков X X в. Д ж . фон Нейман, принимавший не посредственное участие в создании первых автоматических вычисли тельных машин.
8
другого типа, в частности, на машинах Тьюринга. Именно благодаря этому в математических терминах приобретают свой точный смысл и решаются два принципиальных воп роса, которые кратко можно сформулировать так: что мо гут делать машины? Как они это делают?
Третья часть книги (§ 14—23) содержит.материал, из которого можно почерпнуть определенные ответы на эти вопросы.
Первый вопрос направлен на выяснение того, какие ви ды умственной работы могут выполнять автоматические вычислительные машины. Его актуальность и острота свя заны, в частности, с тем, что достигнутые успехи могут породить и действительно порождают фантастические прог нозы и несбыточные иллюзии по поводу всемогущества ма шин (гигантских электронных мозгов!). Анализ процессов, протекающих в соответствии с заданными алгоритмами, н в том числе процессов, протекающих в автоматических вычислительных машинах, привел к замечательным отк рытиям. Было строго доказано существование таких типов задач, для которых невозможен единый эффективный ме тод — алгоритм, — решающий все задачи данного типа; в этом смысле невозможно и машинное решение задач такого типа. С тех пор одной из главных целей теории алгоритмов (и математики в целом) является исследование отдельных типов задач, возникающих в различных областях матема тики с целью выяснить, возможен ли для них разрешающий алгоритм. В этом направлении имеются очень крупные достижения, способствующие лучшему пониманию того, что могут делать машины и чего они не могут делать. К ним относятся, в частности, сравнительно просто формули руемые результаты А. А. Маркова и П. С. Новикова, которые излагаются в § 4, 15, 16.
Обратимся теперь ко второму вопросу. Даже в том слу чае, когда различные машины делают или способны делать одно и то же, это вовсе не значит, что они это делают оди наковым способом. Это замечание относится как к различ ным машинам одного и того же типа (например, к различным машинам Тьюринга), так и к представителям разных типов машин. Например, процесс, протекающий в машинах Тью ринга, складывается из последовательно реализуемых ак тов, каждый из которых затрагивает лишь небольшой уча
сток машины. Для |
машин другого типа, так называемых |
|
автоматов Неймана |
(см. |
§ 21), характерна высокая сте |
пень распараллеливания |
процесса, т. е. одновременное и со- |
9
гласованное выполнение многих актов «повсеместно» в ма шине. Обстоятельства такого или подобного им рода могут привести к тому, что в зависимости от природы решаемых типов задач предпочтительны машины (и алгоритмы) раз ных типов, даже если все они равносильны, т. е. пригодны для получения одних и тех же окончательных результатов. Иначе говоря, равносильные алгоритмы или машины могут оказаться неравноценными в той или иной ситуации. Та ким образом, в рамках второго вопроса, сформулированного столь обще, возникают многие более специальные вопросы, связанные с классификацией вычислительных машин и оцен кой качества алгоритмов, реализуемых ими. Рассмотрению этих вопросов и посвящены § 17—23 книги.
Сделаем еще два замечания по поводу принятой нами манеры изложения.
Во-первых, громоздкость многих доказательств не поз воляет давать их полное изложение в этой небольшой книге. Поэтому имеются некоторые отступления от строгости и пол ноты изложения. Нам кажется, однако, что это не мешает уяснению существа дела, а может быть, даже благоприят ствует этому. Для общности картины кое-что дано в обзор ном порядке (§7 и 15).
Во-вторых, при описании устройства машин мы не останавливаемся на технических деталях, а уделяем основ ное внимание принципам функционирования и взаимодей ствия отдельных их частей. Хотя при таком подходе мы и от влекаемся от ряда важных аспектов, касающихся физиче ской и технической стороны дела, тем не менее, это не яв ляется помехой для достижения главной цели книги — раскрытия математических и логических возможностей ма шин.
Ч А С Т Ь I А л г о р и т м ы
§1. ЧИСЛЕННЫЕ АЛГОРИТМЫ
1.1.Арифметические действия; алгоритм Евклида. Как уже говорилось во введении, простейшими алгоритмами являются правила, по которым выполняются арифметиче ские действия по десятичной системе счисления. Например,
действие сложения двух многозначных чисел разлагается на цепочку элементарных операций, при осуществлении каждой из которых вычислитель обозревает лишь 2 соот ветствующие цифры слагаемых (одна из которых может ока заться снабженной пометкой, напоминающей о переносе единицы). Эти операции бывают двух типов: 1) запись соответствующей цифры суммы, 2) пометка о переносе над соседней слева цифрой; при этом правило предписывает надлежащий порядок выполнения этих операций (справа налево). Формальный характер этих элементарных опера ций заключается в том, что они могут быть выполнены ав томатически по раз навсегда заданной таблице сложения цифр, при полном отвлечении от их содержательного смысла.
Аналогично обстоит дело«с остальными тремя арифме тическими действиями, а также с действием извлечения кор ня квадратного и другими. Формальный характер соответ ствующих предписаний (алгоритмов), по-видимому, не вы зывает никаких сомнений (для школьников это особенно
заметно |
в правиле извлечения |
корня). |
|
В качестве дальнейшего примера рассмотрим алгоритм |
|||
Евклида, |
решающий все задачи |
следующего типа. |
|
Для данных двух натуральных |
чисел а, Ъ найти их общий |
||
наибольший |
делитель. |
|
|
Очевидно, различных задач такого типа существует |
|||
столько, сколько различных пар чисел а, Ъ. |
|||
Как известно, решение любой из этих задач можно по |
|||
лучить |
путем |
построения убывающей последовательности |
чисел, из которых первое является большим |
из двух дан |
|||
ных, второе — меньшим, |
третье |
получается |
как |
остаток |
от деления первого на |
второе, |
четвертое — как |
остаток |
11
от деления второго на третье и так далее, пока не будет совершено деление без остатка. Делитель в это№ последнем делении и будет искомым результатом.
Поскольку деление сводится к повторному вычитанию, предписание, пригодное для решения любой из этих задач,
можно |
было бы |
задать |
в виде следующей |
последователь |
||||
ности |
указаний. |
|
|
|
|
два числа: а и |
Ь. Пе |
|
У к а з а н и е |
1. |
Обозревайте |
||||||
реходите к следующему |
указанию. |
|
|
|
||||
У к а з а н и е . |
|
2. |
Сравните |
обозреваемые |
числа |
|||
(а = Ь, или а < |
Ь, или |
а > |
Ь)\ переходите |
к следующему |
||||
указанию. |
|
|
|
|
|
|
|
|
У к а з а н и е |
3. |
Если |
обозреваемые |
числа |
равны, |
то каждое из них дает искомый результат. Процесс вычис ления остановить. Если нет, переходите к следующему ука занию.
У к а з а н и е 4. Если первое обозреваемое число меньше второго обозреваемого числа, переставьте их мес тами и продолжайте обозревать их. Переходите к следую
щему |
указанию. |
|
|
|
|
У к а з а н и е |
5. |
Вычитайте |
второе |
из обозреваемых |
|
чисел |
из первого |
и |
обозревайте |
два числа: вычитаемое |
|
и остаток. Переходите к указанию 2. |
|
||||
Итак, после того, как все 5 указаний |
выполнены, надо |
опять возвратиться ко второму, потом к третьему, четвер тому, пятому и опять ко второму, третьему и т. д., пока не получатся равные числа, т. е. пока не окажется выпол ненным условие, содержащееся в третьем указании; тогда процесс прекращается.
Правда, в математике алгоритмы не всегда формули руются в таком педантично формальном виде; однако воз можность такого формального задания любого из известных алгоритмов, по-видимому, ни у кого сомнения не вызывает.
В приведенном описании алгоритма Евклида в качестве элементарных операций, на которые расчленяется процесс решения задачи, фигурирует вычитание двух чисел, сравне ние двух чисел и перестановка двух чисел местами, но легко понять, что это расчленение может быть продвинуто гораз до дальше. Например, указание 5 о вычитании двух обозре ваемых чисел может быть само развернуто в систему ука заний, описывающих алгоритмы вычитания двух чисел. Однако для большей простоты и привычности правил ариф метических действий в подобных случаях дальнейшая детализация алгоритма не проводится.
12