ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.06.2024
Просмотров: 115
Скачиваний: 1
Функция со (л:) частично рекурсивна с рекурсивной областью оп ределенности. Легко убедиться, что операторный алгоритм, имею
щий программу |
|
|
|
* |
|
|
|
|
|
|
|
0: стоп ; |
1: |
V 2 |
• |
2 • |
|
со |
2 |
3 |
|
|
|
|
3 : ехх |
I 4 ; 4 : |
р | 0 |
|
|
|
|
||||
вычисляет как раз функцию f(x). |
В самом деле, выполнив над |
про |
|||||||||
извольным" числом х |
приказ |
1, получим |
пару |
(2х, |
2). Если |
хфа(0)» |
|||||
то, выполнив над 2х |
приказ 2, получим пару |
(2Х 31 , 2). Если |
|
хфа(\)г |
|||||||
то, выполнив над 2Х 31 приказ |
2, получим |
пару (2Ж 32, 2) и т. д. |
Про |
||||||||
цесс продолжается до тех пор, |
пока, |
|
наконец, . получится |
|
пара |
||||||
(2*3™, 2), для которой х |
= а (п). Так |
как |
со (2*3™) |
не определено, то. |
над числом 2*3™ теперь надо выполнить приказ 3, в результате ко
торого получим пару (п, |
4). Выполнив над п приказ 4, получим па- |
|||||
РУ (Р(г а )> 0)- Так как х |
= |
а(п), |
то 0(n) =f(x), |
и, следовательно,, |
||
алгоритм перерабатывает х |
bf(x), |
что и ^требовалось. |
|
|||
Построенная |
программа |
для |
вычисления |
функции f(x) |
оказа |
|
лась довольно |
тривиальной |
вследствие того, |
что запас |
функций,, |
допустимых в приказах, был очень большой. Естественно, чем мень ше запас, тем труднее строить нужные программы. Поэтому несом ненный интерес представляет следующая теорема, которую мы при
водим без |
доказательства. |
|
|
|
Теорема |
Минского |
(4). Для каждой частично рекурсивной функ |
||
ции f(x) существует |
операторный алгоритм, |
программа которого» |
||
состоит из приказов |
вида |
|
|
|
|
стоп |
Х с |
:d |
Р |
для любого х, перерабатывающий 2х в |
2^х\ |
|
||
Иными |
словами, любая частично рекурсивная функция f(x) вы |
числима при помощи подходящего алгоритма, программа которогосостоит из приказов приведенного вида, при условии, что значения аргумента и функции кодируются числами 2, 2&х\ . .
1.5.3. Операторные алгоритмы А. А. Ляпунова
Алгоритмическая система советского ученого А. А. Ляпунова, предложенная им в 1953 г., является одной из первых, учитываю
щих все требования, |
предъявляемые |
к конкретным |
алгоритмам. |
|||||
Она возникла в связи с реализацией алгоритмов |
различных задач |
|||||||
на ЭВМ. |
|
|
|
|
|
|
|
|
Для описания строения алгоритмов Ляпунов использует спе |
||||||||
циальный математический аппарат — так |
называемые |
«логические |
||||||
схемы алгоритмов», в которых заглавными |
логическими |
буквами- |
||||||
обозначаются |
отдельные |
акты алгоритма, |
перерабатывающие ин |
|||||
формацию. Их |
называют |
операторами. |
Малыми |
буквами |
обозна |
|||
чаются проверяемые |
логические условия, при этом |
используется |
||||||
символика, принятая |
в математической |
логике. |
Например, симво- |
лом р(х<у) обозначают логическое условие, выполненное в том случае, когда неравенство, стоящее в скобках, истинно. В против ном случае это условие ложно.
Последовательное выполнение нескольких операторов |
обозна |
||
чается как произведение, причем сомножитель, |
стоящий |
справа, |
|
действует после сомножителя, стоящего слева. |
|
|
|
Логическими схемами алгоритма |
называются |
выражения, со |
|
ставленные из операторов и логических условий, |
следующих один |
||
за другим. От каждого логического |
условия начинается |
стрелка, |
которая оканчивается у какого-либо из операторов. Например, из
операторов А, В, С и5 |
логических условий р |
и q |
можно составить |
||
следующие логические схемы: |
|
|
|
|
|
|
I 2 Ар1 |
flyt2 |
С |
|
|
или |
|
|
|
|
|
|
pV Л1 г |
CqP. |
|
|
|
Знак f i обозначает |
начало стрелки, |
знак |
\ { |
— ее конец. Одина |
ковыми номерами помечаются начало и конец одной и той же стрел ки. Стрелки могут начинаться и у любого нелогического.оператора.
Логическая схема алгоритма определяет порядок работы опера торов в зависимости от значения входящих в нее логических усло вий. Работа алгоритма начинается с того, что выполняется самый левый оператор схемы. После того, как некоторый элемент схемы выполнен, определяется, какой оператор схемы должен выполнять ся следующим. Если это был оператор, то следующий за ним дол жен выполняться тот элемент, который стоит непосредственно спра ва, или тот, который указан соответствующей стрелкой. Если по следним было логическое условие, то возможны два случая. Если проверяемое условие выполнено, то должен работать элемент, стоя
щий справа. Если |
оно нарушено, должен |
работать тот |
оператор, |
к которому ведет |
стрелка, начинающаяся |
после данного |
условия. |
Работа алгоритма оканчивается либо тогда, когда последний из ра ботающих операторов содержит указание о ее прекращении, либо когда на некотором этапе не оказывается такого элемента схемы, какой должен был бы работать.
Для записи алгоритмов используются следующие основные ти-
/пы операторов: 1) арифметические операторы; 2) операторы про верки логических условий; 3) операторы переадресации; 4) опера торы переноса; 5) операторы формирования.
1. Арифметические операторы служат для записи различных арифметических действий и обозначаются начальными буквами ла
тинского алфавита. |
|
|
|
Например, оператор А вычисляет величину a — Щь. — cam, |
опе- |
||
_ £ атор |
В — величину с = ац: a-ц. Выбор букв для |
обозначения |
опе |
раций |
произвольный. |
|
|
2. Операторы проверки логических условий служат для опреде |
|||
ления порядка работы алгоритма и обозначаются |
малыми буквами |
||
латинского алфавита р, q и др. |
|
|
58
3. |
Операторы |
переадресации |
служат для |
изменения |
адресов |
|
|||||||
в приказах; для изменения различных параметров, от которых за |
|
||||||||||||
висят операторы программы; для восстановления значений пара |
|
||||||||||||
метров и адресов, которые были изменены в процессе работы алго |
|
||||||||||||
ритма |
(программы). |
|
|
|
буквой F с указанием |
|
|||||||
Операторы переадресации |
обозначаются |
|
|||||||||||
в скобках |
изменяемого адреса |
или параметра. Так, |
оператор, из |
|
|||||||||
меняющий параметр i на единицу, будет обозначаться |
F(i). |
Опера |
|
||||||||||
тор, увеличивающий параметр |
i |
на п единиц, будет обозначаться |
|
||||||||||
Fn(i). |
Оператор, |
уменьшающий |
параметр i |
на |
п единиц, |
будет |
|
||||||
обозначаться |
F~n{i). |
|
|
|
|
|
|
|
|
|
|||
4. |
Оператор |
переноса |
служит |
для «переноса» |
одного парамет |
|
|||||||
ра на «место» другого, или, другими словами, |
для замены |
одного |
|
||||||||||
параметра другим. Операторы переноса обозначаются [а—>Ь], где а |
|
||||||||||||
означает, |
чем заменяется |
(что переносится), |
Ь — что заменяется |
|
|||||||||
(вместо чего переносится). |
|
|
|
|
|
|
|
|
|||||
5. Операторы формирования служат для формирования |
началь- |
/ |
|||||||||||
ных значений некоторых операторов алгоритма. Они переносят не |
|
||||||||||||
которые заранее запасенные приказы в определенные места алго |
|
||||||||||||
ритма. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Операторы формирования можно использовать вместо операто |
|
||||||||||||
ров переадресации. Это особенно удобно, когда число переадреса |
|
||||||||||||
ций может быть различным, а начальное |
значение |
параметра — |
|
||||||||||
всегда одно и то же. Например, если начальное значение парамет |
|
||||||||||||
ра i равно /, то оператор формирования может быть записан в ви |
|
||||||||||||
де {/—к'}. |
|
|
|
|
|
|
|
|
|
|
|
||
Рассмотрим пример записи операторного алгоритма Ляпунова |
|
||||||||||||
для суммирования пяти чисел: ад а2, аз, аь аь. |
|
|
|
|
|
||||||||
Пусть |
с — параметр, |
представляющий |
собой |
2 а,-, |
оператор At |
|
|||||||
вычисляет |
величину d — |
C j - i |
+ |
qt-. Вычисление |
суммы начинаем |
с |
|||||||
i = l . Алгоритм имеет вид: |
|
|
|
|
|
|
|
|
|||||
|
|
[ l - * q { 0 - * c _ i } * ' AtF |
[i) р [i = 6)? |
останов |
|
|
|||||||
Операторные алгоритмы Ляпунова для решения |
определенной |
|
|||||||||||
задачи допускают некоторые эквивалентные преобразования. Про |
|
||||||||||||
грамма, построенная по любому из эквивалентных между собой ал |
|
||||||||||||
горитмов, служит для решения одной и той же задачи. |
|
|
|
||||||||||
Такие |
преобразования |
алгоритмов полезны |
в том |
отношении, |
|
||||||||
что они могут быть использованы для поисков рациональной про |
|
||||||||||||
граммы при реализации данного алгоритма на машине'. |
|
|
|||||||||||
Преобразование схем можно рассматривать с двух точек зре |
|
||||||||||||
ния. Первый |
путь — исследовать |
формальные |
тождественные пре |
|
|||||||||
образования схем алгоритмов, предлагается советским математи |
|
||||||||||||
ком Ю. И. Яновым и будет рассмотрен далее. |
|
|
|
|
|
||||||||
Второй |
путь — исследовать |
содержательные |
преобразования |
|
|||||||||
схем |
алгоритмов, учитывающие |
индивидуальные |
особенности ре |
|
шаемой задачи.
59
1.5.4. Блок-схемный метод алгоритмизации
При блок-схемном методе алгоритмизации весь процесс реше ния задачи расчленяется на отдельные этапы-блоки. Каждый блок изображается на бумаге в виде простейших геометрических фигур (прямоугольника, ромба, круга и т. п.), блоку присваивается номер (метка), и он снабжается пояснительным текстом. Направление процесса обработки в блок-схеме указывается путем соединения •отдельных элементов блок-схемы стрелками. Если один блок пере дает управление другим блокам в зависимости от выполнения опре деленных условий, то на стрелках связи указывается условие, при котором вычислительный процесс разветвляется.
При построении блок-схемы сложных вычислительных процес сов не всегда целесообразно дробить весь процесс решения задачи на мелкие блоки. Иногда для большей обозримости возможно со единить в один блок целую группу этапов, т. е. в зависимости от •сложности задачи составлять блок-схемы с различной степенью де тализации.
Рассмотрим применение блок-схемного метода алгоритмизации при таксировке первичных документов. Эта типичная учетная зада ча, и ее используют для обработки таких первичных документов" бухгалтерского учета, которые содержат в своем составе количест венные и нормативно-расценочные показатели.
К таким задачам может быть отнесена и таксировка индивиду-
.альных рабочих нарядов. Рассмотрим блок-схему обработки инди видуальных рабочих нарядов для единичных и мелкосерийных це-, хов:
|
|
Цех |
Учас |
Заказ |
Табельный |
Вид оплахы |
|
|
ток |
номер |
|||
Индивидуальный |
ра |
|
|
|||
|
|
|
|
|||
бочий |
наряд |
|
|
|
|
|
Деталь |
Операция |
Количе |
Норма Расценка |
Время |
Заработная |
|
|
|
ство |
времени |
|
нормирован плата |
|
|
|
|
|
|
ное |
|
|
Время |
нормиро |
|
|
ванное по доку |
Заработная плата |
|
Подписи |
менту |
|
|
|
по документу |
||
|
|
Цель задачи сводится к определению времени нормированного {ВНД) и заработной платы "(ЗПД) по каждому документу, участ вующему в обработке.
60