Add testcases to force big values for dual/slack
This commit is contained in:
parent
975f3e872e
commit
123be5a4f2
|
@ -574,6 +574,60 @@ class TestVerificationFail(unittest.TestCase):
|
|||
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__":
|
||||
unittest.main()
|
||||
|
||||
|
|
Loading…
Reference in New Issue