/
testForSim.go
113 lines (95 loc) · 2.58 KB
/
testForSim.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package main
import (
"algorithm"
"fmt"
"log"
"os"
"graph"
)
func main() {
fmt.Println("gogogo")
patternFile, _ := os.Open("test_data\\pattern.txt.tmp")
defer patternFile.Close()
pattern, _ := graph.NewPatternGraph(patternFile)
subGraphFile0, _ := os.Open("test_data\\subgraph.json")
subGraphFile1, _ := os.Open("test_data\\subgraph.json")
defer subGraphFile0.Close()
defer subGraphFile1.Close()
partitionFile0, _ := os.Open("test_data\\partition.json")
partitionFile1, _ := os.Open("test_data\\partition.json")
defer partitionFile0.Close()
defer partitionFile1.Close()
g0, err1 := graph.NewGraphFromJSON(subGraphFile0, partitionFile0, "0")
if err1 != nil {
log.Fatal(err1)
}
g1, err2 := graph.NewGraphFromJSON(subGraphFile1, partitionFile1, "1")
if err2 != nil {
log.Fatal(err2)
}
sim0 := make(map[graph.ID]algorithm.Set)
sim1 := make(map[graph.ID]algorithm.Set)
pre0, post0 := algorithm.GeneratePrePostFISet(g0)
pre1, post1 := algorithm.GeneratePrePostFISet(g1)
for v, preSet := range pre0 {
fmt.Printf("pre[%v]:", v)
for s := range preSet {
fmt.Printf(" %v", s)
}
fmt.Printf("\n")
}
ok0, message0, _, _, _, _, _ := algorithm.GraphSim_PEVal(g0, pattern, sim0, pre0, post0)
ok1, message1, _, _, _, _, _ := algorithm.GraphSim_PEVal(g1, pattern, sim1, pre1, post1)
for u, sim := range sim0 {
fmt.Printf("sim0[%v]:", u)
for v := range sim {
fmt.Printf(" %v", v)
}
fmt.Printf("\n")
}
fmt.Println(ok0)
for partitionId, message := range message0 {
fmt.Printf("send to partition %v:", partitionId)
for _, m := range message {
fmt.Printf(" (%v, %v)", m.PatternNode, m.DataNode)
}
fmt.Printf("\n")
}
for u, sim := range sim1 {
fmt.Printf("sim1[%v]:", u)
for v := range sim {
fmt.Printf(" %v", v)
}
fmt.Printf("\n")
}
fmt.Println(ok1)
for partitionId, message := range message1 {
fmt.Printf("send to partition %v:", partitionId)
for _, m := range message {
fmt.Printf(" (%v, %v)", m.PatternNode, m.DataNode)
}
fmt.Printf("\n")
}
var tmp0, tmp1 map[int][]*algorithm.SimPair
for ok0 || ok1 {
ok0, tmp0, _, _, _, _, _, _, _, _ = algorithm.GraphSim_IncEval(g0, pattern, sim0, pre0, post0, message1[0])
ok1, tmp1, _, _, _, _, _, _, _, _ = algorithm.GraphSim_IncEval(g1, pattern, sim1, pre1, post1, message0[1])
message0 = tmp0
message1 = tmp1
}
for u, sim := range sim0 {
fmt.Printf("sim0[%v]:", u)
for v := range sim {
fmt.Printf(" %v", v)
}
fmt.Printf("\n")
}
for u, sim := range sim1 {
fmt.Printf("sim1[%v]:", u)
for v := range sim {
fmt.Printf(" %v", v)
}
fmt.Printf("\n")
}
fmt.Println("finish")
}