36
36
ug = embed_graph (g)
37
37
mis_overhead0 = mis_overhead_copylines (ug)
38
38
ug2, tape = apply_crossing_gadgets! (copy (ug))
39
+ ug3, tape2 = apply_simplifier_gadgets! (copy (ug2); ruleset= [RotatedGadget (UnitDiskMapping. DanglingLeg (), n) for n= 0 : 3 ])
39
40
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
41
45
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))
46
50
c[loc] = misconfig. data[i]
47
51
end
48
52
@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 &&
49
53
UnitDiskMapping. safe_get (c, ci. I[1 ]- 1 , ci. I[2 ]) == 0 && UnitDiskMapping. safe_get (c, ci. I[1 ], ci. I[2 ]- 1 ) == 0 &&
50
54
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 &&
51
55
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
52
56
), CartesianIndices ((55 , 55 )))
53
- res, cs = unapply_gadgets! (copy (ug2 ), tape, [copy (c)])
57
+ res, cs = unapply_gadgets! (copy (ug3 ), [ tape... , tape2 ... ] , [copy (c)])
54
58
@test count (isone, cs[1 ]) == missize
55
59
@test is_independent_set (g, cs[1 ])
56
60
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 ])
57
82
end
0 commit comments