• Nenhum resultado encontrado

Ordenação em tempo linear

N/A
N/A
Protected

Academic year: 2022

Share "Ordenação em tempo linear"

Copied!
54
0
0

Texto

(1)

Ordenação em tempo linear

CLRS cap 8

(2)

Ordenação: limite inferior

Problema:Rearranjar um vetorA[1. .n]de modo que ele fique em ordem crescente.

Existem algoritmos que consomem tempoO(nlgn).

Existe algoritmoassintoticamentemelhor? NÃO, se o algoritmo é baseado emcomparações. Prova?

Qualquer algoritmo baseado em comparações é uma“árvore de decisão”.

(3)

Ordenação: limite inferior

Problema:Rearranjar um vetorA[1. .n]de modo que ele fique em ordem crescente.

Existem algoritmos que consomem tempoO(nlgn).

Existe algoritmoassintoticamentemelhor?

NÃO, se o algoritmo é baseado emcomparações. Prova?

Qualquer algoritmo baseado em comparações é uma“árvore de decisão”.

(4)

Ordenação: limite inferior

Problema:Rearranjar um vetorA[1. .n]de modo que ele fique em ordem crescente.

Existem algoritmos que consomem tempoO(nlgn).

Existe algoritmoassintoticamentemelhor?

NÃO, se o algoritmo é baseado emcomparações.

Prova?

Qualquer algoritmo baseado em comparações é uma“árvore de decisão”.

(5)

Ordenação: limite inferior

Problema:Rearranjar um vetorA[1. .n]de modo que ele fique em ordem crescente.

Existem algoritmos que consomem tempoO(nlgn).

Existe algoritmoassintoticamentemelhor?

NÃO, se o algoritmo é baseado emcomparações.

Prova?

Qualquer algoritmo baseado em comparações é uma“árvore de decisão”.

(6)

Todo algoritmo de ordenação baseado em comparações faz

Ò(nlgn)

comparaçõesno pior caso.

(7)

Counting Sort

Recebe inteirosn ek, e um vetorA[1. .n]onde cada elemento é um inteiro entre 1 ek.

Devolve um vetorB[1. .n]com

os elementos deA[1. .n]em ordem crescente. COUNTINGSORT(A,n)

1 parai←1aték faça 2 C[i]←0

3 paraj←1aténfaça 4 C[A[j]]←C[A[j]] +1

/*C[j]é o número de ítensjem A*/

5 parai2aték faça

6 C[i]C[i] +C[i1]

/*C[j]é o número de ítensjem A*/

7 parajndecrescendo até1faça 8 B[C[A[j]]]A[j]

9 C[A[j]]C[A[j]]1 10 devolvaB

(8)

Counting Sort

Recebe inteirosn ek, e um vetorA[1. .n]onde cada elemento é um inteiro entre 1 ek.

Devolve um vetorB[1. .n]com

os elementos deA[1. .n]em ordem crescente.

COUNTINGSORT(A,n)

1 parai←1aték faça 2 C[i]←0

3 paraj←1aténfaça 4 C[A[j]]←C[A[j]] +1

/*C[j]é o número de ítensjem A*/

5 parai2aték faça

6 C[i]C[i] +C[i1]

/*C[j]é o número de ítensjem A*/

7 parajndecrescendo até1faça 8 B[C[A[j]]]A[j]

9 C[A[j]]C[A[j]]1 10 devolvaB

(9)

Counting Sort

Recebe inteirosn ek, e um vetorA[1. .n]onde cada elemento é um inteiro entre 1 ek.

Devolve um vetorB[1. .n]com

os elementos deA[1. .n]em ordem crescente.

COUNTINGSORT(A,n)

1 parai←1aték faça 2 C[i]←0

3 paraj←1aténfaça 4 C[A[j]]←C[A[j]] +1

/*C[j]é o número de ítensjem A*/

5 parai2aték faça

6 C[i]C[i] +C[i1]

/*C[j]é o número de ítensjem A*/

7 parajndecrescendo até1faça 8 B[C[A[j]]]A[j]

9 C[A[j]]C[A[j]]1

(10)

Counting Sort

Recebe inteirosn ek, e um vetorA[1. .n]onde cada elemento é um inteiro entre 1 ek.

Devolve um vetorB[1. .n]com

os elementos deA[1. .n]em ordem crescente.

COUNTINGSORT(A,n)

1 parai←1aték faça 2 C[i]←0

3 paraj←1aténfaça 4 C[A[j]]←C[A[j]] +1

