Post on 02-Dec-2018
MC448 — Analise de Algoritmos I
Cid Carvalho de Souza e Candida Nunes da Silva
1 de Maio de 2006
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Algoritmos lineares para ordenacao
Os seguintes algoritmos de ordenacao tem complexidade O(n),onde n e o tamanho do vetor A a ser ordenado:
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Algoritmos lineares para ordenacao
Os seguintes algoritmos de ordenacao tem complexidade O(n),onde n e o tamanho do vetor A a ser ordenado:
Counting Sort: Elementos sao numeros inteiros “pequenos”;mais precisamente, inteiros x onde x ! O(n).
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Algoritmos lineares para ordenacao
Os seguintes algoritmos de ordenacao tem complexidade O(n),onde n e o tamanho do vetor A a ser ordenado:
Counting Sort: Elementos sao numeros inteiros “pequenos”;mais precisamente, inteiros x onde x ! O(n).
Radix Sort: Elementos sao numeros inteiros de comprimentomaximo constante, isto e, independente de n.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Algoritmos lineares para ordenacao
Os seguintes algoritmos de ordenacao tem complexidade O(n),onde n e o tamanho do vetor A a ser ordenado:
Counting Sort: Elementos sao numeros inteiros “pequenos”;mais precisamente, inteiros x onde x ! O(n).
Radix Sort: Elementos sao numeros inteiros de comprimentomaximo constante, isto e, independente de n.
Bucket Sort: Elementos sao numeros reais uniformementedistribuıdos no intervalo [0..1).
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Counting Sort
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Counting Sort
suponha que o vetor A a ser ordenado contenha n numerosinteiros, todos menores ou iguais a k, onde k ! O(n).
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Counting Sort
suponha que o vetor A a ser ordenado contenha n numerosinteiros, todos menores ou iguais a k, onde k ! O(n).
o algoritmo a seguir ordena os n numeros em tempoO(n + k); isto e O(n).
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Counting Sort
suponha que o vetor A a ser ordenado contenha n numerosinteiros, todos menores ou iguais a k, onde k ! O(n).
o algoritmo a seguir ordena os n numeros em tempoO(n + k); isto e O(n).
o algoritmo usa dois vetores auxiliares:
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Counting Sort
suponha que o vetor A a ser ordenado contenha n numerosinteiros, todos menores ou iguais a k, onde k ! O(n).
o algoritmo a seguir ordena os n numeros em tempoO(n + k); isto e O(n).
o algoritmo usa dois vetores auxiliares:1 C de tamanho k que guarda em C [i ] o numero de ocorrencias
de elementos ! i em A.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Counting Sort
suponha que o vetor A a ser ordenado contenha n numerosinteiros, todos menores ou iguais a k, onde k ! O(n).
o algoritmo a seguir ordena os n numeros em tempoO(n + k); isto e O(n).
o algoritmo usa dois vetores auxiliares:1 C de tamanho k que guarda em C [i ] o numero de ocorrencias
de elementos ! i em A.2 B de tamanho n onde se constroi o vetor ordenado.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Counting Sort - Algoritmo
CountingSort(A, k)
! Entrada: - Vetor A de tamanho n
- o valor k do maior inteiro em A
! Saida: O vetor A em ordem crescente1. para i := 1 ate k facaC [i ] := 02. para j := 1 ate n facaC [A[j]] := C [A[j]] + 13. para i := 2 ate k facaC [i ] := C [i ] + C [i " 1]4. para j := n ate 1 faca5. B [C [A[j]]] := A[j]6. C [A[j]] := C [A[j]] " 17 retorne(B)
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Counting Sort - Complexidade
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Counting Sort - Complexidade
O algoritmo nao faz comparacoes entre elementos de A.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Counting Sort - Complexidade
O algoritmo nao faz comparacoes entre elementos de A.
Sua complexidade deve ser medida em funcao do numero dasoutras operacoes, aritmeticas, atribuicoes, etc.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Counting Sort - Complexidade
O algoritmo nao faz comparacoes entre elementos de A.
Sua complexidade deve ser medida em funcao do numero dasoutras operacoes, aritmeticas, atribuicoes, etc.
Claramente, o numero de tais operacoes e uma funcao emO(n + k), ja que temos dois loops simples com n iteracoes edois com k iteracoes.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Counting Sort - Complexidade
O algoritmo nao faz comparacoes entre elementos de A.
Sua complexidade deve ser medida em funcao do numero dasoutras operacoes, aritmeticas, atribuicoes, etc.
Claramente, o numero de tais operacoes e uma funcao emO(n + k), ja que temos dois loops simples com n iteracoes edois com k iteracoes.
Assim, quando k ! O(n), este algoritmo tem complexidadeO(n).
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Counting Sort - Complexidade
O algoritmo nao faz comparacoes entre elementos de A.
Sua complexidade deve ser medida em funcao do numero dasoutras operacoes, aritmeticas, atribuicoes, etc.
Claramente, o numero de tais operacoes e uma funcao emO(n + k), ja que temos dois loops simples com n iteracoes edois com k iteracoes.
Assim, quando k ! O(n), este algoritmo tem complexidadeO(n).
Algo de errado com o limite inferior de !(n log n) para ordenacao ?
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Algoritmos in-place e estaveis
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Algoritmos in-place e estaveis
Algoritmos de ordenacao podem ser ou nao in-place ouestaveis.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Algoritmos in-place e estaveis
Algoritmos de ordenacao podem ser ou nao in-place ouestaveis.
Um algoritmo de ordenacao e in-place se a memoria adicionalrequerida e independente do tamanho do vetor que esta sendoordenado.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Algoritmos in-place e estaveis
Algoritmos de ordenacao podem ser ou nao in-place ouestaveis.
Um algoritmo de ordenacao e in-place se a memoria adicionalrequerida e independente do tamanho do vetor que esta sendoordenado.
Exemplos: o Quicksort e o Heapsort sao metodos deordenacao in-place, ja o Mergesort e o Counting Sort nao.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Algoritmos in-place e estaveis
Algoritmos de ordenacao podem ser ou nao in-place ouestaveis.
Um algoritmo de ordenacao e in-place se a memoria adicionalrequerida e independente do tamanho do vetor que esta sendoordenado.
Exemplos: o Quicksort e o Heapsort sao metodos deordenacao in-place, ja o Mergesort e o Counting Sort nao.
Um metodo de ordenacao e estavel se elementos iguaisocorrem no vetor ordenado na mesma ordem em que saopassados na entrada.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Algoritmos in-place e estaveis
Algoritmos de ordenacao podem ser ou nao in-place ouestaveis.
Um algoritmo de ordenacao e in-place se a memoria adicionalrequerida e independente do tamanho do vetor que esta sendoordenado.
Exemplos: o Quicksort e o Heapsort sao metodos deordenacao in-place, ja o Mergesort e o Counting Sort nao.
Um metodo de ordenacao e estavel se elementos iguaisocorrem no vetor ordenado na mesma ordem em que saopassados na entrada.
Exemplos: o Counting Sort e o Quicksort sao exemplos demetodos estaveis (desde que certos cuidados sejam tomadosna implementacao). O Heapsort nao e.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort
O algoritmo Radix Sort ordena um vetor A de n numerosinteiros com um numero constante d de dıgitos, atraves deordenacoes parciais dıgito a dıgito.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort
O algoritmo Radix Sort ordena um vetor A de n numerosinteiros com um numero constante d de dıgitos, atraves deordenacoes parciais dıgito a dıgito.
Esse algoritmo surgiu no contexto de ordenacao de cartoesperfurados; a maquina ordenadora so era capaz de ordenar oscartoes segundo um de seus dıgitos.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort
O algoritmo Radix Sort ordena um vetor A de n numerosinteiros com um numero constante d de dıgitos, atraves deordenacoes parciais dıgito a dıgito.
Esse algoritmo surgiu no contexto de ordenacao de cartoesperfurados; a maquina ordenadora so era capaz de ordenar oscartoes segundo um de seus dıgitos.
Poderıamos entao ordenar os numeros iniciando a ordenacao apartir do dıgito mais significativo i , mas, para prosseguirassim, terıamos que separar os elementos da entrada emsubconjuntos com o mesmo valor no dıgito i .
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort
O algoritmo Radix Sort ordena um vetor A de n numerosinteiros com um numero constante d de dıgitos, atraves deordenacoes parciais dıgito a dıgito.
Esse algoritmo surgiu no contexto de ordenacao de cartoesperfurados; a maquina ordenadora so era capaz de ordenar oscartoes segundo um de seus dıgitos.
Poderıamos entao ordenar os numeros iniciando a ordenacao apartir do dıgito mais significativo i , mas, para prosseguirassim, terıamos que separar os elementos da entrada emsubconjuntos com o mesmo valor no dıgito i .
Podemos tambem ordenar os numeros ordenando-os segundocada um de seus digitos, comecando pelo menos significativo.Assim e o algoritmo Radix Sort.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort
Suponha que os elementos do vetor A a ser ordenado sejamnumeros inteiros de ate d dıgitos. O Radix Sort e simplesmente:
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort
Suponha que os elementos do vetor A a ser ordenado sejamnumeros inteiros de ate d dıgitos. O Radix Sort e simplesmente:
RadixSort(A, d)
1. para i := 1 ate d faca2. ordene os elementos de A pelo i -esimo dıgito
usando um metodo estavel
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Exemplo
329457657839436720355
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Exemplo
329457657839436720355
#
720355436457657329839
$
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Exemplo
329457657839436720355
#
720355436457657329839
$
#
720329436839355457657$
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Exemplo
329457657839436720355
#
720355436457657329839
$
#
720329436839355457657$
#
329355436457657720839$
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Corretude
O seguinte argumento indutivo garante a corretude do algoritmo:
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Corretude
O seguinte argumento indutivo garante a corretude do algoritmo:
Sabemos, por hipotese de inducao, que os numeros estaoordenados com relacao aos i " 1 dıgitos menos significativos.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Corretude
O seguinte argumento indutivo garante a corretude do algoritmo:
Sabemos, por hipotese de inducao, que os numeros estaoordenados com relacao aos i " 1 dıgitos menos significativos.
Ordenando os numeros com relacao ao i -esimo dıgito, via umalgoritmo estavel, teremos entao os numeros ordenados comrelacao aos i dıgitos menos significativos, pois, para doisnumeros com o i -esimo dıgito distintos, o de menor valor nodıgito estara antes do de maior valor, e se ambos possuem oi -esimo dıgito igual, entao a ordem dos dois tambem estaracorreta pois utilizamos um metodo de ordenacao estavel e,por hipotese de inducao, os dois elementos ja estavamordenados segundo os i " 1 dıgitos menos significativos.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
A complexidade do Radix Sort depende da complexidade doalgoritmo estavel usado para ordenar cada dıgito doselementos.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
A complexidade do Radix Sort depende da complexidade doalgoritmo estavel usado para ordenar cada dıgito doselementos.
Se essa complexidade estiver em "(f (n)), obtemos umacomplexidade total de "(d f (n)) para o Radix Sort.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
A complexidade do Radix Sort depende da complexidade doalgoritmo estavel usado para ordenar cada dıgito doselementos.
Se essa complexidade estiver em "(f (n)), obtemos umacomplexidade total de "(d f (n)) para o Radix Sort.
Como supomos d constante, a complexidade reduz-se para"(f (n)).
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
A complexidade do Radix Sort depende da complexidade doalgoritmo estavel usado para ordenar cada dıgito doselementos.
Se essa complexidade estiver em "(f (n)), obtemos umacomplexidade total de "(d f (n)) para o Radix Sort.
Como supomos d constante, a complexidade reduz-se para"(f (n)).
Se o algoritmo estavel for, por exemplo, o Counting Sort,obtemos a complexidade "(n + k).
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
A complexidade do Radix Sort depende da complexidade doalgoritmo estavel usado para ordenar cada dıgito doselementos.
Se essa complexidade estiver em "(f (n)), obtemos umacomplexidade total de "(d f (n)) para o Radix Sort.
Como supomos d constante, a complexidade reduz-se para"(f (n)).
Se o algoritmo estavel for, por exemplo, o Counting Sort,obtemos a complexidade "(n + k).
Supondo k ! O(n), resulta numa complexidade linear em n.
E o limite inferior de !(n log n) para ordenacao ?
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
Em contraste, um algoritmo por comparacao como oMergeSort teria complexidade n log n.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
Em contraste, um algoritmo por comparacao como oMergeSort teria complexidade n log n.
Assim, o Radix Sort e mais vantajoso que o MergeSort quandod < log n, ou seja, o numero de dıgitos for menor que log n.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
Em contraste, um algoritmo por comparacao como oMergeSort teria complexidade n log n.
Assim, o Radix Sort e mais vantajoso que o MergeSort quandod < log n, ou seja, o numero de dıgitos for menor que log n.
Se considerarmos que n tambem e um limite superior para omaior valor a ser ordenado, entao O(log n) e uma estimativapara o tamanho, em dıgitos, desse numero.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
Em contraste, um algoritmo por comparacao como oMergeSort teria complexidade n log n.
Assim, o Radix Sort e mais vantajoso que o MergeSort quandod < log n, ou seja, o numero de dıgitos for menor que log n.
Se considerarmos que n tambem e um limite superior para omaior valor a ser ordenado, entao O(log n) e uma estimativapara o tamanho, em dıgitos, desse numero.
Isso significa que nao ha diferenca significativa entre odesempenho do MergeSort e do Radix Sort?
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
A vantagem de se usar o Radix Sort fica evidente quandointerpretamos os dıgitos de forma mais geral que simplesmente0..9, embora seja esse o significado literal de “dıgitos”.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
A vantagem de se usar o Radix Sort fica evidente quandointerpretamos os dıgitos de forma mais geral que simplesmente0..9, embora seja esse o significado literal de “dıgitos”.
Tomemos o seguinte exemplo: suponha que desejemosordenar um conjunto de 220 numeros de 64 bits. Entao, oMergeSort faria cerca de 20 % 220 comparacoes e usaria umvetor auxiliar de tamanho 220.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
A vantagem de se usar o Radix Sort fica evidente quandointerpretamos os dıgitos de forma mais geral que simplesmente0..9, embora seja esse o significado literal de “dıgitos”.
Tomemos o seguinte exemplo: suponha que desejemosordenar um conjunto de 220 numeros de 64 bits. Entao, oMergeSort faria cerca de 20 % 220 comparacoes e usaria umvetor auxiliar de tamanho 220.
Se interpretarmos cada numero do conjunto como tendo 4dıgitos em base 216, e usarmos o Radix Sort com o Counting
Sort como metodo estavel, a complexidade de tempo seria daordem de 4(220 + 216) operacoes, uma reducao substancial.Mas, note que utilizamos dois vetores auxiliares, um detamanho 216 e outro de tamanho 220.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
O nome Radix Sort vem da base (em ingles radix) em queintepretamos os dıgitos.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
O nome Radix Sort vem da base (em ingles radix) em queintepretamos os dıgitos.
Veja que se o uso de memoria auxiliar for muito limitado,entao o melhor mesmo e usar um algoritmo de ordenacao porcomparacao in-place.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Radix Sort - Complexidade
O nome Radix Sort vem da base (em ingles radix) em queintepretamos os dıgitos.
Veja que se o uso de memoria auxiliar for muito limitado,entao o melhor mesmo e usar um algoritmo de ordenacao porcomparacao in-place.
Note que e possıvel usar o Radix Sort para ordenar outrostipos de elementos, como datas, palavras em ordemlexicografica e qualquer outro tipo que possa ser visto comouma d-upla ordenada de itens comparaveis.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Bucket Sort
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Bucket Sort
Assim como o Counting Sort, supoe que os n elementos aserem ordenados tem uma natureza peculiar. Neste caso, oselementos estao distribuıdos uniformemente no intervalosemi-aberto [0, 1).
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Bucket Sort
Assim como o Counting Sort, supoe que os n elementos aserem ordenados tem uma natureza peculiar. Neste caso, oselementos estao distribuıdos uniformemente no intervalosemi-aberto [0, 1).
A ideia e dividir o intervalo [0, 1) em n segmentos de mesmotamanho (buckets) e distribuir os n elementos nos seusrespectivos segmentos. Como os elementos estao distribuıdosuniformemente, espera-se que o numero de elementos sejaaproximadamente o mesmo em todos os segmentos.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Bucket Sort
Assim como o Counting Sort, supoe que os n elementos aserem ordenados tem uma natureza peculiar. Neste caso, oselementos estao distribuıdos uniformemente no intervalosemi-aberto [0, 1).
A ideia e dividir o intervalo [0, 1) em n segmentos de mesmotamanho (buckets) e distribuir os n elementos nos seusrespectivos segmentos. Como os elementos estao distribuıdosuniformemente, espera-se que o numero de elementos sejaaproximadamente o mesmo em todos os segmentos.
Em seguida, os elementos de cada segmento sao ordenadospor um metodo qualquer. Finalmente, os segmentosordenados sao concatenados em ordem crescente.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Bucket Sort - codigo
BucketSort(A)
1. n := comprimento de A
2. para i := 1 ate n faca3. insira A[i ] na lista ligada B [&nA[i ]']4. para i := 0 ate n " 1 faca5. ordene a lista B [i ] com Insertion Sort
6. Concatene as listas B [0],B [1], . . . ,B [n " 1] nessa ordem.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Bucket Sort - Exemplo
A =
1 .782 .173 .394 .265 .726 .947 .218 .129 .2310 .68
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
Bucket Sort - Exemplo
A =
1 .782 .173 .394 .265 .726 .947 .218 .129 .2310 .68
B =
01 .12, .172 .21, .23, .263 .39456 .687 .72, .7889 .94
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Bucket Sort - corretude
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Bucket Sort - corretude
A corretude do algoritmo depende do fato de que elementos x
e y de A, x < y , ou terminem no mesmo segmento ou sejamdestinados a segmentos diferentes B [i ] e B [j],respectivamente, onde i < j .
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Bucket Sort - corretude
A corretude do algoritmo depende do fato de que elementos x
e y de A, x < y , ou terminem no mesmo segmento ou sejamdestinados a segmentos diferentes B [i ] e B [j],respectivamente, onde i < j .
A primeira possibilidade implica que x aparecera antes de y
na concatenacao final, ja que cada segmento e ordenado.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Bucket Sort - corretude
A corretude do algoritmo depende do fato de que elementos x
e y de A, x < y , ou terminem no mesmo segmento ou sejamdestinados a segmentos diferentes B [i ] e B [j],respectivamente, onde i < j .
A primeira possibilidade implica que x aparecera antes de y
na concatenacao final, ja que cada segmento e ordenado.
Na segunda hipotese, temos que, se x < y , entaoi = &nx' ( &ny' = j . Como i )= j , temos i < j .
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Bucket Sort - complexidade
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Bucket Sort - complexidade
E claro que o pior caso do Bucket Sort e quadratico,supondo-se que as ordenacoes dos segmentos seja feita comordenacao por insercao.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Bucket Sort - complexidade
E claro que o pior caso do Bucket Sort e quadratico,supondo-se que as ordenacoes dos segmentos seja feita comordenacao por insercao.
Entretanto, o tempo esperado e linear.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Bucket Sort - complexidade
E claro que o pior caso do Bucket Sort e quadratico,supondo-se que as ordenacoes dos segmentos seja feita comordenacao por insercao.
Entretanto, o tempo esperado e linear.Intuitivamente, a ideia da demonstracao e que, como os n
elementos estao distribuıdos uniformemente no intervalo[0, 1), entao o tamanho esperado das listas tambem euniforme, em "(1).
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Bucket Sort - complexidade
E claro que o pior caso do Bucket Sort e quadratico,supondo-se que as ordenacoes dos segmentos seja feita comordenacao por insercao.
Entretanto, o tempo esperado e linear.Intuitivamente, a ideia da demonstracao e que, como os n
elementos estao distribuıdos uniformemente no intervalo[0, 1), entao o tamanho esperado das listas tambem euniforme, em "(1).
Portanto as ordenacoes das n listas B [i ] leva tempo totalesperado em "(n).
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I
O Bucket Sort - complexidade
E claro que o pior caso do Bucket Sort e quadratico,supondo-se que as ordenacoes dos segmentos seja feita comordenacao por insercao.
Entretanto, o tempo esperado e linear.Intuitivamente, a ideia da demonstracao e que, como os n
elementos estao distribuıdos uniformemente no intervalo[0, 1), entao o tamanho esperado das listas tambem euniforme, em "(1).
Portanto as ordenacoes das n listas B [i ] leva tempo totalesperado em "(n).
Os detalhes podem ser vistos no livro de Cormen, Leiserson eRivest.
Cid Carvalho de Souza e Candida Nunes da Silva MC448 — Analise de Algoritmos I