图形问题

时间:2010-06-11 05:57:05

标签: algorithm graph

我正在努力解决以下问题

http://uva.onlinejudge.org/external/1/193.html

但是我无法获得快速解决方案。

正如其他人所见,应该有一个最大n ^ 2复杂度的解决方案

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&page=show_problem&problemid=129&page=problem_stats

我可以得到一些帮助吗?

3 个答案:

答案 0 :(得分:1)

你只能以指数复杂度解决这个问题,但这并不像听起来那么糟糕,因为在实践中你将能够避免很多错误的决定,从而大大减少算法的运行时间。

简而言之,您必须从节点运行DF搜索并尝试将尽可能多的节点着色为黑色。如果您在具有相邻黑色节点的节点上,则该节点只能是白色。为每种特定节点着色的可能性继续这样做。

如果您无法弄明白,请查看我通过Google搜索找到的问题名称的两个代码段:onetwo。作者说他们得到AC,但我还没有测试过。然而,它们看起来是正确的。

答案 1 :(得分:0)

它正在解决称为最大集团的问题,也称为最大独立集或最大稳定集。它是NP-Complete。我知道的小图表中最快的代码是Cliquer:http://users.tkk.fi/pat/cliquer.html

如果您是出于教育目的编写自己的,那么最好先进行深度优先搜索,一次将一个节点着色为黑色,如果两个黑色节点正在触摸,则退回DFS。

最简单的代码解决方案是实现二进制计数器并尝试所有2 ^ n种可能性。

答案 2 :(得分:0)

Bron–Kerbosch algorithm

我在FaceBook谜题上解决了类似的问题,我使用了B-K算法。