apresentação - IME-USP

Propaganda
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
Projeto “Embaixadores da Matemática”
Ver artigo e esta apresentação em
www.ime.usp.br/~vwsetzer
google: valdemar setzer
Valdemar W. Setzer – Algoritmos
4/3/17
1
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
Valdemar W. Setzer – Algoritmos
4/3/17
2
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
Valdemar W. Setzer – Algoritmos
4/3/17
3
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
Valdemar W. Setzer – Algoritmos
de números, palavras, etc.
4/3/17
4
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
Valdemar W. Setzer – Algoritmos
4/3/17
5
2. O problema a ser resolvido
Ordenar n números
 Material






Cartolinas com 8 compartimentos numerados
Cada compartimento tem uma tira
Em cada tira há um número
(Pode ser feito sem cartolinas, com as tiras
sobre a mesa)
Ordenar esses 8 números em ordem
crescente

seguindo as seguintes regras
Valdemar W. Setzer – Algoritmos
4/3/17
6
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
R6: Podem-se anotar números de
compartimentos
Valdemar W. Setzer – Algoritmos
4/3/17
7
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
Valdemar W. Setzer – Algoritmos
4/3/17
8
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

Valdemar W. Setzer – Algoritmos
4/3/17
9
3.1 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. – em cada passada, seleciona o menor)
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 7 10 15 5 3 10
Valdemar W. Setzer – Algoritmos
4/3/17
10
3. Soluções obtidas (cont.)
3.1 MÉTODO DE SELEÇÃO (em cada varrida, seleciona-se o menor)
1
5
3
2
1
10
10
10
10
3
5
5
5
7
7
7
7
15
15
15
15
2
2
3
3
1
1
1
2
9
9
9
9
2
1
1
1
5
3
2
10
10
10
7
7
7
15
15
15
3
5
5
2
2
3
9
9
9
3
1
1
1
2
2
2
7
5
3
10
10
10
15
15
15
5
7
7
3
3
5
9
9
9
4
1
1
2
2
3
3
7
5
15
10
10
15
5
7
9
9
5
1
2
3
5
7
15
10
9
6
1
1
2
2
3
3
5
5
7
7
10
9
15
15
9
10
7
1
2
3
5
7
9
10
15
Valdemar W. Setzer – Algoritmos
4/3/17
11
3.2. 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. – a maior
“bolha” fica no fim, “sobe”)
5 10 3 7 15 2 1 9
5 3 7 10 2 1 15 9
5 10 3 7 15 2 1 9
5 3 7 10 2 1 9 15
5 3 10 7 15 2 1 9
3 5 7 10 3 2 9 15
5 3 7 10 15 2 1 9
3 5 7 10 3 2 9 15
5 3 7 10 15 2 1 9
1 5 7 10 3 2 9 15
5 3 7 10 2 15 1 9
1 5 7 3 10 2 9 15
Valdemar W. Setzer – Algoritmos
4/3/17
12
3. Soluções obtidas (cont.)
3.2 MÉTODO DA BOLHA (em cada varrida, compara-se e troca-se de 2 em 2)
1
2
3
4
5
6
5
5
5
5
5
5
5
5
5
3
3
3
3
3
3
3
3
2
2
1
10
10
3
3
3
3
3
3
3
5
5
5
5
5
5
2
2
3
1
2
Valdemar W. Setzer – Algoritmos
3
3
10
7
7
7
7
7
7
7
7
7
7
2
2
5
1
1
3
3
7
7
7
10
10
10
10
10
10
10
2
2
2
7
1
1
5
5
5
5
15
15
15
15
15
2
2
2
2
2
10
1
1
1
7
7
7
7
7
7
2
2
2
2
2
15
1
1
1
1
1
10
9
9
9
9
9
9
9
9
1
1
1
1
1
1
15
9
9
9
9
9
10
10
10
10
10
10
10
10
9
9
9
9
9
9
9
15
15
15
15
15
15
15
15
15
15
15
15
15
mostra
só trocas
4/3/17
13
3.3 Método de inserção
(Compara cada par consecutivo; quando houver troca,
compara para trás e troca se necessário – insere cada
número em sua posição definitiva até o momento)
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
2 3 5 7 10 15 1 9
Valdemar W. Setzer – Algoritmos
4/3/17
14
3. Soluções obtidas (cont.)
3.3 MÉTODO DA INSERÇÃO (compara-se de 2 em 2; se houver troca, compara
para trás)
1
2
3
4
5
5
5
3
3
3
3
3
3
2
2
2
2
2
2
1
1
1
10
3
5
5
5
5
5
2
3
3
3
3
3
1
2
2
2
Valdemar W. Setzer – Algoritmos
3
10
10
7
7
7
2
5
5
5
5
5
1
3
3
3
3
7
7
7
10
10
2
7
7
7
7
7
1
5
5
5
5
5
15
15
15
15
2
10
10
10
10
10
1
7
7
7
7
7
7
2
2
2
2
15
15
15
15
15
1
10
10
10
10
10
10
9
1
1
1
1
1
1
1
1
1
15
15
15
15
15
15
9
10
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
15
15
4/3/17
15
3.1a Método de seleção melhorado
(Compara o 1o. com cada um dos outros, se houver um
menor, compara este com os seguintes; no fim de cada
passada, troca com o primeiro, selecionando o menor)
5 10 3 7 15 2 1 9
1 10 3 7 15 2 5 9
5 10 3 7 15 2 1 9
1 10 3 7 15 2 5 9
5 10 3 7 15 2 1 9
1 10 3 7 15 2 5 9
5 10 3 7 15 2 1 9
1 2 3 7 15 10 5 9
5 10 3 7 15 2 1 9
1 2 3 7 15 10 5 9
1 10 3 7 15 2 5 9
1 2 3 5 15 10 7 9
Valdemar W. Setzer – Algoritmos
4/3/17
16
Método de seleção melhorado (cont.)
Ganho: diminui o número de trocas; o número de
comparações continua o mesmo
Valdemar W. Setzer – Algoritmos
4/3/17
17
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
Valdemar W. Setzer – Algoritmos
4/3/17
18
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)
Valdemar W. Setzer – Algoritmos
4/3/17
19
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
Valdemar W. Setzer – Algoritmos
4/3/17
20
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...R6 foram feitas para se poder
processar a ordenação em um computador
Valdemar W. Setzer – Algoritmos
4/3/17
21
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
 R6: Podem-se anotar números de
