Documentation ¶
Index ¶
- type Edge
- type Graph
- func (pg *Graph[NodeType, EdgeType]) AddEdge(source, target NodeType, edge EdgeType)
- func (pg *Graph[NodeType, EdgeType]) AddNode(newnode NodeType) error
- func (pg Graph[NodeType, EdgeType]) AdjacencyMap() map[NodeType][]NodeType
- func (pg *Graph[NodeType, EdgeType]) DeleteEdge(source, target NodeType)
- func (pg *Graph[NodeType, EdgeType]) DeleteNode(find NodeType) error
- func (pg Graph[NodeType, EdgeType]) EndingNodes() []NodeType
- func (pg *Graph[NodeType, EdgeType]) GetEdge(source, target NodeType) (EdgeType, bool)
- func (pg *Graph[NodeType, EdgeType]) GetEdgeData(source, target NodeType, key string) any
- func (pg *Graph[NodeType, EdgeType]) GetNodeData(node NodeType, key string) any
- func (pg *Graph[NodeType, EdgeType]) HasNode(find NodeType) (found bool)
- func (pg Graph[NodeType, EdgeType]) Islands() []NodeType
- func (pg *Graph[NodeType, EdgeType]) IterateEdges(ef func(NodeType, NodeType, EdgeType) bool)
- func (pg *Graph[NodeType, EdgeType]) Merge(npg Graph[NodeType, EdgeType])
- func (pg *Graph[NodeType, EdgeType]) Nodes() map[NodeType]map[string]any
- func (pg Graph[NodeType, EdgeType]) Order() int
- func (pg Graph[NodeType, EdgeType]) PredecessorMap() map[NodeType][]NodeType
- func (pg Graph[NodeType, EdgeType]) SCC() [][]NodeType
- func (pg *Graph[NodeType, EdgeType]) SetEdgeData(source, target NodeType, key string, value any) error
- func (pg *Graph[NodeType, EdgeType]) SetNodeData(node NodeType, key string, value any) error
- func (pg Graph[NodeType, EdgeType]) Size() int
- func (pg Graph[NodeType, EdgeType]) StartingNodes() []NodeType
- func (pg Graph[NodeType, EdgeType]) TopologicalSort() ([]NodeType, error)
- func (pg Graph[NodeType, EdgeType]) Transpose() Graph[NodeType, EdgeType]
- type GraphEdgeInterface
- type GraphNodeInterface
- type GraphNodePairEdge
- type NodePair
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Edge ¶
type Edge[EdgeType GraphEdgeInterface[EdgeType]] struct { Edge EdgeType Data map[string]any }
type Graph ¶
type Graph[NodeType GraphNodeInterface[NodeType], EdgeType GraphEdgeInterface[EdgeType]] struct { // contains filtered or unexported fields }
func NewGraph ¶
func NewGraph[NodeType GraphNodeInterface[NodeType], EdgeType GraphEdgeInterface[EdgeType]]() Graph[NodeType, EdgeType]
func (*Graph[NodeType, EdgeType]) AddEdge ¶
func (pg *Graph[NodeType, EdgeType]) AddEdge(source, target NodeType, edge EdgeType)
AddEdge adds an edge between two nodes, and ensures that both nodes exist
func (Graph[NodeType, EdgeType]) AdjacencyMap ¶
func (pg Graph[NodeType, EdgeType]) AdjacencyMap() map[NodeType][]NodeType
AdjacencyMap returns the adjacency map
func (*Graph[NodeType, EdgeType]) DeleteEdge ¶
func (pg *Graph[NodeType, EdgeType]) DeleteEdge(source, target NodeType)
DeleteEdge removes an edge
func (*Graph[NodeType, EdgeType]) DeleteNode ¶
func (Graph[NodeType, EdgeType]) EndingNodes ¶
func (pg Graph[NodeType, EdgeType]) EndingNodes() []NodeType
EndingNodes returns the ending nodes
func (*Graph[NodeType, EdgeType]) GetEdgeData ¶
func (*Graph[NodeType, EdgeType]) GetNodeData ¶
func (Graph[NodeType, EdgeType]) Islands ¶
func (pg Graph[NodeType, EdgeType]) Islands() []NodeType
Islands returns the island nodes that are not connected to anything else
func (*Graph[NodeType, EdgeType]) IterateEdges ¶
func (Graph[NodeType, EdgeType]) PredecessorMap ¶
func (pg Graph[NodeType, EdgeType]) PredecessorMap() map[NodeType][]NodeType
PredecessorMap returns the predecessor map
func (Graph[NodeType, EdgeType]) SCC ¶
func (pg Graph[NodeType, EdgeType]) SCC() [][]NodeType
SCC returns the strongly connected components
func (*Graph[NodeType, EdgeType]) SetEdgeData ¶
func (pg *Graph[NodeType, EdgeType]) SetEdgeData(source, target NodeType, key string, value any) error
Sets a custom value on a node, adding it to the graph if it's not already there
func (*Graph[NodeType, EdgeType]) SetNodeData ¶
Sets a custom value on a node, adding it to the graph if it's not already there
func (Graph[NodeType, EdgeType]) StartingNodes ¶
func (pg Graph[NodeType, EdgeType]) StartingNodes() []NodeType
StartingNodes returns the starting nodes
func (Graph[NodeType, EdgeType]) TopologicalSort ¶
TopologicalSort returns the topological sort
type GraphEdgeInterface ¶
type GraphEdgeInterface[ET any] interface { Merge(ET) ET }
type GraphNodeInterface ¶
type GraphNodeInterface[NT any] interface { comparable }
type GraphNodePairEdge ¶
type GraphNodePairEdge[NT comparable, ET any] struct { Source, Target NT Edge ET }
type NodePair ¶
type NodePair[NodeType GraphNodeInterface[NodeType]] struct { Source NodeType Target NodeType }
Click to show internal directories.
Click to hide internal directories.