Big o 概率函数可以用作计算代码复杂性的一部分吗

Big o 概率函数可以用作计算代码复杂性的一部分吗,big-o,complexity-theory,code-analysis,analysis,code-complexity,Big O,Complexity Theory,Code Analysis,Analysis,Code Complexity,如何将概率函数合并为代码复杂性分析的一部分 if (cond1(l,n)) { for (int r=l;r<n;r++) for (int m=r;m<n;m++) for (int k=m;k<n;k++) //calculation } else // calculation 此代码的典型复杂性分析将产生^3上的复杂性 假设cond1l,n显著产生false,因此在假设计算中跳过内部for循环

如何将概率函数合并为代码复杂性分析的一部分

if (cond1(l,n)) {
   for (int r=l;r<n;r++)
      for (int m=r;m<n;m++)
          for (int k=m;k<n;k++)
               //calculation
} else
    // calculation
此代码的典型复杂性分析将产生^3上的复杂性

假设cond1l,n显著产生false,因此在假设计算中跳过内部for循环

我希望尽可能准确地计算代码的复杂度,因为我想比较一系列类似算法的复杂度

例如,我想用一组不同的算法来替换cond1l,n,以减少内部循环调用

如何尽可能准确地计算算法的复杂度


我试图分析的代码的一个现实场景是在[link]

复杂度分析并不是这项工作的合适工具:它旨在粗略了解问题规模扩大时会发生什么。如果您希望对运行时进行精确的分析,那么您需要对代码进行基准测试或评测。

谢谢Mark。我在[链接]中提到的问题实际上有一个O | 2^N | L |或O | N||L |。然而,从经验上看,实际的复杂性是O | N^2 | L |,其中类似于cond1的函数显著减少了递归调用。当你计算算法的理论运行时间时,有没有考虑到它的方法?也许你应该考虑最佳情况、平均情况和最坏情况;就像分析排序算法一样。我试图在链接中解决您的算法,但我认为您应该将算法分解为这样。你应该能够运行它。。。对其进行采样,根据输入推断其性能。