GitHub - aio-arch/graphlib: Topological sort lib,Sorting and pruning of DAG graphs. (original) (raw)

A Topological sort lib.

Sorting and pruning of DAG graphs.

import "github.com/aio-arch/graphlib"

// New A graph

// for string type
g1 := graphlib.NewGraph[string]()

// for int type
g2 := graphlib.NewGraph[int]()

// for add node and add edge
g1.AddNode("A1")
g1.AddNode("B2")
g1.AddEdge("A1", "B2") // edge: A1 -> B2

// for add mulit edge,add node inline
g2.Add(10, 1, 9)    // edge: 1 -> 10 and 9 -> 10
g2.Add(100, 10, 90) // edge: 10 -> 100 and 90 -> 100

// topological order
topo, err := graphlib.TopologicalOrder(g1)
if err != nil {
    fmt.Println(err.Error())
}
fmt.Printf("Topological Order:%v\n", topo)

// topological prune
g3, err := graphlib.TopologicalPrune(g2, []int{10, 90})
if err != nil {
    fmt.Println(err.Error())
}
_ = g3