是否需要调用


20

爪是。一个简单的算法将在时间内检测出一个爪子。可以在,其中是快速矩阵乘法的指数,如下所示:对每个顶点取诱导的子图,并在其中找到一个三角形它的补充。 ø Ñ 4ø Ñ ω + 1ω Ñ [ v ] vK1,3O(n4)O(nω+1)ωN[v]v

据我所知,这些基本算法只是已知的。Spinrad在他的书“有效的图形表示”中列出了在时间内对爪子的检测作为一个开放问题(8.3,第103页)。对于下限,我们知道 -时间算法将隐含 -时间算法来查找三角形。因此,我们可以将\ Omega(n ^ \ omega)视为下限。o(nω+1)O(nc)Ω Ñ ωO(nmax(c,2))Ω(nω)

题:

  1. 在这方面有什么进展吗?还是在证明这是不可能的任何进展?
  2. O(n ^ {\ omega + 1})时间算法是否还有其他最佳的自然问题?O(nω+1)

备注:

  1. 我明确要求检测爪子,而不是识别无爪图。尽管算法通常可以同时解决这两种情况,但很少有例外。
  2. 在算法与理论计算机科学手册中声称可以在线性时间内找到它,但这只是一个错字(请参阅“有效的图形表示”)。

可以使用Alon等人的。在发现三角形的方法,为此,在一个最终的每个节点O(| V | \ CDOT | E | ^ {1.41}) ,其是如果图形不太密集,则比| V | ^ {\ omega + 1}更好。O | V || E | 1.41| V | ω + 1O(|E|1.41)O(|V||E|1.41)|V|ω+1
RB 2014年

@RB,感谢您指出这一点。基本思想仍然是运行n次任何三角形检测算法,这是我要避免的事情。

我们如何期望找到与三角形查找无关的算法?因为无论采用哪种算法,都应检查每个顶点的邻居。我的意思是,属性是非常局部的属性,除了具有恒定的因子差异之外,每个顶点都应该被看到。(或者我无法想象有任何自然的算法可以避免这种局限性)。你有什么模糊的想法吗?
2014年

2
也许值得一提的是,如果我们可以在f(n)的时间内找到一个爪子,那么我们也可以在f(n + 1)的时间内找到一个三角形(只要取图的补码,再添加一个连接到每个人的顶点),因此我们不希望找到比更好的东西。nω
domotorp 2014年

1
@domotorp,似乎该部分很清楚,反之则不清楚,我的意思是为什么我们需要线性搜索。正如Yixin指出的那样,可能还有另一种算法不使用三角查找算法来解决,我认为很难找到这种算法,而且可能更容易证明任何算法都使用三角查找作为子程序(或可以将其转换为线性搜索)。o(nω+1)
2014年

Answers:


16

我认为,通过使用矩形矩阵乘法,对于稠密图,我们可以比做得更好。Eisenbrand和Grandoni使用了类似的想法(“论固定参数群和支配集的复杂性”,《理论计算机科学》,第326(2004)57-67页),用于4峰检测。O(n1+ω)

令是我们要检测爪子存在的图形。设为的一组(有序)顶点对。考虑以下布尔矩阵,其大小:每一行是由一些索引 ,每列是由一些索引,和对应的条目是一个当且仅当,和。考虑的布尔矩阵产品和它的转置。当且仅当存在时,图才具有爪A V M | V | × | A | ü V v w ^G=(V,E)AVM|V|×|A|uV{ ü v } ë { v 瓦特} ë { ü 瓦特} Ë 中号中号Ť(v,w)A{u,v}E{v,w}E{u,w}EMMT{ ü v } Ë 中号中号G{u,v}E 这样在索引的行和索引的列中的条目为1。 ü vMMTuv

该算法的复杂度本质上是计算矩阵与 ×矩阵的布尔积的复杂度,其中表示图中的顶点数。众所周知,这样的矩阵乘积可以在时间进行计算,这比的时间好于的最上界。当然,如果(推测),则两种方法的复杂度为。Ñ 2 × Ñ Ñ ø Ñ 3.3ø Ñ 1 + ωω ω = 2 Ö Ñ 3n×n2n2×nnO(n3.3)O(n1+ω)ωω=2O(n3)


大!这正是我要问的第一个问题:矩阵乘法只有一个调用,尽管更大。在我将第二个问题作为答案之前,我将等待更多评论或答案。
曹一欣2014年

15

我不知道如何避免进行矩阵乘法,但是您可以通过这样一种方式来分析它,即时间实际上是较少数目的时间。这个把戏来自n

吨克洛克斯;Dieter Kratsch;Müller,Haiko(2000),“有效地查找和计算小型诱导子图”,信息处理快报74(3-4):115-121,doi:10.1016 / S0020-0190(00)00047-8,MR 1761552。

第一个观察结果是,当您要进行矩阵乘法运算时,矩阵并不是真正的,而是,其中是每个顶点的度数,因为您要查找的是一个共三角形在每个顶点附近。d × d dn×nd×dd

其次,在无爪图中,每个顶点必须具有邻居。因为,否则,该组邻居将具有太少的边,以避免在补码中具有三角形。因此,当您进行矩阵乘法时,只需要在大小为矩阵上进行操作,而不是在。OO(m)nO(m)n

另外,每个边仅对两个顶点(其端点)会造成矩阵乘法问题的大小。当这些矩阵乘法问题的总大小的散布到个子问题中,每个子问题的大小为,这给出了,这是对R B提到的界线的稀疏图的一种改进。O 2mO O(m)ø1 + ω / 2øÑ ω / 2O(m)O(m(1+ω)/2)O(nmω/2)


哇,这是一个聪明的主意,我在思考是否有可能进行亚线性搜索(实际上是反证),甚至没有考虑问题的内在属性。
2014年

谢谢大卫。由于我的第二个问题似乎尚未被注意到,我暂时将其搁置一旁。
宜欣曹
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.