A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

UFES Berilhes B. Garcia QuickSort Dividir: A[p…r] é particionado (reorganizado) em dois subvetores não vazios A[p…q] e A[q+1…r] tal que cada elemento de.

Apresentações semelhantes


Apresentação em tema: "UFES Berilhes B. Garcia QuickSort Dividir: A[p…r] é particionado (reorganizado) em dois subvetores não vazios A[p…q] e A[q+1…r] tal que cada elemento de."— Transcrição da apresentação:

1 UFES Berilhes B. Garcia QuickSort Dividir: A[p…r] é particionado (reorganizado) em dois subvetores não vazios A[p…q] e A[q+1…r] tal que cada elemento de A[p…q] é menor ou igual a cada elemento de A[q+1…r]. (O índice q é determinado aqui). Conquistar: dois subvetores são armazendos pelas chamadas recursivas ao procedimento quicksort. Combinar: nenhum trabalho é necessário, uma vez que os subvetores já estão ordenados “in place”.

2 UFES Berilhes B. Garcia Quicksort (A, p, r) 1. if p < r 2. then q  Partition ( A, p, r ) 3. Quicksort ( A, p, q ) 4. Quicksort ( A, q+1, r ) * In place, instável

3 UFES Berilhes B. Garcia Partition(A, p, r) 1. x  A[p] 2. i  p j  r while TRUE 5. do repeat j  j until A[j]  x 7. repeat i  i until A[i]  x 9. if i < j 10. then troque A[i]  A[j] 11. else return j

4 UFES Berilhes B. Garcia Exemplo: Particionamento do Vetor

5 UFES Berilhes B. Garcia Análise do Algoritmo O tempo de execução do quicksort depende se o particionamento está balanceado ou não. Desempenho no Pior Caso (desbalanceado): T(n) = T(n-1) +  (n)  particionamento requer  (n) =  k = 1 à n  (k)  T(1) requer  (1) =  (  k = 1 à n k ) =  (n 2 ) * Isto ocorre quando a entrada está completamente ordenada.

6 UFES Berilhes B. Garcia Particionamente Pior Caso

7 UFES Berilhes B. Garcia Particionamento Melhor Caso

8 UFES Berilhes B. Garcia Análise Para o Melhor Caso Quando o procedimento de particionamento produz duas regiões de tamanho n/2, nós obtemos uma partição balanceada com o desempenho do melhor caso: T(n) = 2T(n/2) +  (n) Logo, T(n) =  (n log n)

9 UFES Berilhes B. Garcia Comportamento no Caso Médio Por exemplo, quando o algoritmo de particionamento sempre produz uma divisão proporcional de 7 para 3: T(n) = T(7n/10) + T(3n/10) + n Resolvendo esta recorrência por meio de uma árvore de recursão, cada nível tem um custo de n com uma altura de lg n. Logo, nós obtemos T(n) =  (n log n) quando a divisão tem uma constante de proporcionalidade. Para uma divisão de proporcionalidade , onde 0    1/2, a profundidade mínima da árvore é - lg n / lg  e a profundidade máxima é - lg n / lg (1-  ).

10 UFES Berilhes B. Garcia Divisão Caso Médio A combinação de boas e más divisões resultaria em T(n) =  (n log n), mas com constantes ligeiramente maiores ocultas pela notação O. (Uma análise rigorosa do caso médio será feita mais tarde)

11 UFES Berilhes B. Garcia Quicksort Aleatório Um algoritmo é aleatório se seu comportamento é determinado não apenas pela entrada, mas também pelo valores produzidos por gerador de números aleatórios. Nenhuma entrada particular garante o comportamento do pior caso. Duas versões possíveis do quicksort: –Impõe uma distribuição sobre as entradas de modo a assegurar que toda a permutação é igualmente provável. Este não melhora o tempo de execução no pior caso, mas torna o tempo de execução independente do ordenamento de entrada. –Troca A[p] com um elemento escolhido aleatoriamente de A[p…r] na Partition. Isto assegura que o elemento pivô é igualmente provável para todos os elementos existentes na entrada.

12 UFES Berilhes B. Garcia Randomized-Partition(A, p, r) 1. i  Random (p, r) 2. troque A[p]  A[i] 3. return Partition(A, p, r)

13 UFES Berilhes B. Garcia Randomized-Quicksort (A, p, r) 1. if p < r 2. then q  Randomized-Partition ( A, p, r ) 3. Randomized-Quicksort(A, p, q) 4. Randomized-Quicksort ( A, q+1, r )

14 UFES Berilhes B. Garcia Análise do Pior Caso T(n) = max (T(q) + T(n - q)) +  (n) 1  q  n-1 Método da Substituição: Advinhação T(n)  cn 2 T(n)  max (cq 2 + c(n - q) 2 ) +  (n) 1  q  n-1 = c · max (q 2 + (n - q) 2 ) +  (n) 1  q  n-1 Derive para obter o máximo em q = 1, n-1 : T(n)  cn 2 - 2c(n - 1) +  (n)  cn 2 Portanto, o tempo do pior caso é  (n 2 )

15 UFES Berilhes B. Garcia Análise do Caso Médio Particionamento depende somento do rank de x =A[p]. Quando rank(x) = 1, índice i para em i = p e j para j = p. q = p é retornado. Logo, a probabilidade do lado baixo ter um elemento é 1/n. Quando rank(x)  2, há pelo menos um elemento menor que x =A[p]. Quando a “ Partition” termina, cada um dos rank(x)-1 elemenos no lado baixo da partição é menor que x. Para cada i = 1, …, n-1, a probabilidade é 1/n que o lado baixo tenha i elementos

16 UFES Berilhes B. Garcia Recurrência para o Caso Médio Combinando os dois casos, o tamanho q - p + 1 do lado baixo da partição é 1 com probabilidade 2/n, e o tamanho é i com probabilidade de 1/n for i = 2,…,n-1. Portanto, T(n) = 1/n(T(1) +T(n-1) +  q=1 to n-1 (T(q)+T(n - q)))+  (n) = 1/n (  (1) +O(n 2 ) +  q=1 to n-1 T(q)+T(n - q)) +  (n) = 1/n (  q=1 to n-1 T(q)+T(n - q)) +  (n) = 2/n (  k=1 to n-1 T(k)) +  (n)

17 UFES Berilhes B. Garcia Resolvendo a Recorrência Método da Substituição: Adivinhação T(n)  a n lg n + b T(n) = 2/n (  k=1 to n-1 T(k)) +  (n)  2/n (  k=1 to n-1 a k lg k + b) +  (n) = (2a/n  k=1 to n-1 k lg k) + 2b(n -1)/n +  (n)  2a/n(n 2 lg n/ 2 - n 2 /8) + 2b(n -1)/n +  (n)  a n lg n + b + (  (n) + b - an/4)  a n lg n + b  se nós escolhemos a suficientemente grande


Carregar ppt "UFES Berilhes B. Garcia QuickSort Dividir: A[p…r] é particionado (reorganizado) em dois subvetores não vazios A[p…q] e A[q+1…r] tal que cada elemento de."

Apresentações semelhantes


Anúncios Google