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
| package graph
|
| import "testing"
|
| func TestRWRConvergenceAndSeed(t *testing.T) {
| // 图: A-B-C 链 + D 孤立
| adj := map[int64][]AdjEdge{
| 1: {{2, 1}}, 2: {{1, 1}, {3, 1}}, 3: {{2, 1}}, 4: {{}},
| }
| r := RWR([]int64{1}, adj, 0.25)
| if r[1] <= 0 {
| t.Fatal("种子节点质量必须 > 0")
| }
| // 与种子连通的质量应高于孤立节点
| if r[4] >= r[3] {
| t.Errorf("孤立节点质量不应高于连通节点: r4=%f r3=%f", r[4], r[3])
| }
| // 归一化 [0,1]
| for _, v := range r {
| if v < 0 || v > 1 {
| t.Errorf("质量未归一化: %f", v)
| }
| }
| }
|
| func TestRWRWeightedByProvenance(t *testing.T) {
| // A -exact-> B, A -fuzzy-> C:B 的质量应高于 C
| adj := map[int64][]AdjEdge{
| 1: {{2, 1.0}, {3, 0.5}},
| 2: {{1, 1.0}},
| 3: {{1, 0.5}},
| }
| r := RWR([]int64{1}, adj, 0.25)
| if r[2] <= r[3] {
| t.Errorf("exact 边节点质量应高于 fuzzy: r2=%f r3=%f", r[2], r[3])
| }
| }
|
|