--- VISUALIZATION STUFF
-data REdgeF = REdgeF Int Int Int Wt
-instance Show REdgeF where
- show (REdgeF idx cap flow cost) = "#" ++ (show idx) ++ ": "
- ++ (show flow) ++ " of " ++ (show cap) ++ " @ " ++ (show cost)
-flowAnnotate g fa =
- mkGraph (labNodes g) (map (\(n1, n2, REdge i ca co) ->
- (n1, n2, REdgeF i ca (fa ! i) co)) $ labEdges g) :: Gr () REdgeF
-
-showInstanceAsGraph :: Instance -> [(Int, Int)] -> Gr String String
-showInstanceAsGraph (Instance numRvrs numProps rloadA prefA) matchedPairs =
- let
- rvrNode i = i
- propNode j = numRvrs + j
- numNodes = numRvrs + numProps
- theNodes = map (\i -> (rvrNode i, "R#" ++ show i ++
- " (RLoad " ++ show (rloadA ! i) ++ ")")) [0..numRvrs-1] ++
- map (\j -> (propNode j, "P#" ++ show j)) [0..numProps-1]
- parenthesizeIf False s = s
- parenthesizeIf True s = "(" ++ s ++ ")"
- theEdges = do
- i <- [0..numRvrs-1]
- j <- [0..numProps-1]
- return (rvrNode i, propNode j,
- parenthesizeIf (elem (i, j) matchedPairs) $ show (prefA ! (i, j)))
- in mkGraph theNodes theEdges
-