T(n): complexidade de tempo no pior caso
1 Divis˜ao em subconjuntos de 5 elementos. ⇥(n)
2 Encontrar a mediana de cada subconjunto. ⇥(n)
3 Encontrarx, a mediana das medianas. T(dn/5e)
4 Particionamento com pivˆox. O(n)
5 Encontrar oi-´esimo menor deA< T(k 1) OUencontrar oi k-´esimo menor deA>. T(n k) Temos ent˜ao a recorrˆencia
T(n) =T(dn/5e) +T(max{k 1,n k}) + ⇥(n)
Terceira Soluc¸˜ao - Complexidade
O diagrama abaixo classifica os elementos da ´ultima figura.
⇤ ⇤ . . . ⇤ ⇤ • . . . •
Isto porque no m´ınimod12dn5eegrupos contribuem com3 elementos>x, exceto possivelmente o ´ultimo e aquele que cont´emx. Portanto, 3 d12dn5ee 2 3n10 6.
Problema da Selec¸˜ao - terceira soluc¸˜ao
4 Usandox como pivˆo, particione o conjunto originalA criando dois subconjuntosA<eA>, onde
A<cont´em os elementos<x e A>cont´em os elementos>x.
Se a posic¸˜ao final dex ap´os o particionamento ´ek, ent˜ao
|A<|=k 1 e|A>|=n k.
C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e An´alise de Algoritmos I v. 2.2
Problema da Selec¸˜ao - terceira soluc¸˜ao
5 Finalmente, para encontrar oi-´esimo menor elemento do conjunto, compareicom a posic¸˜aok dex ap´os o
particionamento:
Sei =k,x ´e o elemento procurado;
Sei <k, ent˜ao determine recursivamente oi-´esimo menor elemento do subconjuntoA<;
Sen˜ao, determine recursivamente o(i k)-´esimo menor elemento do subconjuntoA>.
Note que esta parte ´e idˆentica ao feito emSELECT-NLe em SELECT-ALEAT. O que diferencia este algoritmo dos outros ´e a escolha dopivˆo. Escolhendo-se a mediana das medianas, vamos poder garantir que nenhum dos lados ´e muito “grande”.
C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e An´alise de Algoritmos I v. 2.2
Terceira soluc¸˜ao – complexidade
T(n): complexidade de tempo no pior caso
1 Divis˜ao em subconjuntos de 5 elementos. ⇥(n)
2 Encontrar a mediana de cada subconjunto. ⇥(n)
3 Encontrarx, a mediana das medianas. T(dn/5e)
4 Particionamento com pivˆox. O(n)
5 Encontrar oi-´esimo menor deA< T(k 1) OUencontrar oi k-´esimo menor deA>. T(n k) Temos ent˜ao a recorrˆencia
T(n) =T(dn/5e) +T(max{k 1,n k}) + ⇥(n)
Terceira Soluc¸˜ao - Complexidade
O diagrama abaixo classifica os elementos da ´ultima figura.
⇤ ⇤ . . . ⇤ ⇤ • . . . •
Isto porque no m´ınimod12dn5eegrupos contribuem com3 elementos>x, exceto possivelmente o ´ultimo e aquele que cont´emx. Portanto, 3 d12dn5ee 2 3n10 6.
Problema da Selec¸˜ao - terceira soluc¸˜ao
4 Usandox como pivˆo, particione o conjunto originalA criando dois subconjuntosA<eA>, onde
A<cont´em os elementos<x e A>cont´em os elementos>x.
Se a posic¸˜ao final dex ap´os o particionamento ´ek, ent˜ao
|A<|=k 1 e|A>|=n k.
C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e An´alise de Algoritmos I v. 2.2
Problema da Selec¸˜ao - terceira soluc¸˜ao
5 Finalmente, para encontrar oi-´esimo menor elemento do conjunto, compareicom a posic¸˜aok dex ap´os o
particionamento:
Sei =k,x ´e o elemento procurado;
Sei <k, ent˜ao determine recursivamente oi-´esimo menor elemento do subconjuntoA<;
Sen˜ao, determine recursivamente o(i k)-´esimo menor elemento do subconjuntoA>.
Note que esta parte ´e idˆentica ao feito emSELECT-NLe em SELECT-ALEAT. O que diferencia este algoritmo dos outros ´e a escolha dopivˆo. Escolhendo-se a mediana das medianas, vamos poder garantir que nenhum dos lados ´e muito “grande”.
C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e An´alise de Algoritmos I v. 2.2
Terceira soluc¸˜ao – complexidade
T(n): complexidade de tempo no pior caso
1 Divis˜ao em subconjuntos de 5 elementos. ⇥(n)
2 Encontrar a mediana de cada subconjunto. ⇥(n)
3 Encontrarx, a mediana das medianas. T(dn/5e)
4 Particionamento com pivˆox. O(n)
5 Encontrar oi-´esimo menor deA< T(k 1) OUencontrar oi k-´esimo menor deA>. T(n k) Temos ent˜ao a recorrˆencia
T(n) =T(dn/5e) +T(max{k 1,n k}) + ⇥(n)
Terceira Soluc¸˜ao - Complexidade
O diagrama abaixo classifica os elementos da ´ultima figura.
⇤ ⇤ . . . ⇤ ⇤ • . . . •
Isto porque no m´ınimod12dn5eegrupos contribuem com3 elementos>x, exceto possivelmente o ´ultimo e aquele que cont´emx. Portanto, 3 d12dn5ee 2 3n10 6.
Problema da Selec¸˜ao - terceira soluc¸˜ao
4 Usandox como pivˆo, particione o conjunto originalA criando dois subconjuntosA<eA>, onde
A<cont´em os elementos<x e A>cont´em os elementos>x.
Se a posic¸˜ao final dex ap´os o particionamento ´ek, ent˜ao
|A<|=k 1 e|A>|=n k.
C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e An´alise de Algoritmos I v. 2.2
Problema da Selec¸˜ao - terceira soluc¸˜ao
5 Finalmente, para encontrar oi-´esimo menor elemento do conjunto, compareicom a posic¸˜aok dex ap´os o
particionamento:
Sei =k,x ´e o elemento procurado;
Sei <k, ent˜ao determine recursivamente oi-´esimo menor elemento do subconjuntoA<;
Sen˜ao, determine recursivamente o(i k)-´esimo menor elemento do subconjuntoA>.
Note que esta parte ´e idˆentica ao feito emSELECT-NLe em SELECT-ALEAT. O que diferencia este algoritmo dos outros ´e a escolha dopivˆo. Escolhendo-se a mediana das medianas, vamos poder garantir que nenhum dos lados ´e muito “grande”.
C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e An´alise de Algoritmos I v. 2.2
Terceira soluc¸˜ao – complexidade
T(n): complexidade de tempo no pior caso
1 Divis˜ao em subconjuntos de 5 elementos. ⇥(n)
2 Encontrar a mediana de cada subconjunto. ⇥(n)
3 Encontrarx, a mediana das medianas. T(dn/5e)
4 Particionamento com pivˆox. O(n)
5 Encontrar oi-´esimo menor deA< T(k 1) OUencontrar oi k-´esimo menor deA>. T(n k) Temos ent˜ao a recorrˆencia
T(n) =T(dn/5e) +T(max{k 1,n k}) + ⇥(n)
Terceira Soluc¸˜ao - Complexidade
O diagrama abaixo classifica os elementos da ´ultima figura.
⇤ ⇤ . . . ⇤ ⇤ • . . . •
Isto porque no m´ınimod12dn5eegrupos contribuem com3 elementos>x, exceto possivelmente o ´ultimo e aquele que cont´emx. Portanto, 3 d12dn5ee 2 3n10 6.
Terceira Soluc¸˜ao - Complexidade
Da mesma forma, o n´umero de elementos<x, isto ´e⇤s, ´e no m´ınimo 3n10 6.
Assim, no passo 5 do algoritmo, max{k 1,n k} n
A recorrˆenciaT(n)est´a agora completa:
T(n)
⇢ ⇥(1), n140
T(dn/5e) +T(b7n/10c+6) + ⇥(n), n>140, 140 ´e um “n´umero m´agico” que faz as contas funcionarem. . . A soluc¸˜ao ´eT(n)2⇥(n)
C.C. de Souza, C.N. da Silva, O. Lee, P.J. de Rezende MC458 — Projeto e An´alise de Algoritmos I v. 2.2