我正在学习算法分析课程,我在java中有算法作业。我写了这个程序,效果很好。然而,我的老师想要报告与最坏情况的asympotic结果相比较的额外点。这是什么意思?我怎么比较?第一个是凸包算法,第二个是背包算法。我的凸壳的复杂性n ^ 3它有最坏的情况。为什么他想要最坏的情况?我的背包算法复杂度是(n * 2 ^ n)。你能救我吗?
答案 0 :(得分:2)
要求您比较算法的渐近复杂度,并将其与某些数据进行比较。这应该为您提供有关复杂性和实际运行时间之间关系的概述。
他们要求最坏的情况,因为通常情况下,这是您可以为您提供的解决方案提供的保证。例如,如果算法在第一次尝试时偶然遇到解决方案,你的背包可能会立即工作n = 1000,但你不能保证它适用于那个大小的任何输入(花费太长时间)。
现在,你已经具备了复杂性,所以O(n ^ 3)< O(n2 ^ n)因此比较复杂性时船体更快。现在举例说明n = 1,2,3,4,5,10,20,25,30,50,100,500,1000和解决方案的时间。您可能会看到,对于n的小值,时序大致相同,并且它们不会根据复杂性表现,但随着n增长O(n ^ 3)在某个合理的时间内完成,而O(n2 ^ n)将花费太长时间(几分钟后停止)。绘制结果并将其与x ^ 3和x2 ^ x函数的外观进行比较。