graph-builder

Форк
0

2 года назад
2 года назад
2 года назад
2 года назад
2 года назад
2 года назад
2 года назад
README.md

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 - в обратном случае.

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.