Jac*_*kWM 4 algorithm graph-theory graph isomorphism graph-algorithm
有没有人实现Laszlo Babai的准多项式图同构?
http://people.cs.uchicago.edu/~laci/
我不是这方面的专家.我想知道 为什么不实施他的算法并运行它来验证它的时间复杂度?
让我们假设你确实实现了算法.您可以使用它来凭经验验证该算法的时间复杂度吗?
不幸的是,答案是否定的.如果我们说算法的时间复杂度是O(f(n)),那么我们就是这么说的
所以想象一下我们编码了.要查看声明的绑定是否实际应用,我们可以尝试在几个输入上运行它并绘制运行时,但这不会告诉我们任何事情.我们的输入可能不会"足够大",无法应用渐近上限.如果我们确实获得了大量输入并且我们在许多不同的输入上看到了运行时,我们仍然不知道我们是否有最坏情况的运行时,除非我们尝试了所有可能的输入,但是图表的可能输入数量同构算法作为输入大小的函数呈指数增长.这意味着我们不能强力尝试大尺寸的所有可能输入,所以我们永远不能确定我们是否找到了实际的最坏情况输入.有许多算法,如用于线性编程的单纯形算法,除了在罕见的病态情况下,已知非常快,因此我们总是冒险运行时与我们预期的不匹配.
还会出现许多实际问题.算法的理论分析通常不考虑缓存行为,分页,颠簸等问题,因此我们可能会看到某些大型输入比预期花费更长的时间,因为它们不能很好地与缓存配合使用.在这种情况下,即使对原始操作数量的分析是正确的,我们也可能看到事情比预期的要慢得多.
简而言之,在实际输入上运行算法的任何数量都不会让您确认或否认运行时分析是正确的.如果它似乎与潮流相匹配,那就太棒了......但是你没有尝试过的所有无限输入呢?如果它似乎与预测的趋势不匹配,你怎么知道你还没有尝试过足够大的输入?或者你在其他因素的分析中看到了噪音?
这就是为什么分析像这样的算法很难的原因.据我们所知,我们已经有了一个用于图同构的多项式时间算法,但是没有人能够证明它具有正确的运行时间.没有多少经验数据可以作为证据,尽管它可能会激励人们尝试证明特定方法快速运行,作为理论上证明观察到的运行时间的一种方式.