/*C[j]é o número de ítensjem A*/

5 parai2aték faça

6 C[i]C[i] +C[i1]

/*C[j]é o número de ítensjem A*/

7 parajndecrescendo até1faça 8 B[C[A[j]]]A[j]

9 C[A[j]]C[A[j]]1 10 devolvaB

(11)

Counting Sort

Recebe inteirosn ek, e um vetorA[1. .n]onde cada elemento é um inteiro entre 1 ek.

Devolve um vetorB[1. .n]com

os elementos deA[1. .n]em ordem crescente.

COUNTINGSORT(A,n)

1 parai←1aték faça 2 C[i]←0

3 paraj←1aténfaça 4 C[A[j]]←C[A[j]] +1

/*C[j]é o número de ítensjem A*/

5 parai2aték faça

6 C[i]C[i] +C[i1]

/*C[j]é o número de ítensjem A*/

7 parajndecrescendo até1faça 8 B[C[A[j]]]A[j]

9 C[A[j]]C[A[j]]1

(12)

Consumo de tempo

linha consumo na linha

1 Ê(k)

2 O(k)

3 Ê(n)

4 O(n)

5 Ê(k)

6 O(k)

7 Ê(n)

8 O(n)

9 O(n)

10 Ê(1)

total ????

linha consumo na linha

1 Ê(k)

2 O(k)

3 Ê(n)

4 O(n)

5 Ê(k)

6 O(k)

7 Ê(n)

8 O(n)

9 O(n)

10 Ê(1)

total Ê(k+n)

(13)

Consumo de tempo

linha consumo na linha

1 Ê(k)

2 O(k)

3 Ê(n)

4 O(n)

5 Ê(k)

6 O(k)

7 Ê(n)

8 O(n)

9 O(n)

10 Ê(1)

total Ê(k+n)

(14)

Counting Sort

COUNTINGSORT(A,n)

1 parai←1aték faça 2 C[i]←0

3 paraj←1aténfaça 4 C[A[j]]←C[A[j]] +1 5 parai←2aték faça 6 C[i]←C[i] +C[i−1]

7 paraj←n decrescendo até1faça 8 B[C[A[j]]]←A[j]

9 C[A[j]]←C[A[j]]−1 10 devolvaB

Consumo de tempo:Ê(k+n)

Sek=O(n), o consumo de tempo éÊ(n).

(15)

Radix Sort

Algoritmo usado para ordenar

I inteiros não-negativos comd dígitos

I cartões perfurados (Hollerith!)

I registros cuja chave tem vários campos

campo 1: menos significativo campod: mais significativo

RADIXSORT(A,n,d)

1 parai←1atéd faça 2 Ordene(A,n,i)

Ordene(A,n,i): ordenaA[1. .n]peloi-ésimo campo dos registros emA por meio de um algoritmoestável.

(16)

Radix Sort

Algoritmo usado para ordenar

I inteiros não-negativos comd dígitos

I cartões perfurados (Hollerith!)

I registros cuja chave tem vários campos campo 1: menos significativo

campod: mais significativo

RADIXSORT(A,n,d)

1 parai←1atéd faça 2 Ordene(A,n,i)

Ordene(A,n,i): ordenaA[1. .n]peloi-ésimo campo dos registros emA por meio de um algoritmoestável.

(17)

Radix Sort

Algoritmo usado para ordenar

I inteiros não-negativos comd dígitos

I cartões perfurados (Hollerith!)

I registros cuja chave tem vários campos campo 1: menos significativo

campod: mais significativo RADIXSORT(A,n,d)

1 parai←1atéd faça 2 Ordene(A,n,i)

Ordene(A,n,i): ordenaA[1. .n]peloi-ésimo campo dos registros emA por meio de um algoritmoestável.

(18)

Radix Sort

Algoritmo usado para ordenar

I inteiros não-negativos comd dígitos

I cartões perfurados (Hollerith!)

I registros cuja chave tem vários campos campo 1: menos significativo

campod: mais significativo RADIXSORT(A,n,d)

1 parai←1atéd faça 2 Ordene(A,n,i)

Ordene(A,n,i): ordenaA[1. .n]peloi-ésimo campo dos registros emA por meio de um algoritmoestável.

(19)

Estabilidade

Um algoritmo de ordenação éestávelse sempre que, inicialmente, A[i] =A[j]parai<j, a cópiaA[i]termina em uma posição menor do vetor que a cópiaA[j].

Isso só é relevante quando temosinformação satélite. Quais dos algoritmos que vimos são estáveis?

