Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Complexidade de Algoritmos
2
Complexidade de Algoritmos
Seqüência de passos conhecidos Finitos Entrada ® Processamento ® Saída Mesmo que “se confunda” no tempo Tem que ter uma saída Problema da Parada
3
Algoritmos Algoritmos (definições)
Procedimento computacional que recebe uma entrada e produz uma saída Seqüência de passos que transformam entrada em saída Máquina de Turing que transforma uma entrada M numa saída S
4
Complexidade Algoritmos podem ser mais ou menos eficientes
Ortogonal à computabilidade Podemos otimizar nossos códigos! Busca Seqüencial X Busca Binária Bubble Sort X Quick Sort
5
Tipos de Complexidade Algoritmos podem ser mais ou menos eficientes com respeito a Tempo: quanto tempo será necessário para que o algoritmo termine e dê a resposta? Espaço: quanto de espaço será necessário para que o algoritmo possa trabalhar e dar a resposta?
6
Exemplo Em bancos de dados: Outros exemplos
Uma busca usando índice B+Tree Mais rápida (mais eficiência no tempo) Mais espaço (menos eficiência no espaço) Outros exemplos Árvores X Ordenação Ordenação em disco
7
Exemplo práticos Qual a complexidade temporal da busca seqüencial?
E da busca binária? Qual a complexidade temporal do Bubble Sort? E do Merge Sort?
8
Notação O(n) Sejam duas funções g(n) e f(n)
Diz-se que g(n) = O(f(n)) sse há algum C tal que g(n) = c·f(n) Exemplo: 3n = O(n) 4n2 -2n + 7 = O(n2) log10(n)/3 = O(log(n))
9
Notação O(n) Porque O(n) é importante?
n2 e n n geram valores diferentes Mas padrões de crescimento iguais! Para N muito grande (digamos ) n2 = 1x1024 e n n = 1x x1012 Quanto x1012 é significativo no final?
10
Padrões importantes Certos tipos de complexidade são importantes
Caracterizam classes de problemas particulares Facílimos, Muito fáceis, Fáceis, Difíceis, Muito difíceis, etc. e os intratáveis!
11
Padrões importantes O(1) – tempo constante: facílimo
O(log n) – logarítmica: muito fácil O(n) – linear: fácil O(n log n) – polinomial-logaritmico:fácil O(nm) – polinomial: difícil O(n!) – fatorial (exponencial): intratáveis! O(mn) – exponencial: intratáveis!
12
Gráfico Comparativo
13
Gráfico Comparativo
14
Gráfico Comparativo
15
Gráfico Comparativo
16
Importância da complexidade
O que são elementos de hardware e de software Um exemplo: ordenação Computador A – Um bilhão de comparações por segundo (1012) Ordenação por inserção Computador B – Dez milhões de comparações por segundo (1010) Ordenação rápida (Quick Sort)
17
Importância da complexidade
Complexidade dos algoritmos Quick Sort: O(n log n) Insertion Sort: O(n2) Ordenar 1 milhão de números (n=106) Computador A: (106)2/1012 = 1seg Computador B: 106xlog106/1010 = 6x10-9seg E se fosse para ordenar um trilhão de números (n=1015)?
18
Importância da complexidade
Outro exemplo – determinante de matrizes Calcular o determinante de uma matriz quadrada de ordem n (MNxN) Método de Gauss: 4n3+9n2-7n)/6 = O(n3) Método de Crammer: (n+1)!(e-1) = O(n!)
19
Importância da complexidade
Crammer Gauss 2 3 4 5 2,35ms 10 1,19min 4,95ms 20 15225 séculos 38,63ms 40 5,1033 séculos 0,315s 50 102 159 456 353 666
20
Classes de problemas Problemas polinomiais
Problemas para os quais se conhece algoritmo polinomial para resolver O(nk) ou inferior Classe P
21
Classes de problemas Problemas polinomiais não determinísticos
Problemas para os quais não se conhece solução determinística senão exponencial O(kn) ou que o valha (O(n!), etc) Classe NP P Ì NP (todo problema P admite solução exponencial!)
22
Problemas da classe NP O problema do caixeiro viajante (simplificado)
Percorrer todas as cidades com mais de 200 mil habitantes do interior da Bahia andando o mínimo possível, começando em Ilhéus, sem passar duas vezes na mesma cidade! E se não se fixar a cidade de origem?
23
Como fica Cidades: Possíveis trajetos? Distâncias? Feira de Santana
Vitória da Conquista Itabuna Ilhéus Possíveis trajetos? Distâncias?
24
Distâncias Km FSA VCO ITA IOS - 400 360 390 240 270 30
25
Como escolher? Gerar todos os trajetos possíveis e comparar seus custos – Método Algoritmico Dados C: Conjunto de cidades consideradas R e Rmenor: Listas encadedadas de cidades (rotas) R.Tamanho(T): Retorna o tamanho da rota R usando T T: Tabela de distâncias entre as cidades
26
Como escolher? Algoritmo Inicio C Todas as Cidades
R.Criar( ) /*Cria a rota R vazia */ MenorTamanho = GerarRotas (C, R, Rmenor, MenorTamanho) Retorna Rmenor Fim
27
Como escolher? Gerar_Rotas (C, R, Rmenor, MenorTamanho) Se C então
Para cada cidade c C faça R.Incluir(c) C’ = C – {c} Gerar_Rotas (C’, R, Rmenor, MenorTamanho) R.Excluir(c) Senão Se R.Tamanho(T) < MenorTamanho então Rmenor = R MenorTamanho = R.Tamanho(T) Fim_Gerar_Rotas
28
Como escolher? Gera todos os trajetos possíveis e comparar seus custos
IOS/FSA/VCO/ITB: = 1030 IOS/FSA/ITB/VCO: = 990 IOS/ITB/FSA/VCO: = 790 IOS/VCO/ITB/FSA: = 870 IOS/VCO/FSA/ITB: = 1030 IOS/ITB/VCO/FSA: = 670
29
Performance! Quantos trajetos? Quantas cidades?
3 cidades, 6 trajetos, (3!) Cidades maiores do que habitantes 360 cidades, 3,98x10765 (360!) trajetos Um computador (jamais construído) que possa gerar trajetos por segundo: 1,26x10256 séculos!
30
Outros problemas da classe NP
Gerenciamento de filas para uso de CPU (escalonamento) Gerenciamento de memória (fragmentação) Otimização de consultas em SGBDs Localização de recursos em Sistemas Distribuídos.
31
Como tratar problemas NP
Heurísticas Técnicas de programação (meta-heurísticas) Abrir mão da “melhor” solução Garantir uma “boa” solução (possivelmente a melhor) Tempo de execução polinomial
32
Método Guloso Começa em algum ponto
Escolhe, na vizinhança, qual o ponto mais “barato” a percorrer Repete a escolha até que não haja mais nenhum Pode (ou não) resultar no melhor caso, em problemas da classe P Problema do troco
33
Método Guloso No exemplo: saindo de Ilhéus Escolhe Itabuna (30Km)
Escolhe Vitória da Conquista (240Km) Escolhe Feira de Santana (400) Total: 670 Melhor escolha? Sempre?
34
Método Guloso
35
Método Guloso
36
Método Guloso
37
Método Guloso
38
Método Guloso
39
Método Guloso
40
Dividir para Conquistar
Parte do princípio de que unir duas melhores soluções parciais resulta na melhor solução global N cidades K grupos de N/K cidades Resolve os K grupos “Une” a solução Pode (ou não) resultar no melhor caso, em problemas da classe P Torre de Hanoi, Ordenação
41
Dividir para conquistar
No exemplo: dois grupos ({Ilhéus, Itabuna} e {Vit. Conquista, Feira de Santana}) Ilhéus – Itabuna (30Km) Vit. Conquista – Feira de Santana (400Km) “Unir”: Itabuna-Feira (390) ou Itabuna- Conquista (240) Total: 670 Melhor solução? Sempre?
42
Programação Dinâmica Quando uma seqüência de decisões locais não gera uma solução ótima Gerar todas as seqüências: exponencial Princípio: Se i, i1, i2, i3, ..., ik, j é a melhor solução entre i e j então i1, i2, ... ik é a melhor solução entre i1 e ik. Requer um conhecimento prévio (heurística)
43
Programação Dinâmica No exemplo: sabe-se que a melhor divisão em dois grupos é (Ilhéus, Itabuna e Vit. Conquista, Feira de Santana) Ilhéus – Itabuna (30Km) Vit. Conquista – Feira de Santana (400Km) “Unir”: Itabuna-Feira (390) ou Itabuna-Conquista (240) Total: 670 Melhor solução? Proporcional ao conhecimento prévio (Background Knowledge)!
44
BackTracking Soluções restritas Gerar árvore de soluções até que
Uma resposta que satisfaça seja encontrada Não se possa mais alcançar resposta satisfatória No segundo caso há um retorno e toma-se outro caminho O problema das 8 rainhas
45
BackTracking Soluções com custo inferior a 800
IOS/FSA/VCO/ITB: = 1030 IOS/FSA/ITB/VCO: = 990 IOS/ITB/FSA/VCO: = 790 Solução ok! Total: 790 Encontra a primeira solução “satisfatória”, se houver.
46
NP-Completos Intratabilidade Problemas intratáveis
Indecidibilidade (Problema da Parada, Fermat, etc) Problemas decidíveis mas não polinomiais Problemas decidíveis e “aparentemente” não polinomiais
47
NP-Completos Objetivo: encontrar problemas “equivalentes” em complexidade Dicas sobre como resolvê-los (ou não resolvê-los) Redução: mapeamento entre dois problemas 1 “engloba” 2 1 é pelo menos tão difícil quanto 2
48
Exemplo de redução 1: Caixeiro viajante 2: Desfragmentar memória
Escolher Arquivo = Escolher Trecho Possibilidades de organização dos arquivos = Possíveis rotas Melhor conjunto de rotas X Seqüência (desfragmentada) de arquivos 2 engloba 1 Se houver solução polinomial para o caixeiro viajante...
49
Definições P: classe de problemas resolvíveis em tempo polinomial num computador determinístico NP: classe de problemas resolvíveis em tempo polinomial em um computador não determinístico (NP: Non-deterministic Polinomial)
50
Mais resultados NP é “polinomialmente verificável”, i.e. há algoritmos polinomiais para verificar uma solução de problemas em NP Sabe-se que P NP (mais precisamente P NP) Mas não se sabe se P=NP ou se PNP Acredita-se que PNP
51
P e NP P NP
52
Problemas Intratáveis
A suposição de que PNP nos leva a questionar: Quem são os problemas do conjunto NP – P? Problemas intratáveis!
53
Teorema de Cook Se 1 2 (1 é redutível a 2 em tempo polinomial) e 2 P então 1 P Satisfatibility: Problema que Cook mostrou que todos os problemas em NP podem ser reduzidos a ele em tempo polinomial Há outros problemas com essa mesma característica: os NP-Completos
54
Propriedades dos NP-Completos
Se 1 NPC e 2 NPC então 1 e 2 são mutuamente redutíveis em tempo polinomial Se algum problema em NP for mostrado intratável, todos os problemas NPC também o serão, e o mesmo se dá no caso da tratabilidade Ou seja: seja um problema NPC tem-se que, P P NP Mas não se provou nada até hoje
55
Mundo NP (suposto) P NP NPC
56
Para que tudo isso? Respondamos à seguinte questão:
Os problemas NP-Completos são intratáveis? Há centenas de problemas NP-Completos conhecidos Se é NP-Completo Ou usa-se uma heurística Ou espera-se uma revolução em Ciência da Computação
57
Para que servem os NP-Completos?
Como provar que um problema é NP- Completo? Mostra que NP Seleciona algum problema NPC ’ Constrói uma transformação de em ’ Mostra que é polinomial Problemas intratáveis podem ser úteis?
58
Complexidade de Algoritmos.
FIM! “De vez em quando tropeçamos na verdade, mas normalmente levantamos e seguimos em frente!” Lei de Murphy aplicada ao ser humano Escher
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.