• Nenhum resultado encontrado

Estágio Docência - Cartesian Tree

N/A
N/A
Protected

Academic year: 2021

Share "Estágio Docência - Cartesian Tree"

Copied!
35
0
0

Texto

(1)

Mikaela Maia

Departamento de Sistemas e Computação

Universidade Federal de Campina Grande

(2)

Árvore Binária derivada de uma sequência de

números

Introduzida por

Vuillemin

em 1980 no

contexto de

geometric range searching data

structures

(3)
(4)

Um nó para cada número de uma sequência

Caminhar em ordem na árvore resulta na

sequência original

A árvore à esquerda de um nó consiste em valores

anteriores a ele na ordem da sequência

A árvore à direita de um nó consiste em valores

posteriores a ele na ordem da sequência

Heap property (Min)

(5)

Baseado na

heap property

qual o

comportamento da raiz de uma Cartesian

Tree?

(6)

Baseado na

heap property

qual o

comportamento da raiz de uma Cartesian

Tree?

É o menor valor da

É o menor valor da

É o menor valor da

(7)

Recursivamente

As subárvores à esquerda e a direita da raiz são

Cartesian Trees das subsequências à esquerda

e à direita da raiz.

(8)

• Raiz da árvore

• Menor valor da sequência

(9)

• Raiz da Subárvore • Menor valor

da

(10)

• Raiz da Subárvore • Menor valor

da

(11)

Lembrando as propriedades ...

Um nó para cada número de uma sequência

Caminhar em ordem na árvore resulta na

sequência original

A árvore à esquerda de um nó consiste em valores anteriores a ele na ordem da sequência

A árvore à direita de um nó consiste em valores posteriores a ele na ordem da sequência

Heap property (Min)

O pai de qualquer nó não-raiz tem um valor inferior que o valor de seus filhos

(12)

1.

Se o novo nó é maior que o último inserido,

insere-se o novo nó como filho a direita

direita

direita do

direita

último;

◦ X – último nó inserido na árvore

◦ Y – novo nó a ser inserido

◦ Y > X x xx x y y y y

(13)

2.

Caso contrário, se o pai do último inserido é

menor ou igual ao novo nó,

inserimos o novo

como seu filho a direita e o antigo filho a direita

dele se torna o filho a esquerda do novo nó;

◦ X – último nó inserido na árvore

◦ Z – o pai de X

◦ Y – novo nó a ser inserido

◦ Y<= X & Z <= Y z zz z x x x x z z z z y y y y x xx x

(14)

3.

Caso contrário, verifica se o avô do último nó inserido

é menor ou igual ao novo nó e assim por diante até

encontrar um nó menor ou igual ao novo,

inserimos o

novo como seu filho a direita e o antigo filho a direita

dele se torna o filho a esquerda do novo nó;

◦ X – último nó inserido na árvore

◦ Z – avô || bisavô || tataravô ... do último nó inserido

◦ Y – novo nó a ser inserido

◦ Y<= X & Z <= Y z z z z zzzz y y y y x xx x

...

...

(15)

4.

Se não encontrar nenhum nó na árvore que o novo

nó seja menor que ele, significa que o novo nó é o

menor nó até então e deve se tornar a raiz da

árvore e a antiga raiz sua filha a esquerda.

◦ R – raiz da árvore

◦ Y – novo nó a ser inserido

◦ Y<= R 15 R RR R

...

...

R R R R

...

...

Y Y Y Y

(16)

9 99 9

(17)

9 99 9 3 33 3

Se não encontrar nenhum nó na árvore Se não encontrar nenhum nó na árvore Se não encontrar nenhum nó na árvore Se não encontrar nenhum nó na árvore que o novo nó seja menor que ele,

que o novo nó seja menor que ele, que o novo nó seja menor que ele, que o novo nó seja menor que ele,

significa que o novo nó é o menor nó até significa que o novo nó é o menor nó até significa que o novo nó é o menor nó até significa que o novo nó é o menor nó até então e deve se tornar a raiz da árvore e então e deve se tornar a raiz da árvore e então e deve se tornar a raiz da árvore e então e deve se tornar a raiz da árvore e a antiga raiz sua filha a esquerda

a antiga raiz sua filha a esquerda a antiga raiz sua filha a esquerda a antiga raiz sua filha a esquerda

(18)

9 99 9 3 33 3 7 7 7 7

Se o novo nó é maior que o último Se o novo nó é maior que o último Se o novo nó é maior que o último Se o novo nó é maior que o último inserido, insere

inserido, insere inserido, insere

inserido, insere---se o novo nó como -se o novo nó como se o novo nó como se o novo nó como filho a direita do último

filho a direita do último filho a direita do último filho a direita do último

(19)

9 99 9 3 33 3 7 77 7 1 11 1

Se não encontrar nenhum nó na árvore que o novo nó seja menor que ele,

significa que o novo nó é o menor nó até então e deve se tornar a raiz da árvore e a antiga raiz sua filha a esquerda

(20)

9 99 9 3 33 3 7 77 7 1 11 1

Se o novo nó é maior que o último

inserido, insere-se o novo nó como filho a direita do último

8 88 8

(21)

9 99 9 3 33 3 7 7 7 7 1 11 1