compartimentos
Valdemar W. Setzer – Algoritmos
4/3/17
22
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’
 R6: podem-se armazenar ‘endereços’
(‘ponteiros’) de posições de ‘memória’
Valdemar W. Setzer – Algoritmos
4/3/17
23
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
Valdemar W. Setzer – Algoritmos
4/3/17
24
4. O que é um algoritmo? (cont.)

Deve-se descrever um algoritmo antes de
programá-lo em uma linguagem de programação

Algoritmo para o método da bolha
 Versão 1 (descrição informal).
1. Compare C1 com C2 e troque-os de compartimentos
se C1 > C2.
2. Faça o mesmo com C2 e C3, depois C3 e C4, até Cn-1 e Cn.
3. Com isso, no fim dessa fase o maior elemento da
seqüência estará no compartimento n.
4. Fazemos agora uma segunda fase, indo com as
comparações até Cn-1, e então teremos o segundo maior
elemento da seqüência no compartimento n - 1.
5. Repetimos essas fases indo com as comparações até
Cn-2, depois Cn-3, … e, por último, indo até C2.
6. As tiras terminam ordenadas.
Valdemar W. Setzer – Algoritmos
4/3/17
25
4. O que é um algoritmo? (cont.)
 Algoritmo
para o método da bolha (cont.)
 Versão 2 (formalização inicial)
para i variando de n até 2
faça: compare C1 com C2,
C2 com C3,
…
Ci-1 com Ci,
trocando cada par de seus
compartimentos se Ci > Ci+1
Valdemar W. Setzer – Algoritmos
4/3/17
26
4. O que é um algoritmo? (cont.)
 Algoritmo
para o método da bolha (cont.)
 Versão 3 (formalização final)
para i variando de n até 2
faça: para j variando de 1 até i-1
faça: se Cj > Cj+1, troque-os
de compartimentos
Valdemar W. Setzer – Algoritmos
4/3/17
27
4. O que é um algoritmo? (cont.)

Programa em Pascal
Program Bolha;
{ Dados N e uma seqüência de N números, coloca-os em ordem crescente}
{ pelo método da bolha. No final, imprime a seqüência ordenada. }
var
N, { Número de elementos da seqüência }
I, J: integer; { Índices }
C: array[1..100] of real; { Compartimentos, máximo 100 elementos }
Aux: real; { Variável auxiliar usada na troca de conteúdo entre 2
compartimentos }
begin
{entrada dos dados e colocação no vetor C}
...
{ Ordenação }
for I:=N downto 2
do for J:=1 to I-1
do if C[J] > C[J+1]
then begin { troca C[J] com C[J+1] }
Aux:=C[J]; C[J]:=C[J+1]; C[J+1]:=Aux
end;
{Saída do resultado}
...
end.
Valdemar W. Setzer – Algoritmos
4/3/17
28




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
Valdemar W. Setzer – Algoritmos
4/3/17
29
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 critério
 Por
exemplo, num computador, o número
de instruções executadas
 Não vai dar diferença em termos do
