From 253fe3facb75a277604b54ea3c390bfdc860d28c Mon Sep 17 00:00:00 2001
From: GiggleLiu <cacate0129@gmail.com>
Date: Thu, 17 Nov 2022 00:58:13 +0800
Subject: [PATCH] new example k23

---
 examples/k23.jl      | 29 +++++++++++++++++++++++++++++
 examples/petersen.jl |  9 +++------
 src/mapping.jl       |  2 +-
 3 files changed, 33 insertions(+), 7 deletions(-)
 create mode 100644 examples/k23.jl

diff --git a/examples/k23.jl b/examples/k23.jl
new file mode 100644
index 0000000..7825937
--- /dev/null
+++ b/examples/k23.jl
@@ -0,0 +1,29 @@
+using UnitDiskMapping, Graphs
+
+k23 = SimpleGraph(Edge.([1=>3, 1=>4, 1=>5, 2=>3, 2=>4, 2=>5]))
+
+# map the graph the a diagonal-coupled unit-disk grid graph.
+res = map_graph(k23)
+println(res.grid_graph)
+# output: a 7 x 11 DUGG
+# ⋅ ● ⋅ ⋅ ⋅ ● ⋅ ⋅ ⋅ ⋅ ⋅ 
+# ● ⋅ ● ● ● ⋅ ● ● ● ⋅ ⋅ 
+# ⋅ ● ⋅ ⋅ ⋅ ● ⋅ ⋅ ⋅ ● ⋅ 
+# ⋅ ● ⋅ ⋅ ⋅ ● ⋅ ⋅ ⋅ ● ⋅ 
+# ⋅ ● ⋅ ⋅ ⋅ ● ⋅ ⋅ ⋅ ● ⋅ 
+# ● ● ● ● ● ● ● ● ● ⋅ ● 
+# ⋅ ● ⋅ ⋅ ⋅ ● ⋅ ⋅ ⋅ ● ⋅ 
+
+dugg = SimpleGraph(res.grid_graph)
+
+using GenericTensorNetworks
+
+# solve and check the MIS size
+source_mis_size = solve(IndependentSet(k23), SizeMax())[]
+dugg_mis_size = solve(IndependentSet(dugg), SizeMax())[]
+source_mis_size.n == dugg_mis_size.n - res.mis_overhead
+
+# map an MIS for the dugg back
+dugg_mis = solve(IndependentSet(dugg), SingleConfigMax())[].c.data
+source_mis = map_config_back(res, dugg_mis)
+GenericTensorNetworks.is_independent_set(k23, source_mis) && count(isone, source_mis) == source_mis_size.n
\ No newline at end of file
diff --git a/examples/petersen.jl b/examples/petersen.jl
index 5809fdb..2694c04 100644
--- a/examples/petersen.jl
+++ b/examples/petersen.jl
@@ -10,13 +10,10 @@ function petersen_graph()
 end
 
 g = petersen_graph()
-ug = embed_graph(g)
-G, tape = apply_gadgets!(copy(ug))
-locs = coordinates(G)
+res = map_graph(g)
+G = SimpleGraph(res.grid_graph)
 
 using GenericTensorNetworks
 s1 = solve(IndependentSet(g), SizeMax())
 s2 = solve(IndependentSet(SimpleGraph(G)), SizeMax())
-mis_overhead0 = 2 * nv(g) * (nv(g)-1) + nv(g)
-mis_overhead1 = sum(x->mis_overhead(x[1]), tape)
-s1[].n == s2[].n - mis_overhead0 - mis_overhead1
\ No newline at end of file
+s1[].n == s2[].n - res.mis_overhead
\ No newline at end of file
diff --git a/src/mapping.jl b/src/mapping.jl
index eb21112..2dfddcc 100644
--- a/src/mapping.jl
+++ b/src/mapping.jl
@@ -230,7 +230,7 @@ function remove_order(g::AbstractGraph, vertex_order::AbstractVector{Int})
     return addremove
 end
 
-function center_location(tc::CopyLine; padding::Int) where NT
+function center_location(tc::CopyLine; padding::Int)
     s = 4
     I = s*(tc.hslot-1)+padding+2
     J = s*(tc.vslot-1)+padding+1