Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 基于Kolmogorov不可压缩方法的平均情况算法分析_Algorithm_Complexity Theory - Fatal编程技术网

Algorithm 基于Kolmogorov不可压缩方法的平均情况算法分析

Algorithm 基于Kolmogorov不可压缩方法的平均情况算法分析,algorithm,complexity-theory,Algorithm,Complexity Theory,据说不可压缩性方法可以简化平均情况下的算法分析。据我所知,这是因为不需要计算该算法所有可能的输入组合,然后得出平均复杂度。而是将单个不可压缩字符串作为输入。由于不可压缩字符串是典型的,我们可以假设此输入可以作为平均情况的精确近似值 我对将不可压缩性方法实际应用于一个算法感到迷茫。顺便说一句,我不是数学家,但我认为这个理论在日常编程中有实际应用 最后,我想学习如何推断任何给定算法的平均情况,无论是简单的还是复杂的。有人能给我演示一下这个方法如何应用于一个简单的算法吗?例如,给定一个输入字符串S,将

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

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

最后,我想学习如何推断任何给定算法的平均情况,无论是简单的还是复杂的。有人能给我演示一下这个方法如何应用于一个简单的算法吗?例如,给定一个输入字符串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]);
    }
}
void uniqueChars(字符串s){
char[]chars=chars[s.length()];
int free_idx=0;
对于(int i=0;i
只是为了争论。我认为伪代码就足够了。假设使用线性搜索来检查数组是否包含元素

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


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

出于相互参考的目的,复制我关于

  • Kolmogorov复杂性(或算法复杂性)处理对“字符串”的最佳描述(一般意义上,字符串是符号序列)

  • 如果字符串的(算法)描述(kolmogorov comlplexityK)不小于其(文字)大小,则字符串是(充分)不可压缩的或(充分)算法随机的。换句话说,字符串的最佳描述是字符串本身

  • 该理论的主要结果是,大多数字符串(算法)是随机的(或典型的)(通过Chaitin的工作,这也与Goedel定理等其他领域相关)

  • Kolmogorov复杂性与概率(或Shannon)熵有关,事实上熵是KC的上界。这将基于描述复杂性的分析与基于概率的分析联系起来。它们可以相互转换

  • 有时,使用概率分析可能更容易,而使用其他描述复杂度(比如,相同观点)

  • 因此,根据上述情况,假设一个算法的随机输入是一个算法,我们可以测量以下各项:

  • 输入是典型的,因此分析描述了平均案例情景(上文第3点)
  • 输入的大小以某种方式与其概率相关(上文第2点)
  • 人们可以将算法视图转换为概率视图(上文第4点)

  • 你可能想检查一下(这篇论文)[举例说明此方法的应用。但我想知道您的目标是什么。您是否有要分析其运行时的算法?请注意,您提供的代码可能很难分析,因为
    Set.add的运行时取决于
    Set
    的实现。这个问题可能更好d我的目标是学习如何将不可压缩性方法应用于平均运行时分析。这只是个人学习的一部分,而不是直接的要求。murgatroid99,你是指此链接吗?在CS StackExchange上问了一个类似的问题: