Кто-нибудь знает, как определить, есть ли цикл в неориентированном графе в OCaml?
Вот тип, который я использую для графа:
type 'a graph = { nodes : 'a list; edges : ('a * 'a * int) list }
И, например, Я хотел бы проверить, содержит ли этот график циклы:
let graph = { nodes = ['a'; 'b'; 'c'; 'd'; 'e'; 'f'; 'g'; 'h'; 'j';];
edges = [('c', 'j', 9); ('d', 'e', 8); ('a', 'b', 8); ('b', 'c', 7); ('f', 'g', 6); ('b', 'h', 4); ('a', 'd', 4); ('g', 'h', 2); ('b', 'f', 2); ('e', 'g', 1)]}