• Nenhum resultado encontrado

Algoritmos e Estrutura de Dados 2

N/A
N/A
Protected

Academic year: 2019

Share "Algoritmos e Estrutura de Dados 2"

Copied!
15
0
0

Texto

(1)

Algoritmos e Estrutura de Dados 2

Apostila de curso

(2)

INTRODUÇÃO ... 3

1 ÁRVORES DE PESQUISA... 4

1.1 BUSCA BINARIA... 4

1.2 ÁRVORES DE PESQUISA... 5

1.3 ÁRVORES BINARIAS DE PESQUISA... 6

1.4 ÁRVORES AVL ... 10

1.5 ÁRVORES (2,4)... 11

1.6 ÁRVORES RUBRO-NEGRAS... 11

2 PROCESSAMENTO DE TEXTO... 12

2.1 ALGORITMOS PARA PROCURA DE PADRÕES... 12

2.2 BUSCA DIGITAL... 12

2.3 COMPRESSÃO DE TEXTOS... 12

2.4 SIMILARIDADE DE TEXTOS... 12

3 GRAFOS... 13

3.1 REPRESENTAÇÕES E TIPOS DE GRAFOS... 13

3.2 CAMINHAMENTO EM GRAFOS... 13

3.3 PROBLEMAS DE CONEXIDADE... 13

3.4 CAMINHOS MINIMOS... 13

3.5 ÁRVORE GERADORA MINIMA... 13

3.6 EXERCICIOS... 13

4 ALGORITMOS GEOMETRICOS ... 14

4.1 FECHO CONVEXO... 14

4.2 TRIANGULAÇÕES... 14

4.3 DIAGRAMA DE VORONOI... 14

4.4 EXERCICIOS... 14

(3)

Introdução

!"

# $

%

&

'

(

)

*

+ ,

-$

.

)

,

/

,

-

!" )

"

.

/

!"

)

,

.

/

.

.)

*

0

$

,

) (

$

$

,

!

$

,

)

$

$

12

$

34

$

3

)

*

0

5

) (

/

/

5

5

5

) (

/

0

!"

.

'

6

"

$.

7

8

9

!"

:

5

)

*

0

.

) (

!"

,

;

!"

)

.

0

!"

$

0

)

* <

0

'

)

!+

0

)

!"

%

$ 5

$

!"

!"

=

1

)

0

!"

$

5

0

5 !" )

.

5

0

-

!"

,

/

(4)

4

1 Árvores de pesquisa

1.1 Busca binária

?

,

$ ;

-

/

,

/

<

) ?

,

$ ;

/

/

)

$ ;

$

5

. 6

8 *6 8

.

<

)

,

6

8

0

6

!

8

.

)

.

@

A

B

,

@

A

)

.

/

) 9

$

/

,

$.

/

$

5

5

CC

)

$.

6C8

.

<

6 CC8 $ ;

.

6 C8

$

<

.

,

$

,

0

)

?

$

/

<

0

C

!

$

C

C)

$

. ,

<

-"

5

$

)

$

%

3 )

Figura 1-1 – Representação de uma busca binária.

* 5

%

3

DE

!"

$

) *

!

,

.

6 C8

$

3

,

.

,

CE

!"

CF

"

/

6 "

G8)

.

/

-C

C

-

C

)

/

!"

50

25

37

31

28

(5)

0$

.

-

,

5

.

DF)

9

!"

$

,

,

$

)

/.

B

?

$.

$

$

/

) H

,

/

)

$.

$

$

,

)

$

.

!"

)

1.2 Árvores de pesquisa

!"

"

$

$

)

!"

!+

6

8

$

)

$

!" .

!"

!"

-

) 9

-!"

,

,

/

-

) I

G J

/

$

!"

) 9 .

$

-

$

5

) K

!+

$

B

*

*6 8

!" ,

!"

" .

B

9

.

0

,

>

,

L

$

5

,

6

!" 8

6

!" 8)

9

/

:

,

$

) 9

$

L

,

> "

,

6

>8

