Merge branch 'master' into popl2012
[match/match.git] / program / ProposalMatcher.hs
index c82855e..e093a13 100644 (file)
@@ -66,7 +66,7 @@ doReduction cfg (PMInstance numRvrs numProps rloadA prefA expA fixA pnrA) =
                totalRelativeLoad = foldl (+) 0 (map (rloadA !) [0 .. numRvrs - 1])
                -- floor goes best with loadTolerance 2
                targetLoad i = floor (widenInteger totalReviews * (rloadA ! i) / totalRelativeLoad) - 1
-               -- A...H refer to idea book p.429
+               -- Edge groups A through H are indicated in the figure in the paper.
                edgesABC = do
                        i <- [0 .. numRvrs - 1]
                        let tl = targetLoad i
@@ -134,8 +134,8 @@ doReduction cfg (PMInstance numRvrs numProps rloadA prefA expA fixA pnrA) =
                                        let edgeH1 = (propNode j 1, sink, REdge undefined (numReviews - numPCReviews) 0)
                                        -- "Designated PC" with knowledgeable bonus
                                        let edgeGFirst = (propNode j 6, propNode j 3, REdge undefined 1 (-(knowledgeableBonus cfg)))
-                                       let edgeGRest = (propNode j 6, propNode j 3, REdge undefined (numPCReviews - 2) 0)
-                                       let edgeH = (propNode j 3, sink, REdge undefined (numPCReviews - 1) 0)
+                                       let edgeGRest = (propNode j 6, propNode j 3, REdge undefined (numPCReviews - 1) 0)
+                                       let edgeH = (propNode j 3, sink, REdge undefined (numPCReviews) 0)
                                        edgesP ++ edgesR ++ [edgeF, edgeH1, edgeGFirst, edgeGRest, edgeH]
                theNodes = [(x, ()) | x <- [0 .. numNodes - 1]]
                -- Index the non-D edges