Algorithm 如何才能找到什么是最好的算法为特殊的数学主题和它的复杂性迄今为止提出

Algorithm 如何才能找到什么是最好的算法为特殊的数学主题和它的复杂性迄今为止提出,algorithm,Algorithm,当某人为数学或计算机科学问题找到其他解决方案或算法时,他/她如何理解他/她找到的解决方案是最佳的,还是不基于时间复杂性?(可能算法是顺序的或并行的)TL;DR:这是通过彻底的数学证明和对现有算法的审查来完成的。如何评估复杂性是一个不同的话题,这里已经讨论过很多次了。这个答案无论如何都不会让你感到惊讶,但是。。。这就是生活。证据如下。 据我所知,你们基本上想要一个算法,对于任何问题,它都能找出所发现的解决方案是否最适合它。让我们做一些数学题 F(p,S)->bool,其中p是问题,S是解决方案,它

当某人为数学或计算机科学问题找到其他解决方案或算法时,他/她如何理解他/她找到的解决方案是最佳的,还是不基于时间复杂性?(可能算法是顺序的或并行的)

TL;DR:这是通过彻底的数学证明和对现有算法的审查来完成的。如何评估复杂性是一个不同的话题,这里已经讨论过很多次了。这个答案无论如何都不会让你感到惊讶,但是。。。这就是生活。证据如下。

据我所知,你们基本上想要一个算法,对于任何问题,它都能找出所发现的解决方案是否最适合它。让我们做一些数学题

F(p,S)->bool,其中p是问题,S是解决方案,它返回布尔值,无论S是否是p的最佳解决方案。我们还假设此算法不知何故知道问题p的现有解决方案集。将新解决方案与每个旧解决方案进行比较需要一些时间-您需要评估复杂性(内存和时间方面)。假设你可以用O(s)的复杂度找到给定解的复杂度。然后,要比较其中两个,你需要浪费O(2*s)=>O(s)时间单位(多项式)

因此,如果算法知道解的集合,这种元算法的复杂度接近O(K*S),其中K是一个解的数目,这似乎是多项式

现在,让我们扔掉不可能的东西(因为没有算法知道一切),放弃已知集合的假设。K现在变成了几乎任何一组可以带来或不带来解决方案的动作!K随着动作的数量(K=e^x)呈指数增长。总复杂度:O(s*e^x)=O(e^x)

NP完全问题定义: 问题是由非确定性图灵机解决的,这意味着有一个算法来检查某个东西是否是问题的解决方案,但没有找到该解决方案的算法,除非用蛮力将它们全部强制

你给我们的任务非常适合我们。更重要的是,你必须对它进行持久的暴力,因为有无限多的动作组合。=)


.

可能重复“否”,我的问题是,对于数学或计算机科学中的一个特殊问题,如何找到迄今为止存在的最佳算法,以及它的复杂性是什么。例如,如果我找到了n个大数字之和的解决方案,并提出了一个新的算法,我怎么能找到它是不是最好的算法?谢谢大家的关注。你的数学很好。没问题:-D我写得很开心:)我认为这是一个非常好的答案。我很想在这里看到更多关于其他问题和算法的数学证明。@Cilenco好吧,这个答案并不假装在数学定理证明的严格规则之内。几乎都是想法。至少,快速尝试编写类似于停止问题的不可解性证明(它有两行长,数学上非常漂亮)的东西失败了:(