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

книги из ГПНТБ / Касаткин, В. Н. Семь задач по кибернетике

.pdf
Скачиваний:
40
Добавлен:
19.10.2023
Размер:
3.11 Mб
Скачать

Рассказ-задача 7

АЛГОРИТМ НАД АЛГОРИТМАМИ

Перейдем от рассмотрения отдельных алгоритмических систем — системы Эмиля Поста, Аллана Тьюринга и Ан­ дрея Маркова — к изучению их взаимосвязи.

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

Как же найти эти новые алгоритмы?

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

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

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

50

Пусть нам дана программа, работая по которой, маши­

на Поста (рис.

28) сотрет отдельно расположенную

мет­

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

к массиву, расположенному

на

некотором расстоянии справа.

 

 

 

1. J 2

4.-<-5

 

 

 

2. ->3

5. V 6

 

 

 

/2

6.1

 

 

 

3. ?<

 

 

 

М

 

 

 

Прежде чем разбирать предлагаемый способ, отметим, .

что

эта задача

также была

решена школьниками

из

 

V

• ••

V V V V

 

 

 

Рис.

28

 

Малой Академии наук «Искатель». Приводимый ниже вари­ ант решения принадлежит девятикласснику Володе Кисляковскому.

Как и всегда, конструирование нормального алгоритма следует начинать с определения алфавита. Условимся

V V

Рис. 29

о следующем: каждому состоянию информационной ленты будем ставить в соответствие слово, записанное с помощью

букв:

1 и 0.

Буква

1

будет заменять

метку \/, а буква

0 — пустые

секции.

 

Например. Дано

состояние ленты,

изображенное на рис.

29. Ему соответствует слово

1001.

Кроме букв 1

и

0 в алфавит включим буквы: alf

а2,...,

ап, с

помощью

которых нам удастся

смоделировать сис­

тему

команд.

 

 

 

 

 

 

51

Итак, алфавит:

/І {1, 0, й|, о2, <?3, ... , оп].

Команду «стереть метку» т. J k будем моделировать подстановкой

а„,1

Команду «поставить метку» т.

\J k моделируем подста­

новкой

 

 

 

Команда

сдвига

каретки влево

т. *- k моделируется

не одной, а

двумя

подстановками:

 

Аналогично, двумя Же подстановками, моделируем сдвиг вправо т. -> k

aml - ûfeO->0ak

Команда условной передачи управления т.Р-^^моде-

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

ûm0 -> akQ >■ ûnl

И последняя команда, команда mJ, тоже моделирует­ ся двумя, но уже заключительными, подстановками:

ат0^. О

52

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

Посмотрите, как оригинально моделирует каретку Во­ лодя. Показываем на примере.

V V V V V V

Рис. 30

Пусть дано состояние машины, изображенное нарис. 30. Этому состоянию ставим в соответствие слово

«¿1101111.

Еще пример. Дано состояние машины (рис. 31). Этому состоянию машины ставим в соответствие слово

11 «¿ 01111.

V V V V V V

Рис. 31

Алгоритм в целом будем конструировать по следующе­ му правилу:

1.Каждой команде машины Поста ставим в соответ­ ствие ее модель, которая представляет собой либо одну, либо две подстановки.

2.Состояние машины моделируем словом, составлен­

ным из букв 1 и 0. Букву «¿ помещаем внутри слова (или в каком-либо другом месте) так, чтобы та буква, под ко­ торой расположена каретка, оказалась соседней справа от буквы «х.

53

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

 

 

 

 

 

 

Таблица

3

Пост

Марков

Пост

Марков

 

1. I 2

а, 1 -* а20

4.

«- 5

0а4 -* а60

 

 

 

 

1я4

-» о61

 

 

о20

-> 0а3

 

 

2.

-> 3

 

 

 

 

 

а21 -> 1а3

5

V 6

я60 -> ají

 

 

3.

/2

а30

-> а20

 

 

GEgO

-> .

0

