Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar Algoritmos e complexidade Notas de aula - Arquivo Escolar

arquivoescolar.org
from arquivoescolar.org More from this publisher
13.04.2013 Views

2. Análise de complexidade • Freqüentemente o número de inversões facilita a análise de algoritmos de ordenação. • Em particular para algoritmos com transposições de elementos adjacentes: #Transposições = # Inversões Número médio de transposições • Considere o conjunto de todas permutações Sn sobre [1, n]. • Denota-se por inv(π) o número de inversões de uma permutação. • Para cada permutação π existe uma permutação π − correspondente com ordem inversa: 35124; 42153 • Cada inversão em π não é inversão em π − e vice versa: Número médio de transposições inv(π) + inv(π − ) = n(n − 1)/2. • O número médio de inversões é 1/n! inv(π) = 1/(2n!) inv(π) + inv(π) π∈Sn π∈Sn π∈Sn = 1/(2n!) inv(π) + inv(π − ) π∈Sn π∈Sn = 1/(2n!) n(n − 1)/2 = n(n − 1)/4 π∈Sn • Logo, a complexidade média (de transposições) é Θ(n 2 ). Exemplo 2.16 (Máximo) (Continuando exemplo 2.8.) Queremos analisar o número médio de atribuições no cálculo do máximo, i.e. o número de atualizações do máximo. 52 ♦

Máximo 2.3. Complexidade média • Qual o número esperado de atualizações no algoritmo Máximo? • Para uma permutação π considere a tabela de inversões b1, . . . , bn. • bi é o número de elementos na esquerda de i que são maiores que i. • Exemplo: Para 53142 b1 b2 b3 b4 b5 2 3 1 1 0 • Os bi obedecem 0 ≤ bi ≤ n − i. Tabelas de inversões • Observação: Cada tabela de inversões corresponde a uma permutação e vice versa. • Exemplo: A permutação correspondente com b1 b2 b3 b4 b5 3 1 2 1 0 • Vantagem para a análise: Podemos escolher os bi independentemente. • Observação, na busca do máximo i é máximo local se todos números no seu esquerdo são menores, i.e. se todos números que são maiores são no seu direito, i.e. se bi = 0. Número esperado de atualizações • Seja Xi a variável aleatória Xi = [i é máximo local]. • Temos Pr[Xi = 1] = Pr[bi = 0] = 1/(n − i + 1). • O número de máximos locais é X = 1≤i≤n Xi. • Portanto, o número esperado de máximos locais é E[X] = E = E[Xi] = 1≤i≤n 1≤i≤n Xi 1≤i≤n Pr[Xi] = 1≤i≤n 1 1 = n − i + 1 i 1≤i≤n = Hn • Contando atualizações: tem uma a menos que os máximos locais Hn −1. 53

Máximo<br />

2.3. Complexida<strong>de</strong> média<br />

• Qual o número esperado <strong>de</strong> atualizações no algoritmo Máximo?<br />

• Para uma permutação π consi<strong>de</strong>re a tabela <strong>de</strong> inversões b1, . . . , bn.<br />

• bi é o número <strong>de</strong> elementos na esquerda <strong>de</strong> i que são maiores que i.<br />

• Exemplo: Para 53142 b1 b2 b3 b4 b5<br />

2 3 1 1 0<br />

• Os bi obe<strong>de</strong>cem 0 ≤ bi ≤ n − i.<br />

Tabelas <strong>de</strong> inversões<br />

• Observação: Cada tabela <strong>de</strong> inversões correspon<strong>de</strong> a uma permutação e<br />

vice versa.<br />

• Exemplo: A permutação correspon<strong>de</strong>nte com b1 b2 b3 b4 b5<br />

3 1 2 1 0<br />

• Vantagem para a análise: Po<strong>de</strong>mos escolher os bi in<strong>de</strong>pen<strong>de</strong>ntemente.<br />

• Observação, na busca do máximo i é máximo local se todos números no<br />

seu esquerdo são menores, i.e. se todos números que são maiores são no<br />

seu direito, i.e. se bi = 0.<br />

Número esperado <strong>de</strong> atualizações<br />

• Seja Xi a variável aleatória Xi = [i é máximo local].<br />

• Temos Pr[Xi = 1] = Pr[bi = 0] = 1/(n − i + 1).<br />

• O número <strong>de</strong> máximos locais é X = <br />

1≤i≤n Xi.<br />

• Portanto, o número esperado <strong>de</strong> máximos locais é<br />

<br />

<br />

E[X] = E<br />

<br />

= <br />

E[Xi]<br />

= <br />

1≤i≤n<br />

1≤i≤n<br />

Xi<br />

1≤i≤n<br />

Pr[Xi] = <br />

1≤i≤n<br />

1 1<br />

=<br />

n − i + 1 i<br />

1≤i≤n<br />

= Hn<br />

• Contando atualizações: tem uma a menos que os máximos locais Hn −1.<br />

53

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!