Использование Gonum для графовых алгоритмов в Go - PullRequest
0 голосов
/ 19 января 2019

Я новый программист на Го, только что закончил урок "Тур по Го" пару дней назад. Я хочу создать граф размером 150 x 120, а затем получить все граничные узлы для каждого узла и реализовать некоторые алгоритмы поиска в графе, такие как BFS и Dijkstra. Я нашел великолепную библиотеку под названием Gonum с пакетом graph , который выглядит многообещающим.

Моя проблема в том, что информации много, и я не знаю, с чего начать. Я надеялся, что будет какое-то учебное пособие, которое поможет мне начать в правильном направлении, но мне не повезло найти его.

Способ, которым я настроил это в Python, заключался в том, чтобы создать нулевые массивы для представления размера графа, а затем выполнить итерацию по нему, чтобы получить каждое ребро для каждого узла, но я не уверен, что это лучший способ подумайте о том, как создаются графики в Go.

1 Ответ

0 голосов
/ 19 января 2019

Если вы только начинаете с Go, я бы порекомендовал немного придерживаться стандартной библиотеки и не добавлять больше к своей кривой обучения.Попробуйте реализовать простую структуру данных графа с некоторыми базовыми алгоритмами - это очень просто и позволит вам попрактиковаться с языком.Позже, когда вам понадобится больше производительности / возможностей, вы можете поискать библиотеки (gonum или другие).Например, простой график может быть представлен с помощью:

// Node is a node in the graph; it has a (unique) ID and a sequence of
// edges to other nodes.
type Node struct {
    Id    int64
    Edges []int64
}

// Graph contains a set of Nodes, uniquely identified by numeric IDs.
type Graph struct {
    Nodes map[int64]Node
}
...