Смекни!
smekni.com

Блочно-симметричные модели и методы проектирования систем обработки данных (стр. 17 из 22)

3.1 Эффективный алгоритм решения блочно-симметричных задач проектирования модульных блок-схем обработки данных

Анализ методов и алгоритмов решения задач дискретного программирования показал, что они, в основном, являются NP-полными и имеют экспоненциальную вычислительную сложность. Следовательно, не могут быть решены задачи большой размерности в различных приложениях [134-137].

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

Рассмотрим алгоритм решения блочно-симметричных задач вида (2.2.1)-(2.2.5), (3.2.1)-(3.2.7), а также частных задач [138].

Для описания алгоритма введем следующие понятия.

В случае, если в процессе проектирования модульных блок-схем не заданы число разрабатываемых модулей

и массивов базы данных
, они могуть быть определены и следующих соотношений
,
, где
и
соответственно максимальное число процедур в модуле и максимальное число информационных элементов в массивах базы данных. Определим понятие базиса решения задачи.

Определение 3.1.1. Подматрицу

, где
;
;
;
, определенную на исходной матрице
, назовем исходным базисом решения задачи.

В качестве базиса используются ключевые информационные элементы и используемые ими процедуры обработки данных. Если ключевые информационные элементы не определены, то элементы (строки и столбцы матрицы

) задаются исходя из технологических требований проекта.

Определение 3.1.2. Величины

(3.1.1)

и

(3.1.2)

назовём расстоянием между строками (столбцами) не вошедшими в базис и строками (столбцами), которые вошли в базис.

Вычисленные значения величин

и
составляют матрицу
и
. Минимальные значения элементов
и
определяютоптимальное однозначное отображение процедур в модули и информационных элементов в массивы базы данных.

В процессе отображения с матрицами

и
тесно связаны матрицы состояний соответственно
и
, указывающие текущее состояние исходной матрицы после операции отображения, которые заключаются в логическом сложении небазисных строк (столбцов) с базисными.

Алгоритм состоит из ряда итераций. Поэтому определим его как алгоритм итеративных отображений (АИО). Алгоритм состоит из следующих операций:

1. Ввод матрицы

. Выделение базиса в матрице
. Переход к 2.

2. Вычислить величины

и составить матрицу
. Зафиксировать состояние матрицы
. Переход к 3.

3.

-я итерация.

3.1. В матрице найти

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

3.2. Определить элементы

матрицы
. Проверить ограничения на число процедур в составе каждого модуля. Если оно неудовлетворительно, то перейти к 3.3, иначе к 3.1.

3.3. Исключить из рассмотрения элемент

. Установить
. Переход к 3.1.

3.4. Вычислить состояние матрицы

. Переход к 3.5.

3.5. Исключить из рассмотрения строку с номером

. Пересчитать величины
относительно
столбца с учетом нового состояния
. Переход к 3.6.

3.6. Проверить условие: все ли процедуры распределены? Если нет, то перейти к следующей итерации, приняв

. Иначе переход к 4

4. Запомнить содержание матриц

и
. Переход к 5.

5. Вычислить

относительно
и составить матрицу
. Переход к 6.

6.

-я итерация.

6.1. В матрице

найти
-й минимальный элемент. При наличии нескольких минимальных элементов, среди них выберем такой элемент, для которого значение суммы по строкам минимально. Если элементов такого свойства несколько, то среди этих минимальных элементов выберем элемент расположенный первым от начало отсчета строк. Переход к 6.2.

6.2. Определить элементы

матрицы
. Проверить ограничения на число информационных элементов в логическом массиве. Если оно неудовлетворительно, то перейти к 6.3.

6.3. Исключить из рассмотрения элемент

. Установить
. Переход к 6.1.

6.4. Вычислить состояние матрицы

. Переход к 6.5.

6.5. Исключить из рассмотрения строку с номером

. Пересчитать величины
относительно
столбца с учетом нового состояния
. Переход к 6.6.

6.6. Проверить условие: все ли информационные элементы распределены? Если нет, то перейти к следующей итерации, приняв

. Иначе переход к 7.

7. Вывод решения задачи: матриц

,
,
и значение целевой функции
.