【发布时间】:2016-08-10 01:48:03
【问题描述】:
我有一个大图,它在邻接列表中表示。我想通过合并节点的线性链来压缩图形。例如,如果边是a-c, b-c, c-d, d-e, e-f, e-g:
a - c - d - e - f
| |
b g
然后c-d, d-e 可以合并到单个节点x 并且新的边列表应该有a-x, b-x, x-g。我想用 C++ 实现它,但我想知道是否有任何 C++ 图形库可以处理这个问题。此外,任何关于有效算法的建议都值得赞赏。
【问题讨论】:
-
我不明白你的例子,所以我冒昧地为“问题”部分添加了 ASCII 艺术。你说解决方案是
a-x, b-x, x-g,但这对我来说显然是错误的或不一致的。你能画出你想要的解决方案的 ASCII 艺术吗?你能解释一下为什么c-d-e可以合并而a-c不能合并吗? -
感谢@JohnZwinck 的编辑!!我不知道 ASCII 艺术。我希望你现在明白为什么
a-c不能被合并。如果没有,这里有一个简单的解释。试想a和b是两个来源,一些信息来自它们并通过c-d-e,然后信息分为两部分,分别到达f和g。