L

"

)

$

.

)

#

$

,

.

$

)

$

$

--

@ ,M;

A

)

>

$

$

$

/

,

-

$

-

,

L

,

,

-

$

-

(6)

N

Figura 1-2 – Exemplo de árvore de pesquisa. Os valores contidos nos nós representam as chaves dos elementos.

$

,

O

? -

$

P

;

$

,

,

$ 6 8 Q

$ 6

$

8 Q

$ 6

P

8)

"

L

,

$

P

L

)

,

,

$

,

"

.

$

) 9

5

$

,

$

>

%

3 ) *

$

,

.

)

Figura 1-3 – Exemplo de árvore de pesquisa que não é uma árvore binária.

$

%

3

.

$

6 348 ,

$

)

9 .

$

,

/

.

$

)

1.3 Árvores binárias de pesquisa

R $

,

!"

,

>

5

6

3 $

8

L

,

L

%

3 ) 9

,

-

O

6

9

2

4

1

8

4

N D

(7)

S

Estrutura Nó:

pai: referência (ponteiro) para o nó-pai do nó corrente; esq: referência para seu filho à esquerda;

dir: referência para seu filho à direita;

terminal: bandeira indicando se o nó é terminal ou não; chave: chave do nó

elemento: elemento do nó

1

!+

/

!+

!"

!"

)

$

/

>

3 O

Algoritmo busca (k, r)

Entrada: k = chave a ser procurada r = raiz da árvore de pesquisa Saída: nó de chave k ou um nó terminal

se r.terminal = verd. retorna r

se k < r.chave

// busca na sub-árvore da esquerda retorna busca(k, r.esq)

senão se k > r.chave

// busca na sub-árvore da direita retorna busca(k, r.dir)

senão

// achou retorna r

Código 1-1 – Algoritmo de busca em uma árvore de pesquisa binária.

$

>

$

.

,

!"

$

$

) 9

"

!"

,

$

-

L

,

$

L

,

,

>

$

) *

>

3

-

/

$

)

$

"

$

>

)

.

$

>G

>

/ !"

,

>

" .

$

(8)

D

Algoritmo insereElemento(k, e)

Entrada: k = chave do elemento a ser inserido e = elemento a ser inserido

Saída: verdadeiro, se a inserção ocorreu, ou falso, c.c.

n = busca(k, raiz da árvore) se n.terminal = verd.

// não existe: novo nó n.terminal falso n.chave k

n.elemento e

n.esq novo nó terminal n.dir novo nó terminal retorna verd.

senão

// já existe retorna falso

Código 1-2 – Algoritmo de inserção de um novo elemento em uma árvore binária de pesquisa.

*

!" .

) 9

>

$

$;3 ) ?

>

$

.

>

-

> ,

>

"

$

>

3

6

"

-

"

,

8)

%

34 5

!" )

Figura 1-4 – Remoção do elemento de chave 4, que possui um dos filhos não-terminal.

$

-

>

6

"

8

03

,

"

-

$

,

) * <

,

03

.

L

,

6

-

8

L

6

-

8)

" ,

$

$

$ N

$

)

> .

"

5

T

$ / ,

T

-,

) % /3

,

>

3

$

> ,

,

$

6

$

3

8

"

$

!"

6

9 2

1 5 8

6

9 2

4

1 8

(9)

T

$

>

,

%

34)

%

3

)

Figura 1-5 – Remoção do elemento de chave 4, que possui um dos filhos não-terminal.

*

!"

5 )

Algoritmo remove(k)

Entrada: k = chave do elemento a ser removido

Saída verdadeiro, se a remoção ocorreu, ou falso, c.c.

n busca(k, raiz da árvore)

se n.terminal = verd. retorna falso

// verifica se n é interno

se n.esq.terminal = falso e n.dir.terminal = falso

// recupera menor chave da sub-árvore direita

f menorChave(n.dir)

// copia chave e elemento de f em n

n.copia(f)

// faz f (nó folha) ser o novo nó a ser removido

n f

// remove nó folha

