Описание входных и выходных данных подпрограммы в терминах фактических параметров




 

Перейдем теперь к решению второй задачи межпроцедурного анализа - описанию входных и выходных данных подпрограммы в терминах фактических параметров. Описываемый здесь метод опирается на [9,16] и требует, чтобы входные и выходные данные подпрограммы уже были описаны в виде системы линейных неравенств.

Пусть в программе есть две подпрограммы P и Q, такие, что:

SUBROUTINE P(...)

DIMENSION Ap(lp1:up1,...,lpp:upp)

...

CALL Q(...,Ap(op1,...,opp),...)

...

END

 

SUBROUTINE Q(...,Aq,...)

DIMENSION Aq(lq1:uq1,...,lqq:uqq)

...

END

 

Пусть элементы массива Aq, представляющие часть входных и выходных данных подпрограммы Q, представлены в виде области Wq, описанной с помощью набора линейных равенств и неравенств. Требуется пересчитать эту область в терминах вырезки из соответствующего фактического параметра-массива Ap.

Запишем условие Гpq того, что два элемента массивов Ap(y1,..., yp) и Aq(j1,..., jq) ссылаются на одну и ту же область памяти:

 

где .

 

Тогда пересечение трех областей W=WqÇГpqÇ{lpi£yi£upi, i =1,p} неявно задает область Wp массива Ap, соответствующую области Wq массива Aq. Для получения явного описания Wp необходимо получить проекцию (p+q)-мерной области W на p-мерное подпространство, соответствующее массиву Ap. Это можно сделать с помощью исключений Фурье-Моцкина [12,13], если равенство Гpq линейно. Определение условий его линейности рассматривается дальше.

Если равенство Гpq нелинейно, то при некоторых условиях можно получить более простое условие. Если массивы Ap и Aq имеют одинаковое число элементов в первых (d-1) размерностях (то есть {upi - lpi = uqi - lqi, 1 £ i £ d-1}), и {opi=lpi, 1 £ i £ d-1}, то добавим в описание области W равенства {yi - lpi=ji - lqi, 1 £ i £ d-1} и составим частичное уравнение ранга d:

 

где .

 

Это уравнение проще, чем Гpq, и в реальных случаях может оказаться линейным, в то время как полное уравнение таковым не является. Если количество размерностей с одинаковым числом элементов равно q, но меньше p, то в описание области W вместо условия Гdpq нужно добавить равенства {yi=opi, | i=q+1,p }.

Для того, чтобы получить проекцию (p+q)-мерной области W на p-мерное пространство, необходимо исключить переменные, введенные для описания Wq, из всех равенств и неравенств. Это можно сделать методом Фурье-Моцкина [12,13], если все ограничения, содержащие эти переменные, линейны. Так как в описание Wq входят только линейные ограничения, нелинейность по данным переменным может возникнуть только в равенстве Гpqdpq). Кроме того, для проведения дальнейшего анализа программы важно, чтобы все получающиеся ограничения также были линейными. Поэтому нужно выделить условия на внешние переменные, при которых Гpqdpq) будет линейным по всем переменным.

Для этого берем равенство Гpqdpq), приводим в нем подобные, после чего приравниваем к нулю все нелинейные части. Если из получившихся равенств можно выразить переменные, введенные для описания Wq, через внешние переменные, и подстановка этих выражений в ограничения вместо переменных не входит в противоречие с заданными ограничениями на внешние переменные, то добавим к равенству Гpqdpq) с зануленными нелинейными частями ограничения {lpi£yi£upi|1£i£p} и {lqi£ji£uqi|1£i£q}. После этого исключаем из получившихся линейных ограничений все переменные, кроме внешних, и получаем искомые ограничения на внешние переменные.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: