Académique Documents
Professionnel Documents
Culture Documents
Computabilidade e
Complexidade
(COM10014)
Complexidade de algoritmos
Complexidade de algoritmos
Complexidade de algoritmos
Complexidade de algoritmos
Complexidade de algoritmos
Complexidade de algoritmos
Complexidade de algoritmos
Complexidade de algoritmos
Complexidade de algoritmos
Complexidade de algoritmos
Análise assintótica
Análise assintótica
m
TEORIA DA COMPUTAÇÃO
Propriedades:
• f(n) = O(f(n))
• c x O(f(n)) = O(f(n)) , onde c = constante
• O(f(n)) + O(f(n)) = O(f(n))
• O(O(f(n))) = O(f(n))
• O(f(n)) + O(g(n)) = O(max(f(n), g(n)))
• O(f(n))O(g(n)) = O(f(n)g(n))
• f(n)O(g(n)) = O(f(n)g(n))
TEORIA DA COMPUTAÇÃO
Notação Ω (Ω-grande)
Notação Θ (theta)
Propriedades importantes
Somatórios
TEORIA DA COMPUTAÇÃO
Propriedades importantes
Logaritmo
TEORIA DA COMPUTAÇÃO
Exemplos
∑ 1 = n = O(n)
s = s + 1; i= 0
return s;
}
TEORIA DA COMPUTAÇÃO
Exemplos
Exemplos
1) void algoritmo(int n){
if(n > 1){
int p = 1;
for(int i = 2; i <=n; i++)
if(A[p] < A[i]){
p = i;
aux = A[p];
A[p] = A[n];
algoritmo(n-1);
}
}
}
TEORIA DA COMPUTAÇÃO
Exemplos
Qual o custo de execução da linha marcada?
Seja T(n) a função que determina o nº de vezes que a
comparação na linha marcada é executada. Então:
T(1) = 0
T(n) = n-1 + T(n-1) para n > 1
Exemplos
2) int busca-binaria(int l, int r, int x){
if(l == r){
if(A[l] == x)
return l;
else
return 0;
}
else{
m = (l+r)/2;
if(x < A[m])
busca-binaria(l, m – 1, x);
else
busca-binaria(m, r, x);
}
}
TEORIA DA COMPUTAÇÃO
Exemplos
Qual o custo das comparações (qual o nº de
comparações realizadas)?
As 2 comparações não são feitas ao mesmo tempo.
T(1) = 1
T(n) = 1 + T(n/2) para n > 1.
Resolvendo a recorrência temos:
T(n) = log n + 1 = O(log n)
TEORIA DA COMPUTAÇÃO
s
t
N é o número de nós em G
TEORIA DA COMPUTAÇÃO
P x NP
Um dos maiores problemas não resolvidos em CC e
matemática é se P = NP.
O bom senso sugere que P é apenas uma pequena
parte de NP. A maioria dos pesquisadores acreditam
que as 2 classes não são iguais porque as pessoas
investiram esforços enormes para encontrar
algoritmos polinomiais para certos problemas em NP,
sem sucesso.
No entanto, alguns acreditam que P seja, talvez, igual
a NP. Isso porque somos incapazes de provar a
existência de uma única linguagem em NP que não
esteja em P.
TEORIA DA COMPUTAÇÃO
P x NP
O problema pergunta se existem problemas matemáticos
cuja resposta pode ser verificada em tempo polinomial
(NP), que não possam ser resolvidos em tempo polinomial.
Se essas classes fossem iguais, qualquer problema
polinomialmente verificável seria polinomialmente
decidível.
O problema parte da constatação que são muito freqüentes
as situações em que parece ser muito mais rápido verificar
solução do que achar um processo de resolução, e então
pergunta: isso sempre ocorre, ou simplesmente ainda não
descobrimos um modo de resolvê-los rapidamente?
TEORIA DA COMPUTAÇÃO
Redutibilidade
Usamos reduções de tempo polinomial para
estudar a complexidade de vários problemas
importantes e aparentemente difíceis da classe NP.
Podemos dizer que f é uma redução polinomial do
problema A para o problema B se for uma redução
polinomial entre as linguagens correspondentes,
isto é, se transforma em tempo polinomial,
instâncias do problema A para instancias do
problema B, de tal forma que x é uma instancia do
problema A com resposta “sim” se e somente se
f(x) for uma instância do problema B q também
fornece a resposta “sim”.
TEORIA DA COMPUTAÇÃO
Redutibilidade
Se A é redutível a B e tem um algoritmo polinomial
que resolve B, esse algoritmo também resolve A em
tempo polinomial, uma vez que os passos
responsáveis pela redução e o algoritmo que
resolve a instância de B podem ser executados em
tempo polinomial.
Se A se reduz a B em tempo polinomial e existe
algoritmo que resolve B em tempo polinomial,
então A também pode ser resolvido em tempo
polinomial.
TEORIA DA COMPUTAÇÃO
Problemas NP-completo
É um subconjunto dos problemas NP que têm a
complexidade inerente a todos os problemas dessa
classe. Uma solução de tempo polinomial para um
problema NP-Completo resolveria toda a classe NP.
Uma linguagem L é NP-completa se:
L pertence a NP
E para qualquer linguagem L’ que pertence a NP
existe alguma redução polinomial de L’ para L
Propriedade de completude: todos os problemas em
NP podem ser reduzidos a eles (problemas NP-
completos) por meio de reduções de tempo polinomial.
TEORIA DA COMPUTAÇÃO
Problemas NP-completo
Para provar que um problema é NP-completo:
Mostre que o problema está em NP.
Mostre que um problema NP-completo conhecido
pode ser polinomialmente reduzido para ele.
Referências