Skip to content

mishhgun01/graph-builder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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