24/5/13 Valdemar W. Setzer – Algoritmos 1 ALGORITMOS E SUA ANÁLISE: UMA INTRODUÇÃO À CIÊNCIA...

55
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

Transcript of 24/5/13 Valdemar W. Setzer – Algoritmos 1 ALGORITMOS E SUA ANÁLISE: UMA INTRODUÇÃO À CIÊNCIA...

Page 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.

24/5/13Valdemar 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

Page 2: 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.

24/5/13Valdemar W. Setzer – Algoritmos 2

TÓPICOS1. Introdução2. O problema a ser resolvido

3. Soluções obtidas4. O que é um algoritmo?

5. Qual dos 3 é o melhor algoritmo?6. É possível melhorar a eficiência?7. Algoritmo ótimo8. Conclusão

Page 3: 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.

24/5/13Valdemar 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

Page 4: 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.

24/5/13Valdemar 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.

Page 5: 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.

24/5/13Valdemar W. Setzer – Algoritmos 5

TÓPICOS 1. Introdução 2. O problema a ser resolvido

3. Soluções obtidas4. O que é um algoritmo?

5. Qual é o melhor algoritmo?6. É possível melhorar a eficiência?7. Algoritmo ótimo8. Conclusão

Page 6: 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.

24/5/13Valdemar W. Setzer – Algoritmos 6

2. O problema a ser resolvidoOrdenar n númerosMaterial 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)

Page 7: 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.

24/5/13Valdemar 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

Page 8: 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.

24/5/13Valdemar W. Setzer – Algoritmos 8

TÓPICOS 1. Introdução 2. O problema a ser resolvido

3. Soluções obtidas4. O que é um algoritmo?

5. Qual é o melhor algoritmo?6. É possível melhorar a eficiência?7. Algoritmo ótimo8. Conclusão

Page 9: 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.

24/5/13Valdemar 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

Page 10: 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.

24/5/13Valdemar 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 9 1 10 5 7 15 3 2 9

5 10 3 7 15 2 1 9 1 5 10 7 15 3 2 9

3 10 5 7 15 2 1 9 1 3 10 7 15 5 2 9

2 10 5 7 15 3 1 9 1 2 10 7 15 5 3 9

1 10 5 7 15 3 2 9 1 2 10 7 15 5 3 9

1 2 9 7 15 5 3 10

Page 11: 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.

24/5/13Valdemar W. Setzer – Algoritmos 11

3. Soluções obtidas (cont.) MÉTODO DE SELEÇÃO (em cada varrida, seleciona-se o menor)

5 10 3 7 15 2 1 93 10 5 7 15 2 1 92 10 5 7 15 3 1 91 10 5 7 15 3 2 91 10 5 7 15 3 2 9

1 5 10 7 15 3 2 91 3 10 7 15 5 2 91 2 10 7 15 5 3 9

1 2 7 10 15 5 3 91 2 5 10 15 7 3 91 2 3 10 15 7 5 9

1 2 3 7 15 10 5 91 2 3 5 10 15 7 9

1 2 3 5 7 15 10 9...

1 2 3 5 7 9 10 15

Page 12: 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.

24/5/13Valdemar W. Setzer – Algoritmos 12

Método da bolha

(Compara o 1o com o 2o, troca se o 1o for maior; depois compara o 2o com 3o e troca se for maior etc.)

5 10 3 7 15 2 1 9 1 5 7 10 3 2 15 9

5 10 3 7 15 2 1 9 1 5 7 10 3 2 9 15

3 5 10 7 15 2 1 9 1 5 7 10 3 2 9 15

2 5 7 10 15 3 1 9 1 5 7 10 3 2 9 15

1 5 7 10 15 3 2 9 1 5 7 10 3 2 9 15

1 5 7 10 3 15 2 9 1 5 7 3 10 2 9 15

Page 13: 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.

24/5/13Valdemar 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)

5 10 3 7 15 2 1 95 3 10 7 15 2 1 95 3 7 10 15 2 1 95 3 7 10 15 2 1 95 3 7 10 2 15 1 95 3 7 10 2 1 15 95 3 7 10 2 1 9 153 5 7 10 2 1 9 153 5 7 2 10 1 9 153 5 7 2 1 10 9 153 5 7 2 1 9 10 153 5 2 7 1 9 10 153 5 2 1 7 9 10 153 2 5 1 7 9 10 152 3 5 1 7 9 10 15

2 3 1 5 7 9 10 152 1 3 5 7 9 10 151 2 3 5 7 9 10 15

Page 14: 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.

