3636 ug = embed_graph (g)
3737 mis_overhead0 = mis_overhead_copylines (ug)
3838 ug2, tape = apply_crossing_gadgets! (copy (ug))
39+ ug3, tape2 = apply_simplifier_gadgets! (copy (ug2); ruleset= [RotatedGadget (UnitDiskMapping. DanglingLeg (), n) for n= 0 : 3 ])
3940 mis_overhead1 = sum (x-> mis_overhead (x[1 ]), tape)
40- missize_map = solve (Independence (SimpleGraph (ug2)), " size max" ; optimizer= TreeSA (ntrials= 1 , niters= 10 ), simplifier= MergeGreedy ())[]. n
41+ mis_overhead2 = sum (x-> mis_overhead (x[1 ]), tape2)
42+ @show mis_overhead2
43+ gp = Independence (SimpleGraph (ug3); optimizer= TreeSA (ntrials= 1 , niters= 10 ), simplifier= MergeGreedy ())
44+ missize_map = solve (gp, " size max" )[]. n
4145 missize = solve (Independence (g), " size max" )[]. n
42- @test mis_overhead0 + mis_overhead1 + missize == missize_map
43- misconfig = solve (Independence ( SimpleGraph (ug2)) , " config max" ; optimizer = TreeSA (ntrials = 1 , niters = 10 ), simplifier = MergeGreedy () )[]. c
44- c = zeros (Int, size (ug2 . content))
45- for (i, loc) in enumerate (findall (! iszero, ug2 . content))
46+ @test mis_overhead0 + mis_overhead1 + mis_overhead2 + missize == missize_map
47+ misconfig = solve (gp , " config max" )[]. c
48+ c = zeros (Int, size (ug3 . content))
49+ for (i, loc) in enumerate (findall (! iszero, ug3 . content))
4650 c[loc] = misconfig. data[i]
4751 end
4852 @test all (ci-> UnitDiskMapping. safe_get (c, ci. I... )== 0 || (UnitDiskMapping. safe_get (c, ci. I[1 ], ci. I[2 ]+ 1 ) == 0 && UnitDiskMapping. safe_get (c, ci. I[1 ]+ 1 , ci. I[2 ]) == 0 &&
4953 UnitDiskMapping. safe_get (c, ci. I[1 ]- 1 , ci. I[2 ]) == 0 && UnitDiskMapping. safe_get (c, ci. I[1 ], ci. I[2 ]- 1 ) == 0 &&
5054 UnitDiskMapping. safe_get (c, ci. I[1 ]- 1 , ci. I[2 ]- 1 ) == 0 && UnitDiskMapping. safe_get (c, ci. I[1 ]- 1 , ci. I[2 ]+ 1 ) == 0 &&
5155 UnitDiskMapping. safe_get (c, ci. I[1 ]+ 1 , ci. I[2 ]- 1 ) == 0 && UnitDiskMapping. safe_get (c, ci. I[1 ]+ 1 , ci. I[2 ]+ 1 ) == 0
5256 ), CartesianIndices ((55 , 55 )))
53- res, cs = unapply_gadgets! (copy (ug2 ), tape, [copy (c)])
57+ res, cs = unapply_gadgets! (copy (ug3 ), [ tape... , tape2 ... ] , [copy (c)])
5458 @test count (isone, cs[1 ]) == missize
5559 @test is_independent_set (g, cs[1 ])
5660 end
61+ end
62+
63+ @testset " interface" begin
64+ g = smallgraph (:petersen )
65+ res = map_graph (g)
66+
67+ # checking size
68+ gp = Independence (SimpleGraph (res. grid_graph); optimizer= TreeSA (ntrials= 1 , niters= 10 ), simplifier= MergeGreedy ())
69+ missize_map = solve (gp, " size max" )[]. n
70+ missize = solve (Independence (g), " size max" )[]. n
71+ @test res. mis_overhead + missize == missize_map
72+
73+ # checking mapping back
74+ misconfig = solve (gp, " config max" )[]. c
75+ c = zeros (Int, size (res. grid_graph. content))
76+ for (i, loc) in enumerate (findall (! iszero, res. grid_graph. content))
77+ c[loc] = misconfig. data[i]
78+ end
79+ original_configs = map_configs_back (res, [c])
80+ @test count (isone, original_configs[1 ]) == missize
81+ @test is_independent_set (g, original_configs[1 ])
5782end
0 commit comments