I inserção direta?seleção direta? bubblesort?

I mergesort?

I quicksort?

I heapsort?

I countingsort?

(20)

Estabilidade

Um algoritmo de ordenação éestávelse sempre que, inicialmente, A[i] =A[j]parai<j, a cópiaA[i]termina em uma posição menor do vetor que a cópiaA[j].

Isso só é relevante quando temosinformação satélite.

Quais dos algoritmos que vimos são estáveis?

I inserção direta?seleção direta? bubblesort?

I mergesort?

I quicksort?

I heapsort?

I countingsort?

(21)

Estabilidade

Um algoritmo de ordenação éestávelse sempre que, inicialmente, A[i] =A[j]parai<j, a cópiaA[i]termina em uma posição menor do vetor que a cópiaA[j].

Isso só é relevante quando temosinformação satélite.

Quais dos algoritmos que vimos são estáveis?

I inserção direta?seleção direta? bubblesort?

I mergesort?

I quicksort?

I heapsort?

I countingsort?

(22)

Estabilidade

Um algoritmo de ordenação éestávelse sempre que, inicialmente, A[i] =A[j]parai<j, a cópiaA[i]termina em uma posição menor do vetor que a cópiaA[j].

Isso só é relevante quando temosinformação satélite.

Quais dos algoritmos que vimos são estáveis?

I inserção direta?seleção direta? bubblesort?

I mergesort?

I quicksort?

I heapsort?

I countingsort?

(23)

Consumo de tempo do Radixsort

Depende do algoritmoOrdene.

Se cada campo é um inteiro de 1 ak, então podemos usar oCOUNTINGSORT.

Neste caso, o consumo de tempo éÊ(d(k+n)).

Sed é limitado por uma constante (ou seja, sed=O(1)) ek =O(n), então o consumo de tempo éÊ(n).

(24)

Consumo de tempo do Radixsort

Depende do algoritmoOrdene.

Se cada campo é um inteiro de 1 ak, então podemos usar oCOUNTINGSORT.

Neste caso, o consumo de tempo éÊ(d(k+n)).

Sed é limitado por uma constante (ou seja, sed=O(1)) ek =O(n), então o consumo de tempo éÊ(n).

(25)

Consumo de tempo do Radixsort

Depende do algoritmoOrdene.

Se cada campo é um inteiro de 1 ak, então podemos usar oCOUNTINGSORT.

Neste caso, o consumo de tempo éÊ(d(k+n)).

Sed é limitado por uma constante (ou seja, sed=O(1)) ek =O(n), então o consumo de tempo éÊ(n).

(26)

Consumo de tempo do Radixsort

Depende do algoritmoOrdene.

Se cada campo é um inteiro de 1 ak, então podemos usar oCOUNTINGSORT.

Neste caso, o consumo de tempo éÊ(d(k+n)).

Sed é limitado por uma constante (ou seja, sed=O(1)) ek =O(n), então o consumo de tempo éÊ(n).

(27)

Bucketsort

CLRS sec 8.4

(28)

Bucket Sort

Recebe um inteiron e um vetorA[1. .n]onde cada elemento é um número no intervalo[0,1).

A .47 .93 .82 .12 .42 .03 .62 .38 .77 .91

Devolve um vetorC[1. .n]com

os elementos deA[1. .n]em ordem crescente.

C .03 .12 .38 .42 .47 .62 .77 .82 .91 .93

(29)

Bucket Sort

Recebe um inteiron e um vetorA[1. .n]onde cada elemento é um número no intervalo[0,1).

A .47 .93 .82 .12 .42 .03 .62 .38 .77 .91

Devolve um vetorC[1. .n]com

os elementos deA[1. .n]em ordem crescente.

C .03 .12 .38 .42 .47 .62 .77 .82 .91 .93

(30)

Bucket Sort

Recebe um inteiron e um vetorA[1. .n]onde cada elemento é um número no intervalo[0,1).

A .47 .93 .82 .12 .42 .03 .62 .38 .77 .91

Devolve um vetorC[1. .n]com

os elementos deA[1. .n]em ordem crescente.

C .03 .12 .38 .42 .47 .62 .77 .82 .91 .93

(31)

Bucket Sort

Recebe um inteiron e um vetorA[1. .n]onde cada elemento é um número no intervalo[0,1).

A .47 .93 .82 .12 .42 .03 .62 .38 .77 .91

Devolve um vetorC[1. .n]com

os elementos deA[1. .n]em ordem crescente.