‘melhor’
Valdemar W. Setzer – Algoritmos
4/3/17
30
5. Qual é o melhor algoritmo? (cont.)
3.1 MÉTODO DE SELEÇÃO (em cada varrida, seleciona-se o menor)
1
5
3
2
1
10
10
10
10
3
5
5
5
7
7
7
7
15
15
15
15
2
2
3
3
1
1
1
2
9
9
9
9
2
1
1
1
5
3
2
10
10
10
7
7
7
15
15
15
3
5
5
2
2
3
9
9
9
3
1
1
1
2
2
2
7
5
3
10
10
10
15
15
15
5
7
7
3
3
5
9
9
9
4
1
1
2
2
3
3
7
5
15
10
10
15
5
7
9
9
5
1
2
3
5
7
15
10
9
6
1
1
2
2
3
3
5
5
7
7
10
9
15
15
9
10
7
1
2
3
5
7
9
10
15
Valdemar W. Setzer – Algoritmos
4/3/17
31
5. Qual é o melhor algoritmo? (cont.)
Número total de comparações:
 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
Valdemar W. Setzer – Algoritmos
4/3/17
32
5. Qual é o melhor algoritmo? (cont.)
3.2 MÉTODO DA BOLHA (em cada varrida, compara-se e troca-se de 2 em 2)
1
2
3
4
5
6
5
5
5
5
5
5
5
5
5
3
3
3
3
3
3
3
3
2
2
1
10
10
3
3
3
3
3
3
3
5
5
5
5
5
5
2
2
3
1
2
Valdemar W. Setzer – Algoritmos
3
3
10
7
7
7
7
7
7
7
7
7
7
2
2
5
1
1
3
3
7
7
7
10
10
10
10
10
10
10
2
2
2
7
1
1
5
5
5
5
15
15
15
15
15
2
2
2
2
2
10
1
1
1
7
7
7
7
7
7
2
2
2
2
2
15
1
1
1
1
1
10
9
9
9
9
9
9
9
9
1
1
1
1
1
1
15
9
9
9
9
9
10
10
10
10
10
10
10
10
9
9
9
9
9
9
9
15
15
15
15
15
15
15
15
15
15
15
15
15
mostra
só trocas
4/3/17
33
5. Qual é o melhor algoritmo? (cont.)
Método da bolha
 Melhor caso: sequência já ordenada
(critério: não houve nenhuma troca)

Ex:
1


2
3
5
7
9
10
15
2
1
n – 1 comparações
Pior caso: ordem contrária

Ex:
15

10
9
7
5
3
n  (n – 1) / 2
Valdemar W. Setzer – Algoritmos
4/3/17
34
5. Qual é o melhor algoritmo? (cont.)
3.3 MÉTODO DA INSERÇÃO (compara-se de 2 em 2; se houver troca, compara
para trás)
1
2
3
4
5
5
5
3
3
3
3
3
3
2
2
2
2
2
2
1
1
1
10
3
5
5
5
5
5
2
3
3
3
3
3
1
2
2
2
Valdemar W. Setzer – Algoritmos
3
10
10
7
7
7
2
5
5
5
5
5
1
3
3
3
3
7
7
7
10
10
2
7
7
7
7
7
1
5
5
5
5
5
15
15
15
15
2
10
10
10
10
10
1
7
7
7
7
7
7
2
2
2
2
15
15
15
15
15
1
10
10
10
10
10
10
9
1
1
1
1
1
1
1
1
1
15
15
15
15
15
15
9
10
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
15
15
4/3/17
35
5. Qual é o melhor algoritmo? (cont.)
Método da inserção
Melhor caso: sequência já ordenada

Ex:
1


2
3
5
7
9
10
15
2
1
n – 1 comparações
Pior caso: ordem contrária

Ex:
15

10
9
n  (n – 1) / 2
Valdemar W. Setzer – Algoritmos
7
5
3
4/3/17
36
5. Qual é o melhor algoritmo? (cont.)
Portanto, no pior caso todos dão
n  (n – 1) / 2 = (n2 – n ) / 2
Para n muito grande (caso assintótico)
n2 >> n
Despreza-se o n e tem-se praticamente
n2
comparações
Notação O:
O(n2) “ordem de n2”
Valdemar W. Setzer – Algoritmos
4/3/17
37
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á
Valdemar W. Setzer – Algoritmos
4/3/17
38





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
Valdemar W. Setzer – Algoritmos
4/3/17
39
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
Valdemar W. Setzer – Algoritmos
4/3/17
40
6. É possível melhorar? (cont.)
Valdemar W. Setzer – Algoritmos
4/3/17
41
6. É possível melhorar? (cont.)
Valdemar W. Setzer – Algoritmos
4/3/17
42
6. É possível melhorar? (cont.)
Valdemar W. Setzer – Algoritmos
4/3/17
43
6. É possível melhorar? (cont.)
Valdemar W. Setzer – Algoritmos
4/3/17
44
6. É possível melhorar? (cont.)

