Вот псевдокод, который я придумал. Это не конкретный диалект псевдокода, но должно быть достаточно просто следовать.
Любой хочет выбрать это независимо.
[p] список вершин, представляющих текущий путь.
[x] список путей, где соответствуют критериям
[s], исходная вершина
[d], целевая вершина
[c], текущая вершина (аргумент стандартной программе PathFind)
Предполагают, что существует эффективный способ искать смежные вершины (строка 6).
1 PathList [p] 2 ListOfPathLists [x] 3 Vertex [s], [d] 4 PathFind ( Vertex [c] ) 5 Add [c] to tail end of list [p] 6 For each Vertex [v] adjacent to [c] 7 If [v] is equal to [d] then 8 Save list [p] in [x] 9 Else If [v] is not in list [p] 10 PathFind([v]) 11 Next For 12 Remove tail from [p] 13 Return
Можно использовать fmt.Sprint(err)
для преобразования Error
в string
.