24/5/13Valdemar 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 9 3 5 7 10 15 2 1 9

5 10 3 7 15 2 1 9 3 5 7 10 2 15 1 9

5 3 10 7 15 2 1 9 3 5 7 2 10 15 1 9

3 5 10 7 15 2 1 9 3 5 2 7 10 15 1 9

3 5 7 10 15 2 1 9 3 2 5 7 10 15 1 9

3 5 7 10 15 2 1 9 3 2 5 7 10 1 15 9

Page 15: 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.

24/5/13Valdemar 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)

5 10 3 7 15 2 1 95 3 10 7 15 2 1 93 5 10 7 15 2 1 93 5 7 10 15 2 1 93 5 7 10 2 15 1 93 5 7 2 10 15 1 93 5 2 7 10 15 1 93 2 5 7 10 15 1 92 3 5 7 10 15 1 92 3 5 7 10 1 15 92 3 5 7 1 10 15 92 3 5 1 7 10 15 92 3 1 5 7 10 15 92 1 3 5 7 10 15 91 2 3 5 7 10 15 91 2 3 5 7 10 9 151 2 3 5 7 9 10 15

Page 16: 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.

24/5/13Valdemar W. Setzer – Algoritmos 16

TÓPICOS 1. Introdução 2. O problema a ser resolvido

3. Soluções obtidas4. O que é um algoritmo?

5. Qual é o melhor algoritmo?6. É possível melhorar a eficiência?7. Algoritmo ótimo8. Conclusão

Page 17: 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.

24/5/13Valdemar W. Setzer – Algoritmos 17

4. O que é um algoritmo?Uma sequência de passos

Cada um, com uma ação matematicamente bem definida

FinitaUsa conjuntos matematicamente bem

definidos de dados de entradaTermina para qualquer conjunto de

dados de entrada (isto é, não fica executando algumas ações indefinidamente)

Page 18: 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.

24/5/13Valdemar 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

Page 19: 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.

24/5/13Valdemar 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

Page 20: 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.

24/5/13Valdemar 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

Page 21: 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.

24/5/13Valdemar 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’

Page 22: 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.

24/5/13Valdemar 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

Page 23: 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.

24/5/13Valdemar 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 ótimo8. Conclusão

Page 24: 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.

24/5/13Valdemar 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 outroPor exemplo, num computador, o

número de instruções executadas

Não vai dar diferença em termos do ‘melhor’

Page 25: 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.

24/5/13Valdemar W. Setzer – Algoritmos 25

5. Qual é o melhor algoritmo? (cont.)

MÉTODO DA SELEÇÃO (em cada varrida, seleciona-se o menor)

5 10 3 7 15 2 1 93 10 5 7 15 2 1 92 10 5 7 15 3 1 91 10 5 7 15 3 2 91 10 5 7 15 3 2 9

1 5 10 7 15 3 2 91 2 10 7 15 5 3 9

1 2 7 10 15 5 3 91 2 5 10 15 7 3 91 2 3 10 15 7 5 9

1 2 3 7 15 10 5 91 2 3 5 10 15 7 9

1 2 3 5 7 15 10 9...

1 2 3 5 7 9 10 15

Page 26: 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.

24/5/13Valdemar 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

Page 27: 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.

24/5/13Valdemar W. Setzer – Algoritmos 27

5. Qual é o melhor algoritmo? (cont.)

MÉTODO DA BOLHA (em cada varrida, compara-se de 2 em 2)

5 10 3 7 15 2 1 95 3 10 7 15 2 1 95 3 7 10 15 2 1 95 3 7 10 15 2 1 95 3 7 10 2 15 1 95 3 7 10 2 1 15 95 3 7 10 2 1 9 153 5 7 10 2 1 9 153 5 7 2 10 1 9 153 5 7 2 1 10 9 153 5 7 2 1 9 10 153 5 2 7 1 9 10 153 5 2 1 7 9 10 153 2 5 1 7 9 10 152 3 5 1 7 9 10 15

2 3 1 5 7 9 10 152 1 3 5 7 9 10 151 2 3 5 7 9 10 15

Page 28: 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.

24/5/13Valdemar W. Setzer – Algoritmos 28

5. Qual é o melhor algoritmo? (cont.)

Melhor caso: sequência já ordenada Ex:

1 2 3 5 7 9 10 15

n – 1 comparações

Pior caso: ordem contrária Ex:

15 10 9 7 5 3 2 1

n (n – 1) / 2

Page 29: 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.

24/5/13Valdemar 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)

