É possível decidir se um determinado algoritmo é assintoticamente ideal?

11

Existe um algoritmo para o seguinte problema:

Dada uma máquina de Turing que decide uma linguagem L , existe uma máquina de Turing decide tal que ?M1L
L t 2 ( n ) = o ( t 1 ( n ) )M2Lt2(n)=o(t1(n))

As funções e t 2 são os piores tempos de execução das máquinas Turing M 1 e M 2, respectivamente.t1t2M1M2

E a complexidade do espaço?

StaticBug
fonte
1
A resposta definitivamente não é. A determinação do pior caso de tempo de execução de uma TM é indecidível.
chazisop

Respostas:

9

Aqui está um argumento simples para mostrar que eles são indecidíveis, ou seja, não há algoritmos para verificar se um determinado algoritmo é ideal em relação ao tempo de execução ou uso de memória.

Reduzimos o problema de parada na fita em branco para o seu problema de otimização do tempo de execução.

Seja uma determinada máquina de Turing. Seja N a seguinte máquina de Turing:M

: na entrada n 1. Execute M na fita em branco por (no máximo) n etapas. 2. Se MNn
Mn
M não parar em etapas, execute um loop de tamanho 2 n e , em seguida, retorne NO. 3. Caso contrário, retorne YES.n2n

Existem dois casos:

  1. Se não parar na fita em branco, a máquina N funcionará por Θ ( 2 n ) etapas na entrada n . Portanto, seu tempo de execução é Θ (MNΘ(2n)n . Nesse caso, N obviamente não é o ideal.Θ(2n)N

  2. Se parar na fita em branco, a máquina N funcionará por um número constante de etapas para todas as n grandes o suficiente , portanto o tempo de execução é O ( 1 ) . Nesse caso, N é obviamente ideal.MNnO(1)N

Em resumo:

M halts on blank tape N is optimial 

Além disso, dado o código para , podemos calcular o código para NMN . Portanto, reduzimos o problema de interrupção na fita em branco para o problema de otimização em tempo de execução. Se pudéssemos decidir se uma determinada máquina de Turing é ideal, poderíamos usar a redução acima para verificar se uma determinada máquina M pára na fita em branco. Como parar na fita em branco é indecidível, o seu problema também é indecidível.NM

Um argumento semelhante pode ser usado para o espaço, ou seja, também é indecidível verificar se uma determinada máquina de Turing é ótima em relação ao espaço que usa.

Mesmo uma afirmação mais forte é verdadeira: não podemos decidir se uma determinada função computável é um limite superior à complexidade do tempo de computação de uma determinada função computável. Da mesma forma para o espaço. Ou seja, mesmo a teoria básica da complexidade não pode ser automatizada por algoritmos (o que pode ser considerado uma boa notícia para os teóricos da complexidade;).

Kaveh
fonte
Só quero mencionar que na pergunta original, o OP assumiu que decide o idioma em tempo quadrático. M1
Pål GD
Por favor, esclareça que você considera a otimização assintótica . Mesmo no caso 2, não é estritamente ideal; a função n SIM pode ser calculada em uma etapa, enquanto N precisa de mais de n 0 (para n grande ), com nnnYESNn0n o comprimento da computação de M em fita em branco. n0M
Raphael
Ah, a pergunta mudou desde a última vez que a li. Deixa pra lá.
Raphael
@ PålGD, acho que o OP usou isso como exemplo (com base na pergunta original postada na cstheory). Você pode verificar os comentários sob essa pergunta.
Kaveh
2

Como outros mencionaram, a resposta é não.

Mas há um artigo interessante escrito por Blum " Uma teoria independente da máquina da complexidade das funções recursivas ". Ele mostrou que existem algumas funções com a propriedade de que, por mais rápido que um programa seja para calcular essas funções, existe outro programa para calculá-las muito mais rapidamente .

uma propriedade muito agradável!

Reza
fonte
-3

Ha! Se a resposta fosse sim, estaríamos vivendo em um mundo diferente.

Imagine que a resposta para sua pergunta foi sim (e, é claro, conhecíamos o algoritmo que responderia à sua pergunta); então, para qualquer algoritmo A da linguagem L , poderíamos dizer (usandoA0AL ) se A é ideal ou não.A0A

Infelizmente, isso não é possível e, de fato, acho pessoalmente que provar a otimização (não trivial) é o problema mais interessante (e difícil) da ciência da computação. Até onde eu sei - eu ficaria feliz em ser corrigido - não existe resultado de otimização para qualquer problema polinomial (exceto os resultados triviais de otimização do curso dos algoritmos que levam um tempo proporcional ao tamanho da entrada).

t para t
fonte
1
Ω(N)
1
Ω(nlogn)
@ vonbrand - foi o que quis dizer com algoritmos que são proporcionais ao tamanho da entrada.
t to t
1
Ok, receio que seja infrutífero, mas tentarei novamente. 1) Não, de maneira alguma. Se você salvar apenas uma etapa em cada entrada, terá um algoritmo melhor do que antes, mesmo que ele tenha o mesmo tempo de execução assintótico. 2) Não, não faz. Também pode significar "Eu não sei, mas se sim, então X". Isso não é incomum (cf P? = NP). 3) Você afirmou que havia limites inferiores não triviais (em asymptotics, presumo) em tudo . Isso esta errado. Faça sua lição de casa, por favor.
Raphael
1
@ MartinJonáš Quero dizer uma máquina de Turing com 2 fitas. Kaveh tem razão: a prova do teorema da hierarquia de tempo dá problemas solucionáveis ​​com politima com complexidade arbitrariamente alta, mas os exemplos não são exatamente naturais e não parecem muito explícitos. Além disso, nenhuma hierarquia é conhecida por tempo probabilístico; portanto, realmente não temos nada.
Sasho Nikolov 03/02