C .03 .12 .38 .42 .47 .62 .77 .82 .91 .93

(32)

Exemplo

.47 .93 .82 .12 .42 .03 .62 .38 .77 .91

B[0] : .03

B[1] : .12

B[2] :

B[3] : .38

B[4] : .42 .47

B[5] :

B[6] : .62

B[7] : .77

B[8] : .82

B[9] : .91 .93

(33)

Exemplo

.47 .93 .82 .12 .42 .03 .62 .38 .77 .91

B[0] : .03

B[1] : .12

B[2] :

B[3] : .38

B[4] : .47 .42

B[5] :

B[6] : .62

B[7] : .77

B[8] : .82

B[9] : .93 .91

B[0] : .03

B[1] : .12

B[2] :

B[3] : .38

B[4] : .42 .47

B[5] :

B[6] : .62

B[7] : .77

B[8] : .82

B[9] : .91 .93

(34)

Exemplo

.47 .93 .82 .12 .42 .03 .62 .38 .77 .91

B[0] : .03

B[1] : .12

B[2] :

B[3] : .38

B[4] : .42 .47

B[5] :

B[6] : .62

B[7] : .77

B[8] : .82

B[9] : .91 .93

(35)

Exemplo

.47 .93 .82 .12 .42 .03 .62 .38 .77 .91

B[0] : .03

B[1] : .12

B[2] :

B[3] : .38

B[4] : .42 .47

B[5] :

B[6] : .62

B[7] : .77

B[8] : .82

B[9] : .91 .93

.03 .12 .38 .42 .47 .62 .77 .82 .91 .93

(36)

Bucket Sort

Recebe um inteiron e um vetorA[1. .n]onde cada elemento é um número no intervalo[0,1).

Devolve um vetorC[1. .n]com

os elementos deA[1. .n]em ordem crescente.

BUCKETSORT(A,n)

1 parai←0atén−1faça 2 B[i]←NIL

3 parai←1atén faça 4 INSIRA(B[bn A[i]c],A[i]) 5 parai←0atén−1faça 6 ORDENELISTA(B[i]) 7 C←CONCATENE(B,n) 8 devolvaC

(37)

Bucket Sort

BUCKETSORT(A,n)

1 parai←0atén−1faça 2 B[i]←NIL

3 parai←1atén faça 4 INSIRA(B[bn A[i]c],A[i]) 5 parai←0atén−1faça 6 ORDENELISTA(B[i]) 7 C←CONCATENE(B,n) 8 devolvaC

INSIRA(p,x): inserexna lista apontada porp ORDENELISTA(p): ordena a lista apontada porp

CONCATENE(B,n): devolve a lista obtida da concatenação das listas apontadas porB[0], . . . ,B[n−1].

(38)

Consumo de tempo

Suponha que os números emA[1. .n]são uniformemente distribuídos no intervalo[0,1).

Suponha que oORDENELISTAseja o INSERTIONSORT.

SejaXio número de elementos na listaB[i]. Seja

Xij =

