mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-13 23:49:13 +02:00
cody: lvl graph: minimize crossings: simple greedy
git-svn-id: trunk@40406 -
This commit is contained in:
parent
b68b07efb6
commit
77bfdde159
@ -710,14 +710,16 @@ procedure LvlGraphMinimizeCrossings(Graph: TLvlGraph);
|
|||||||
var
|
var
|
||||||
g: TMinXGraph;
|
g: TMinXGraph;
|
||||||
Pair: TMinXPair;
|
Pair: TMinXPair;
|
||||||
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
if (Graph.LevelCount<2) or (Graph.NodeCount<3) then exit;
|
if (Graph.LevelCount<2) or (Graph.NodeCount<3) then exit;
|
||||||
g:=TMinXGraph.Create(Graph);
|
g:=TMinXGraph.Create(Graph);
|
||||||
try
|
try
|
||||||
g.CreatePairs;
|
g.CreatePairs;
|
||||||
Pair:=g.FindBestPair;
|
for i:=1 to 100 do begin
|
||||||
if Pair<>nil then begin
|
Pair:=g.FindBestPair;
|
||||||
debugln(['LvlGraphMinimizeCrossings ',Pair.AsString]);
|
if Pair=nil then break;
|
||||||
|
//debugln(['LvlGraphMinimizeCrossings ',Pair.AsString]);
|
||||||
g.SwitchPair(Pair);
|
g.SwitchPair(Pair);
|
||||||
end;
|
end;
|
||||||
g.Apply;
|
g.Apply;
|
||||||
@ -1122,7 +1124,7 @@ var
|
|||||||
NeighbourPair: TMinXPair;
|
NeighbourPair: TMinXPair;
|
||||||
Level: TMinXLevel;
|
Level: TMinXLevel;
|
||||||
begin
|
begin
|
||||||
debugln(['TMinXGraph.SwitchPair ',Pair.AsString]);
|
//debugln(['TMinXGraph.SwitchPair ',Pair.AsString]);
|
||||||
ConsistencyCheck;
|
ConsistencyCheck;
|
||||||
|
|
||||||
Level:=Pair.Level;
|
Level:=Pair.Level;
|
||||||
@ -1139,7 +1141,7 @@ begin
|
|||||||
|
|
||||||
// reverse Pair.SwitchDiff
|
// reverse Pair.SwitchDiff
|
||||||
Pair.SwitchDiff:=-Pair.SwitchDiff;
|
Pair.SwitchDiff:=-Pair.SwitchDiff;
|
||||||
debugln(['TMinXGraph.SwitchPair Pair.SwitchDiff should be equal: ',Pair.SwitchDiff,' = ',Pair.ComputeSwitchDiff]);
|
//debugln(['TMinXGraph.SwitchPair Pair.SwitchDiff should be equal: ',Pair.SwitchDiff,' = ',Pair.ComputeSwitchDiff]);
|
||||||
|
|
||||||
// compute SwitchDiff of new neighbour pairs
|
// compute SwitchDiff of new neighbour pairs
|
||||||
if Pair.Index>0 then begin
|
if Pair.Index>0 then begin
|
||||||
|
Loading…
Reference in New Issue
Block a user