У меня есть вектор e , элементы которого являются индексами ребер в двумерной (поверхностной) сетке.По какой-то причине я хотел бы изменить порядок этого вектора, чтобы каждое ребро было окружено ребрами, ближайшими к нему (в основном, аналогично тому, что запрашивающий пытается достичь в в этом вопросе ).
Мне не нужно, чтобы это было точное или идеальное решение (вероятно, его нет), но я бы хотел подойти как можно ближе.
Вот шаги, которые у меня естьпринято:
- Создать матрицу смежности B для краев сетки,
- Используйте алгоритм, такой как RCM , чтобы получить переупорядочениематрица смежности для уменьшения пропускной способности (для этого я использую MatGetOrdering от Petsc),
- Применим новый порядок, чтобы получить новую, смежную матрицу смежности, B2 .
На этом этапе я хотел бы изменить порядок исходного вектора e ребер сетки, чтобы получить новый вектор e2 , матрица смежности которого теперь равна B2 .
- Возможно ли это?т.е. достаточно ли информации выше, чтобы достичь этого?
- Это хороший подход, чтобы делать то, что я пытаюсь достичь?
- Если нет, то какой будет самый разумный и надежный подход?(например, я также пытался сделать это, основываясь на физических расстояниях, а не на граничных связях, но я не уверен, какой подход более реалистичный / разумный / надежный),
- Если да, как мне это сделать?выполнить последний шаг переупорядочения вектора ребер на основе новой матрицы смежности?
Я довольно новичок в Stack Exchange, поэтому, пожалуйста, дайте мне знать, если я должен спросить этона другом суб-сообществе.Я также довольно новичок в теории графов, поэтому я могу упустить что-то очевидное.
Спасибо!