Para resolver um problema por meios computacionais, é necessário codificá-lo numa dada linguagem e escrever um algoritmo (um programa, nessa mesma linguagem), isto é, um método para resolver o problema num número finito de passos. Um problema é ____ se existe um algoritmo polinomial que o resolva. Se todos os algoritmos conhecidos para resolver um problema forem exponenciais, o problema se diz ______. A alternativa que preenche as lacuna de forma correta é?
Questão
Para resolver um problema por meios computacionais, é necessário codificá-lo numa dada linguagem e escrever um algoritmo (um programa, nessa mesma linguagem), isto é, um método para resolver o problema num número finito de passos.
Um problema é ____ se existe um algoritmo polinomial que o resolva. Se todos os algoritmos conhecidos para resolver um problema forem exponenciais, o problema se diz ______.
A alternativa que preenche as lacuna de forma correta é?
Alternativas
a) tratável e intratável
b) intratável e insolúvel
c) tratável e insolúvel.
d) intratável e tratável.
e) insolível e tratável.
Explicação
Em Teoria da Complexidade, diz-se que um problema é tratável quando existe um algoritmo que o resolva em tempo polinomial (por exemplo, , , para algum constante). Isso significa que, à medida que o tamanho da entrada cresce, o tempo de execução cresce de forma “administrável”.
Por outro lado, quando todos os algoritmos conhecidos para resolver um problema têm tempo exponencial (por exemplo, , ), costuma-se classificar o problema como intratável, pois o custo cresce muito rapidamente e, na prática, torna-se inviável para entradas grandes.
Logo, as lacunas são preenchidas por tratável e intratável.
Alternativa correta: (a).