Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrVertexNotFound represents vertex not found. ErrVertexNotFound = errors.New("vertex not found") // ErrVertexAlreadyExists represents vertex already exists. ErrVertexAlreadyExists = errors.New("vertex already exists") // ErrParnetAlreadyExists represents parent of vertex already exists. ErrParnetAlreadyExists = errors.New("parent of vertex already exists") // ErrChildAlreadyExists represents child of vertex already exists. ErrChildAlreadyExists = errors.New("child of vertex already exists") // ErrCycleBetweenVertices represents cycle between vertices. ErrCycleBetweenVertices = errors.New("cycle between vertices") )
Functions ¶
This section is empty.
Types ¶
type DAG ¶
type DAG[T comparable] interface { // AddVertex adds vertex to graph. AddVertex(id string, value T) error // DeleteVertex deletes vertex graph. DeleteVertex(id string) // GetVertex gets vertex from graph. GetVertex(id string) (*Vertex[T], error) // GetVertices returns map of vertices. GetVertices() map[string]*Vertex[T] // GetRandomVertices returns random map of vertices. GetRandomVertices(n uint) []*Vertex[T] // GetVertexKeys returns keys of vertices. GetVertexKeys() []string // GetSourceVertices returns source vertices. GetSourceVertices() []*Vertex[T] // GetSinkVertices returns sink vertices. GetSinkVertices() []*Vertex[T] // VertexCount returns count of vertices. VertexCount() int // AddEdge adds edge between two vertices. AddEdge(fromVertexID, toVertexID string) error // DeleteEdge deletes edge between two vertices. DeleteEdge(fromVertexID, toVertexID string) error // CanAddEdge finds whether there are circles through depth-first search. CanAddEdge(fromVertexID, toVertexID string) bool }
DAG is the interface used for directed acyclic graph.
type Vertex ¶
type Vertex[T comparable] struct { ID string Value T Parents set.SafeSet[*Vertex[T]] Children set.SafeSet[*Vertex[T]] }
Vertex is a vertex of the directed acyclic graph.
func NewVertex ¶
func NewVertex[T comparable](id string, value T) *Vertex[T]
New returns a new Vertex instance.
func (*Vertex[T]) DeleteInEdges ¶
func (v *Vertex[T]) DeleteInEdges()
DeleteInEdges deletes inedges of vertex.
func (*Vertex[T]) DeleteOutEdges ¶
func (v *Vertex[T]) DeleteOutEdges()
DeleteOutEdges deletes outedges of vertex.
Click to show internal directories.
Click to hide internal directories.