Outra razão é que isso geralmente ocorre sem perda de generalidade, pois frequentemente (embora nem sempre - veja abaixo) a complexidade de funções e problemas de decisão são equivalentes. Todo problema de decisão pode ser visto como uma função cujos únicos valores são 0 e 1. Por outro lado, dada a função , existem vários problemas de decisão associados que geralmente têm a mesma complexidade que , por exemplo:fff
- i f ( x ) }{(x,i): o ésimo bit de é 1 .if(x)}
- ≥{(x,k):f(x)≤k} (ou )≥
Aqui está um exemplo em que a complexidade das classes de função e suas classes de idioma associadas parecem diferir: [ Wagner 1987 "Log Query Classes" , tese de Hemaspaandra em 1987 , Buss & Hay 1991 ], mas se então e [ Selman 1994 ].PNP[log]=PNPttFPNP[log]=FPNPttNP=RPP=UP
(Aqui o oracle significa que a máquina pode fazer consultas para qualquer problema em (digamos, SAT). A notação significa com um oracle , mas no qual as consultas do oracle não são adaptáveis : na entrada , se for - th string consultada para o oracle, então não depende das respostas para quaisquer chamadas anteriores do na entrada a máquina cria uma lista O(logn)NP P N P t t PNPxyiiyixy1,…,ymyiNP[log]O(logn)NPPNPttPNPxyiiyixy1,…,ymsem consultar o oráculo, consulta o oráculo sobre todos os e obtém as respostas e, depois, calcula sem consultar o oráculo novamente.)yi