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

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

ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação.

Apresentações semelhantes


Apresentação em tema: "ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação."— Transcrição da apresentação:

1 ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

2 ATAL – Prof. Jorge Figueiredo Ordenação - 2 2004.2 AT AL Problema da Ordenação Formalmente pode assim ser definido: Ordenação Entrada: Uma seqüência de n números ‹a 1, a 2,..., a n ›. Saída: Uma reordenação da seqûëncia de entrada ‹a' 1, a' 2,..., a' n ›, onde a' 1 ≤ a' 2 ≤... ≤ a' n. Em geral, consideramos a seqüência de entrada como um array de n elementos.

3 ATAL – Prof. Jorge Figueiredo Ordenação - 3 2004.2 AT AL Estratégia de Ordenação Alguns algoritmos clássicos de ordenação utilizam divisão-e-conquista: –Quebra a entrada original em duas partes. –Recursivamente ordena cada uma das partes. –Combina as duas partes ordenadas. Duas categorias de soluções: –Quebra simples, combinação difícil. –Quebra difícil, combinação simples.

4 ATAL – Prof. Jorge Figueiredo Ordenação - 4 2004.2 AT AL Insertion Sort A: 1 j n ORDENADO chave InsertionSort(A, n) for j← 2 to n do chave ← A[j] ► insere A[j] na parte ordenada A[1..j-1] i ← j – 1 while i > 0 e A[i] > chave do A[i + 1] ← A[i] i ← i – 1 A[i + 1] ← chave

5 ATAL – Prof. Jorge Figueiredo Ordenação - 5 2004.2 AT AL Exemplo do Insertion Sort 45713232

6 ATAL – Prof. Jorge Figueiredo Ordenação - 6 2004.2 AT AL Exemplo do Insertion Sort 45713232

7 ATAL – Prof. Jorge Figueiredo Ordenação - 7 2004.2 AT AL Exemplo do Insertion Sort 45713232 74513232

8 ATAL – Prof. Jorge Figueiredo Ordenação - 8 2004.2 AT AL Exemplo do Insertion Sort 45713232 74513232

9 ATAL – Prof. Jorge Figueiredo Ordenação - 9 2004.2 AT AL Exemplo do Insertion Sort 45713232 74513232 71345232

10 ATAL – Prof. Jorge Figueiredo Ordenação - 10 2004.2 AT AL Exemplo do Insertion Sort 45713232 74513232 71345232

11 ATAL – Prof. Jorge Figueiredo Ordenação - 11 2004.2 AT AL Exemplo do Insertion Sort 45713232 74513232 71345232 71323452

12 ATAL – Prof. Jorge Figueiredo Ordenação - 12 2004.2 AT AL Exemplo do Insertion Sort 45713232 74513232 71345232 71323452

13 ATAL – Prof. Jorge Figueiredo Ordenação - 13 2004.2 AT AL Exemplo do Insertion Sort 45713232 74513232 71345232 71323452 27132345

14 ATAL – Prof. Jorge Figueiredo Ordenação - 14 2004.2 AT AL Análise do Insertion Sort Pior caso: –Entrada em ordem reversa. –O(n 2 ) Caso médio: –O(n 2 ) Melhor caso: –Entrada ordenada. –O(n)

15 ATAL – Prof. Jorge Figueiredo Ordenação - 15 2004.2 AT AL MergeSort Partição simples. Combinação mais trabalhosa. 3721547342010923 3721547342010923 9102023341354772 1359102023344772 simples ordena combina quebra difícil

16 ATAL – Prof. Jorge Figueiredo Ordenação - 16 2004.2 AT AL Análise do MergeSort Requer resolução de recorrência. Melhor caso = Caso médio = Pior caso. –O(n.logn) MergeSort(A, inicio, fim) if inicio < fim then meio ← (inicio + fim) div 2 MergeSort(A, inicio, meio) MergeSort(A, meio + 1, fim) Intercala(A, inicio, meio, fim)

