1
+ import test from 'ava' ;
1
2
2
3
var check = function ( key , alg , callback ) {
3
4
test ( key , function ( assert ) {
@@ -10,98 +11,98 @@ var tests = {
10
11
11
12
test10_empty : function ( alg ) {
12
13
// empty input graph
13
- deepEqual ( alg ( [ ] ) , [ ] ) ;
14
+ t . deepEqual ( alg ( [ ] ) , [ ] ) ;
14
15
} ,
15
16
test11_singleedge : function ( alg ) {
16
17
// single edge
17
- deepEqual ( alg ( [ [ 0 , 1 , 1 ] ] ) , [ 1 , 0 ] ) ;
18
+ t . deepEqual ( alg ( [ [ 0 , 1 , 1 ] ] ) , [ 1 , 0 ] ) ;
18
19
} ,
19
20
20
21
test12 : function ( alg ) {
21
- deepEqual ( alg ( [ [ 1 , 2 , 10 ] , [ 2 , 3 , 11 ] ] ) , [ - 1 , - 1 , 3 , 2 ] ) ;
22
+ t . deepEqual ( alg ( [ [ 1 , 2 , 10 ] , [ 2 , 3 , 11 ] ] ) , [ - 1 , - 1 , 3 , 2 ] ) ;
22
23
} ,
23
24
24
25
test13 : function ( alg ) {
25
- deepEqual ( alg ( [ [ 1 , 2 , 5 ] , [ 2 , 3 , 11 ] , [ 3 , 4 , 5 ] ] ) , [ - 1 , - 1 , 3 , 2 , - 1 ] ) ;
26
+ t . deepEqual ( alg ( [ [ 1 , 2 , 5 ] , [ 2 , 3 , 11 ] , [ 3 , 4 , 5 ] ] ) , [ - 1 , - 1 , 3 , 2 , - 1 ] ) ;
26
27
} ,
27
28
28
29
test14_maxcard : function ( alg ) {
29
30
// maximum cardinality
30
- deepEqual ( alg ( [ [ 1 , 2 , 5 ] , [ 2 , 3 , 11 ] , [ 3 , 4 , 5 ] ] , true ) , [ - 1 , 2 , 1 , 4 , 3 ] ) ;
31
+ t . deepEqual ( alg ( [ [ 1 , 2 , 5 ] , [ 2 , 3 , 11 ] , [ 3 , 4 , 5 ] ] , true ) , [ - 1 , 2 , 1 , 4 , 3 ] ) ;
31
32
} ,
32
33
33
34
test15_float : function ( alg ) {
34
35
// floating point weigths
35
- deepEqual ( alg ( [ [ 1 , 2 , Math . PI ] , [ 2 , 3 , Math . E ] , [ 1 , 3 , 3.0 ] , [ 1 , 4 , Math . sqrt ( 2.0 ) ] ] ) , [ - 1 , 4 , 3 , 2 , 1 ] ) ;
36
+ t . deepEqual ( alg ( [ [ 1 , 2 , Math . PI ] , [ 2 , 3 , Math . E ] , [ 1 , 3 , 3.0 ] , [ 1 , 4 , Math . sqrt ( 2.0 ) ] ] ) , [ - 1 , 4 , 3 , 2 , 1 ] ) ;
36
37
} ,
37
38
38
39
test16_negative : function ( alg ) {
39
40
// negative weights
40
- deepEqual ( alg ( [ [ 1 , 2 , 2 ] , [ 1 , 3 , - 2 ] , [ 2 , 3 , 1 ] , [ 2 , 4 , - 1 ] , [ 3 , 4 , - 6 ] ] , false ) , [ - 1 , 2 , 1 , - 1 , - 1 ] ) ;
41
- deepEqual ( alg ( [ [ 1 , 2 , 2 ] , [ 1 , 3 , - 2 ] , [ 2 , 3 , 1 ] , [ 2 , 4 , - 1 ] , [ 3 , 4 , - 6 ] ] , true ) , [ - 1 , 3 , 4 , 1 , 2 ] ) ;
41
+ t . deepEqual ( alg ( [ [ 1 , 2 , 2 ] , [ 1 , 3 , - 2 ] , [ 2 , 3 , 1 ] , [ 2 , 4 , - 1 ] , [ 3 , 4 , - 6 ] ] , false ) , [ - 1 , 2 , 1 , - 1 , - 1 ] ) ;
42
+ t . deepEqual ( alg ( [ [ 1 , 2 , 2 ] , [ 1 , 3 , - 2 ] , [ 2 , 3 , 1 ] , [ 2 , 4 , - 1 ] , [ 3 , 4 , - 6 ] ] , true ) , [ - 1 , 3 , 4 , 1 , 2 ] ) ;
42
43
} ,
43
44
44
45
test20_sblossom : function ( alg ) {
45
46
// create S-blossom and use it for augmentation
46
- deepEqual ( alg ( [ [ 1 , 2 , 8 ] , [ 1 , 3 , 9 ] , [ 2 , 3 , 10 ] , [ 3 , 4 , 7 ] ] ) , [ - 1 , 2 , 1 , 4 , 3 ] ) ;
47
- deepEqual ( alg ( [ [ 1 , 2 , 8 ] , [ 1 , 3 , 9 ] , [ 2 , 3 , 10 ] , [ 3 , 4 , 7 ] , [ 1 , 6 , 5 ] , [ 4 , 5 , 6 ] ] ) , [ - 1 , 6 , 3 , 2 , 5 , 4 , 1 ] ) ;
47
+ t . deepEqual ( alg ( [ [ 1 , 2 , 8 ] , [ 1 , 3 , 9 ] , [ 2 , 3 , 10 ] , [ 3 , 4 , 7 ] ] ) , [ - 1 , 2 , 1 , 4 , 3 ] ) ;
48
+ t . deepEqual ( alg ( [ [ 1 , 2 , 8 ] , [ 1 , 3 , 9 ] , [ 2 , 3 , 10 ] , [ 3 , 4 , 7 ] , [ 1 , 6 , 5 ] , [ 4 , 5 , 6 ] ] ) , [ - 1 , 6 , 3 , 2 , 5 , 4 , 1 ] ) ;
48
49
} ,
49
50
50
51
test21_tblossom : function ( alg ) {
51
52
// create S-blossom, relabel as T-blossom, use for augmentation
52
- deepEqual ( alg ( [ [ 1 , 2 , 9 ] , [ 1 , 3 , 8 ] , [ 2 , 3 , 10 ] , [ 1 , 4 , 5 ] , [ 4 , 5 , 4 ] , [ 1 , 6 , 3 ] ] ) , [ - 1 , 6 , 3 , 2 , 5 , 4 , 1 ] ) ;
53
- deepEqual ( alg ( [ [ 1 , 2 , 9 ] , [ 1 , 3 , 8 ] , [ 2 , 3 , 10 ] , [ 1 , 4 , 5 ] , [ 4 , 5 , 3 ] , [ 1 , 6 , 4 ] ] ) , [ - 1 , 6 , 3 , 2 , 5 , 4 , 1 ] ) ;
54
- deepEqual ( alg ( [ [ 1 , 2 , 9 ] , [ 1 , 3 , 8 ] , [ 2 , 3 , 10 ] , [ 1 , 4 , 5 ] , [ 4 , 5 , 3 ] , [ 3 , 6 , 4 ] ] ) , [ - 1 , 2 , 1 , 6 , 5 , 4 , 3 ] ) ;
53
+ t . deepEqual ( alg ( [ [ 1 , 2 , 9 ] , [ 1 , 3 , 8 ] , [ 2 , 3 , 10 ] , [ 1 , 4 , 5 ] , [ 4 , 5 , 4 ] , [ 1 , 6 , 3 ] ] ) , [ - 1 , 6 , 3 , 2 , 5 , 4 , 1 ] ) ;
54
+ t . deepEqual ( alg ( [ [ 1 , 2 , 9 ] , [ 1 , 3 , 8 ] , [ 2 , 3 , 10 ] , [ 1 , 4 , 5 ] , [ 4 , 5 , 3 ] , [ 1 , 6 , 4 ] ] ) , [ - 1 , 6 , 3 , 2 , 5 , 4 , 1 ] ) ;
55
+ t . deepEqual ( alg ( [ [ 1 , 2 , 9 ] , [ 1 , 3 , 8 ] , [ 2 , 3 , 10 ] , [ 1 , 4 , 5 ] , [ 4 , 5 , 3 ] , [ 3 , 6 , 4 ] ] ) , [ - 1 , 2 , 1 , 6 , 5 , 4 , 3 ] ) ;
55
56
} ,
56
57
57
58
test22_s_nest : function ( alg ) {
58
59
// create nested S-blossom, use for augmentation
59
- deepEqual ( alg ( [ [ 1 , 2 , 9 ] , [ 1 , 3 , 9 ] , [ 2 , 3 , 10 ] , [ 2 , 4 , 8 ] , [ 3 , 5 , 8 ] , [ 4 , 5 , 10 ] , [ 5 , 6 , 6 ] ] ) , [ - 1 , 3 , 4 , 1 , 2 , 6 , 5 ] ) ;
60
+ t . deepEqual ( alg ( [ [ 1 , 2 , 9 ] , [ 1 , 3 , 9 ] , [ 2 , 3 , 10 ] , [ 2 , 4 , 8 ] , [ 3 , 5 , 8 ] , [ 4 , 5 , 10 ] , [ 5 , 6 , 6 ] ] ) , [ - 1 , 3 , 4 , 1 , 2 , 6 , 5 ] ) ;
60
61
} ,
61
62
62
63
test23_s_relabel_nest : function ( alg ) {
63
64
// create S-blossom, relabel as S, include in nested S-blossom
64
- deepEqual ( alg ( [ [ 1 , 2 , 10 ] , [ 1 , 7 , 10 ] , [ 2 , 3 , 12 ] , [ 3 , 4 , 20 ] , [ 3 , 5 , 20 ] , [ 4 , 5 , 25 ] , [ 5 , 6 , 10 ] , [ 6 , 7 , 10 ] , [ 7 , 8 , 8 ] ] ) , [ - 1 , 2 , 1 , 4 , 3 , 6 , 5 , 8 , 7 ] ) ;
65
+ t . deepEqual ( alg ( [ [ 1 , 2 , 10 ] , [ 1 , 7 , 10 ] , [ 2 , 3 , 12 ] , [ 3 , 4 , 20 ] , [ 3 , 5 , 20 ] , [ 4 , 5 , 25 ] , [ 5 , 6 , 10 ] , [ 6 , 7 , 10 ] , [ 7 , 8 , 8 ] ] ) , [ - 1 , 2 , 1 , 4 , 3 , 6 , 5 , 8 , 7 ] ) ;
65
66
} ,
66
67
67
68
test24_s_nest_expand : function ( alg ) {
68
69
// create nested S-blossom, augment, expand recursively
69
- deepEqual ( alg ( [ [ 1 , 2 , 8 ] , [ 1 , 3 , 8 ] , [ 2 , 3 , 10 ] , [ 2 , 4 , 12 ] , [ 3 , 5 , 12 ] , [ 4 , 5 , 14 ] , [ 4 , 6 , 12 ] , [ 5 , 7 , 12 ] , [ 6 , 7 , 14 ] , [ 7 , 8 , 12 ] ] ) , [ - 1 , 2 , 1 , 5 , 6 , 3 , 4 , 8 , 7 ] ) ;
70
+ t . deepEqual ( alg ( [ [ 1 , 2 , 8 ] , [ 1 , 3 , 8 ] , [ 2 , 3 , 10 ] , [ 2 , 4 , 12 ] , [ 3 , 5 , 12 ] , [ 4 , 5 , 14 ] , [ 4 , 6 , 12 ] , [ 5 , 7 , 12 ] , [ 6 , 7 , 14 ] , [ 7 , 8 , 12 ] ] ) , [ - 1 , 2 , 1 , 5 , 6 , 3 , 4 , 8 , 7 ] ) ;
70
71
} ,
71
72
72
73
test25_s_t_expand : function ( alg ) {
73
74
// create S-blossom, relabel as T, expand
74
- deepEqual ( alg ( [ [ 1 , 2 , 23 ] , [ 1 , 5 , 22 ] , [ 1 , 6 , 15 ] , [ 2 , 3 , 25 ] , [ 3 , 4 , 22 ] , [ 4 , 5 , 25 ] , [ 4 , 8 , 14 ] , [ 5 , 7 , 13 ] ] ) , [ - 1 , 6 , 3 , 2 , 8 , 7 , 1 , 5 , 4 ] ) ;
75
+ t . deepEqual ( alg ( [ [ 1 , 2 , 23 ] , [ 1 , 5 , 22 ] , [ 1 , 6 , 15 ] , [ 2 , 3 , 25 ] , [ 3 , 4 , 22 ] , [ 4 , 5 , 25 ] , [ 4 , 8 , 14 ] , [ 5 , 7 , 13 ] ] ) , [ - 1 , 6 , 3 , 2 , 8 , 7 , 1 , 5 , 4 ] ) ;
75
76
} ,
76
77
77
78
test26_s_nest_t_expand : function ( alg ) {
78
79
// create nested S-blossom, relabel as T, expand
79
- deepEqual ( alg ( [ [ 1 , 2 , 19 ] , [ 1 , 3 , 20 ] , [ 1 , 8 , 8 ] , [ 2 , 3 , 25 ] , [ 2 , 4 , 18 ] , [ 3 , 5 , 18 ] , [ 4 , 5 , 13 ] , [ 4 , 7 , 7 ] , [ 5 , 6 , 7 ] ] ) , [ - 1 , 8 , 3 , 2 , 7 , 6 , 5 , 4 , 1 ] ) ;
80
+ t . deepEqual ( alg ( [ [ 1 , 2 , 19 ] , [ 1 , 3 , 20 ] , [ 1 , 8 , 8 ] , [ 2 , 3 , 25 ] , [ 2 , 4 , 18 ] , [ 3 , 5 , 18 ] , [ 4 , 5 , 13 ] , [ 4 , 7 , 7 ] , [ 5 , 6 , 7 ] ] ) , [ - 1 , 8 , 3 , 2 , 7 , 6 , 5 , 4 , 1 ] ) ;
80
81
} ,
81
82
82
83
test30_tnasty_expand : function ( alg ) {
83
84
// create blossom, relabel as T in more than one way, expand, augment
84
- deepEqual ( alg ( [ [ 1 , 2 , 45 ] , [ 1 , 5 , 45 ] , [ 2 , 3 , 50 ] , [ 3 , 4 , 45 ] , [ 4 , 5 , 50 ] , [ 1 , 6 , 30 ] , [ 3 , 9 , 35 ] , [ 4 , 8 , 35 ] , [ 5 , 7 , 26 ] , [ 9 , 10 , 5 ] ] ) , [ - 1 , 6 , 3 , 2 , 8 , 7 , 1 , 5 , 4 , 10 , 9 ] ) ;
85
+ t . deepEqual ( alg ( [ [ 1 , 2 , 45 ] , [ 1 , 5 , 45 ] , [ 2 , 3 , 50 ] , [ 3 , 4 , 45 ] , [ 4 , 5 , 50 ] , [ 1 , 6 , 30 ] , [ 3 , 9 , 35 ] , [ 4 , 8 , 35 ] , [ 5 , 7 , 26 ] , [ 9 , 10 , 5 ] ] ) , [ - 1 , 6 , 3 , 2 , 8 , 7 , 1 , 5 , 4 , 10 , 9 ] ) ;
85
86
} ,
86
87
87
88
test31_tnasty2_expand : function ( alg ) {
88
89
// again but slightly different
89
- deepEqual ( alg ( [ [ 1 , 2 , 45 ] , [ 1 , 5 , 45 ] , [ 2 , 3 , 50 ] , [ 3 , 4 , 45 ] , [ 4 , 5 , 50 ] , [ 1 , 6 , 30 ] , [ 3 , 9 , 35 ] , [ 4 , 8 , 26 ] , [ 5 , 7 , 40 ] , [ 9 , 10 , 5 ] ] ) , [ - 1 , 6 , 3 , 2 , 8 , 7 , 1 , 5 , 4 , 10 , 9 ] ) ;
90
+ t . deepEqual ( alg ( [ [ 1 , 2 , 45 ] , [ 1 , 5 , 45 ] , [ 2 , 3 , 50 ] , [ 3 , 4 , 45 ] , [ 4 , 5 , 50 ] , [ 1 , 6 , 30 ] , [ 3 , 9 , 35 ] , [ 4 , 8 , 26 ] , [ 5 , 7 , 40 ] , [ 9 , 10 , 5 ] ] ) , [ - 1 , 6 , 3 , 2 , 8 , 7 , 1 , 5 , 4 , 10 , 9 ] ) ;
90
91
} ,
91
92
92
93
test32_t_expand_leastslack : function ( alg ) {
93
94
// create blossom, relabel as T, expand such that a new least-slack S-to-free edge is produced, augment
94
- deepEqual ( alg ( [ [ 1 , 2 , 45 ] , [ 1 , 5 , 45 ] , [ 2 , 3 , 50 ] , [ 3 , 4 , 45 ] , [ 4 , 5 , 50 ] , [ 1 , 6 , 30 ] , [ 3 , 9 , 35 ] , [ 4 , 8 , 28 ] , [ 5 , 7 , 26 ] , [ 9 , 10 , 5 ] ] ) , [ - 1 , 6 , 3 , 2 , 8 , 7 , 1 , 5 , 4 , 10 , 9 ] ) ;
95
+ t . deepEqual ( alg ( [ [ 1 , 2 , 45 ] , [ 1 , 5 , 45 ] , [ 2 , 3 , 50 ] , [ 3 , 4 , 45 ] , [ 4 , 5 , 50 ] , [ 1 , 6 , 30 ] , [ 3 , 9 , 35 ] , [ 4 , 8 , 28 ] , [ 5 , 7 , 26 ] , [ 9 , 10 , 5 ] ] ) , [ - 1 , 6 , 3 , 2 , 8 , 7 , 1 , 5 , 4 , 10 , 9 ] ) ;
95
96
} ,
96
97
97
98
test33_nest_tnasty_expand : function ( alg ) {
98
99
// create nested blossom, relabel as T in more than one way, expand outer blossom such that inner blossom ends up on an augmenting path
99
- deepEqual ( alg ( [ [ 1 , 2 , 45 ] , [ 1 , 7 , 45 ] , [ 2 , 3 , 50 ] , [ 3 , 4 , 45 ] , [ 4 , 5 , 95 ] , [ 4 , 6 , 94 ] , [ 5 , 6 , 94 ] , [ 6 , 7 , 50 ] , [ 1 , 8 , 30 ] , [ 3 , 11 , 35 ] , [ 5 , 9 , 36 ] , [ 7 , 10 , 26 ] , [ 11 , 12 , 5 ] ] ) , [ - 1 , 8 , 3 , 2 , 6 , 9 , 4 , 10 , 1 , 5 , 7 , 12 , 11 ] ) ;
100
+ t . deepEqual ( alg ( [ [ 1 , 2 , 45 ] , [ 1 , 7 , 45 ] , [ 2 , 3 , 50 ] , [ 3 , 4 , 45 ] , [ 4 , 5 , 95 ] , [ 4 , 6 , 94 ] , [ 5 , 6 , 94 ] , [ 6 , 7 , 50 ] , [ 1 , 8 , 30 ] , [ 3 , 11 , 35 ] , [ 5 , 9 , 36 ] , [ 7 , 10 , 26 ] , [ 11 , 12 , 5 ] ] ) , [ - 1 , 8 , 3 , 2 , 6 , 9 , 4 , 10 , 1 , 5 , 7 , 12 , 11 ] ) ;
100
101
} ,
101
102
102
103
test34_nest_relabel_expand : function ( alg ) {
103
104
// create nested S-blossom, relabel as S, expand recursively
104
- deepEqual ( alg ( [ [ 1 , 2 , 40 ] , [ 1 , 3 , 40 ] , [ 2 , 3 , 60 ] , [ 2 , 4 , 55 ] , [ 3 , 5 , 55 ] , [ 4 , 5 , 50 ] , [ 1 , 8 , 15 ] , [ 5 , 7 , 30 ] , [ 7 , 6 , 10 ] , [ 8 , 10 , 10 ] , [ 4 , 9 , 30 ] ] ) , [ - 1 , 2 , 1 , 5 , 9 , 3 , 7 , 6 , 10 , 4 , 8 ] ) ;
105
+ t . deepEqual ( alg ( [ [ 1 , 2 , 40 ] , [ 1 , 3 , 40 ] , [ 2 , 3 , 60 ] , [ 2 , 4 , 55 ] , [ 3 , 5 , 55 ] , [ 4 , 5 , 50 ] , [ 1 , 8 , 15 ] , [ 5 , 7 , 30 ] , [ 7 , 6 , 10 ] , [ 8 , 10 , 10 ] , [ 4 , 9 , 30 ] ] ) , [ - 1 , 2 , 1 , 5 , 9 , 3 , 7 , 6 , 10 , 4 , 8 ] ) ;
105
106
}
106
107
} ;
107
108
0 commit comments