cooler_3105
Гость
|
|
« : 14-02-2009 12:59 » |
|
Имеется матрица смежности упорядоченного ориентированного графа (например, размерностью 9*9). 1 соответствует наличию дуги, 0 - ее отсутствием. Нужно вычислить С(2,1) С(3,2), С(3,1) С(4,3), С(4,2), С(4,1) С(5,4), С(5,3), С(5,2) ................... С(9,8), С(9,7), С(9,6) Максимальное кол-во значений С в каждой строке дается в условии (в данном случае макс. кол-во = 3). Т.е. сначала считается одно значение (в нашем случае С(2,1)), потом - 2 (С(3,2), С(3,1)), и т.д. пока не дойдем до макс. кол-ва значений (С(4,3), С(4,2), С(4,1)), которое сохраняется до конца расчетов (С(9,8), С(9,7), С(9,6)). С высчитывается по формуле: С(x,y) = количеству существующих ребер (i*j) при y<=i<x, j>=x. По матрице смежности С(x,y) равняется сумме значений матрицы смежности в прямоугольнике шириной (x-y) и длиной до конца матрицы, левый верхний угол которого - ячейка (y,x). В данном случае нужно явно использовать динамическое программирование. Вопрос в том, как оптимально использовать вычисления, проводимые ранее. Это является подзадачей при последовательной декомпозиции графа.
|