github.com/gopherd/gonum@v0.0.4/graph/graphs/gen/gen_example_test.go (about) 1 // Copyright ©2021 The Gonum Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package gen_test 6 7 import ( 8 "fmt" 9 "log" 10 11 "github.com/gopherd/gonum/graph" 12 "github.com/gopherd/gonum/graph/encoding/dot" 13 "github.com/gopherd/gonum/graph/graphs/gen" 14 "github.com/gopherd/gonum/graph/simple" 15 ) 16 17 func ExampleStar_undirectedRange() { 18 dst := simple.NewUndirectedGraph() 19 gen.Star(dst, 0, gen.IDRange{First: 1, Last: 6}) 20 b, err := dot.Marshal(dst, "star", "", "\t") 21 if err != nil { 22 log.Fatal(err) 23 } 24 fmt.Printf("%s\n", b) 25 26 // Output: 27 // strict graph star { 28 // // Node definitions. 29 // 0; 30 // 1; 31 // 2; 32 // 3; 33 // 4; 34 // 5; 35 // 6; 36 // 37 // // Edge definitions. 38 // 0 -- 1; 39 // 0 -- 2; 40 // 0 -- 3; 41 // 0 -- 4; 42 // 0 -- 5; 43 // 0 -- 6; 44 // } 45 } 46 47 func ExampleWheel_directedRange() { 48 dst := simple.NewDirectedGraph() 49 gen.Wheel(dst, 0, gen.IDRange{First: 1, Last: 6}) 50 b, err := dot.Marshal(dst, "wheel", "", "\t") 51 if err != nil { 52 log.Fatal(err) 53 } 54 fmt.Printf("%s\n", b) 55 56 // Output: 57 // strict digraph wheel { 58 // // Node definitions. 59 // 0; 60 // 1; 61 // 2; 62 // 3; 63 // 4; 64 // 5; 65 // 6; 66 // 67 // // Edge definitions. 68 // 0 -> 1; 69 // 0 -> 2; 70 // 0 -> 3; 71 // 0 -> 4; 72 // 0 -> 5; 73 // 0 -> 6; 74 // 1 -> 2; 75 // 2 -> 3; 76 // 3 -> 4; 77 // 4 -> 5; 78 // 5 -> 6; 79 // 6 -> 1; 80 // } 81 } 82 83 func ExamplePath_directedSet() { 84 dst := simple.NewDirectedGraph() 85 gen.Path(dst, gen.IDSet{2, 4, 5, 9}) 86 b, err := dot.Marshal(dst, "path", "", "\t") 87 if err != nil { 88 log.Fatal(err) 89 } 90 fmt.Printf("%s\n", b) 91 92 // Output: 93 // strict digraph path { 94 // // Node definitions. 95 // 2; 96 // 4; 97 // 5; 98 // 9; 99 // 100 // // Edge definitions. 101 // 2 -> 4; 102 // 4 -> 5; 103 // 5 -> 9; 104 // } 105 } 106 107 func ExampleComplete_directedSet() { 108 dst := simple.NewDirectedGraph() 109 gen.Complete(dst, gen.IDSet{2, 4, 5, 9}) 110 b, err := dot.Marshal(dst, "complete", "", "\t") 111 if err != nil { 112 log.Fatal(err) 113 } 114 fmt.Printf("%s\n", b) 115 116 // Output: 117 // strict digraph complete { 118 // // Node definitions. 119 // 2; 120 // 4; 121 // 5; 122 // 9; 123 // 124 // // Edge definitions. 125 // 2 -> 4; 126 // 2 -> 5; 127 // 2 -> 9; 128 // 4 -> 5; 129 // 4 -> 9; 130 // 5 -> 9; 131 // } 132 } 133 134 // Bidirected allows bidirectional directed graph construction. 135 type Bidirected struct { 136 *simple.DirectedGraph 137 } 138 139 func (g Bidirected) SetEdge(e graph.Edge) { 140 g.DirectedGraph.SetEdge(e) 141 g.DirectedGraph.SetEdge(e.ReversedEdge()) 142 } 143 144 func ExampleComplete_biDirectedSet() { 145 dst := simple.NewDirectedGraph() 146 gen.Complete(Bidirected{dst}, gen.IDSet{2, 4, 5, 9}) 147 b, err := dot.Marshal(dst, "complete", "", "\t") 148 if err != nil { 149 log.Fatal(err) 150 } 151 fmt.Printf("%s\n", b) 152 153 // Output: 154 // strict digraph complete { 155 // // Node definitions. 156 // 2; 157 // 4; 158 // 5; 159 // 9; 160 // 161 // // Edge definitions. 162 // 2 -> 4; 163 // 2 -> 5; 164 // 2 -> 9; 165 // 4 -> 2; 166 // 4 -> 5; 167 // 4 -> 9; 168 // 5 -> 2; 169 // 5 -> 4; 170 // 5 -> 9; 171 // 9 -> 2; 172 // 9 -> 4; 173 // 9 -> 5; 174 // } 175 } 176 177 func ExampleComplete_undirectedSet() { 178 dst := simple.NewUndirectedGraph() 179 gen.Complete(dst, gen.IDSet{2, 4, 5, 9}) 180 b, err := dot.Marshal(dst, "complete", "", "\t") 181 if err != nil { 182 log.Fatal(err) 183 } 184 fmt.Printf("%s\n", b) 185 186 // Output: 187 // strict graph complete { 188 // // Node definitions. 189 // 2; 190 // 4; 191 // 5; 192 // 9; 193 // 194 // // Edge definitions. 195 // 2 -- 4; 196 // 2 -- 5; 197 // 2 -- 9; 198 // 4 -- 5; 199 // 4 -- 9; 200 // 5 -- 9; 201 // } 202 } 203 204 func ExampleTree_undirectedRange() { 205 dst := simple.NewUndirectedGraph() 206 gen.Tree(dst, 2, gen.IDRange{First: 0, Last: 14}) 207 b, err := dot.Marshal(dst, "full_binary_tree_undirected", "", "\t") 208 if err != nil { 209 log.Fatal(err) 210 } 211 fmt.Printf("%s\n", b) 212 213 // Output: 214 // strict graph full_binary_tree_undirected { 215 // // Node definitions. 216 // 0; 217 // 1; 218 // 2; 219 // 3; 220 // 4; 221 // 5; 222 // 6; 223 // 7; 224 // 8; 225 // 9; 226 // 10; 227 // 11; 228 // 12; 229 // 13; 230 // 14; 231 // 232 // // Edge definitions. 233 // 0 -- 1; 234 // 0 -- 2; 235 // 1 -- 3; 236 // 1 -- 4; 237 // 2 -- 5; 238 // 2 -- 6; 239 // 3 -- 7; 240 // 3 -- 8; 241 // 4 -- 9; 242 // 4 -- 10; 243 // 5 -- 11; 244 // 5 -- 12; 245 // 6 -- 13; 246 // 6 -- 14; 247 // } 248 }