se n.esq.terminal = falso n.copia(n.esq)

// remove terminais de n.esq e o faz terminal

removeTerminal(n.esq) senão se n.dir.terminal = falso

n.copia(n.dir)

removeTerminal(n.dir) senão

removeTerminal(n)

retorna verd.

Código 1-3 – Algoritmo de remoção de elemento em uma árvore binária de pesquisa.

$

5

!"

!"

L

$

) 9 .

!"

>

,

!"

!"

5

G

9

$

/

%

3N6 8

!"

-

$ .

,

5

!"

6

9 2

1 5 8

5

9 2

(10)

C

$ )

0

,

-/

!" ) *

-

0

5

*6 8)

5

/

,

$

%

3N6 8 ,

*6

8

!" ,

!" )

Figura 1-6 – Melhor e pior caso de uma árvore binária de pesquisa.

H

$

"

,

"

B

5

,

$

$

) 7

$

,

,

*6

8

)

"

)

,

,

!"

$

/

,

"

!+

%

3N6 8)

5

$

/

,

@

A

)

,

$

$

"

$

12)

1.4 Árvores AVL

*

L

$

12

1

U

2

.

)

$

12 .

$

-!"

!"

@ 3 ,

A

$

$

%

3N)

9

0

$

12

L

$

,

O

#

$

,

>

3 $

5

)

$.

!"

!" O

$

12

. *6

8)

(11)

9

-

!" $

O *

.

,

<

$

0$ ) 9

/

O

$

<

0

> )

,

>

$

3 $

%

3S)

Figura 1-7 – Exemplo de árvore AVL com altura máxima para um dado número de elementos.

9

-

!"

!"

5

0

) 9

/

!"

6 8 ,

<

0

>

$

!

) #

$

>) #

$

0

> ) 9

V

$

12

0

>

/

3 $

3

3 )

$

O

W

!" X

)))

1.5 Árvores (2,4)

(12)

2 Processamento de texto

2.1 Algoritmos para procura de padrões

2.2 Busca digital

2.3 Compressão de textos

(13)

3 Grafos

3.1 Representações e tipos de Grafos

3.2 Caminhamento em Grafos

3.3 Problemas de conexidade

3.4 Caminhos mínimos

3.5 Árvore geradora mínima

(14)

4

4 Algoritmos geométricos

4.1 Fecho convexo

4.2 Triangulações

4.3 Diagrama de Voronoi

(15)

Imagem

Figura 1-1 – Representação de uma busca binária.
Figura 1-3 – Exemplo de árvore de pesquisa que não é uma árvore binária.
Figura 1-4 – Remoção do elemento de chave 4, que possui um dos filhos não-terminal.
Figura 1-5 – Remoção do elemento de chave 4, que possui um dos filhos não-terminal.
+2

Referências

Documentos relacionados

Uma componente prática de muita importância que a estagiária teve nesta obra foi a realização do chamado PTQ (Planeamento de Trabalho Quinzenal), este documento tinha como

Changes in the gut microbiota appears to be a key element in the pathogenesis of hepatic and gastrointestinal disorders, including non-alcoholic fatty liver disease, alcoholic

 Recebimento, em uma ou mais operações, em nome próprio, na qualidade de cessionário de beneficiário, ou em nome de beneficiário, na qualidade de mandatário, de indenizações

Trabalho de Conclusão de Curso apresentado ao curso de Agronomia, no Centro de Ciências Agrárias, da Universidade Federal de Santa Catarina, como requisito para

Os instrumentos de pesquisa utilizados serão: Ficha de Rastreamento das Participantes do Estudo, International Consultation on Incontinence Questionnaire – Short Form

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

O pastor Felipe Silva de Oliveira da Terceira Igreja Batista em Jardim Bom Retiro (São Gonçalo/RJ), é convidado para apresentar uma reflexão bíblica baseada na

Outro aspecto a ser observado é que, apesar da maioria das enfermeiras referirem ter aprendido e executado as fases do processo na graduação, as dificuldades na prática