17 ATAL – Prof. Jorge Figueiredo Ordenação - 17 2004.2 AT AL QuickSort Proposto por C.A.R. Hoare em 1962. Como o MergeSort, utiliza uma estratégia de divisão-e-conquista. A parte mais complicada é a quebra. A combinação é simples. Ao contrário do MergeSort, ordena in place. Ponto chave é encontrar uma estratégia de particionamento eficiente.

18 ATAL – Prof. Jorge Figueiredo Ordenação - 18 2004.2 AT AL QuickSort Divisão: escolher um pivô. Dividir o array em duas partes em torno do pivô. ≤ p p p > p pivô Conquista: Recursivamente ordenar os dois sub-arrays. Combinação: Trivial.

19 ATAL – Prof. Jorge Figueiredo Ordenação - 19 2004.2 AT AL QuickSort 3721547342010923 3201510923473472 2023344772135910 1359 2023344772 difícil ordena combina quebra simples

20 ATAL – Prof. Jorge Figueiredo Ordenação - 20 2004.2 AT AL Escolha do Pivô Particionamento pode ser feito de diferentes formas. A principal decisão é escolher o pivô. –Primeiro elemento do array. –Último elemento do array. –Elemento médio do array. –Elemento que mais ocorre no array. –Elemento mais próximo da média aritmética dos elementos do array.

21 ATAL – Prof. Jorge Figueiredo Ordenação - 21 2004.2 AT AL Rotina de Particionamento Em nossa rotina, o pivô é o último elemento. Particiona(A, L, R) p ← A[R] i ← R for j ← R – 1 downto L do if A[j] > p then i ← i – 1 swap A[i] ↔ A[j] swap A[R] ↔ A[i] return i

22 ATAL – Prof. Jorge Figueiredo Ordenação - 22 2004.2 AT AL Exemplo de Particionamento 3721547342010923

23 ATAL – Prof. Jorge Figueiredo Ordenação - 23 2004.2 AT AL Exemplo de Particionamento 3721547342010923 i j

24 ATAL – Prof. Jorge Figueiredo Ordenação - 24 2004.2 AT AL Exemplo de Particionamento 3721547342010923 i←j

25 ATAL – Prof. Jorge Figueiredo Ordenação - 25 2004.2 AT AL Exemplo de Particionamento 3721547342010923 i←j

26 ATAL – Prof. Jorge Figueiredo Ordenação - 26 2004.2 AT AL Exemplo de Particionamento 3721547342010923 i←j

27 ATAL – Prof. Jorge Figueiredo Ordenação - 27 2004.2 AT AL Exemplo de Particionamento 3721547342010923 ij

28 ATAL – Prof. Jorge Figueiredo Ordenação - 28 2004.2 AT AL Exemplo de Particionamento 3721547342010923 i ← j

29 ATAL – Prof. Jorge Figueiredo Ordenação - 29 2004.2 AT AL Exemplo de Particionamento 3721547342010923 i←j 3721547920103423

30 ATAL – Prof. Jorge Figueiredo Ordenação - 30 2004.2 AT AL Exemplo de Particionamento 3721547342010923 i←j 3721547920103423

31 ATAL – Prof. Jorge Figueiredo Ordenação - 31 2004.2 AT AL Exemplo de Particionamento 3721547342010923 i←j 3721547920103423 3721510920473423

32 ATAL – Prof. Jorge Figueiredo Ordenação - 32 2004.2 AT AL Exemplo de Particionamento 3721547342010923 i←j 3721547920103423 3721510920473423

33 ATAL – Prof. Jorge Figueiredo Ordenação - 33 2004.2 AT AL Exemplo de Particionamento 3721547342010923 i←j 3721547920103423 3721510920473423

34 ATAL – Prof. Jorge Figueiredo Ordenação - 34 2004.2 AT AL Exemplo de Particionamento 3721547342010923 i←j 3721547920103423 3721510920473423

35 ATAL – Prof. Jorge Figueiredo Ordenação - 35 2004.2 AT AL Exemplo de Particionamento 3721547342010923 i←j 3721547920103423 3721510920473423 3201510972473423

36 ATAL – Prof. Jorge Figueiredo Ordenação - 36 2004.2 AT AL Exemplo de Particionamento 3721547342010923 ij 3721547920103423 3721510920473423 3201510972473423

