Контрольная работа: Алгоритмы на графах. Независимые и доминирующие множества

0 … 0

В нашей задаче определены стоимости вершин графа или стоимости столбцов матрицы А*, и необходимо найти разбиение наименьшей стоимости. Пусть стоимости описываются в массиве Price (Price:array [1..MaxN] of integer ) и для примера на рисунке имеют значения [15 13 4 3 8 9 10]. Осталась чисто техническая деталь – отсортировать элементы каждой строки матрицы Bl по возрастанию стоимости соответствующих столбцов матрицы А. Логика формирования приведена ниже по тексту (Blocs).

procedure Blocs; {выделения блоков}

{Bl – глобальная переменная}

procedure Sort;

{Price и Bl – глобальные переменные}

begin

end;

procedure Press (i, j:integer); {Сдвигаем элементы строки с номером i, начиная с позиции (столбца) j, на одну позицию вправо}

{Bl – глобальная переменная}

var k:integer;

begin

k:=j;

while Bl [i, k]<>0 do begin {Поэтому размерность матрицы с плюс единицей. В последнем столбце строки всегда записан 0.}

Bl [i, k]:=Bl [i, k+1];

Inc(k);

end; {while}

end; {Press}

var i, j, cnt:integer;

begin

FillChar (Bl, SizeOf(Bl), 0);

for i:=1 to N do Bl [1, i]:=i; {предполагается, что в первом блоке все столбцы}

for i:=1 to N-1 do begin

j:=1; cnt:=0;

while Bl [i, j]<>0 do begin

if A*[i, Bl [i, j]]=0 then begin {столбецневэтомблоке}

Inc(cnt);

Bl [i+1, cnt]:=Bl [i, j]; {переписать в следующую строку}

К-во Просмотров: 407
Бесплатно скачать Контрольная работа: Алгоритмы на графах. Независимые и доминирующие множества