5 10 3 7 15 2 1 95 3 10 7 15 2 1 93 5 10 7 15 2 1 93 5 7 10 15 2 1 93 5 7 10 2 15 1 93 5 7 2 10 15 1 93 5 2 7 10 15 1 93 2 5 7 10 15 1 92 3 5 7 10 15 1 92 3 5 7 10 1 15 92 3 5 7 1 10 15 92 3 5 1 7 10 15 92 3 1 5 7 10 15 92 1 3 5 7 10 15 91 2 3 5 7 10 15 91 2 3 5 7 10 9 151 2 3 5 7 9 10 15

Page 30: 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.

24/5/13Valdemar W. Setzer – Algoritmos 30

5. Qual é o melhor algoritmo? (cont.)

Melhor caso: sequência já ordenada Ex:

1 2 3 5 7 9 10 15

n – 1 comparações

Pior caso: ordem contrária Ex:

15 10 9 7 5 3 2 1

n (n – 1) / 2

Page 31: 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.

24/5/13Valdemar 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

n2

Notação:

O(n2) “ordem de n2”

Page 32: 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.

24/5/13Valdemar W. Setzer – Algoritmos 32

5. Qual é o melhor algoritmo? (cont.)

O(n2) “ordem de n2”

Significa que, assintoticamente (n grande), dobrando-se o número de elementos a serem ordenados, o tempo de ordenação quadruplicará

Page 33: 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.

24/5/13Valdemar 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 ótimo8. Conclusão

Page 34: 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.

24/5/13Valdemar 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

Page 35: 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.

24/5/13Valdemar W. Setzer – Algoritmos 35

6. É possível melhorar? (cont.)

Page 36: 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.

24/5/13Valdemar W. Setzer – Algoritmos 36

6. É possível melhorar? (cont.)

Page 37: 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.

24/5/13Valdemar W. Setzer – Algoritmos 37

6. É possível melhorar? (cont.)

Page 38: 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.

24/5/13Valdemar W. Setzer – Algoritmos 38

6. É possível melhorar? (cont.)

Page 39: 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.

24/5/13Valdemar 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

0123

RaizNós

Folhas

Altura

Page 40: 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.

24/5/13Valdemar 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úmeros1, 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?

Page 41: 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.

24/5/13Valdemar W. Setzer – Algoritmos 41

6. É possível melhorar? (cont.)Nível No nós No comp.

0 20=1 n-1

1 21=2 n-2

2 22=4 n-4

3 23=8 n-8

... ... ...

m-1 2m-1 n-n/2

m 2m n-n=0

Page 42: 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.

24/5/13Valdemar 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

Page 43: 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.

24/5/13Valdemar 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ívelNo. nós

Totalde nós

0 1 1

1 2 3

2 4 7

3 8 15

... ... ...

m-1 2m-1 2m-1

m 2m 2m+1-1

Page 44: 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.

24/5/13Valdemar 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

Page 45: 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.

24/5/13Valdemar W. Setzer – Algoritmos 45

6. É possível melhorar? (cont.) Resta calcular m, a altura da árvore, em função

de n, No de elementos a ordenar (número de folhas)Nível No. nós

0 1

1 2

2 4

3 8

... ...

m-1 2m-1

m 2m

Portanto, n = 2m e então m = log2 n

Page 46: 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.

24/5/13Valdemar W. Setzer – Algoritmos 46

6. É possível melhorar? (cont.) Como

C = mn – n + 1 e m = log2 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(n2)?

C = n log2n – n + 1

Page 47: 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.

24/5/13Valdemar W. Setzer – Algoritmos 47

6. É possível melhorar? (cont.) n n(n-1)/2 nlog2n - n + 1

1 0 0

2 1 1

4 6 5

8 28 17

16 120 49

32 496 129

64 2.016 321

128 8.028 769

256 32.640 1.793

512 130.816 4.097

1024 523.776 9.217

2048 2.096.128 20.481

4096 8.386.560 45.057

8192 33.550.336 98.305

Page 48: 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.

24/5/13Valdemar 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

Page 49: 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.

24/5/13Valdemar 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

Page 50: 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.

24/5/13Valdemar 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 ótimo8. Conclusão

Page 51: 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.

24/5/13Valdemar 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.

Page 52: 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.

24/5/13Valdemar 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

Page 53: 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.

24/5/13Valdemar 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 eficientesa comparação de algoritmos quanto à eficiênciaa prova de que algum algoritmo é ótimoa prova formal de que um algoritmo está corretoe muito mais!

Page 54: 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.

24/5/13Valdemar 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!

Page 55: 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.

24/5/13Valdemar W. Setzer – Algoritmos 55

F I M