\section{Формальная постановка задачи} \label{sec:2_problem_statement} \index{2_post_zad} \hspace{0.47cm} Модель прикладной программы может быть представлена как ориентированный ациклический граф потока данных $G=(V,E)$, $|V|=n$, $|E|=m$. Каждой вершине графа соответствует работа $\{p_i\}_{i=1}^n$, каждой дуге "--- передача данных между работами. Если $(p_i,p_j)\in{E}$, $1\leq{i,j}\leq{n}$, то для выполнения работы $p_j$ необходим результат выполнения работы $p_i$. Вычислительная среда состоит из одного процессора $SP$, который в каждый момент времени способен выполнять только одну работу, и уникального ресурса $SR$. Каждая работа выполняется на процессоре $SP$ без прерываний. В момент старта работа $p_i$, $1\leq{i}\leq{n}$, захватывает $r_{p_i}\geq{0}$ ресурса $SR$ для хранения результата. При завершении работы ${p_i}$ происходит высвобождение ресурса, занимаемого такими работами $p_j$, \\$1\leq{j}\leq{n}$, $(p_j,p_i)\in{E}$, для которых $p_i$ является последним выполненным потомком. Расписание $HP$ сформировано, если для всех работ из $G$ определен порядок их выполнения на процессоре $SP$. Фактически $HP$ представляет собой перестановку $\pi$ номеров работ из $G$ (будем считать, что работы пронумерованы), поэтому ниже понятия <<расписание>> и <<перестановка работ>> считаем взаимозаменяемыми. $$\pi = (j_1, j_2,\dots, j_n)$$ где $j_i$ "--- номер работы, находящегося в $i$-ой позиции расписания. Расписание $HP$ корректно, если выполнены следующие ограничения $\{1-3\}$: \begin{enumerate} \item Каждая работа назначено на процессор $SP$. \item Процессор $SP$ в каждый момент времени выполняет не более одной работы. \item Частичный порядок, заданный графом зависимостей $G$, сохранен в $HP$. \end{enumerate} Далее будем говорить, что расписание допустимо $HP\in{HP_{\{1-3\}}^*}$, если оно удовлетворяет набору ограничений $\{1-3\}$. Минимизируемой целевой функцией является максимальное по всему расписанию количество занятого в вычислительной системе ресурса. Длительности работ в рамках задачи не рассматриваются. Пусть задано расписание $HP \in HP_{\{1-3\}}^*$. Опишем процедуру расчета целевой функции для $HP$. Обозначим за $f_{HP}^k$, $1\leq{k}\leq{n}$, количество занятого ресурса для $k$-ой позиции в расписании $HP$. Пусть $A$ "--- множество работ, расположенных в расписании $HP$ на позициях $1,\dots,k$. Пусть $B \subset A$ "--- множество работ, расположенных в расписании $HP$ на позициях $1,\dots,k-1$, у каждой из которых все потомки расположены на позициях от $1$ до $k-1$. Тогда $f_{HP}^k$ вычисляется по следующей формуле: \begin{equation*} f_{HP}^k=\sum\limits_{p_j\in{A}} r_{p_j} - \sum\limits_{p_i\in{B}} r_{p_i} \end{equation*} Пусть известны значения $\{f_{HP}^k\}_{k=1}^n$ для расписания $HP$. Тогда значение целевой функции $f_{HP}$ для такого расписания: \begin{equation*}\label{eq:cost} f_{HP}=\max_{1\leq{k}\leq{n}} f_{HP}^k \end{equation*} Требуется для модели прикладной программы $G$ найти такое расписание \\$HP_* \in HP_{\{1-3\}}^*$, для которого достигается минимальное значение целевой функции: \begin{equation*} f_{HP_*}=\min\limits_{HP\in{HP_{\{1-3\}}^*}} f_{HP} \end{equation*} Описанная задача является задачей о минимизации максимальной совокупности стоимости \cite{GARYJONSON}. В \cite{ABDEL}, \cite{SETHI} доказано, что в общем случае эта задача является NP-трудной.