37 ATAL – Prof. Jorge Figueiredo Ordenação - 37 2004.2 AT AL Exemplo de Particionamento 3721547342010923 3721547920103423 3721510920473423 3201510972473423 3201510923473472

38 ATAL – Prof. Jorge Figueiredo Ordenação - 38 2004.2 AT AL QuickSort - Algoritmo A chamada inicial é QuickSort(A, 1, n) QuickSort(A, inicio, fim) if inicio < fim then meio ← particiona(A, inicio, fim) QuickSort(A, inicio, meio - 1) QuickSort(A, meio + 1, fim)

39 ATAL – Prof. Jorge Figueiredo Ordenação - 39 2004.2 AT AL Análise do QuickSort Requer a resolução de uma relação de recorrência. Como nem sempre os dados são divididos em duas metades de mesmo tamanho: – Melhor caso, pior caso e caso médio podem variar. Vamos assumir: –Tempo de partição é O(n). –A posição final do pivô é i.

40 ATAL – Prof. Jorge Figueiredo Ordenação - 40 2004.2 AT AL Análise do QuickSort Melhor caso: –Pivô sempre fica no meio. –T(n) = 2T(n/2) + n –O(n.log n) T(n) = 1n = 1 T(n) = T(n - i) + T(i – 1) + nnos demais casos

41 ATAL – Prof. Jorge Figueiredo Ordenação - 41 2004.2 AT AL Análise do QuickSort Pior caso: –Pivô sempre fica na primeira ou última posição. –T(n) = T(n - 1) + n –O(n 2 ) T(n) = 1n = 1 T(n) = T(n - i) + T(i – 1) + nnos demais casos

42 ATAL – Prof. Jorge Figueiredo Ordenação - 42 2004.2 AT AL Análise do QuickSort Caso médio: –Pivô tem a mesma probabilidade 1/n de cair em uma das n posições. –T a (n) = n + 1/n ∑ ( T a (i - 1) + T a (n - i)) –O(n.log n) T(n) = 1n = 1 T(n) = T(n - i) + T(i – 1) + nnos demais casos

43 ATAL – Prof. Jorge Figueiredo Ordenação - 43 2004.2 AT AL Ainda sobre QuickSort É talvez o algoritmo de ordenação mais usado. É fácil de implementar e muito rápido na prática. É tipicamente mais do que duas vezes mais rápido do que o MergeSort.

44 ATAL – Prof. Jorge Figueiredo Ordenação - 44 2004.2 AT AL Ordenação por Comparação Todos os algoritmos de ordenação que estudamos até agora utilizam comparação de elementos. Em uma ordenação por comparação, a ordem relativa de dois elementos a i e a j em uma seqüência é obtida utilizando testes de comparação: –a i a j e a i ≥ a j.

45 ATAL – Prof. Jorge Figueiredo Ordenação - 45 2004.2 AT AL Ordenação por Comparação O melhor algoritmo que vimos para ordenação é O(n.log n). É possível encontrar uma melhor solução? Árvore de decisão pode nos ajudar a desvendar isso. É possível usar uma árvore de decisão para visualizar ordenação por comparação.

46 ATAL – Prof. Jorge Figueiredo Ordenação - 46 2004.2 AT AL Árvore de Decisão a1:a3 a2:a3 a1:a2 a1:a3a2:a3 ≤ > > >> > ≤ ≤ ≤ ≤

47 ATAL – Prof. Jorge Figueiredo Ordenação - 47 2004.2 AT AL Árvore de Decisão Sort( ) a1:a3 a2:a3 a1:a2 a1:a3a2:a3 ≤ 15 > 4 > >> > ≤ ≤ ≤ ≤

48 ATAL – Prof. Jorge Figueiredo Ordenação - 48 2004.2 AT AL Árvore de Decisão Sort( ) a1:a3 a2:a3 a1:a2 a1:a3a2:a3 ≤ > 15 > 8 >> > ≤ ≤ ≤ ≤

