malyshkin_ve_korneev_vd_-_parallelnoe_programmirovanie_multikompyuterov
.pdf
терма t необходимо будет учитывать, что в нем не может использоваться такой компонент x [i], что i превосходит значение, полученное счетчиком n x .
Понятно (см. главу 1), что в динамических моделях может быть задан алгоритм вычисления любой примитивно рекурсивной функции. Число компонентов массива заранее не определено, но в ходе вычислений значение счетчика определяется до начала использования компонентов массива.
7.3.3. Итеративные вычислительные модели с массивами
Понятно, что для представления в ВММ алгоритма вычисления любой частично рекурсивной функции в неё необходимо, кроме динамических, добавить ещё и итеративные
массивы, которые бы допускали введение предикатов-
предусловий операций и возможность задания счетчикам различных значений, чтобы число компонентов массива могло расти в ходе вычислений (как это нужно для определения оператора минимизации). Такое расширение делается довольно сложно технически, а поэтому итеративные ВММ демонстрируются на примерах. В примерах предполается, что понятия структурной и содержательной интерпретаций вводится обычным образом.
328
|
|
|
i+ 1 |
|
|
|
|
n x |
a |
i |
i |
b |
i |
i |
|
|
|
|
|
||||
|
|
P ai |
|
|
|
|
|
|
|
|
2 |
|
|
2 |
|
|
|
|
1 |
|
|
1 |
|
n |
e |
|
x |
|
|
y |
|
|
|
|
Рис.7.29 |
|
|
|
|
На рис.7.29. показана массовая операция a итеративной ВММ, |
|||||||
in(ai)={ n x , x [i]}, |
|
out(ai)={ n x , x [i+1]}, |
({n},{ x |
})-план, |
|||
вычисляющий |
массив |
x , содержит |
все |
термы вида |
ti=ai(ai- |
||
1(…( a1( x [1]). При должной интерпретации алгоритм, заданный
({n},{ x })-планом, может считывать в оперативную память все записи файла.
На рис.30а показана структурированная итеративная ВММ
С. Структурная интерпретация массовых операций a и b
приведена на рис. 30б и 30в. Операциям а и b ВММ С (рис.
7.30а) соответствуют ВММ Сa=SI(a) (см. рис. 7.30б) и Сb=SI(b)
(см. рис. 7.30в); па=SI(n); переменные SI(nx), SI(ny), SI(nz) — |
это |
||||||||||||
счетчики n |
|
, n |
|
, n |
|
, а SI(x), SI(y), SI(z) — массивы |
|
, |
|
, |
|
в |
|
|
|
|
x |
|
z |
||||||||
|
|
|
y |
||||||||||
x |
|||||||||||||
y |
|||||||||||||
z |
|||||||||||||
ВММ Сa и Сb. |
|
|
|||||||||||
329
Cb |
|
|
|
|
nz |
|
|
|
|
nx |
i |
b1i |
i |
|
b2 |
|
|
|
|
x |
2 |
|
2 |
|
1 |
|
1 |
z |
b3 |
y 1 |
|
b5 |
1 |
y2 |
|
2 |
|
2 |
||
|
|
|
|
||
n y |
|
|
|
|
|
ny 2 |
i |
|
i |
i |
|
|
i+1 |
|
b4 |
i+1 |
|
|
|
|
|
||
|
Рис. 7.30в |
|
|
|
|
Если содержательно интерпретировать: |
|
|
|
||
I(n): (цельное положительное число), |
|
|
|||
I(a1): n x := n y : = n; ввод x [1], |
y [1])), |
|
|
||
I(a2i): (ввод x [i + 1])), I(a3j): (ввод y [j + 1]), |
|
||||
I(b2): ( n z : = n x ), I(b3): ( n |
: = n y |
), |
|
|
|
|
y 2 |
|
|
|
|
I(b1i): ( z [i]: = |
x [i] + y [i]), |
|
|
|
|
I(b4i): ( y 2 [i + 1]: = 1); печать ( y [i + 1]), |
|
|
|||
I(b5): (печать ( y [i])), |
|
|
|
|
|
область интерпретации — вещественные числа, тогда
({п},{nz,z,у2})-план задает алгоритм ввода и сложения массивов
331
