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 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: –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) –4n 2 -2n + 7 = O(n 2 ) – log 10 (n)/3 = O(log(n))

9 Notação O(n) Porque O(n) é importante? –n 2 e n n geram valores diferentes –Mas padrões de crescimento iguais! –Para N muito grande (digamos ) n 2 = 1x10 24 e n n = 1x x10 12 Quanto x10 12 é 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(n m ) – polinomial: difícil O(n!) – fatorial (exponencial): intratáveis! O(m n ) – exponencial: intratáveis!

12 Gráfico Comparativo

13

14

15

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 (10 12 ) Ordenação por inserção –Computador B – Dez milhões de comparações por segundo (10 10 ) Ordenação rápida (Quick Sort)

17 Importância da complexidade Complexidade dos algoritmos –Quick Sort: O(n log n) –Insertion Sort: O(n 2 ) Ordenar 1 milhão de números (n=10 6 ) –Computador A: (10 6 ) 2 /10 12 = 1seg –Computador B: 10 6 xlog10 6 /10 10 = 6x10 -9 seg E se fosse para ordenar um trilhão de números (n=10 15 )?

18 Importância da complexidade Outro exemplo – determinante de matrizes Calcular o determinante de uma matriz quadrada de ordem n (M NxN ) Método de Gauss: 4n 3 +9n 2 -7n)/6 = O(n 3 ) Método de Crammer: (n+1)!(e-1) = O(n!)

19 Importância da complexidade nCrammerGauss ,35ms 101,19min4,95ms séculos38,63ms 405,10 33 séculos0,315s

20 Classes de problemas Problemas polinomiais Problemas para os quais se conhece algoritmo polinomial para resolver O(n k ) 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(k n ) 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: –Feira de Santana –Vitória da Conquista –Itabuna –Ilhéus Possíveis trajetos? Distâncias?

24 Distâncias KmFSAVCOITAIOS FSA VCO ITA IOS

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 1000 habitantes –360 cidades, 3,98x (360!) trajetos Um computador (jamais construído) que possa gerar trajetos por segundo: 1,26x 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

36

37

38

39

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, i 1, i 2, i 3,..., i k, j é a melhor solução entre i e j então i 1, i 2,... i k é a melhor solução entre i 1 e i k. –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 Problemasintratá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