graph

package
v0.0.0-...-f1573f2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 20, 2024 License: AGPL-3.0 Imports: 2 Imported by: 0

Documentation

Index

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]) AddNode

func (pg *Graph[NodeType, EdgeType]) AddNode(newnode NodeType) error

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 (pg *Graph[NodeType, EdgeType]) DeleteNode(find NodeType) error

func (Graph[NodeType, EdgeType]) EndingNodes

func (pg Graph[NodeType, EdgeType]) EndingNodes() []NodeType

EndingNodes returns the ending nodes

func (*Graph[NodeType, EdgeType]) GetEdge

func (pg *Graph[NodeType, EdgeType]) GetEdge(source, target NodeType) (EdgeType, bool)

GetEdge returns the edge between two nodes

func (*Graph[NodeType, EdgeType]) GetEdgeData

func (pg *Graph[NodeType, EdgeType]) GetEdgeData(source, target NodeType, key string) any

func (*Graph[NodeType, EdgeType]) GetNodeData

func (pg *Graph[NodeType, EdgeType]) GetNodeData(node NodeType, key string) any

func (*Graph[NodeType, EdgeType]) HasNode

func (pg *Graph[NodeType, EdgeType]) HasNode(find NodeType) (found bool)

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 (pg *Graph[NodeType, EdgeType]) IterateEdges(ef func(NodeType, NodeType, EdgeType) bool)

func (*Graph[NodeType, EdgeType]) Merge

func (pg *Graph[NodeType, EdgeType]) Merge(npg Graph[NodeType, EdgeType])

Merge combines two graphs

func (*Graph[NodeType, EdgeType]) Nodes

func (pg *Graph[NodeType, EdgeType]) Nodes() map[NodeType]map[string]any

func (Graph[NodeType, EdgeType]) Order

func (pg Graph[NodeType, EdgeType]) Order() int

Order returns the number of nodes in the graph.

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

func (pg *Graph[NodeType, EdgeType]) SetNodeData(node 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]) Size

func (pg Graph[NodeType, EdgeType]) Size() int

Size returns the number of edges in the graph.

func (Graph[NodeType, EdgeType]) StartingNodes

func (pg Graph[NodeType, EdgeType]) StartingNodes() []NodeType

StartingNodes returns the starting nodes

func (Graph[NodeType, EdgeType]) TopologicalSort

func (pg Graph[NodeType, EdgeType]) TopologicalSort() ([]NodeType, error)

TopologicalSort returns the topological sort

func (Graph[NodeType, EdgeType]) Transpose

func (pg Graph[NodeType, EdgeType]) Transpose() Graph[NodeType, EdgeType]

transpose transposes (reverses) a directed graph

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
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL