первое паросочетание”


первое паросочетание” не требует разъяснений. for i:=1 to N do begin {назначение переменных i, j, pp следует очевидно} j:=1; pp:=true; while (j<=M) and pp do begin if (A[i,j]=1) and (YM[j]=0) then begin XN[i]:=j;YM[j]:=i; pp:=false; end; inc(j); end; end; Как лучше хранить чередующуюся цепочку, учитывая требование изменения паросочетания и продумывая логику её построения? Естественно, массив, пусть это будет Chain:array[1..NMmax] of -NMmax.. NMmax, где NMmax - максимальное число вершин в графе, и его значение для рассмотренного примера равно [1, -4, 4, -2, 3, -3], то есть вершины из множества YM хранятся со знаком минус (вспомните метод построения максимального потока). Итак, поиск чередующейся цепочки. function FindChain:boolean; var p,yk,r:word; begin <инициализация данных, в частности yk:=1;>; <нахождение свободной вершины в XN>; if <вершина не найдена> then begin FindChain:=false;exit;end;
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz