Suponha que eu tenha um problema de decisão e o codifique para um idioma . Agora, também posso codificá-lo para um idioma diferente .
Existe algum teorema relacionando a complexidade temporal de e ?
Como a complexidade temporal de um problema muda com codificações diferentes do mesmo problema?
complexity-theory
terminology
time-complexity
user774025
fonte
fonte
Respostas:
Sim, a complexidade depende da codificação. A única coisa que você pode ter certeza é que, se estiver traduzindo da codificaçãoL para codificação L′ ou vice-versa tem a complexidade f e D pode ser resolvido com complexidade g , então D′ (mesmo problema expresso com a codificação L′ ) pode ser resolvido com complexidade O(f+g) indo e voltando entre codificações.
Não é apenas uma questão de tamanho da codificação. Para dar um exemplo simples, deixeL ser inteiros positivos representados em binário e L′ ser inteiros positivos representados por sua fatoração primária. Existe um limite polinomial no tamanho de uma representação em termos da outra. No entanto, durante muito tempo, não se sabia se o teste de primalidade pode ser resolvido em tempo polinomial na representação binária; mas na representação de fatoração, é trivialmente polinomial (provavelmenteO(1) dependendo dos detalhes da representação).
Ou considere o problema de decisão "é inteiron um membro do conjunto S ”. Se o conjunto é representado por uma lista não ordenada de números inteiros, esse problema evidentemente requer pelo menos tempo linear. Mas se o conjunto for representado por uma árvore de pesquisa equilibrada, o tempo de pesquisa será polilogarítmico no tamanho do conjunto.
Na maioria dos casos concretos, há uma representação evidente que todos assumem, ou mais precisamente, há uma classe de representações equivalentes a uma transformação que leva tempo insignificante. Mas, às vezes, a representação é relevante, mais frequentemente ao analisar estruturas de dados com mais precisão do que o tempo polinomial.
fonte
A complexidade do tempo depende da codificação. As complexidades de tempo paraL e L′ arbitrariamente distantes, dada uma codificação bastante louca.
Na prática, geralmente nos preocupamos com a complexidade do tempo para uma codificação "natural". Freqüentemente, se houver várias codificações "naturais", todas elas tendem a levar aproximadamente à mesma complexidade de tempo (por exemplo, se você puder converter entre as codificações com eficiência). No entanto, não há garantia formal disso.
Portanto, tecnicamente falando, não se pode falar da complexidade temporal de um problema sem especificar a codificação específica usada.
fonte
Considere qualquer idioma completo do NPL e seu solucionador de força bruta (portanto, tempo exponencial) A . Agora defina
Agora, claramente, uma leve adaptação deA (use entrada somente até $ ) decide L′ no tempo exponencial em|x| e, portanto, no tempo polinomial no comprimento de sua própria entrada (que é de L′ ) Isso é,L′∈P .
Uma consideração mais simples é passar da codificação binária padrão para a codificação unária. De repente, verificações triviais de primalidade e até fatoração são executadas em tempo polinomial. Esse conceito está relacionado ao tempo de execução pseudo-polinomial .
Então, sim: a codificação importa se ela altera significativamente o comprimento da entrada . Portanto, a suposição típica é usar
tão vago quanto isso.
Observe que nem mesmo os tempos de execução em termos deΘ -classes são invariantes usando apenas essa suposição. Imagine uma codificação de matrizes que intercale os números; isso adiciona um fator polinomial para encontrar o máximo. Portanto, você provavelmente deve ter cuidado, mesmo com codificações "boas", se quiser dizer algo com maior granularidade do que com fatores polinomiais.
fonte
Não é exatamente uma resposta para sua pergunta, mas a conjectura de Berman-Hartmanis afirma (informalmente) que todos os problemas completos de NP são codificações um do outro, em algum sentido. A noção de codificação usada na conjectura preserva a complexidade do tempo, até uma diferença polinomial.
fonte