| 
 No meu ponto de vista, existem infinitos algoritmos 
para fazer alguma coisa. Até para não fazer nada. 
Por exemplo, um algoritmo para calcular a+b. 
Pode-se fazer da maneira tradicional, ou então pode-se fazer um loop percorrendo 
os números, subtraindo b e verificando se é igual a 'a'. 
Ou então pode-se somar 6 a 'a' somar 'b' ao 
resultado e depois subtrair '6'. 
Agora, em vez de fazer as operação acima com 6, 
faça com todas os outros naturais. Como são constantes, haverá infinitos 
algoritmos que fazem a soma. 
Enfim, o meu raciocínio é por aí. Esse é mais um 
motivo que as classes P e NP, por exemplo, são conjuntos de problemas e não 
de algoritmos. Estudar algoritmos pode ser muito mais complicado. 
Formalmente, em teoria da computação, podemos 
definir um problema de decisão como uma linguagem. Um problema de decisão é um 
cuja resposta é sim ou não. Uma linguagem pode ser considerada como um conjuntos 
de seqüências de caracteres de um alfabeto. Podemos sempre escrever uma 
instância de um problema como uma string em um alfabeto. Assim o problema 
pode ser visto como um mapeamento de tais seqüências em {0,1}. A linguagem 
associada ao problema contém todas as seqüências (e somente elas) que são 
mapeadas em 1. 
Assim todo problema de decisão fica reduzido ao 
problema: Essa seqüência pertence a essa linguagem? 
Isso facilita bastante a teoria. 
Problemas de otimização podem ser reduzidos a 
problemas de decisão utilizando busca binária com perguntas do tipo: O melhor 
valor é melhor que k? 
Maiores informações podem ser encontradas no texto 
de Cook sobre o problema "P=NP?" no site www.claymath.org/prizeproblems 
Uma outra observação é que nem todo problema 
pertence necessariamente a NP. Pode ser que vc não consiga um algoritmo 
polinomial em uma máquina não-determinística para ele. 
Eu não entendi a conclusão: "Logo existem infinitas 
alternativas a serem analisadas, ou seja o problema é do tipo NP." 
Poderia tb me explicar o que é "intersecção 
aleatória"? 
Até mais 
Vinicius 
  |