• 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

Os substratos que demonstraram maiores IVG foram vermiculita e papel filtro, sendo que a vermiculita também propiciou maior porcentagem de germinação, indicando que esse substrato

Igor Silva Andrade Ingrid Carvalho de Paula Isabela Gomes Moreira Isadora Rezende Ferreira Israel Ferreira de Oliveira Alves Izabela Aparecida Costa Izabella Gandur de Oliveira

A Lei nº 2/2007 de 15 de janeiro, na alínea c) do Artigo 10º e Artigo 15º consagram que constitui receita do Município o produto da cobrança das taxas

fato psicológico é dada pela própria existência de um plano propriamente humano e da vida dramática do indivíduo que nele se desenrola. O objeto da psicologia

Na fachada posterior da sede, na parte voltada para um pátio interno onde hoje há um jardim, as esquadrias não são mais de caixilharia de vidro, permanecendo apenas as de folhas

Para que o estudo seja possível, houve um levantamento bibliográfico sobre o cenário do sistema produtivo da saúde no Brasil, tendo em vista a proteção

Um dos grandes desafios no ramo da usinagem de materiais ferrosos e não ferrosos é o método de fixação do produto que será usinado em máquinas operatrizes, principalmente quando este

Assim sendo, o objetivo geral deste trabalho é propor um modelo de predição precoce que mapeie o desempenho dos alunos em cursos de nível superior, na modalidade de ensino a