Classes de Complexidade - Fundamentos Flashcards

1
Q

O que são classes de complexidade?

A

São categorias que agrupam problemas computacionais com base nos recursos necessários para resolvê-los, como tempo e espaço.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

O que caracteriza a classe P?

A

É o conjunto de problemas que podem ser resolvidos em tempo polinomial por uma máquina determinística.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

O que caracteriza a classe NP?

A

É o conjunto de problemas cujas soluções podem ser verificadas em tempo polinomial por uma máquina determinística.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qual é a relação entre P e NP?

A

Não se sabe se P=NP, mas sabemos que P⊆NP.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

O que significa NP na classe NP?

A

Significa Nondeterministic Polynomial time (tempo polinomial não determinístico).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

O que é uma redução em teoria da complexidade?

A

É uma forma de transformar um problema em outro, preservando a dificuldade relativa entre eles.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qual é o propósito de uma redução polinomial?

A

Mostrar que a solução de um problema pode ser usada para resolver outro problema de forma eficiente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

O que significa A≤p​B em reduções polinomiais?

A

ignifica que o problema A pode ser reduzido ao problema B em tempo polinomial.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Qual é a importância das reduções para a teoria de NP-completude?

A

Elas ajudam a provar que um problema é tão difícil quanto outro já conhecido.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

O que é uma redução por transformação?

A

É uma redução que converte diretamente as instâncias de um problema em instâncias de outro.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

O que significa um problema ser NP-completo?

A

É um problema que está em NP e para o qual todo problema em NP pode ser reduzido em tempo polinomial.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Como provar que um problema é NP-completo?

A

Mostrando que ele está em NP e que um problema NP-completo conhecido pode ser reduzido a ele em tempo polinomial.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

O que é um problema NP-difícil?

A

É um problema para o qual todo problema em NP pode ser reduzido, mas ele mesmo pode não estar em NP.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Qual é a diferença entre NP e NP-completo?

A

NP é uma classe de problemas verificáveis em tempo polinomial, enquanto NP-completo contém os problemas de NP para os quais todos os outros problemas de NP podem ser reduzidos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Qual foi o primeiro problema provado como NP-completo?

A

O problema SAT (satisfatibilidade booleana).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Como um problema NP-completo pode ser resolvido?

A

Usando métodos exatos (como força bruta), aproximação, ou algoritmos heurísticos.

17
Q

Por que a NP-completude é importante na prática?

A

Ela ajuda a entender quais problemas provavelmente não têm soluções eficientes e onde buscar aproximações ou heurísticas.

18
Q

O que caracteriza problemas intratáveis? Qual a diferença entre um problema intratável e um problema indecidível?

A

Problemas intratáveis são problemas para os quais não existe um algoritmo eficiente, ou seja, resolvê-los requer tempo superpolinomial para grandes entradas. Problemas indecidíveis, por sua vez, são problemas para os quais não existe um algoritmo capaz de resolvê-los.

19
Q

O que significa tempo polinomial?

A

Tempo de execução de um algoritmo que pode ser expresso como uma função polinomial do tamanho da entrada.

20
Q

Qual a diferença entre tempo polinomial e tempo pseudo-polinomial?

A

Tempo polinomial é polinomial em função do tamanho da entrada. Pseudo-polinomial é polinomial em função do valor; visto que esse valor é armazenado em bits binários, um problema pseudo-polinomial é na verdade exponencial em função da quantidade de bits usados.

21
Q

Qual é a diferença entre uma redução polinomial e uma redução geral?

A

Uma redução polinomial transforma instâncias de um problema em outro em tempo polinomial, enquanto uma redução geral pode não ter essa restrição.

22
Q

Por que a classe NP é importante?

A

Porque contém muitos problemas práticos cuja solução é fácil de verificar, mas difícil de encontrar.

23
Q

O que é uma prova certificável?

A

É uma prova que pode ser verificada em tempo polinomial por um algoritmo.

24
Q

Qual é a relação entre NP e co-NP?

A

Co-NP é a classe de problemas cujas respostas negativas podem ser verificadas em tempo polinomial.

25
Q

Cite e explique três aplicações para as reduções polinomiais.

A

Construção de algoritmos: Se X ≤ P Y e Y pode ser resolvido em tempo polinomial, X pode ser resolvido em tempo polinomial usando-se de uma redução para Y

Estabelecer intratabilidade: Se X ≤ P Y e X não pode ser resolvido em tempo polinomial, Y não pode ser resolvido em tempo polinomial.

Estabelecer equivalência: Se ambos X ≤ P Y e Y ≤ P X, podemos usar a notação X ≡ P Y para dizer que X pode ser resolvido em tempo polinomial se e somente se Y também pode.

26
Q

O que significa dizer que um algoritmo C é um certificador para o problema X?

A

Significa dizer que, para cada string s, s ∈ X se e somente se existe uma string t tal que C(s, t) = sim. Em outras palavras, quer dizer que o algoritmo consegue verificar se t é uma prova de que s se enquadra no problema X.

27
Q

Qual a diferença entre uma redução polinomial e uma transformação polinomial? Qual a relação entre eles? São conceitos equivalentes?

A

Uma redução polinomial de X para Y resolve o problema X usando um número polinomial de etapas e uma quantidade polinomial de chamadas ao oráculo que resolve Y. Uma transformação polinomial de X para Y converte o problema X em uma instância do problema Y. Na prática, uma transformação polinomial é uma redução polinomial que usa uma única vez o algoritmo que resolve Y. Fora isso, não se sabe se são definições equivalentes.