A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Complexidade de Algoritmos

Apresentações semelhantes


Apresentação em tema: "Complexidade de Algoritmos"— Transcrição da apresentação:

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 PNP Acredita-se que PNP

51 P e NP P NP

52 Problemas Intratáveis
A suposição de que PNP 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


Carregar ppt "Complexidade de Algoritmos"

Apresentações semelhantes


Anúncios Google