Se o novo nó é maior que o último

inserido, insere-se o novo nó como filho a direita do último 8 88 8 12 12 12 12

(22)

9 99 9 3 33 3 7 77 7 1 1 1 1 Se o pai do último é Se o pai do último é Se o pai do último é Se o pai do último é

menor ou igual ao novo menor ou igual ao novo menor ou igual ao novo menor ou igual ao novo inserimos o novo como inserimos o novo como inserimos o novo como inserimos o novo como seu filho a direita e o seu filho a direita e o seu filho a direita e o seu filho a direita e o

antigo filho a direita dele antigo filho a direita dele antigo filho a direita dele antigo filho a direita dele se torna o filho a se torna o filho a se torna o filho a se torna o filho a esquerda do novo nó esquerda do novo nó esquerda do novo nó esquerda do novo nó 8 8 8 8 10 1010 10 12 12 12 12

(23)

9 99 9 3 33 3 7 77 7 1 11 1

Se o novo nó é maior que o último inserido, insere-se o novo nó como filho a direita do último 8 8 8 8 10 1010 10 12 12 12 12 20202020

(24)

9 99 9 3 33 3 7 77 7 1 11 1

Se o pai do último é menor ou igual ao novo

inserimos o novo como seu filho a direita e o

antigo filho a direita dele se torna o filho a esquerda do novo nó 8 8 8 8 10 1010 10 15 15 15 15 12 1212 12

(25)

9 99 9 3 33 3 7 77 7 1 11 1 8 8 8 8 10 1010 10 15 15 15 15 12 1212 12 20 2020 20

Se o novo nó é maior que o último inserido, insere-se o novo nó como filho a direita do último

18 18 18 18

(26)

9 9 9 9 3 33 3 7 77 7 1 11 1 8 8 8 8 10 10 10 10 15 15 15 15 12 1212 12

Verifica se o avô do último é menor ou igual ao novo e assim por diante até

encontrar um nó menor ou igual ao novo, inserimos o novo como seu filho a

direita e o antigo filho a direita dele se torna o filho a esquerda do novo nó.

5 55 5

(27)

Range minimum query

Problema envolvendo consultas que buscam o valor

mínimo de uma subsequência de uma sequência

(28)

Range minimum query

Problema envolvendo consultas que buscam o valor

mínimo de uma subsequência de uma sequência

(29)

Lowest common ancestor

Mais baixo (em altura) ancestral comum do valor

mais a esquerda e mais a direita de uma

subsequência

LCA entre 6 e 9 é 8

3 3 3 3 0 00 0 2 2 2 2 8 88 8 3 3 3 3 4 44 4 9999 5 55 5 6 6 6 6

LCA de uma árvore binária

(30)

Numa

Cartesian Tree

qual o

Range minimum

e o

Lowest common ancestor?

Na subsequência

(12,10,20,15)

RMQ(12,15) =

?

(31)

Numa

Cartesian Tree

qual o

Range minimum

e o

Lowest common ancestor?

Na subsequência

(12,10,20,15)

RMQ(12,15) =

10

(32)

Questoes de implementacao

Como fica a implementacao de uma Cartesian Tree?

Podemos reusar alguma implementação anterior?

class CartesianTree<T> { BSTNode<T> root; } class BSTNode<T> { V data; BSTNode<T> left; BSTNode<T> right; BSTNode<T> parent; }

(33)

Questoes de implementacao

Como fica a implementacao de uma Cartesian Tree?

class CartesianTree<T> extends BSTImpl{ BSTNode<T> root; ArrayList sequence; } class BSTNode<T> { V data; BSTNode<T> left; BSTNode<T> right; BSTNode<T> parent; }

(34)

Implementar uma Cartesian Tree e

determinar o LCA de uma subsequencia de

uma sequencia dada.

(35)

http://community.topcoder.com/tc?module=

Static&d1=tutorials&d2=lowestCommonAnce

stor

Referências

Documentos relacionados

Agrupamento de Escolas de Carnaxide Agrupamento de Escolas de Carnaxide Agrupamento de escolas de José Relvas Agrupamento de Escolas de Miraflores Agrupamento de Escolas

O presente documento pretende registar a análise efectuada pela equipa gestora do Portal CampingCar Portugal (Portal Português de Autocaravanismo) ao estudo de

Pós-graduação na área de Tecnologia da Informação na função escolhida (carga horária mínima de 360 horas), acrescido de experiência profissional superior a cinco anos

Especialmente no primeiro ano de curso, segundo Tinto (2007), é necessária a integração e envolvimento do acadêmico, e essas intervenções visam duas adaptações: no

Haveria agora algo que dizer -e haverá muito mais que estudar, pois não têm sido regiões que tenham merecido particular atenção por parte dos historiadores- sobre certas

REDES INSTALACAO E COMERCIO DE REDES

Os objetivos do estudo foram verificar a adaptação dos testes de lactato mínimo, freqüência crítica e limiar anaeróbio em protocolo específico para o tênis de mesa para

1) O atendimento de nossos clientes é realizado por empregados da XP Investimentos CCTVM S/A (“XP Investimentos ou XP”) ou por agentes autônomos de investimento que