(Estou no meio do meu primeiro curso teórico de cs, então peço desculpas antecipadamente pelo que provavelmente é uma pergunta estúpida.)
Então, dizemos que alguma linguagem L está em P, o que significa que uma máquina de Turing pode ser construída que gera 1 se x estiver em L e 0, caso contrário; Além disso, a máquina é executada em tempo polinomial. Eu entendo isso.
Mas muitas pessoas dizem que existem certos problemas em P que não me parecem problemas de decisão; por exemplo, maximizar uma função sujeita a restrições lineares. O que significa que "programação linear" está em P? Certamente "encontrar o valor máximo" não é um problema de decisão?
fonte
Formalmente, a classe de funções que pode ser calculada em tempo polinomial é chamada FP . As pessoas costumam dizer "P" em vez de "FP", já que a distinção é apenas sintática e nenhuma confusão real acontecerá.
fonte
Uma pergunta muito semelhante já foi feita no tópico " Classe de complexidade do FNP ". Lá, o questionador perguntou essencialmente a diferença entre as classes de complexidade NP e FNP. Você está perguntando a diferença entre as classes de complexidade P e FP. Em resumo, P e NP são classes de decisão, enquanto as versões "F" (FP e FNP) são classes de função. Para mais informações, consulte o tópico citado acima.
fonte
Problemas que exigem uma solução podem ser transformados em problemas de decisão, se houver alguma maneira de medir o quão boa é uma solução. A versão da decisão especifica que qualquer solução deve ser melhor que algum valor limite. Por exemplo, a versão de decisão do PROGRAMA LINEAR é obtida perguntando se o programa linear é viável.
fonte