?(

 

 

6. !

 

 

 

 

 

а31

-> о41

ûjl

-> .

1

 

 

 

 

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

на рис. 32. Моделью будет слово

аг 10000111.

V V V V

Рис. 32

К этому слову применяем первую подстановку:

а4 1 ->- а20

и получаем слово

а200000111.

54

После применения подстановки

ß20 -> 0ß3

получим слово

0ß3000000111.

Теперь можно' применить только одну подстановку:

fl30 -> ß20,

после чего вновь придется применять

ß20 -> 0ß3

и так поступать до тех пор, пока буква аа не окажется ря­ дом с буквой 1 в слове

0000000а3111.

Применим теперь подстановку

 

и получим:

 

ß3l->ß4l

 

OOOOOOOaJll.

 

Применяем

подряд

несколько

подстановок:

'

 

0ß4 -> ß50,

 

 

 

ß50->ßel,

 

 

 

ßel->. 1.

 

Результатом работы

алгоритма

есть слово

 

 

0000001111.

Полученное слово совпадает с ожидавшимся ответом.

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

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

55

способ привлекателен тем, что вся работа протекает фор­ мально.

Мы научились моделировать машину Поста средствами алгоритмической системы А. Маркова. Следует заме­ тить, что задача моделирования одних машин на других является весьма важной в кибернетике. К такому моде­ лированию прибегают, в частности, на этапе разработки нового типа вычислительных машин. В качестве примера укажем на использование моделирования .функций ЭЦВМ ИЛЛИАК-ІѴ при ее проектировании.

«Создание ИЛЛИАК-ІѴ без использования в процессе проектирования других ЭВМ было бы невозможно. Так, на протяжении двух лет две ЭВМ средней мощности моде­ ли БЕРРОУЗ-5500 почти полностью использовались для изготовления чертежей или фотошаблонов печатных схем системы ИЛЛИАК-ІѴ и для разработки диагностических текстовых программ для логики и аппаратурных средств системы ИЛЛИАК-ІѴ»1..

Конечно, наше моделирование машины Поста средст­ вами алгоритмической системы А. Маркова очень просто в сравнении с моделированием такой супер-ЭЦВМ, ка­ кой является ИЛЛИАК-ІѴ (ИЛЛИАК-ІѴ — это комплекс из 65 ЭЦВМ, который обладает быстродействием в 200 млн. действий в секунду). Однако рассмотренный пример позволил нам, с одной стороны, показать взаимосвязь между алгоритмическими системами и выразить эту связь формально (по существу, мы построили алгоритм преоб­ разования алгоритмов по форме). С другой стороны, этот пример позволил нам обратить внимание читателей на за­ дачу моделирования одних вычислительных машин сред­ ствами других.

Подчеркнем последнюю мысль следующим примером. Представьте, что мы разработали ряд программ для ЭЦВМ

1 С л о тн и к Д. Самая быстродействующая электронно-вычисли­ тельная машина.—«Успехи физических наук», 1972, вып. 3, с. 557—575.

56

серии «Минск-22». Программы оказались важными для многих пользователей вычислительными машинами. Од­ нако не у всех пользователей имеется ЭЦВМ «Минск-22», ряд из них имеет другие вычислительные машины (напри­ мер М-222). Могут ли они воспользоваться нашими прог­ раммами? Могут, если сумеют разработать алгоритм и программу для машины, которой они располагают. Такую программу, работая по которой их ЭЦВМ сумеет заменить текст программы на языке ЭЦВМ «Минск-22» текстом программы на своем языке. Работа их машины при реше­ нии какой-либо задачи будет протекать в два этапа: сна­ чала текст чужой программы машина переведет на свой язык — получит рабочую программу. После этого маши­ на будет решать задачу, руководствуясь уже понятной ей программой.

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

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

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

ЕСТЬ ЛИ ФОРМУЛА?

В качестве заключительной рассмотрим задачу о вы­ числении расстояния между двумя датами в днях. '

57

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

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

сколько дней отделяет

одну дату от другой.

 

 

задаются в виде трех чисел:

День

Месяц

Год

21

апреля

1961

21

04

1961

или

12.10. 1025,

5.03. 1857.

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

Если бы эта задача, была предложена математику, то несколько лет назад решение задачи он, вероятнее всего, стал бы отыскивать в виде некоторой расчетной формулы, попытался бы получить искомое «расстояние», как функ­ цию от двух дат. Если А? — искомое расстояние; dp — ранняя дата; dn — более поздняя дата, то искомая функ­ ция

R = F(dp,dn).

(1)

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

Словом, расстояние R в днях как функцию от двух дат dp и dn записать в виде одной или даже нескольких фор­ мул совсем непросто.

58

Современный математик попытается привлечь для ре­ шения задачи вычислительную машину с программным управлением. Алгоритм решения задачи он будет разыс­ кивать в форме программы для ЭЦВМ. Наш рассказ о решении задачи и будет рассказом о том, как составляется такая программа. Решать задачу мы намерены на ЭЦВМ украинского производства, на вычислительной машине «Мир-1». Нам предстоит научиться программировать для этой машины. «Как, — может удивиться читатель, — раз­ ве это возможно — научится программировать, прочтя всего несколько страниц популярной книги?» «Да, — от­ вечаем мы, — можно!»

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

.послужат введением в основной рассказ.

Все программы, которые мы составляем для машины Поста, функциональные схемы машин Тьюринга разра­ батывались нами весьма подробно: команды писались од­ на за другой, при составлении программы мы учитывали все ситуации, которые могут встретиться в процессе ре­ шения задач конкретного класса. Такой способ програм­ мирования принято называть ручным программированием. Программирование вручную — основной способ подго­ товки программ и широко используется при программи­ ровании для ЭЦВМ различного класса. Знать особен­ ности, достоинства и недостатки этого способа необхо­ димо.

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

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