As técnicas dependem do modelo e do tipo de recurso em que queremos obter um limite inferior. Observe que, para provar um limite mais baixo da complexidade de um problema, primeiro temos que consertar um modelo matemático de computação: um limite mais baixo para um estado de problema é que nenhum algoritmo usando uma certa quantidade de recursos pode resolver o problema, ou seja, estamos quantificando universalmente sobre algoritmos. Precisamos ter uma definição matemática do domínio da quantificação. (Isso geralmente é verdadeiro para resultados de impossibilidade.) Portanto, os resultados de limite inferior são válidos apenas para um modelo específico de computação. Por exemplo, oΩ ( n logn )O limite inferior para classificação funciona apenas para algoritmos de classificação baseados em comparação, sem essa restrição e em modelos de computação mais gerais, pode ser possível resolver a classificação mais rapidamente e até em tempo linear. (Veja o comentário de Josh abaixo.)
Aqui estão alguns métodos diretos básicos de provar limites inferiores na teoria da complexidade computacional para os modelos mais gerais de computação (máquinas de Turing e circuitos).
I. Contagem:
Idéia: Mostramos que existem mais funções que algoritmos.
Ex: Existem funções que requerem circuitos exponencialmente grandes.
O problema com esse método é que ele é um argumento existencial e não fornece nenhuma função explícita ou qualquer limite superior à complexidade do problema que provou ser difícil.
II Combinatória / Algébrica:
Idéia: Analisamos os circuitos e mostramos que eles têm uma propriedade específica, por exemplo, as funções calculadas por eles podem ser aproximadas por alguma classe agradável de objeto matemático, enquanto a função de destino não possui essa propriedade.
Ex: o lema de comutação de Håstad e suas variantes usam a árvore de decisão para aproximar , Razborov-Smolensky usa polinômios sobre os campos para aproximar funções , etc. A C 0 [ p ]AC0AC0[p]
O problema desse método é que, na prática, ele só funcionou para turmas pequenas e relativamente fáceis de analisar. Há também a barreira de Provas Naturais de Razborov-Rudich, que de certa forma formaliza por que é improvável que propriedades simples por si só sejam suficientes para provar limites mais baixos de circuitos mais gerais.
O artigo de Razborov " Sobre o método de aproximação " argumenta que o método de aproximação está completo para provar limites inferiores em certo sentido.
III Diagonalização:
Idéia. Diagonalizamos as funções da classe menor. A ideia remonta a Gödel (e até a Cantor).
Ex. Teoremas da hierarquia temporal , teorema da hierarquia espacial , etc.
PPSpacePPSpace
Também temos a barreira da relativização (voltando a Baker, Gill e Solovay) e a barreira da algebraização (de Aaronson e Wigderson), que afirmam que tipos específicos de argumentos de diagonalização serão transferidos para outras configurações em que o resultado é comprovadamente falso.
Observe que essas barreiras não se aplicam a argumentos de diagonalização mais gerais. De fato, no artigo de Dexter Kozen " Indexação de classes sub-recursivas ", a diagonalização é completa para provar limites inferiores.
Como você já deve ter notado, existe uma forte relação entre encontrar bons simuladores universais para uma classe de complexidade e separar essa classe de complexidade de classes maiores (para uma declaração formal, consulte o artigo de Kozen).
Trabalhos recentes
Para avanços recentes, consulte os documentos recentes de Ryan Williams . Não os discuto nesta resposta, pois espero que o próprio Ryan escreva uma resposta.