Estrutura de dados em forma de
ÁRVORE BINÁRIA
Níveis
0
1
2
3
Raiz
Nós
Folhas
Altura
Valdemar W. Setzer – Algoritmos
4/3/17
45
6. É possível melhorar? (cont.)

Exemplo de intercalação de 2 grupos de 4 dados
1
2
10 15
3
20
4
25
5
6
11
7
12 16
8
27
área
auxiliar
10
11
12
15
16
20
25
27
sai
fica
(São necessários 2 ponteiros movendo-se cada um
sequencialmente, e uma área auxiliar)
Valdemar W. Setzer – Algoritmos
4/3/17
46
6. É possível melhorar? (cont.)

Notar que as regras R1 a R6 podem ser seguidas,
se as operações são feitas sequencialmente.






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
(no caso, uma é retirada e colocada em uma área
auxiliar)
R6: Podem-se anotar números de compartimentos
Valdemar W. Setzer – Algoritmos
4/3/17
47
6. É possível melhorar? (cont.)
 Número de comparações:
Seja um maço inicial com n cartões,
n = 2m, m int.
Cada pessoa P, em um nível v, recebe e intercala
cartões de seus dois ajudantes do nível v+1
 Ex. com dois grupos de 4 cartões, total 8 cartões
 1. Compara 2 de 8 e tira o menor, sobram 7
 2. Compara 2 de 7 e tira o menor, sobram 6
 3. Compara 2 de 6 e tira o menor, sobram 5
 4. Compara 2 de 5 e tira o menor, sobram 4
 5. Compara 2 de 4 e tira o menor, sobram 3
 6. Compara 2 de 3 e tira o menor, sobram 2
 7. Compara 2 de 2 e tira o menor, sobra 1, o maior
 Portanto, houve 7 comparações
 Assim,
para um total de n cartões nos dois grupos,
haverá n-1 comparações no pior caso
Valdemar W. Setzer – Algoritmos
4/3/17
48
6. É possível melhorar? (cont.)

Número de comparações (cont.):
 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á 4 comparações (em lugar de 7, o pior caso)
 Portanto,
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, no pior caso
n – (número de pessoas em v)
 Quantas pessoas existem e quantas
comparações são feitas em cada nível, no pior
caso?
Valdemar W. Setzer – Algoritmos
4/3/17
49
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
número de folhas
Valdemar W. Setzer – Algoritmos
4/3/17
50
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)
No. de nós de uma árvore com n/2 folhas

Precisamos calcular o número de nós de
uma árvore binária com n/2 folhas
Valdemar W. Setzer – Algoritmos
4/3/17
51
6. É possível melhorar? (cont.)

Número total de nós de uma árvore binária
Nível
No.
nós
Total
de nós
0
1
1
1
2
3
2
4
7
3
8
15
...
...
...
m-1
2m-1
2x2m-1-1
m
2m
2x2m-1
número de folhas

Com n/2 folhas, a árvore tem 2(n/2) – 1 = n – 1
nós
Valdemar W. Setzer – Algoritmos
4/3/17
52
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

Valdemar W. Setzer – Algoritmos
4/3/17
53
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
número de folhas
Portanto, n = 2m, então log2 n = log2 2m, m = log2 n
Valdemar W. Setzer – Algoritmos
4/3/17
54
6. É possível melhorar? (cont.)

Como
C = mn – n + 1 e m = log2 n
C = n log2n – n + 1

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)?

Valdemar W. Setzer – Algoritmos
4/3/17
55
6. É possível melhorar? (cont.)
n(n-1)/2
n
Valdemar W. Setzer – Algoritmos
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
4/3/17
56
6. É possível melhorar? (cont.)
 Numa lista telefônica
Assinantes
131.072
1.048.576

Quadrático
8.589.869.056
549.755.813.888
Intercal. binária
2.097.153
19.922.945
Computador que faz 1.000.000 de
comparações por segundo: só nas
comparações,
6 dias
20 s
Valdemar W. Setzer – Algoritmos
4/3/17
57
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
Valdemar W. Setzer – Algoritmos
4/3/17
58
7. Algoritmo ótimo (cont.)
Ordenadora de cartões IBM-082(1949, 650 cpm)
(Ordenação física tipo sort-merge com base 10)
Valdemar W. Setzer – Algoritmos
4/3/17
59






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
Valdemar W. Setzer – Algoritmos
4/3/17
60
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.
Valdemar W. Setzer – Algoritmos
4/3/17
61
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
Valdemar W. Setzer – Algoritmos
4/3/17
62
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!
Valdemar W. Setzer – Algoritmos
4/3/17
63
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!
É
resolver problemas por meio de algoritmos!!!
Valdemar W. Setzer – Algoritmos
4/3/17
64
FIM
Valdemar W. Setzer – Algoritmos
4/3/17
65
Download