A dificuldade de um problema fortemente NP-difícil ou NP-completo (como por exemplo, definido aqui ) muda quando sua entrada é unária em vez de codificada em binária?
Que diferença faz se a entrada de um problema fortemente NP-difícil é unária? Quero dizer, se eu pegar, por exemplo, o problema fracassado de NP-Complete Knapsack, ele é NP-completo quando codificado em binário, mas pode ser resolvido em tempo polinomial por programação dinâmica quando codificado em unário. Talvez isso tenha implicações na dureza de níveis mais altos da hierarquia polinomial do tempo?
A noção de fortemente ...- também vale para outras classes de complexidade, por exemplo, classes mais altas da hierarquia polinomial do tempo?
Eu já fiz essa pergunta no stackoverflow.com, mas foi destacado que é mais apropriado aqui.
fonte
Respostas:
Um tamanho de problema de codificado em unário é o tamanho N e o log N, se binário. Se o tempo gasto for F ( N ) , este será F ( tamanho ) no primeiro caso e F ( tamanho 2 ) no segundo caso. Portanto, um algoritmo polinomial para o primeiro caso provavelmente será exponencial para o segundo. A codificação do problema pode alterar radicalmente a complexidade de um algoritmo.N N logN F( N) F( tamanho ) F( 2Tamanho)
fonte
Não.
Se você alterar a codificação da entrada, alterou a definição formal do problema, o que significa que é um problema diferente . A complexidade do problema original não muda, pela mesma razão que apontar para uma luz diferente no céu não altera a massa da lua.
fonte
A resposta curta é que, se a entrada for unária, ela será mais longa . É exponencialmente mais longo. Agora, um algoritmo que funciona em tempo polinomial no tamanho da entrada tem "tempo suficiente" para resolver o problema, apenas porque a entrada em si é exponencialmente maior que a do problema original.
fonte
Vendo a questão da formulação apontada na resposta de JeffE, a resposta é sim.
Considere o problema da mochila . Ele possui um algoritmo pseudo-polinomial , que é aquele com tempo de execução limitado por um polinômio em um número codificado na entrada. Como na codificação unária os valores correspondem ao comprimento, esse é um algoritmo de tempo polinomial para a versão unária.
De fato, todo problema fracamente completo de NP se enquadra nessa categoria.
fonte