我正在接受输入,例如 4 1 3 1 2 2 4
第一行是节点数,后面的行是边。我必须尝试为图表着色,如果我不能,我需要在图表中列出导致错误的周期。
到目前为止这很好,除了其中一个图包含1,000,000个节点。每次我尝试使用它时,我都会收到Stack Overflow错误,即使我更加简化它,并将eclipse的最大堆大小提高到1024m。
我不是要求代码,只是问我是否做了一些明显错误的事情来继续犯错误。
答案 0 :(得分:1)
也许您可以优化循环检测算法。 这可能会对您有所帮助:http://en.wikipedia.org/wiki/Cycle_detection
除此之外,一百万个节点加上邻接矩阵可能同时处理得太多,所以也许有一种方法可以一次只加载图形的一部分。
答案 1 :(得分:1)
如果它是一个二分图,你总是可以用两种颜色着色(例如,第一个分区为白色,第二个分区为黑色)。
通常当人们想到着色图时,他应该指定颜色的数量。您始终可以通过为每个节点指定不同的颜色来为图形着色。另一个例子:对于平面图,只需要四种颜色。但是,对于大多数图形,图形的[色数]是[NP]。
[NP] http://en.wikipedia.org/wiki/Karp%27s_21_NP-complete_problems
答案 2 :(得分:-1)
好吧,这个 IS 是NP完全问题(最长周期),所以这种事情很可能会发生。
我可能只是再次碰撞堆,让它运行......
编辑:没关系。我倒退了。