( 1 se oj-ésimo elemento foi para a listaB[i] 0 se oj-ésimo elemento não foi para a listaB[i]. Observe queXi

jXij.

Yi: número de comparações para ordenar a listaB[i].

(39)

Consumo de tempo

Suponha que os números emA[1. .n]são uniformemente distribuídos no intervalo[0,1).

Suponha que oORDENELISTAseja o INSERTIONSORT. SejaXio número de elementos na listaB[i].

Seja Xij =

( 1 se oj-ésimo elemento foi para a listaB[i] 0 se oj-ésimo elemento não foi para a listaB[i]. Observe queXi

jXij.

Yi: número de comparações para ordenar a listaB[i].

(40)

Consumo de tempo

Suponha que os números emA[1. .n]são uniformemente distribuídos no intervalo[0,1).

Suponha que oORDENELISTAseja o INSERTIONSORT. SejaXio número de elementos na listaB[i].

Seja Xij =

( 1 se oj-ésimo elemento foi para a listaB[i] 0 se oj-ésimo elemento não foi para a listaB[i].

Observe queXi

jXij.

Yi: número de comparações para ordenar a listaB[i].

(41)

Consumo de tempo

Suponha que os números emA[1. .n]são uniformemente distribuídos no intervalo[0,1).

Suponha que oORDENELISTAseja o INSERTIONSORT. SejaXio número de elementos na listaB[i].

Seja Xij =

( 1 se oj-ésimo elemento foi para a listaB[i] 0 se oj-ésimo elemento não foi para a listaB[i].

Observe queXi

jXij.

Yi: número de comparações para ordenar a listaB[i].

(42)

Consumo de tempo

Suponha que os números emA[1. .n]são uniformemente distribuídos no intervalo[0,1).

Suponha que oORDENELISTAseja o INSERTIONSORT. SejaXio número de elementos na listaB[i].

Seja Xij =

( 1 se oj-ésimo elemento foi para a listaB[i] 0 se oj-ésimo elemento não foi para a listaB[i].

Observe queXi

jXij.

Yi: número de comparações para ordenar a listaB[i].

(43)

Consumo de tempo

Xi: número de elementos na listaB[i]

Xij =

( 1 se oj-ésimo elemento foi para a listaB[i] 0 se oj-ésimo elemento não foi para a listaB[i].

)

Yi: número de comparações para ordenar a listaB[i].

Observe queYi ≤Xi2. LogoE[Yi]≤E[Xi2] =E[(´

jXij)2]. E[(¼

j

Xij)2] = E[¼

j

¼

k

XijXik]

= ¼

j

E[Xij2] +¼

j

¼

k,j

E[XijXik]

(44)

Consumo de tempo

Xi: número de elementos na listaB[i]

Xij =

( 1 se oj-ésimo elemento foi para a listaB[i] 0 se oj-ésimo elemento não foi para a listaB[i].

)

Yi: número de comparações para ordenar a listaB[i].

Observe queYi ≤Xi2. LogoE[Yi]≤E[Xi2] =E[(´

jXij)2].

E[(¼

j

Xij)2] = E[¼

j

¼

k

XijXik]

= ¼

j

E[Xij2] +¼

j

¼

k,j

E[XijXik]

(45)

Consumo de tempo

Xi: número de elementos na listaB[i]

Xij =

( 1 se oj-ésimo elemento foi para a listaB[i] 0 se oj-ésimo elemento não foi para a listaB[i].

)

Yi: número de comparações para ordenar a listaB[i].

Observe queYi ≤Xi2. LogoE[Yi]≤E[Xi2] =E[(´

jXij)2].

E[(¼

j

Xij)2] = E[¼

j

¼

k

XijXik]

= E[¼

j

Xij2

j

¼

k,j

XijXik]

E[(¼

j

Xij)2] = E[¼

j

¼

k

XijXik]

= ¼

j

E[Xij2] +¼

j

¼

k,j

E[XijXik]

(46)

Consumo de tempo

Xi: número de elementos na listaB[i]

Xij =

( 1 se oj-ésimo elemento foi para a listaB[i] 0 se oj-ésimo elemento não foi para a listaB[i].

)

Yi: número de comparações para ordenar a listaB[i].

Observe queYi ≤Xi2. LogoE[Yi]≤E[Xi2] =E[(´

jXij)2].

E[(¼

j

Xij)2] = E[¼

j

¼

k

XijXik]

= E[¼

j

Xij2] +E[¼

j

¼

k,j

XijXik]

E[(¼

j

Xij)2] = E[¼

j

¼

k

XijXik]

= ¼

j

E[Xij2] +¼

j

¼

k,j

E[XijXik]

(47)

Consumo de tempo

Xi: número de elementos na listaB[i]

Xij =

( 1 se oj-ésimo elemento foi para a listaB[i] 0 se oj-ésimo elemento não foi para a listaB[i].

)

Yi: número de comparações para ordenar a listaB[i].

Observe queYi ≤Xi2. LogoE[Yi]≤E[Xi2] =E[(´

jXij)2].

E[(¼

j

Xij)2] = E[¼

j

¼

k

XijXik]

= ¼

j

E[Xij2] +¼

j

¼

k,j

E[XijXik]

(48)

Consumo de tempo

Xi: número de elementos na listaB[i]

Xij =

( 1 se oj-ésimo elemento foi para a listaB[i] 0 se oj-ésimo elemento não foi para a listaB[i].

)

Yi: número de comparações para ordenar a listaB[i].

Observe queYi ≤Xi2. Ademais, E[Yi] ≤ ¼

j

E[Xij2] +¼

j

¼

k,j

E[XijXik].

Observe queXij2é uma variável aleatória binária. Vamos calcular sua esperança:

E[Xij2] =Pr[Xij2=1] =Pr[Xij =1] = 1 n.

(49)

Consumo de tempo

Xi: número de elementos na listaB[i]

Xij =

( 1 se oj-ésimo elemento foi para a listaB[i] 0 se oj-ésimo elemento não foi para a listaB[i].

)

Yi: número de comparações para ordenar a listaB[i].

Observe queYi ≤Xi2. Ademais, E[Yi] ≤ ¼

j

E[Xij2] +¼

j

¼

k,j

E[XijXik].

Observe queXij2é uma variável aleatória binária. Vamos calcular sua esperança:

E[Xij2] =Pr[Xij2=1] =Pr[Xij =1] = 1 n.

(50)

Consumo de tempo

Para calcularE[XijXik]paraj ,k, primeiro note que Xij eXik são variáveis aleatórias independentes.

Portanto,E[XijXik] =E[Xij]E[Xik].

Ademais,E[Xij] =Pr[Xij =1] =n1.

Logo,

E[Yi] ≤ ¼

j

1 n +¼

j

¼

k,j

1 n2

= n

n +n(n−1) 1 n2

= 1+ (n−1)1 n

= 2−1 n.

(51)

Consumo de tempo

Para calcularE[XijXik]paraj ,k, primeiro note que Xij eXik são variáveis aleatórias independentes.

Portanto,E[XijXik] =E[Xij]E[Xik].

Ademais,E[Xij] =Pr[Xij =1] =n1. Logo,

E[Yi] ≤ ¼

j

1 n +¼

j

¼

k,j

1 n2

= n

n +n(n−1) 1 n2

= 1+ (n−1)1 n

= 2−1 n.

(52)

Consumo de tempo

Agora, sejaY=´

iYi.

Note queYé o número de comparações realizadas peloBUCKETSORT

no total.

AssimE[Y]é o número esperado de comparações realizadas pelo algoritmo, e tal número determina o consumo assintótico de tempo doBUCKETSORT.

E[Y] =¼

i

E[Yi]≤2n−1=O(n).

O consumo de tempo esperado doBUCKETSORTquando os números emA[1. .n]são uniformemente distribuídos no

intervalo[0,1)éO(n).

(53)

Consumo de tempo

Agora, sejaY=´

iYi.

Note queYé o número de comparações realizadas peloBUCKETSORT

no total.

AssimE[Y]é o número esperado de comparações realizadas pelo algoritmo, e tal número determina o consumo assintótico de tempo doBUCKETSORT.

E[Y] =¼

i

E[Yi]≤2n−1=O(n).

O consumo de tempo esperado doBUCKETSORTquando os números emA[1. .n]são uniformemente distribuídos no

intervalo[0,1)éO(n).

(54)

Consumo de tempo

Agora, sejaY=´

iYi.

Note queYé o número de comparações realizadas peloBUCKETSORT

no total.

AssimE[Y]é o número esperado de comparações realizadas pelo algoritmo, e tal número determina o consumo assintótico de tempo doBUCKETSORT.

E[Y] =¼

i

E[Yi]≤2n−1=O(n).

O consumo de tempo esperado doBUCKETSORTquando os números emA[1. .n]são uniformemente distribuídos no

intervalo[0,1)éO(n).

Referências

Documentos relacionados

 Todos os programas devem ser feitos em C. Apresente um algoritmo linear para encontrar o n-ésimo maior número dentre estes 2n elementos. Mostre como você chegou a esse resultado. c)

Nesta abordagem, implemen- tada no algoritmo LiTE (Localizac¸˜ao Temporal de Eventos), n˜ao se procura sincronizar os n´os sensores entre si, mas sim sincronizar o evento com o

Chamado de Primes is in P, o artigo detalhava um algoritmo de primalidade que n˜ao apenas provava que um n´umero dado era primo (ou composto), mas que tinha um tempo de execuc¸˜ao

Chamado de Primes is in P, o artigo detalha um algoritmo de primalidade que n˜ao apenas prova que um n´umero dado ´e primo (ou composto), mas que tem um tempo de execuc¸˜ao que ´e

A idéia por trás do algoritmo é escolher um valor &#34;médio&#34; (o valor do meio, também chamado pivô, que pode não corresponder exatamente ao valor do meio do vetor, depois

Um algoritmo CGM possui rodadas de computação local alternadas com rodadas de comunicação entre os processa- dores, onde cada processador envia e recebe, em cada ro- dada, 0( i)

Desenvolvimento de um novo algoritmo inspirado no algoritmo RLS, que utiliza como crit´erio aplicado sobre o erro uma fun¸c˜ao n˜ao linear, a qual queremos minimizar..

 f(n) é a medida do tempo necessário para executar um algoritmo para um problema de tamanho n.... Função