Documentation
¶
Overview ¶
Package graph6 implements graphs specified by graph6 strings.
Index ¶
- func IsValid(g Graph) bool
- type Graph
- func (g Graph) Edge(uid, vid int64) graph.Edge
- func (g Graph) EdgeBetween(xid, yid int64) graph.Edge
- func (g Graph) From(id int64) graph.Nodes
- func (g Graph) GoString() string
- func (g Graph) HasEdgeBetween(xid, yid int64) bool
- func (g Graph) Node(id int64) graph.Node
- func (g Graph) Nodes() graph.Nodes
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Graph ¶
type Graph string
Graph is a graph6-represented undirected graph.
See https://users.cecs.anu.edu.au/~bdm/data/formats.txt for details and https://hog.grinvin.org/ for a source of interesting graphs in graph6 format.
Example ¶
package main
import (
"fmt"
"github.com/gopherd/gonum/graph"
"github.com/gopherd/gonum/graph/encoding/graph6"
)
func main() {
// Construct a graph from HOG graph 32194.
// https://hog.grinvin.org/ViewGraphInfo.action?id=32194
g := graph6.Graph("H@BQPS^")
// Get the nodes of the graph and print
// an adjacency list.
nodes := g.Nodes()
fmt.Printf("Number of nodes: %d\n", nodes.Len())
fmt.Println("Adjacency:")
for nodes.Next() {
fmt.Printf("\t%d: %d\n", nodes.Node().ID(), graph.NodesOf(g.From(nodes.Node().ID())))
}
}
Output: Number of nodes: 9 Adjacency: 0: [5] 1: [5 6] 2: [3 7] 3: [2 5 8] 4: [6 7 8] 5: [0 1 3 8] 6: [1 4 7 8] 7: [2 4 6 8] 8: [3 4 5 6 7]
func Encode ¶
Encode returns a graph6 encoding of the topology of the given graph using a lexical ordering of the nodes by ID to map them to [0, n).
func (Graph) Edge ¶
Edge returns the edge from u to v, with IDs uid and vid, if such an edge exists and nil otherwise. The node v must be directly reachable from u as defined by the From method.
func (Graph) EdgeBetween ¶
EdgeBetween returns the edge between nodes x and y with IDs xid and yid.
func (Graph) From ¶
From returns all nodes that can be reached directly from the node with the given ID.
func (Graph) HasEdgeBetween ¶
HasEdgeBetween returns whether an edge exists between nodes with IDs xid and yid without considering direction.