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

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

24/5/13 Valdemar W. Setzer – Algoritmos 1 ALGORITMOS E SUA ANÁLISE: UMA INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Valdemar W. Setzer Depto. de Ciência da Computação.

Apresentações semelhantes


Apresentação em tema: "24/5/13 Valdemar W. Setzer – Algoritmos 1 ALGORITMOS E SUA ANÁLISE: UMA INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Valdemar W. Setzer Depto. de Ciência da Computação."— Transcrição da apresentação:

1 24/5/13 Valdemar W. Setzer – Algoritmos 1 ALGORITMOS E SUA ANÁLISE: UMA INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Valdemar W. Setzer Depto. de Ciência da Computação da USP Ver artigo e esta apresentação em www.ime.usp.br/~vwsetzer google: valdemar setzer home

2 24/5/13 Valdemar W. Setzer – Algoritmos 2 TÓPICOS 1. Introdução 2. O problema a ser resolvido 3. Soluções obtidas 4. O que é um algoritmo? 5. Qual dos 3 é o melhor algoritmo? 6. É possível melhorar a eficiência? 7. Algoritmo ótimo 8. Conclusão

3 24/5/13 Valdemar W. Setzer – Algoritmos 3 1. Introdução Algoritmos são usados há milhares de anos Soma armada Algoritmo de Euclides (máximo divisor comum (séc. 3 a.C.) Tornaram-se essenciais na computação Todos os programas que funcionam implementam algoritmos

4 24/5/13 Valdemar W. Setzer – Algoritmos 4 1. Introdução (cont.) Vamos ver o que são algoritmos Vamos aprender o que é um tipo de sua análise Verificar que essa análise é essencial constituindo portanto uma parte fundamental da ciência da computação Usaremos um problema fundamental da computação: Ordenação de números, palavras, etc.

5 24/5/13 Valdemar W. Setzer – Algoritmos 5 TÓPICOS 1. Introdução 2. O problema a ser resolvido 3. Soluções obtidas 4. O que é um algoritmo? 5. Qual é o melhor algoritmo? 6. É possível melhorar a eficiência? 7. Algoritmo ótimo 8. Conclusão

6 24/5/13 Valdemar W. Setzer – Algoritmos 6 2. O problema a ser resolvido Ordenar n números Material Cartolinas com 8 compartimentos Cada compartimento tem uma tira Em cada tira há um número Ordenar esses 8 números em ordem crescente seguindo as seguintes regras (Pode ser feito sem cartolinas, com as tiras sobre a mesa)

7 24/5/13 Valdemar W. Setzer – Algoritmos 7 2. O problema a ser resolvido (cont.) Regras R1: Pode-se levantar um pouco uma tira de seu compartimento, e ver seu conteúdo R2: Se uma tira estiver abaixada, seu número está invisível (é desconhecido) R3: No máximo 2 tiras podem estar levantadas ao mesmo tempo R4: O conteúdo de 2 tiras pode ser comparado para saber qual o maior R5: Duas tiras podem ser trocadas de compartimento

8 24/5/13 Valdemar W. Setzer – Algoritmos 8 TÓPICOS 1. Introdução 2. O problema a ser resolvido 3. Soluções obtidas 4. O que é um algoritmo? 5. Qual é o melhor algoritmo? 6. É possível melhorar a eficiência? 7. Algoritmo ótimo 8. Conclusão

9 24/5/13 Valdemar W. Setzer – Algoritmos 9 3. Soluções obtidas Notar algumas dificuldades Seguir estritamente as regras Por exemplo, não memorizar os conteúdos das tiras Descrever o processo Descrever qual o critério de término do processo

10 24/5/13 Valdemar W. Setzer – Algoritmos 10 Método de seleção (Compara o 1o. com cada um dos outros, troca quando ele for maior; depois compara o 2o. com cada um dos outros, etc.) 5 10 3 7 15 2 1 91 10 5 7 15 3 2 9 5 10 3 7 15 2 1 91 5 10 7 15 3 2 9 3 10 5 7 15 2 1 91 3 10 7 15 5 2 9 2 10 5 7 15 3 1 91 2 10 7 15 5 3 9 1 10 5 7 15 3 2 91 2 10 7 15 5 3 9 1 2 9 7 15 5 3 10

11 24/5/13 Valdemar W. Setzer – Algoritmos 11 3. Soluções obtidas (cont.) MÉTODO DE SELEÇÃO (em cada varrida, seleciona-se o menor ) 5103715219 3105715219 2105715319 1105715329 1510715329 1310715529 1210715539 1271015539 12 51015739 1231015759 1237151059 1235101579 1235715109... 1235791015

12 24/5/13 Valdemar W. Setzer – Algoritmos 12 Método da bolha (Compara o 1 o com o 2 o, troca se o 1 o for maior; depois compara o 2 o com 3 o e troca se for maior etc.) 5 10 3 7 15 2 1 91 5 7 10 3 2 15 9 5 10 3 7 15 2 1 91 5 7 10 3 2 9 15 3 5 10 7 15 2 1 91 5 7 10 3 2 9 15 2 5 7 10 15 3 1 91 5 7 10 3 2 9 15 1 5 7 10 15 3 2 91 5 7 10 3 2 9 15 1 5 7 10 3 15 2 9 1 5 7 3 10 2 9 15

13 24/5/13 Valdemar W. Setzer – Algoritmos 13 3. Soluções obtidas (cont.) MÉTODO DA BOLHA (em cada varrida, compara-se e troca-se de 2 em 2) 5103715219 5310715219 5371015219 5371021519 5371021159 5371021915 3571021915 3572101915 3572110915 3572191015 3527191015 3521791015 3251791015 2351791015 2315791015 2135791015 1235791015

14 24/5/13 Valdemar W. Setzer – Algoritmos 14 Método de inserção (Compara cada par consecutivo; quando houver troca, compara para trás e troca se necessário) 5 10 3 7 15 2 1 93 5 7 10 15 2 1 9 5 10 3 7 15 2 1 93 5 7 10 2 15 1 9 5 3 10 7 15 2 1 93 5 7 2 10 15 1 9 3 5 10 7 15 2 1 93 5 2 7 10 15 1 9 3 5 7 10 15 2 1 93 2 5 7 10 15 1 9 3 5 7 10 15 2 1 9 3 2 5 7 10 1 15 9

15 24/5/13 Valdemar W. Setzer – Algoritmos 15 3. Soluções obtidas (cont.) MÉTODO DA INSERÇÃO (compara-se de 2 em 2; se houver troca, compara para trás) 5103715219 5310715219 3510715219 3571015219 3571021519 3572101519 3527101519 3257101519 2357101519 2357101159 2357110159 2351710159 2315710159 2135710159 1235710159 1235710915 1235791015

16 24/5/13 Valdemar W. Setzer – Algoritmos 16 TÓPICOS 1. Introdução 2. O problema a ser resolvido 3. Soluções obtidas 4. O que é um algoritmo? 5. Qual é o melhor algoritmo? 6. É possível melhorar a eficiência? 7. Algoritmo ótimo 8. Conclusão

17 24/5/13 Valdemar W. Setzer – Algoritmos 17 4. O que é um algoritmo? Uma sequência de passos Cada um, com uma ação matematicamente bem definida Finita Usa conjuntos matematicamente bem definidos de dados de entrada Termina para qualquer conjunto de dados de entrada (isto é, não fica executando algumas ações indefinidamente)

18 24/5/13 Valdemar W. Setzer – Algoritmos 18 4. O que é um algoritmo? (cont.) Uma descrição de como trocar um pneu é um algoritmo? E uma descrição do que se deve fazer ao acordar de manhã? Nada disso é um algoritmo! Pois os passos não são matematicamente bem definidos

19 24/5/13 Valdemar W. Setzer – Algoritmos 19 4. O que é um algoritmo? (cont.) E o problema de ordenar as tiras? NÃO! Ações físicas não são matematicamente bem definidas E ordenar números em um computador? Sim! Computador é uma máquina matemática Dados e as instruções executadas pela máquina são matematicamente bem definidos! As regras R1...R5 foram feitas para se poder processar a ordenação em um computador

20 24/5/13 Valdemar W. Setzer – Algoritmos 20 4. O que é um algoritmo? (cont.) Regras (recordação) R1: Pode-se levantar um pouco uma tira de seu compartimento, e ver seu conteúdo R2: Se uma tira estiver abaixada, seu número está invisível (é desconhecido) R3: No máximo 2 tiras podem estar levantadas ao mesmo tempo R4: O conteúdo de 2 tiras pode ser comparado para saber qual o maior R5: Duas tiras podem ser trocadas de compartimento

21 24/5/13 Valdemar W. Setzer – Algoritmos 21 4. O que é um algoritmo? (cont.) Regras para um computador R1: É possível examinar (abrir) uma posição de memória contendo um número R2: Sem examinar uma posição de memória, o seu conteúdo é desconhecido R3: No máximo 2 posições de memória podem ser examinadas ao mesmo tempo R4: Os conteúdos de 2 posições de memória podem ser comparados para saber qual o maior R5: Pode-se trocar o conteúdo de duas posições de memória

22 24/5/13 Valdemar W. Setzer – Algoritmos 22 4. O que é um algoritmo? (cont.) Regras para um computador (cont.) Na verdade, nos computadores modernos A comparação é feita entre o conteúdo de um registrador (fora da memória) e uma posição de memória, ou entre dois registradores O movimento de dados sempre se dá Da memória para um registrador De um registrador para a memória Entre registradores Da memória para a memória, em bloco

23 24/5/13 Valdemar W. Setzer – Algoritmos 23 TÓPICOS 1. Introdução 2. O problema a ser resolvido 3. Soluções obtidas 4. O que é um algoritmo? 5. Qual é o melhor algoritmo? 6. É possível melhorar a eficiência? 7. Algoritmo ótimo 8. Conclusão

24 24/5/13 Valdemar W. Setzer – Algoritmos 24 5. Qual dos 3 é o melhor algoritmo? Critério de complexidade: Número de comparações em função do número de dados de entrada Indica a eficiência pela rapidez, ou o tempo que leva para ser executado Poderia ser outro Por exemplo, num computador, o número de instruções executadas Não vai dar diferença em termos do melhor

25 24/5/13 Valdemar W. Setzer – Algoritmos 25 5. Qual é o melhor algoritmo? (cont.) MÉTODO DA SELEÇÃO (em cada varrida, seleciona-se o menor) 5103715219 3105715219 2105715319 1105715329 1510715329 1210715539 1271015539 12 51015739 1231015759 1237151059 1235101579 1235715109... 1235791015

26 24/5/13 Valdemar W. Setzer – Algoritmos 26 5. Qual é o melhor algoritmo? (cont.) 1a. varrida: 7 comparações 2a. varrida: 6 comparações 3a. varrida: 5 comparações... 7a. Varrida: 1 comparação Resulta, para as 8 tiras, uma P.A. 7 + 6 + 5 + 4 + 3 + 2 + 1 = 7 (7 + 1) / 2 = 8 (8 – 1) / 2 = 28 Para n números: n (n – 1) / 2 pode ser provado por indução finita

27 24/5/13 Valdemar W. Setzer – Algoritmos 27 5. Qual é o melhor algoritmo? (cont.) MÉTODO DA BOLHA (em cada varrida, compara-se de 2 em 2) 5103715219 5310715219 5371015219 5371021519 5371021159 5371021915 3571021915 3572101915 3572110915 3572191015 3527191015 3521791015 3251791015 2351791015 2315791015 2135791015 1235791015

28 24/5/13 Valdemar W. Setzer – Algoritmos 28 5. Qual é o melhor algoritmo? (cont.) Melhor caso: sequência já ordenada Ex: 1235791015 n – 1 comparações Pior caso: ordem contrária Ex: 1510975321 n (n – 1) / 2

29 24/5/13 Valdemar W. Setzer – Algoritmos 29 5. Qual é o melhor algoritmo? (cont.) MÉTODO DA INSERÇÃO (compara-se de 2 em 2; se houver troca, compara para trás, inserindo no lugar correto até o ponto já ordenado) 5103715219 5310715219 3510715219 3571015219 3571021519 3572101519 3527101519 3257101519 2357101519 2357101159 2357110159 2351710159 2315710159 2135710159 1235710159 1235710915 1235791015

30 24/5/13 Valdemar W. Setzer – Algoritmos 30 5. Qual é o melhor algoritmo? (cont.) Melhor caso: sequência já ordenada Ex: 1235791015 n – 1 comparações Pior caso: ordem contrária Ex: 1510975321 n (n – 1) / 2

31 24/5/13 Valdemar W. Setzer – Algoritmos 31 5. Qual é o melhor algoritmo? (cont.) Portanto, no pior caso todos dão n (n – 1) / 2 Para n muito grande (caso assintótico) tem-se praticamente n 2 Notação: O(n 2 ) ordem de n 2

32 24/5/13 Valdemar W. Setzer – Algoritmos 32 5. Qual é o melhor algoritmo? (cont.) O(n 2 ) ordem de n 2 Significa que, assintoticamente (n grande), dobrando-se o número de elementos a serem ordenados, o tempo de ordenação quadruplicará

33 24/5/13 Valdemar W. Setzer – Algoritmos 33 TÓPICOS 1. Introdução 2. O problema a ser resolvido 3. Soluções obtidas 4. O que é um algoritmo? 5. Qual é o melhor algoritmo? 6. É possível melhorar a eficiência? 7. Algoritmo ótimo 8. Conclusão

34 24/5/13 Valdemar W. Setzer – Algoritmos 34 6. É possível melhorar a eficiência? Vejamos o método Binary merge sort ou Ordenação por intercalação binária ou Ordenação por gente preguiçosa

35 24/5/13 Valdemar W. Setzer – Algoritmos 35 6. É possível melhorar? (cont.)

36 24/5/13 Valdemar W. Setzer – Algoritmos 36 6. É possível melhorar? (cont.)

37 24/5/13 Valdemar W. Setzer – Algoritmos 37 6. É possível melhorar? (cont.)

38 24/5/13 Valdemar W. Setzer – Algoritmos 38 6. É possível melhorar? (cont.)

39 24/5/13 Valdemar W. Setzer – Algoritmos 39 6. É possível melhorar? (cont.) Notar que as regras R1 a R5 podem ser seguidas, se as operações são feitas sequencialmente. Estrutura de dados em forma de ÁRVORE BINÁRIA Níveis 0 1 2 3 Raiz Nós Folhas Altura

40 24/5/13 Valdemar W. Setzer – Algoritmos 40 6. É possível melhorar? (cont.) Número de comparações: Seja um maço inicial com n cartões Cada pessoa P, em um nível v, recebe e intercala cartões de seus dois ajudantes do nível v+1 O último cartão não é comparado, é por construção o maior e é colocado no fim do maço construído por P O número total de comparações feitas pelo total das pessoas no nível v com os cartões dos ajudantes do nível v+1 é então n – (número de pessoas em v) Ex. de melhor caso: P no nível 1, intercalando 2 maços com os números 1, 2, 3, 4 e 5, 6, 7, 8 dá 3 comparações a menos (4 em lugar de 7, o pior caso) Quantas pessoas existem e quantas comparações são feitas em cada nível, no pior caso?

41 24/5/13 Valdemar W. Setzer – Algoritmos 41 6. É possível melhorar? (cont.) NívelN o nósN o comp. 0 2 0 =1 n-1 1 2 1 =2 n-2 2 2 2 =4 n-4 3 2 3 =8 n-8... m-1 2 m-1 n-n/2 m 2 m n-n=0

42 24/5/13 Valdemar W. Setzer – Algoritmos 42 6. É possível melhorar? (cont.) Portanto, o número total de comparações é C = (n-1) + (n-2) + (n-4) + (n-8) +... + (n-n/2) Como são m (0 a m-1) termos a serem somados, onde m é a altura da árvore, C = mn – (1 + 2 + 4 + 8 +... + n/2) Precisamos calcular o número de nós de uma árvore binária com n folhas No. de nós de uma árvore com n/2 folhas

43 24/5/13 Valdemar W. Setzer – Algoritmos 43 6. É possível melhorar? (cont.) Número total de nós de uma árvore binária Com n/2 folhas, a árvore tem 2(n/2) – 1 = n – 1 nós Nível No. nós Total de nós 0 1 1 1 2 3 2 4 7 3 8 15... m-12 m-1 m 2 m 2 m+1 -1

44 24/5/13 Valdemar W. Setzer – Algoritmos 44 6. É possível melhorar? (cont.) Como tínhamos C = mn – (1 + 2 + 4 + 8 +... + n/2) então C = mn – (n – 1) = mn – n + 1

45 24/5/13 Valdemar W. Setzer – Algoritmos 45 6. É possível melhorar? (cont.) Resta calcular m, a altura da árvore, em função de n, N o de elementos a ordenar (número de folhas) NívelNo. nós 0 1 1 2 2 4 3 8... m-1 2 m-1 m 2 m Portanto, n = 2 m e então m = log 2 n

46 24/5/13 Valdemar W. Setzer – Algoritmos 46 6. É possível melhorar? (cont.) Como C = mn – n + 1 e m = log 2 n No nosso caso, n = 8; portanto no pior caso C = 8 3 – 8 + 1 = 17 comparações Comparar com o quadrático: 28 comparações Portanto, a ordenação por intercalação binária tem complexidade O(n log n) Será que ela é muito melhor do que a O(n 2 )? C = n log 2 n – n + 1

47 24/5/13 Valdemar W. Setzer – Algoritmos 47 6. É possível melhorar? (cont.)

48 24/5/13 Valdemar W. Setzer – Algoritmos 48 6. É possível melhorar? (cont.) Numa lista telefônica Assinantes Quadrático Intercal. binária 131.072 8.589.869.056 2.097.153 1.048.576 549.755.813.888 19.922.945 Computador que faz 1.000.000 de comparações por segundo: só nas comparações, 6 dias 20 s

49 24/5/13 Valdemar W. Setzer – Algoritmos 49 6. É possível melhorar? (cont.) Espaço requerido Não é preciso usar a árvore Solução simples: usar uma única fileira adicional (mais n posições de memória) Há métodos n log n que não requerem espaço adicional Um desses é o usado normalmente, Quicksort (mas usa uma pilha de recursão) Ver vários vídeos no youtube, por exemplo vizualization of quicksort

50 24/5/13 Valdemar W. Setzer – Algoritmos 50 TÓPICOS 1. Introdução 2. O problema a ser resolvido 3. Soluções obtidas 4. O que é um algoritmo? 5. Qual é o melhor algoritmo? 6. É possível melhorar a eficiência? 7. Algoritmo ótimo 8. Conclusão

51 24/5/13 Valdemar W. Setzer – Algoritmos 51 7. Algoritmo ótimo Existem métodos ainda mais rápidos que os n log n? É possível provar formalmente que não existe algoritmo de ordenação por comparação entre os objetos, com complexidade melhor do que n log n.

52 24/5/13 Valdemar W. Setzer – Algoritmos 52 TÓPICOS 1. Introdução 2. O problema a ser resolvido 3. Soluções obtidas 4. O que é um algoritmo? 5. Qual é o melhor algoritmo? 6. É possível melhorar a eficiência? 7. Algoritmo ótimo 8. Conclusão

53 24/5/13 Valdemar W. Setzer – Algoritmos 53 8. Conclusão Vimos alguns tópicos da análise de algoritmos uma área fundamental da ciência da computação que visa a descoberta de algoritmos eficientes a comparação de algoritmos quanto à eficiência a prova de que algum algoritmo é ótimo a prova formal de que um algoritmo está correto e muito mais!

54 24/5/13 Valdemar W. Setzer – Algoritmos 54 8. Conclusão (cont.) A computação, do ponto de vista algorítmico, está muito mais para a matemática do que para qualquer outra ciência Portanto, no ensino médio, a disciplina correta para se introduzir noções de ciência da computação e interessar alunos por ela é a matemática Pode-se usar o método que foi aqui descrito Ciência da computação não é saber usar um computador!

55 24/5/13 Valdemar W. Setzer – Algoritmos 55 F I M


Carregar ppt "24/5/13 Valdemar W. Setzer – Algoritmos 1 ALGORITMOS E SUA ANÁLISE: UMA INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Valdemar W. Setzer Depto. de Ciência da Computação."

Apresentações semelhantes


Anúncios Google