Лекция 5: Параллельные методы расчета транспортной сети
Введем линейный массив переменных xij = yk, где k = (i - 1)n + j.
Исключим из рассмотрения последнее уравнение. Система уравнений граней (действительных и возможных) многогранника решений примет вид
y1 + y2 + y3 + y4 = 11
y5 + y6 + y7 + y8 = 11
y9 + y10 + y11 + y12 = 8 (5.7)
y1+y5+ y9=5
y2+y6+y10 = 9
y3+ y7+ y11 = 9
yk = 0, k = 1, 2, ... , 12.
Итак, на первом этапе задача свелась к выбору и анализу комбинаций по 12 - 6 = 6 нулевых значений координат искомой вершины многогранника решений. Выполняя подстановку выбранной комбинации в (5.7), мы можем решить образовавшуюся систему шести уравнений с шестью неизвестными. Таким образом, мы сможем найти координаты некоторой вершины.
Комбинации по шесть нулевых значений координат ("комбинации нулей") следует выбирать так, чтобы не обратилась в нуль левая часть хотя бы одного уравнения (5.7), включая исключенное уравнение. Например, комбинация, где y1 = y2 = y3 = y4 = 0, недопустима.
Найдем дополнительные контрольные ограничения: чтобы решение было не отрицательным, необходимо, чтобы любое значение yk, k = 1, ... , m x n, не превышало значение yk — величины правой части того уравнения, в котором оно участвует.
Тогда в нашем примере y1 <= min(11, 5) =y1 = 5, аналогично y2 <= y2 = 9, y3 <= y3 = 9, y4 <= y4 = 7, y5 <= y5 = 5, y6 <= y6 = 9, y7 <= y7 = 9, y8 <= y8 =7, y9 <= y9 = 5, y10 <= y10 = 8, y11 <=y11 = 8, y12 <= y12 = 7. Здесь при оценке y4, y8, y12 учтено последнее уравнение в (5.6).
Воспользуемся векторной формой представления, чтобы подготовить удобные, нетрудоемкие матричные преобразования. А именно, наша система m + n - 1 линейных уравнений-ограничений имеет вид
AY = B,
где A — нуль-единичная матрица, Y — столбец переменных, B — столбец свободных членов:
( 5.8) |
Тогда для нахождения хотя бы одного допустимого решения выберем допустимую комбинацию нулей по следующему алгоритму:
- Положим l = 0.
- Положим l := l + 1, yl = 0. Исключим из матрицы A столбец, соответствующий этой переменной.
- Проверяем, появилась ли в A строка, содержащая только нулевые элементы, или обратилась ли в нуль левая часть исключенного уравнения. (Предполагаем, что все свободные члены уравнений больше нуля.) При положительном результате анализа выполняем шаг 5. В противном случае — следующий шаг.
- Для каждой s -й строки A выделяем множество {ys} переменных, соответствующих единичным элементам. Проверяем: ?При отрицательном результате анализа (свободный член превышает сумму верхних оценок переменных) выполняем шаг 5. В случае успешной проверки 3 и 4 выполняем шаг 6.
- Данный шаг выполняется, если испытываемое значение yl = 0 выбрано неудачно. Отменяем исключение столбца, соответствующего переменной yl, и выполняем шаг 2.
- Фиксируем yl = 0, и если комбинация нулей сформирована не полностью, выполняем шаг 2.
Продолжим рассмотрение примера.
Полагаем y1 = 0. Это не приводит к нарушению оценок, указанных в алгоритме.
Полагаем y2 = 0. Это также не приводит к нарушению оценок.
Полагаем y3 = 0. Нулевые строки не появились. Однако в первой строке осталась единственная единица, соответствующая переменной y4. Т.к. y4= 7 < 11, отвергаем нулевое значение переменной.
Полагаем y4 = 0. Нулевые строки не появились, однако в первой же строке осталась единственная единица, соответствующая переменной y3. Т.к. y3 = 9 < 11, отвергаем и это значение.
Полагаем y5 = 0. Это не приводит к нарушению оценок.
Полагаем y6 = 0. В пятой строке остается единственная единица, соответствующая y10. Т.к. y10 = 8 < 9, отвергаем нулевое значение переменной.
Полагаем y7 = 0, что не приводит к нарушению оценок.
Значение y8 = 0 приводит к нарушению оценки во втором уравнении.
Значение y9 = 0 приводит к появлению нулевой строки.
Значение y10 = 0 не приводит к нарушению оценок.
Значение y11 = 0 также не приводит к нарушению оценок.
Итак, комбинация нулей найдена. Это отмеченные в (5.8) значения
y1 = 0, y2 = 0, y5 = 0, y7 = 0, y10 = 0, y11 = 0. (5.9)