49 ATAL – Prof. Jorge Figueiredo Ordenação - 49 2004.2 AT AL Árvore de Decisão Sort( ) a1:a3 a2:a3 a1:a2 a1:a3a2:a3 ≤ > > >> > ≤ ≤ ≤ 4 ≤ 8

50 ATAL – Prof. Jorge Figueiredo Ordenação - 50 2004.2 AT AL Árvore de Decisão Sort( ) = a1:a3 a2:a3 a1:a2 a1:a3a2:a3 ≤ > > >> > ≤ ≤ ≤ ≤

51 ATAL – Prof. Jorge Figueiredo Ordenação - 51 2004.2 AT AL As folhas de de uma árvore de decisão indicam uma possível ordenação para os elementos. –O número de permutações possível é n!. Para definir um limite inferior: –Uma árvore binária tem no máximo 2 d folhas, onde d é a sua profundidade. –Uma árvore binária com L folhas tem profundidade de pelo menos ‪ log L ‫.

52 ATAL – Prof. Jorge Figueiredo Ordenação - 52 2004.2 AT AL O caminho mais longo da raiz de uma árvore de decisão para qualquer uma de suas folhas representa o pior caso do número de comparações. Para n elementos, temos n! folhas: –d = ‪ log n! ‫ – d ≥ log n! – log n! = Ө(n.log n) – d = Ω(n.log n)

53 ATAL – Prof. Jorge Figueiredo Ordenação - 53 2004.2 AT AL Ordenação em Tempo Linear Nenhuma comparação é efetuada. Counting Sort: Counting Sort Entrada: Um array de n números A = <a 1, a 2,..., a n ›, em que a i assume valores {1, 2,..., k}. Saída: Um array reordenado B = <b 1, b 2,..., b n ›. Array auxiliar: Um array C = <c 1, c 2,..., c k ›

54 ATAL – Prof. Jorge Figueiredo Ordenação - 54 2004.2 AT AL Counting Sort Counting Sort(A, B, k) for i ← 1 to k do C[i] ← 0 for j ← 1 to length[A] do C[A[j]] ← C[A[j]] + 1 for i ←2 to k do C[i] ← C[i] + C[i - 1] for j ← length[A] downto 1 do B[C[A[j]]] ← A[j] C[A[j]] ← C[A[j]] - 1

55 ATAL – Prof. Jorge Figueiredo Ordenação - 55 2004.2 AT AL Exemplo 36413414 A: 12 345678 B: 12 345678 C: 12 3456

56 ATAL – Prof. Jorge Figueiredo Ordenação - 56 2004.2 AT AL Laço 1 36413414 A: 12 345678 B: 12 345678 000000 C: 12 3456

57 ATAL – Prof. Jorge Figueiredo Ordenação - 57 2004.2 AT AL Laço 2 36413414 A: 12 345678 B: 12 345678 001000 C: 12 3456

58 ATAL – Prof. Jorge Figueiredo Ordenação - 58 2004.2 AT AL Laço 2 36413414 A: 12 345678 B: 12 345678 001001 C: 12 3456

59 ATAL – Prof. Jorge Figueiredo Ordenação - 59 2004.2 AT AL Laço 2 36413414 A: 12 345678 B: 12 345678 001101 C: 12 3456

60 ATAL – Prof. Jorge Figueiredo Ordenação - 60 2004.2 AT AL Laço 2 36413414 A: 12 3 4 5678 B: 12 345678 101101 C: 12 3456

61 ATAL – Prof. Jorge Figueiredo Ordenação - 61 2004.2 AT AL Laço 2 36413414 A: 12 3 4 5678 B: 12 345678 102101 C: 12 3456

62 ATAL – Prof. Jorge Figueiredo Ordenação - 62 2004.2 AT AL Laço 2 36413414 A: 12 3 4 5678 B: 12 345678 102201 C: 12 3456

63 ATAL – Prof. Jorge Figueiredo Ordenação - 63 2004.2 AT AL Laço 2 36413414 A: 12 3 4 5678 B: 12 345678 202201 C: 12 3456

64 ATAL – Prof. Jorge Figueiredo Ordenação - 64 2004.2 AT AL Laço 2 36413414 A: 12 3 4 5678 B: 12 345678 202301 C: 12 3456

