Что вам нужно для анализа сетки, так это список закрытых областей на любом конкретном плоском чертеже графика.
Гораздо проще найти, чем минимальную основу цикла, но какой список вы получите, зависит от того, какой планарный чертеж вы используете.
Если у вас есть плоский чертеж, и вы можете получить соседей каждой вершины по часовой стрелке или против часовой стрелки, то очень просто просто обвести вокруг этих областей.
В противном случае вы можете сделать что-то вроде:
- Создание связующего дерева
- Для каждого ребра, которое не в дереве, создайте цикл, содержащий только это ребро и ребра, которые находятся в остовном дереве.
Поскольку каждый цикл содержит одно ребро, которого нет ни в одном другом цикле, гарантируется, что ни один цикл не содержится ни в одном другом ... в зависимости от того, что вы подразумеваете под «содержащимся». Важным моментом является то, что эти циклы будут работать для анализа, если вы внимательно относитесь к любым текущим источникам. Может быть, вы хотите избежать их в связующем дереве.
Поскольку вы будете использовать эти циклы для генерации системы уравнений для решения, в которой каждое ребро является переменной, вероятно, нет смысла использовать более сложный алгоритм для поиска "меньших" циклов.