Diz-se que o Método da Incompressibilidade simplifica a análise de algoritmos para o caso médio. Pelo que entendi, isso ocorre porque não há necessidade de calcular todas as combinações possíveis de entrada para esse algoritmo e derivar uma complexidade média. Em vez disso, uma única string incompressível é usada como entrada. Como uma sequência incompressível é típica, podemos assumir que essa entrada pode atuar como uma aproximação precisa do caso médio.
Estou perdido em relação a realmente aplicar o Método de Incompressibilidade a um algoritmo. Como um aparte, eu não sou um matemático, mas acho que essa teoria tem aplicações práticas na programação cotidiana.
Por fim, gostaria de aprender como deduzir o caso médio de qualquer algoritmo, seja trivial ou complexo. Alguém poderia me demonstrar como o método pode ser aplicado a um algoritmo simples? Por exemplo, dada uma sequência de entrada S, armazene todos os caracteres exclusivos em S e imprima cada um individualmente:
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])
}
}
Suponha uma pesquisa linear para verificar se a matriz contém um elemento.
O trecho de código acima é apenas para fins de argumento. Melhores algoritmos pelos quais a teoria pode ser demonstrada são aceitáveis, é claro.
Fiz essa pergunta no StackOverflow ( https://stackoverflow.com/q/24619383/3813812 ) em julho de 2014 e recebi alguns comentários úteis, mas não uma resposta definitiva. Como um dos comentadores apontou, esta pergunta é mais adequada para o Computer Science StackExchange, então pergunto aqui hoje.
Alguma literatura que revi inclui:
Introdução à complexidade de Kolmogorov e suas aplicações, de Ming Li e Paul MB Vitányi
https://www.cs.duke.edu/~reif/courses/complectures/Li/KC-Lecture1.pdf
http://www.detectingdesign.com/PDF%20Files/Kolmogorov%20Complexity%202.pdf
Entre alguns outros recursos aos quais não tenho links disponíveis.
Se meu entendimento da aplicabilidade da complexidade de Kolmogorov for impreciso ou o que eu pedir for impraticável, eu apreciaria uma declaração com relação ao fato.