65 ATAL – Prof. Jorge Figueiredo Ordenação - 65 2004.2 AT AL Laço 3 36413414 A: 12 3 4 5678 B: 12 345678 202301 C: 12 3456

66 ATAL – Prof. Jorge Figueiredo Ordenação - 66 2004.2 AT AL Laço 3 36413414 A: 12 3 4 5678 B: 12 345678 222301 C: 12 3456

67 ATAL – Prof. Jorge Figueiredo Ordenação - 67 2004.2 AT AL Laço 3 36413414 A: 12 3 4 5678 B: 12 345678 224301 C: 12 3456

68 ATAL – Prof. Jorge Figueiredo Ordenação - 68 2004.2 AT AL Laço 3 36413414 A: 12 3 4 5678 B: 12 345678 224701 C: 12 3456

69 ATAL – Prof. Jorge Figueiredo Ordenação - 69 2004.2 AT AL Laço 3 36413414 A: 12 3 4 5678 B: 12 345678 224771 C: 12 3456

70 ATAL – Prof. Jorge Figueiredo Ordenação - 70 2004.2 AT AL Laço 3 36413414 A: 12 3 4 5678 B: 12 345678 224778 C: 12 3456

71 ATAL – Prof. Jorge Figueiredo Ordenação - 71 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 B: 12 345678 224778 C: 12 3456

72 ATAL – Prof. Jorge Figueiredo Ordenação - 72 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 4 B: 12 345678 224678 C: 12 3456

73 ATAL – Prof. Jorge Figueiredo Ordenação - 73 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 14 B: 12 345678 124678 C: 12 3456

74 ATAL – Prof. Jorge Figueiredo Ordenação - 74 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 14 B: 12 345678 124678 C: 12 3456

75 ATAL – Prof. Jorge Figueiredo Ordenação - 75 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 144 B: 12 345678 124578 C: 12 3456

76 ATAL – Prof. Jorge Figueiredo Ordenação - 76 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 144 B: 12 345678 124578 C: 12 3456

77 ATAL – Prof. Jorge Figueiredo Ordenação - 77 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 1344 B: 12 345678 123578 C: 12 3456

78 ATAL – Prof. Jorge Figueiredo Ordenação - 78 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 1344 B: 12 345678 123578 C: 12 3456

79 ATAL – Prof. Jorge Figueiredo Ordenação - 79 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 11344 B: 12 345678 023578 C: 12 3456

80 ATAL – Prof. Jorge Figueiredo Ordenação - 80 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 11344 B: 12 345678 023578 C: 12 3456

81 ATAL – Prof. Jorge Figueiredo Ordenação - 81 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 113444 B: 12 345678 023478 C: 12 3456

82 ATAL – Prof. Jorge Figueiredo Ordenação - 82 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 113444 B: 12 345678 023478 C: 12 3456

83 ATAL – Prof. Jorge Figueiredo Ordenação - 83 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 1134446 B: 12 345678 023477 C: 12 3456

84 ATAL – Prof. Jorge Figueiredo Ordenação - 84 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 1134446 B: 12 345678 023477 C: 12 3456

85 ATAL – Prof. Jorge Figueiredo Ordenação - 85 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 11334446 B: 12 345678 022477 C: 12 3456

86 ATAL – Prof. Jorge Figueiredo Ordenação - 86 2004.2 AT AL Laço 4 36413414 A: 12 3 4 5678 11334446 B: 12 345678 022477 C: 12 3456

87 ATAL – Prof. Jorge Figueiredo Ordenação - 87 2004.2 AT AL Análise do Counting Sort A análise é trivial: –O primeiro e terceiro laços correspondem a O(k). –O segundo e quarto laços são O(n). –O tempo total é, portanto, O(n+k). –Na prática, k = O(n). –Logo, o counting sort é O(n). Counting Sort é estável.

88 ATAL – Prof. Jorge Figueiredo Ordenação - 88 2004.2 AT AL

89 ATAL – Prof. Jorge Figueiredo Ordenação - 89 2004.2 AT AL


Carregar ppt "ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação."

Apresentações semelhantes


Anúncios Google