24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1078  |  回复: 6

清君侧

铜虫 (初入文坛)

[求助] 求解关于图论里的无向图的连通判断问题。。。已有2人参与

一个n个顶点的图,我们知道如果他是完全图的话,就有n(n-1)/2条边。。现在,请问最坏情况下,需要询问多少次某条边是否存在,才能判断这个图是否为连通的??

(如果询问n(n-1)/2次的话,当然能够判断这个图是否为连通,因为所有边都被询问了一次,我们能够知道这个图的连接状况。我现在想知道能否减少询问次数,即使在最坏情况下)
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sskkyy

银虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
询问n-1次。
随便选取一个顶点v, 询问“与v相连的边是否存在”,如果不在,则不连通。如果存在,设w为此边的另一端点。再询问“与v或者相连,但不是vw的边是否存在”, 以此类推。
当然,你或许对“询问”以及“某边”有更加详细或者更加约束的限制。
2楼2015-04-22 12:55:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

清君侧

铜虫 (初入文坛)

引用回帖:
2楼: Originally posted by sskkyy at 2015-04-22 12:55:58
询问n-1次。
随便选取一个顶点v, 询问“与v相连的边是否存在”,如果不在,则不连通。如果存在,设w为此边的另一端点。再询问“与v或者相连,但不是vw的边是否存在”, 以此类推。
当然,你或许对“询问”以及“某 ...

n-1次是最理想的情况,因为n个点要连起来,至少需要n-1条边。。不过,现在讨论的是最坏情况。n-1次肯定是不够的。。

比如最简单的3个顶点的时候,ABC三个点。先询问AB是否存在,假设不存在,再次询问BC,假设存在,这时候还得询问一次AC,如果AC存在,则联通,AC不存在,则不联通。一共需要询问3次才能最终确定是否为连通,而不是3-1次
3楼2015-04-22 19:12:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sskkyy

银虫 (正式写手)

【答案】应助回帖

引用回帖:
3楼: Originally posted by 清君侧 at 2015-04-22 19:12:06
n-1次是最理想的情况,因为n个点要连起来,至少需要n-1条边。。不过,现在讨论的是最坏情况。n-1次肯定是不够的。。

比如最简单的3个顶点的时候,ABC三个点。先询问AB是否存在,假设不存在,再次询问BC,假设存 ...

你所谓“询问”就是一次“判定一个边是否为空”?一次只能是一条边?
4楼2015-04-22 20:34:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

清君侧

铜虫 (初入文坛)

引用回帖:
4楼: Originally posted by sskkyy at 2015-04-22 20:34:32
你所谓“询问”就是一次“判定一个边是否为空”?一次只能是一条边?...

询问一次就是,问某条边是否存在,这条边被问过一次的,以后不需要在询问了,已经知道是否存在这条边了。。我现在不是打算考虑什么代码问题,单纯想就是理论的分析下
5楼2015-04-22 21:39:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dameng

银虫 (小有名气)

【答案】应助回帖

下面的表述中所谓的边,只是一组节点对,是一个可能需要询问的位置,并不是表示真实存在这个边。如果不存在边,将该点对称之为空边。

(构造法)考虑这个图是一颗树的情况。如果想知道图是否连通,必然需要将树的所有边都询问到,否则,当询问到其他可能的边时,返回边不存在的结果,我们总是无法得到连通这一结论。也许存在某种情况,我们根据已询问得到的信息,去决定下一步的询问。下面说明,无论怎样询问,必然存在一颗树,我们必须要到最后的时刻才能得到这颗树。
证明:不妨认为存在某种询问的序列,使得我们可以更早地得到树的信息,不妨令该序列某次询问是询问某个树边e,该次询问是第k次询问(之前是否询问到了树边无关紧要)。
显然在第k次询问之前已得到的树边构成了一个森林(包含那些孤立的节点),则第k次所询问的树边将其中两个森林合二为一,此时分两种情况:
(1)在第k次询问之前,我们已经询问过了除边e之外所有这样的边,这些边横跨了这两颗树(这些边必为空边)
这种情况下,我们已经作了非常多的询问,即使在最好的情况下,我们在询问到树的每个边时,都遇到了这种情况,我们仍然无法得到连通的信息。简单说,当我们最后一次询问到了树的某个边,仍然是这种情况,意味着我们已经询问了其他所有可能的边,因为任何一个空边(a,b),必然存在之前的某个时刻,节点a和b分属于两颗不同的树(该时刻这两颗树刚好需要合并)。
(2)存在某个横跨树的边,我们之前没有询问过。不妨令第k次询问的边为e1,这个之前没问过的边为e2。对于最终的这颗树(即真实存在的树,当前我们还看不到,假设我们有透视眼),e1是某个树边,e2是空边(即不存在边)。现在我们篡改这颗树,将e1和e2的位置互换,即e2是树边,e1是空边。注意,这样的篡改并不会影响之前询问的结果,篡改后仍然是一颗树,故未知的这颗树总是可以和我们对着干,随意地改变它的结构。篡改之后,我们就询问到了一个空边,只有再次发出询问,才能得到更多信息。不断询问的结果就是,每次新得到一个树边,总是要达到情况1;总是得到情况1的结果就是,我们必须要询问到最后一刻。

结论:最坏情况下,我们需要询问所有可能的边,即n(n-1)/2次询问。
研究方向:数据库。主要面向图数据管理、图数据挖掘、社会网络等。目前正在关注动态图算法。
6楼2016-01-06 19:01:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dameng

银虫 (小有名气)

接上:这种图称之为hidden graph,参见
Finding Maximum Degrees in Hidden Bipartite Graphs (樊文飞 SIGMOD‘10)
研究方向:数据库。主要面向图数据管理、图数据挖掘、社会网络等。目前正在关注动态图算法。
7楼2016-01-06 20:34:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 清君侧 的主题更新
信息提示
请填处理意见