A complexidade do prefixo Kolmogorov (ou seja, é o tamanho do programa auto-delimitador mínimo que gera ) possui vários recursos interessantes:x
- Corresponde a uma intuição de fornecer a strings com padrões ou estrutura uma complexidade menor do que strings sem.
- Ela nos permite definir condicional complexidade , ou ainda melhor por algum oráculo .K ( x | O ) O
- É sub-aditivo .
No entanto, tem uma desvantagem terrível: retornar dado é indecidível.x
Eu me perguntei se existe uma variante da complexidade Kolmogorov usando um modelo restrito de computação (usando linguagens mais fracas que as TMs ou usando TM limitada com recursos) que preserva os recursos (1) e (2) (recurso ( 3) é um bônus, mas não uma obrigação) enquanto é computável com eficiência?
A motivação para esta pergunta é para uso em estudos de simulação de vários modelos de brinquedos da evolução. Portanto, é preferível uma resposta que tenha sido usada como uma "aproximação aproximada" da complexidade de Kolmogorov no trabalho numérico. No entanto, o objetivo não é ir completamente experimental, de modo relativamente simples linguagem de descrição / limpa / modelo-de-cálculo para é o preferido, para que ele possa ser possível provar alguns teoremas razoáveis sobre quão drasticamente difere de e sobre que tipo de strings.K ′ K
Relaciona perguntas
Complexidade de Kolmogorov com linguagens de descrição fracas
Existe uma noção sensata de um algoritmo de aproximação para um problema indecidível?
fonte
Pensei mais na minha pergunta e cheguei à possível solução. Ele tem duas limitações, é definido apenas em cadeias de comprimento (embora eu discutirei isso mais) e não fala sobre máquinas universais de Turing, mas sim seguindo uma pergunta anterior e usando um modelo alternativo de computação.n = 2m
Basicamente, podemos interpretar uma string com | x | = 2 m como uma função f x : { 0 , 1 } m → { 0 , 1 } . Então, nossa medida de complexidade K ′ ( x ) é o tamanho (número de arestas) do diagrama de decisão binária ordenada reduzida única (ROBDD; com o pedido padrão fixo) representando f x . Isso satisfaz a condição [1]. Além disso, como os ROBDDs podem ser calculados em tempo polinomial em 2 mx |x|=2m fx:{0,1}m→{0,1} K′(x) fx 2m , temos uma medida eficiente.
Para satisfazer a condição [2], precisamos modificar os BDDs padrão, permitindo um tipo especial no nó. Normalmente nós são rotulados por índices , incluiremos um nó oracle especial. Para K ( x | y ) em que | y | = 2 m , permitiremos nós especiais nos BDDs da seguinte forma:i∈{1,...,m} K(x|y) |y|=2m
[Nota: não está claro se a complexidade condicional ainda pode ser calculada com eficiência :(]
Infelizmente, também existem algumas limitações na minha abordagem. Não podemos ir muito além dos OBDDs; se considerarmos árvores de decisão mínimas ou apenas BDDs, abordaremos os problemas de intratabilidade abordados nesta resposta . Mesmo para pedidos variáveis de OBDDs, parece haver resultados intratáveis . Parece que os OBDDs são o limite dessa abordagem de complexidade de Kolmogorov, que não é tão parecida com a padrão.
fonte
Não sou especialista, mas se você precisar de uma medida de complexidade prática para seqüências de caracteres, poderá dar uma olhada na medida de complexidade T de Titchener .
Consulte o site da Titchener para uma rápida introdução; seus artigos podem ser baixados em formato pdf .
Resumo - Uma nova medida da complexidade de cadeias finas é apresentada com base em um processo de produção hierárquico recursivo específico . A partir do limite máximo, deduzimos uma relação entre complexidade e conteúdo total de informações. ..artigo completo ...
Também encontrei alguns documentos sobre implementações práticas (veja, por exemplo, " Um algoritmo de decomposição rápida em T ")
fonte
Basicamente, quase qualquer método de aprendizado de máquina ou compactação é uma aproximação à complexidade de Kolmogorov:
Assim, você pode simplesmente procurar padrões com qualquer compressor ou distribuição de probabilidade e quanto melhor eles compactarem seus dados, melhor seu limite superior para K (x). Apenas certifique-se de adicionar o tamanho do próprio compressor ao tamanho dos dados compactados para obter a estimativa.
Você também pode usar um tempo limitado para definir sua classe de modelo, o que leva à resposta de Suresh. Basicamente, se você assumir que sua fonte de dados possui complexidade de tempo polinomial e tentar todas as máquinas de Turing polinomiais para compactá-la, pode ter certeza de ter estimado com precisão a complexidade de Kolmogorov. Isso ainda pode não ser tão prático, mas, por limites de tempo mais baixos, você pode calcular a mistura bayesiana completa de uma boa aproximação a ela.
Para detalhes técnicos, consulte este documento . Disclaimer: Eu sou um dos autores.
fonte
Você está procurando recursos limitados pela complexidade de Kolmogorov. Você pode começar com este documento e se ramificar.
fonte