使用Kolmogorov不可压缩性方法的平均情况算法分析

时间:2014-07-07 20:34:42

标签: algorithm complexity-theory

据说,不可压缩性方法简化了对平均情况的算法分析。据我所知,这是因为不需要为该算法计算所有可能的输入组合,然后得出平均复杂度。相反,将一个不可压缩的字符串作为输入。由于不可压缩的字符串是典型的,我们可以假设此输入可以作为平均情况的精确近似。

关于将不可压缩性方法应用于算法,我很遗憾。顺便说一句,我不是数学家,但认为这个理论在日常编程中具有实际应用。

最后,我想了解如何推断出任何给定算法的平均情况,无论是微不足道的还是复杂的。有人可以向我演示如何将该方法应用于一个简单的算法吗?例如,给定一个输入字符串 S ,将所有唯一字符存储在 S 中,然后分别打印每个字符:

void uniqueChars(String s) {
    char[] chars = chars[ s.length() ];
    int free_idx = 0;

    for (int i = 0; i < s.length(); i++) {
        if (! s[i] in chars) {
           chars[free_idx] = s[i];
           free_idx++;
        }
    }

    for (int i = 0; i < chars.length(); i++) {
        print (chars[i]);
    }
}

只是为了争论。我认为伪代码就足够了。假设线性搜索以检查数组是否包含元素。

当然,可以接受更好的算法来证明理论是可以接受的。

这个问题可能是荒谬的,也是不切实际的,但我宁愿提出要求而不是误解。

1 个答案:

答案 0 :(得分:0)

CS.Se question上复制我的答案,以供参考之用

  1. Kolmogorov复杂性(或算法复杂度)处理&#34;字符串&#34; 的最佳描述(在一般意义上的字符串作为符号序列

  2. 字符串(足够)不可压缩或(足够)算法随机如果其(算法)描述(kolmogorov comlplexity K 不小于其(字面)大小。换句话说,字符串的最佳描述是字符串本身

  3. 该理论的主要结果是大多数字符串是(算法)随机(或典型)(这也与其他领域有关,如Goedel的定理,通过Chaitin和# 39;工作)

  4. Kolmogorov复杂度概率(或香农)熵有关,实际上熵是KC的上限。这将基于描述复杂性的分析与基于概率的分析联系起来。它们可以互换。

  5. 有时可能更容易使用概率分析,其他描述性复杂性(同样的观点可以说)

  6. 因此,鉴于上述情况,假设算法的算法随机输入,可以假设如下:

    1. 输入典型,因此分析描述平均情况(上述第3点)
    2. 输入大小以某种方式与其概率相关(上述第2点)
    3. 可以将从算法视图传递到概率视图(上面第4点)