Algoritmos e complexidade Notas de aula - Arquivo Escolar
Algoritmos e complexidade Notas de aula - Arquivo Escolar Algoritmos e complexidade Notas de aula - Arquivo Escolar
6. Divisão e conquista Busca Binária Algoritmo 6.7 (Busca-Binária(i,f,x,S)) Entrada Um inteiro x, índices i e f e uma sequência S = a1, a2, . . . an de números ordenados. Saída Posição i em que x se encontra na sequência S ou ∞ caso x /∈ S. 1 i f i = f then 2 i f ai = x return i 3 else return ∞ 4 end i f 5 m := f−i 2 + i 6 i f x < am then 7 return Busca Binária (i , m − 1) 8 else 9 return Busca Binária (m + 1 , f ) 10 end i f Complexidade da Busca-Binária Θ(1) se n = 1 T (n) = T (⌊n/2⌋) + c se n > 1 A complexidade dessa recorrência é logarítmica, ou seja, T (n) ∈ O(log n) Quicksort Algoritmo 6.8 (Quicksort) Entrada Índices l, r e um vetor a com elementos al, . . . , ar. 136 Saída a com os elementos em ordem não-decrescente, i.e. para i < j temos ai ≤ aj. 1 i f l < r then 2 m := P a r t i t i o n ( l , r , a ) ;
3 Quicksort (l ,m − 1 ,a ) ; 4 Quicksort (m + 1 ,r ,a ) ; 5 end i f Complexidade do Quicksort no pior caso T (n) = Θ(1) se n = 1 T (n − 1) + Θ(n) se n > 1 6.2. Resolver recorrências A complexidade dessa recorrência é quadrática, ou seja, T (n) ∈ O(n 2 ) Complexidade do Quicksort no melhor caso T (n) = Θ(1) se n = 1 2T (n/2) + Θ(n) se n > 1 A complexidade dessa recorrência é T (n) ∈ O(n log n) Complexidade do Quicksort com Particionamento Balanceado T (n) = Θ(1) se n = 1 T ( 9n n 10 ) + T ( 10 ) + Θ(n) se n > 1 A complexidade dessa recorrência é T (n) ∈ O(n log n) Agora, vamos estudar dois exemplos, em que o método mestre não se aplica. Exemplo 6.7 (Contra-exemplo 1) Considere a recorrência T (n) = 2T (n/2)+n log n. Nesse caso, a função f(n) = n log n não satisfaz nenhum dos critérios do teorema Mestre (ela fica “entre” casos 2 e 3), portanto temos que analisar com árvore de recorrência que resulta em T (n) = (n log n − in) + Θ(n) = Θ(n log 2 n) 0≤i
- Page 88 and 89: 4. Algoritmos gulosos Implementaç
- Page 90 and 91: 4. Algoritmos gulosos Variação do
- Page 92 and 93: 4. Algoritmos gulosos • Como comp
- Page 94 and 95: 4. Algoritmos gulosos Proposição
- Page 96 and 97: 4. Algoritmos gulosos Resultados O
- Page 98 and 99: 5. Programação dinâmica É simpl
- Page 100 and 101: 5. Programação dinâmica soluçã
- Page 102 and 103: 5. Programação dinâmica Teorema:
- Page 104 and 105: 5. Programação dinâmica e calcul
- Page 106 and 107: 5. Programação dinâmica 5.2.2. S
- Page 108 and 109: 5. Programação dinâmica 11 sol1
- Page 110 and 111: 5. Programação dinâmica O algori
- Page 112 and 113: 5. Programação dinâmica Dependen
- Page 114 and 115: 5. Programação dinâmica Análise
- Page 116 and 117: 5. Programação dinâmica curto do
- Page 118 and 119: 5. Programação dinâmica Logo, po
- Page 120 and 121: 5. Programação dinâmica (começa
- Page 122 and 123: 5. Programação dinâmica Árvore
- Page 125 and 126: 6. Divisão e conquista 6.1. Introd
- Page 127 and 128: Recorrências simplificadas Formalm
- Page 129 and 130: 6.2. Resolver recorrências • Usa
- Page 131 and 132: 6.2. Resolver recorrências Para co
- Page 133 and 134: 6.2. Resolver recorrências O algor
- Page 135 and 136: • Prove por indução que T (n) =
- Page 137: Saída A potência a n . 1 i f n =
- Page 141 and 142: 6.2. Resolver recorrências 1. Se f
- Page 143 and 144: 6.3. Algoritmos usando divisão e c
- Page 145 and 146: 6.3. Algoritmos usando divisão e c
- Page 147 and 148: 6.3. Algoritmos usando divisão e c
- Page 149 and 150: 6.3. Algoritmos usando divisão e c
- Page 151 and 152: unidade. Em total a avaliação pro
- Page 153: 3. T (n) = 3T (n/4) + n log n 4. T
- Page 156 and 157: 7. Árvores de busca, backtracking
- Page 158 and 159: 7. Árvores de busca, backtracking
- Page 160 and 161: 7. Árvores de busca, backtracking
- Page 162 and 163: 7. Árvores de busca, backtracking
- Page 164 and 165: 7. Árvores de busca, backtracking
- Page 166 and 167: 7. Árvores de busca, backtracking
- Page 168 and 169: 7. Árvores de busca, backtracking
- Page 170 and 171: 7. Árvores de busca, backtracking
- Page 172 and 173: 7. Árvores de busca, backtracking
- Page 174 and 175: 7. Árvores de busca, backtracking
- Page 176 and 177: 7. Árvores de busca, backtracking
- Page 178 and 179: 7. Árvores de busca, backtracking
- Page 180 and 181: 8. Algoritmos de aproximação Clas
- Page 182 and 183: 8. Algoritmos de aproximação Exem
- Page 184 and 185: 8. Algoritmos de aproximação - Te
- Page 186 and 187: 8. Algoritmos de aproximação O qu
3 Quicksort (l ,m − 1 ,a ) ;<br />
4 Quicksort (m + 1 ,r ,a ) ;<br />
5 end i f<br />
Complexida<strong>de</strong> do Quicksort no pior caso<br />
T (n) =<br />
<br />
Θ(1) se n = 1<br />
T (n − 1) + Θ(n) se n > 1<br />
6.2. Resolver recorrências<br />
A <strong>complexida<strong>de</strong></strong> <strong>de</strong>ssa recorrência é quadrática, ou seja, T (n) ∈ O(n 2 )<br />
Complexida<strong>de</strong> do Quicksort no melhor caso<br />
T (n) =<br />
<br />
Θ(1) se n = 1<br />
2T (n/2) + Θ(n) se n > 1<br />
A <strong>complexida<strong>de</strong></strong> <strong>de</strong>ssa recorrência é T (n) ∈ O(n log n)<br />
Complexida<strong>de</strong> do Quicksort com Particionamento Balanceado<br />
T (n) =<br />
<br />
Θ(1) se n = 1<br />
T ( 9n n<br />
10 ) + T ( 10 ) + Θ(n) se n > 1<br />
A <strong>complexida<strong>de</strong></strong> <strong>de</strong>ssa recorrência é T (n) ∈ O(n log n)<br />
Agora, vamos estudar dois exemplos, em que o método mestre não se aplica.<br />
Exemplo 6.7 (Contra-exemplo 1)<br />
Consi<strong>de</strong>re a recorrência T (n) = 2T (n/2)+n log n. Nesse caso, a função f(n) =<br />
n log n não satisfaz nenhum dos critérios do teorema Mestre (ela fica “entre”<br />
casos 2 e 3), portanto temos que analisar com árvore <strong>de</strong> recorrência que resulta<br />
em<br />
T (n) =<br />
<br />
(n log n − in) + Θ(n) = Θ(n log 2 n)<br />
0≤i