graph-builder
graph-builder - библиотека для работы с графами на языке Go.
Эта open-source библиотека предназначена для работы с графами и представляет из себя реализации основных алгоритмов
на графах, основные способы представления графов, а также конвертеры для создания этих представлений
из вида map[T]map[T]float64
- то есть заданный спиком смежности, где T - любой тип данных,
поддерживающий операцию сравнения. Пример задания графа:
package main
import ( "fmt" "graph-builder/graph")
func main() { graph1 := make(map[int]map[int]int) graph1[2] = map[int]int{} graph1[1] = map[int]int{2: 10, 3: 30, 4: 50, 5: 10} graph1[3] = map[int]int{5: 10} graph1[4] = map[int]int{2: 40, 3: 20} graph1[5] = map[int]int{1: 10, 3: 10, 4: 30} g := graph.New(graph1) // Метод - алгоритм Дейкстры для поиска минимальных путей из исходной вершины во все остальные вершины. res := g.Dijkstra(1, 3) for vert, w := range res { fmt.Println(vert, ":", w) }}
В некоторых методах используется функция как параметр, например:
func (g *AbstractGraph[T]) BFS(start T, compare func(want T) bool) ([]*Node[T], bool) { <some code>}
В данном случае м в метод мы передаём функцию сравнения, которая должна возвращать true - если элемент соответствует какому-то переданному значению, false - в обратном случае.
Языки
Go