cody: lvl graph: minimize crossings: simple greedy

git-svn-id: trunk@40406 -
This commit is contained in:
mattias 2013-02-25 19:02:47 +00:00
parent b68b07efb6
commit 77bfdde159

View File

@ -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