Add testcases to force big values for dual/slack
This commit is contained in:
parent
c731c32473
commit
4670cf1dca
|
@ -574,6 +574,60 @@ class TestVerificationFail(unittest.TestCase):
|
||||||
verify_optimum(ctx)
|
verify_optimum(ctx)
|
||||||
|
|
||||||
|
|
||||||
|
class TestValueRange(unittest.TestCase):
|
||||||
|
"""Test graphs that force big values for dual variables or edge slack."""
|
||||||
|
|
||||||
|
def test_big_blossom_dual(self):
|
||||||
|
"""Force modified blossom dual close to 2*maxweight."""
|
||||||
|
#
|
||||||
|
# [3]
|
||||||
|
# / \
|
||||||
|
# W-4/ \W
|
||||||
|
# 7 / \
|
||||||
|
# [1]-----[2]-----[4]
|
||||||
|
# | W-4
|
||||||
|
# 5|
|
||||||
|
# | 1
|
||||||
|
# [5]-----[6]
|
||||||
|
#
|
||||||
|
w = 100000
|
||||||
|
pairs = mwm([(1,2,7), (2,3,w-4), (2,4,w-4), (2,5,5), (3,4,w), (5,6,1)])
|
||||||
|
self.assertEqual(pairs, [(1,2), (3,4), (5,6)])
|
||||||
|
|
||||||
|
def test_negative_blossom_dual(self):
|
||||||
|
"""Force modified blossom dual close to -maxweight."""
|
||||||
|
#
|
||||||
|
# [3]
|
||||||
|
# / \
|
||||||
|
# 5/ \7
|
||||||
|
# 1 / \
|
||||||
|
# [1]-----[2]-----[4]
|
||||||
|
# | 5
|
||||||
|
# 1|
|
||||||
|
# | W
|
||||||
|
# [5]-----[6]
|
||||||
|
#
|
||||||
|
w = 100000
|
||||||
|
pairs = mwm([(1,2,1), (2,3,5), (2,4,5), (2,5,1), (3,4,7), (5,6,w)])
|
||||||
|
self.assertEqual(pairs, [(1,2), (3,4), (5,6)])
|
||||||
|
|
||||||
|
def test_big_edge_slack(self):
|
||||||
|
"""Force modified edge slack close to 3*maxweight."""
|
||||||
|
#
|
||||||
|
# 6 W W-2 5
|
||||||
|
# [1]-----[2]-----[3]-----[4]-----[5]
|
||||||
|
# | |
|
||||||
|
# |1 |1
|
||||||
|
# | |
|
||||||
|
# [6]-----[7]-----[8]-----[9]-----[10]
|
||||||
|
# 6 W W-2 5
|
||||||
|
#
|
||||||
|
w = 100000
|
||||||
|
pairs = mwm([(1,2,6), (1,6,1), (2,3,w), (3,4,w-2), (3,8,1), (4,5,5),
|
||||||
|
(6,7,6), (7,8,w), (8,9,w-2), (9,10,5)])
|
||||||
|
self.assertEqual(pairs, [(1,6), (2,3), (4,5), (7,8), (9,10)])
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue