Algoritmos de Pesquisa

Tamanho: px
Começar a partir da página:

Download "Algoritmos de Pesquisa"

Transcrição

1 Algoritmos de Pesquisa Hugo Santos Miguel Fonseca 11 Abril 004 Conteúdo 1 Descrição dos algoritmos 1.1 Pesquisa sequencial Pesquisa Binária Pesquisa Ternária Analise de Complexidade 3.1 Pesquisa Sequencial Pior Caso Caso Médio Pesquisa Binária Pior Caso Caso Médio Pesquisa Ternária Pior Caso Caso Médio Analise Comparativa 6 A Implementação utilizada 8 A.1 impl.c A. tests.sh

2 Filhos a Esquerda Valores Inferiores No Pai Filhos a Direita Valores Superiores Figura 1: Partição do vector na pesquisa binária Descrição dos algoritmos 1.1 Pesquisa sequencial Figura : Codificação de uma árvore binária num vector ordenado O algoritmo de pesquisa sequencial envolve uma comparação elemento a elemento desde a primeira até à última posição do vector. Uma vez que o vector de entrada se encontra ordenado, quando a condição x > vect(k), onde x é o valor a ser pesquisado e k a posição corrente no vector, se verifica, consideramos imediatamente que o valor não se encontra no vector. 1. Pesquisa Binária Este algoritmo implementa o mesmo comportamento da pesquisa numa Árvore Binária, considerando que esta árvore se encontra codificada no vector de entrada (ver Figura ). Este algoritmo supõe que todos os nós descendentes do filho esquerdo (inclusivé) têm valor inferior ao valor do nó pai enquanto que os nós descendentes do filho direito (inclusivé) têm valor superior. Esta suposição é a base do algoritmo de pesquisa binária, seguindo a codificação da árvore binária, os filhos à esquerda correspondem uma partição do vector enquanto que os valores à direita correspondem a outra partição (ver Figura 1). Para um vector de tamanho n a profundidade máxima d da árvore será de d = log (n + 1), uma vez que o número máximo de elementos numa árvore de profundidade d é n = d Pesquisa Ternária A pesquisa ternária tem um comportamento semelhante à pesquisa binária relativamente à partição iterativa do vector de entrada. Cada partição é particionada em três sub-partições e os valores nas posições m 3 e m 3, onde m é o tamanho da partição, são comparados ao valor que está a ser pesquisado (ver Figura 3). Caso um destes

3 Valores menores que A A Valores entre A e B B Valores maiores que B Figura 3: Partição do vector na pesquisa ternária valores seja o valor que está a ser pesquisado o valor foi encontrado, senão continuamos o algoritmo numa das sub-partições. Caso a partição tenha um tamanho nulo o valor nao foi encontrado e se tiver tamanho unitário existe apenas uma folha e deve ser apenas comparado o valor nessa posição. O número de ciclos que o algoritmo vai executar (profundidade da árvore) é dado por log 3 (n + 1) Analise de Complexidade Tendo em conta que D n = { conjunto das possiveis instancias de um problema com tamanho n I D n, sendo I uma instância particular Considerando também p(i) - probabilidade de uma ocorrência e t(i) - número de operações para a instância I, ficamos com:.1 Pesquisa Sequencial.1.1 Pior Caso Pior Caso: W(n) = max t(i), com I D n Caso Médio: A(n) = p(i)t(i). com I D n No algoritmo de pesquisa sequencial, para uma entrada ordenada, o pior caso ocorre quando o elemento a pesquisar não existe no vector e é maior que qualquer elemento do vector (x > max(vect), onde x é o valor a ser pesquisado). Neste caso o algoritmo vai percorrer e compararar os valores em todas as posições do vector de entrada. Adicionalmente, caso o elemento a ser pesquisado se encontre na ultima posição do vector, também irão ser feitas o mesmo número de comparações e como tal esta situação é equivalente ao elemento nao existir. Seja n o tamanho do vector temos que logo W(n) = n W(n) O(n).1. Caso Médio Consideramos uma classe possivel: I k primeira ocorrência na k-esima posição, com k = 0, 1,..., n 1 Na class I k o algoritmo efectua t k = k + 1 comparações. Todas as ocorrências sao equiprovaveis, como tal têm probabilidade 1 n. n 1 A(n) = p(i k )t(i k ) k=0 3

4 n 1 1 A(n) = (k + 1) n k=0 A(n) = 1 n 1 (k + 1) n A(n) = 1 n k=0 ( n (n + 1) ) A(n) = 1 (n + 1) Logo. Pesquisa Binária..1 Pior Caso A(n) O(n) No algoritmo de pesquisa binária o pior caso ocorre mais uma vez quando o elemento a pesquisar não existe no vector de entrada e é também maior que qualquer valor da entrada (x > max(vect), onde x é o valor a ser pesquisado). É também Pior Caso quando o elemento a ser pesquisado é a ultimo elemento do vector uma vez que é uma situação que vai resultar no mesmo número de comparações. Vamos considerar inicialmente uma entrada de tamanho unitário. Para esta instância W(1) = ( comparações, x = vector(k) e x < vector(k)). Para n = n = 3 temos já uma árvore de profundidade. As comparações serão feitas na raiz e na folha. O caso para a folha foi já analizado, é W(1). Este caso mais o número de comparações na raiz (outras comparações) resultam em 4 comparações. Chegamos então à conclusão que vamos ter comparações por cada nó que visitamos, ou seja W(n) = W(1) profundidade arvore Especificámos inicialmente que a profundidade da árvore é dada por d = log (n + 1), o que resulta em Resultando em W(n) = W(1) log (n + 1) W(n) = log (n + 1) W(n) O(log (n)).. Caso Médio Considerando que a probabilidade de x < vect(k), onde x é o valor a ser pesquisado e k é a raiz da sub-árvore da iteração corrente, é igual a x > vect(k), em cada iteração são feitas 1+ = 3 comparações. k A(n) = (i + 1) n i i=0 j=1 Onde i representa o nível da árvore, ou iteração do algoritmo e j o número de nós no nível i. A(n) = A(n) = k 1 i=0 k 1 i=0 i 1 n (i + 1) j=1 3 1 n (i + 1)3 i k 1 (i + 1) i n i=0 4

5 Como k = log (n + 1) ( k 1 ) k 1 i + i i n n i=0 i=0 ( ( k 1) + ( + k (k )) ) n ( k (k 1) + 1 ) n ((n + 1)(log (n + 1) 1) + 1) n (nlog (n + 1) n + log (n + 1)) Concluindo n (n (log (n + 1) 1) + log (n + 1)) ( log (n + 1) 1 + log ) (n + 1) n ( ) 3 A(n) O log (n).3 Pesquisa Ternária.3.1 Pior Caso Mais uma vez o pior caso corresponde à pesquisa de um valor superior ao ultimo valor do vector, ou seja, x > max(vect). Consideramos inicialmente a maior instância em que esta situação se verifique e em que vai resultar apenas numa iteração. Temos então que n = 3, em que são feitas 4 comparações (pior caso em número de comparações numa só iteração). Usando a mesma estratégia que foi utilizada anteriormente, para n > 3, teremos o mesmo comportamento por partição que obtemos para o vector de n = 3. Teremos então que o pior caso W(n) = 4 número de partições k Como n = 3 k 1 temos Concluindo E ( ) n + 1 k = log 3 ( ) n + 1 W(n) = 4 log 3 W(n) 4log 3 ( n ).3. Caso Médio No algoritmo de pesquisa ternária, em cada iteracção temos cinco situacções distintas: x < vect(k 1 ), x = vect(k 1 ), vect(k 1 ) < x < vect(k ), x = vect(k ) e x > vect(k ). Vamos considerar que estas cinco situações são equiprovaveis, ou seja, p = 1 5. A cada situação está também associado num número de comparações distinto, sendo 1 para a primeira, para a segunda, 3 para a terceira e finalmente 4 comparações para as quarta e quinta situações. Para as instâncias que resultam apenas numa iteracção o número médio de comparações é então =

6 Sabendo o número médio de iteracções poderemos depois saber A(n). Uma vez que n = 3 k 1 ( ) n + 1 k = log 3 O número médio de iteracções vem quando m = n, então ( n k medio = log + 1 ) 3 A(n) = 14 5 k medio = 14 ( n ) 5 log 3 4 Concluimos que 3 Analise Comparativa A(n) 14 ( n ) 5 log 3 4 Tendo já efectuado uma série de experiência conclusivas e uma análise analitica aos algoritmos em estudo falta-nos ainda uma análise comparativa entre os vários algorimos. Devido à sua natureza linear, o algoritmo de pesquisa sequencial e bastante mau e não escala, tanto para entradas pequenas como grandes terão que ser feitas até n comparações para decidir se um determinado valor pertence ou não à entrada. Para a maior parte das aplicações este algoritmo não é aceitavel, para um vector de elementos serão feitas comparações. A sua inclusão neste trabalho serve meramente de exemplo uma abordagem não optimizada. Não são apresentados gráficos para este algoritmo pois é claro o seu comportamento linear médio e constante no pior caso. Embora pudesse prometer à partida devido à sua escalabilidade em log3(n) relativamente à entrada, o algoritmo de pesquisa ternária revelou-se uma pior escolha relativamente ao binário. Embora o número de iterações necessárias para uma determinada entrada seja menor, log3(n) vs. log(n), as condições necessárias ao algoritmo rapidamente elevam o número de comparações relativamente ao binário. Isto deve-se principalmente ao facto de se ter que escolher um de três ramos, enquanto no binário temos apenas que decidir uma de duas direcções. Na Figura 4 podemos observar o comportamento do algoritmo em entradas com vários tamanhos relativamente ao caso médio experimental, analitico e também ao pior caso. Como já foi referido, o algoritmo de pesquisa binária é o que obtem o melhor resultado nos parametros em análise. Ele é também o que escala melhor, necessitando cerca de 30 comparações em média para uma entrada de , e cerca de 40 comparações para uma entrada de posições. Na Figura 5 podemos observar o crescimento logaritmico tanto para o pior caso como para o caso médio relativamente ás entradas fornecidas previamente. Embora o número de comparações médio da pesquisa binária não seja muito menor que o da ternária, se observar-mos o pior caso já não podemos afirmar o mesmo, com a ternária a ter uma relação de 5 40 (medio pior) enquanto que o binário tem 3 para entradas de elementos. Nos gra ficos apresentados, o pior caso representa o pior caso descrito para os vários algoritmos (elemento não existir e ser superior a todos os elementos do vector) enquanto que o caso médio representa a média do número de comparações que foram efectuadas para todos os elementos do vector. 6

7 40 Exp. Ternary Worst Case Ternary Average Ternary Figura 4: Análise comparativa da experiência para o algoritmo de pesquisa ternária 35 Exp. Binary Worst Case Binary Analysis Avg Binary O(3/ log(n)) Figura 5: Análise comparativa da experiência para o algoritmo de pesquisa binária 7

8 A Implementação utilizada A.1 impl.c # i n c l u d e < s t d i o. h> # i n c l u d e < s t r i n g. h> # i n c l u d e < s t d l i b. h> i n t I n p u t ; i n t I n p u t S i z e ; enum { LOAD, COMPARE, S_ALU, ALU_DIV ; i n t C o u n t e r s [ 4 ] ; s t a t i c i n t Trace = 0 ; void R e s e t C o u n t e r s ( ) { memset ( Counters, 0, s i z e o f ( C o u n t e r s ) ) ; void P r i n t C o u n t e r s A n d R e s e t ( ) { p r i n t f ( " Loads : %i Compares : %i ALU: %i DIV : %i \ n ", C o u n t e r s [LOAD], C o u n t e r s [COMPARE], C o u n t e r s [S_ALU ], C o u n t e r s [ALU_DIV ] ) ; R e s e t C o u n t e r s ( ) ; i n t MemLoad ( i n t pos ) { C o u n t e r s [LOAD] ++; f p r i n t f ( s t d e r r, "MemLoad(% i ) = %i \ n ", pos, I n p u t [ pos ] ) ; return I n p u t [ pos ] ; i n t CompareLess ( i n t val1, i n t v a l ) { C o u n t e r s [COMPARE] ++; f p r i n t f ( s t d e r r, " CompareLess(%i, %i ) \ n ", val1, v a l ) ; return v a l 1 < v a l ; i n t CompareGreater ( i n t val1, i n t v a l ) { C o u n t e r s [COMPARE] ++; f p r i n t f ( s t d e r r, " CompareGreater(%i, %i ) \ n ", val1, v a l ) ; 8

9 return v a l 1 > v a l ; i n t CompareEqual ( i n t val1, i n t v a l ) { C o u n t e r s [COMPARE] ++; f p r i n t f ( s t d e r r, " CompareEqual(%i, %i ) \ n ", val1, v a l ) ; return v a l 1 == v a l ; i n t Add ( i n t op1, i n t op ) { C o u n t e r s [S_ALU ] ++; f p r i n t f ( s t d e r r, "Add(%i, %i ) = %i \ n ", op1, op, op1 + op ) ; return op1 + op ; i n t Sub ( i n t op1, i n t op ) { C o u n t e r s [S_ALU ] ++; f p r i n t f ( s t d e r r, " Sub(%i, %i ) = %i \ n ", op1, op, op1 op ) ; return op1 op ; i n t S h i f t R i g h t ( i n t op1, i n t op ) { C o u n t e r s [S_ALU ] ++; f p r i n t f ( s t d e r r, " S h i f t R i g h t (%i, %i ) = %i \ n ", op1, op, op1 >> op ) ; return op1 >> op ; i n t Div ( i n t op1, i n t op ) { C o u n t e r s [ALU_DIV] ++; f p r i n t f ( s t d e r r, " Div(%i, %i ) = %i \ n ", op1, op, op1 / op ) ; return op1 / op ; s t a t i c i n t s e q u e n t i a l _ s e a r c h ( i n t v a l u e ) { i n t i, r e g ; f o r ( i = 0 ; i < I n p u t S i z e ; i ++) { r e g = MemLoad ( i ) ; i f ( CompareEqual ( reg, v a l u e ) ) return i ; e l s e i f ( CompareGreater ( reg, v a l u e ) ) break ; 9

10 s t a t i c i n t b i n a r y _ s e a r c h ( i n t v a l u e ) { i n t s t, end, pos, r e g ; s t = 0 ; end = I n p u t S i z e ; while ( s t <= end ) { r e g = Sub ( end, s t ) ; r e g = S h i f t R i g h t ( reg, 1 ) ; pos = Add ( s t, r e g ) ; r e g = MemLoad ( pos ) ; i f ( CompareLess ( v alue, r e g ) ) { end = Sub ( pos, 1 ) ; e l s e i f ( CompareGreater ( v alue, r e g ) ) { s t = Add ( pos, 1 ) ; e l s e { return pos ; s t a t i c i n t t r e n a r y _ s e a r c h ( i n t v a l u e ) { i n t s t, end, p o sl, posr, tmp, r e g ; p o s l = s t = 0 ; p o s r = end = I n p u t S i z e ; while ( ( end s t ) > ) { tmp = Sub ( end, s t ) ; tmp = Div ( tmp, 3 ) ; p o s l = Add ( s t, tmp ) ; tmp = Add ( tmp, tmp ) ; p o s r = Add ( s t, tmp ) ; i f ( Trace ) { f p r i n t f ( s t d e r r, " \ tposl : %i PosR : %i \ n ", p o sl, p o s r ) ; r e g = MemLoad ( p o s l ) ; i f ( CompareLess ( v alue, r e g ) ) { end = Sub ( p o sl, 1 ) ; e l s e i f ( CompareEqual ( v alue, r e g ) ) { return p o s l ; e l s e { r e g = MemLoad ( p o s r ) ; i f ( CompareLess ( v alue, r e g ) ) { s t = Add ( p o sl, 1 ) ; end = Sub ( posr, 1 ) ; e l s e i f ( CompareEqual ( v alue, r e g ) ) { return p o s r ; 10

11 e l s e { s t = Add ( posr, 1 ) ; f o r ( ; s t < end ; s t ++) { r e g = MemLoad ( s t ) ; i f ( CompareEqual ( v alue, r e g ) ) return s t ; i n t main ( i n t argc, char argv [ ] ) { FILE fp ; i n t i ; i n t s t a r t = 1, end = 1; i n t i n c r e m e n t = 1 ; i n t ( s e a r c h ) ( i n t ) = s e q u e n t i a l _ s e a r c h ; i f ( a r g c < 4 ) { f p r i n t f ( s t d e r r, " Usage :. / impl < f i l e > < s i z e > < type >" ) ; f p r i n t f ( s t d e r r, " [ < s t a r t > <end > [ < i n c r e m e n t > ] ] \ n " ) ; I n p u t S i z e = a t o i ( argv [ ] ) ; i f ( I n p u t S i z e <= 0 ) { f p r i n t f ( s t d e r r, " I n v a l i d v a l u e \ n " ) ; i f (! strcmp ( argv [ 3 ], " t " ) ) { s e a r c h = t r e n a r y _ s e a r c h ; e l s e i f (! strcmp ( argv [ 3 ], " b " ) ) { s e a r c h = b i n a r y _ s e a r c h ; i f ( a r g c > 5 ) { s t a r t = a t o i ( argv [ 4 ] ) ; i f ( s t a r t < 0 ) { f p r i n t f ( s t d e r r, " I n v a l i d s t a r t i n d e x \ n " ) ; end = a t o i ( argv [ 5 ] ) ; i f ( end < 0 ) { f p r i n t f ( s t d e r r, " I n v a l i d end i n d e x \ n " ) ; i f ( a r g c > 6 ) { i n c r e m e n t = a t o i ( argv [ 6 ] ) ; i f ( i n c r e m e n t <= 0 ) { f p r i n t f ( s t d e r r, " I n v a l i d i n c r e m e n t \ n " ) ; 11

12 I n p u t = ( i n t ) m alloc ( s i z e o f ( i n t ) I n p u t S i z e ) ; i f (! I n p u t ) { f p r i n t f ( s t d e r r, " F a i l e d t o a l l o c a t e n e c e s s a r y memory. \ n " ) ; fp = fopen ( argv [ 1 ], " r " ) ; i f (! fp ) { f p r i n t f ( s t d e r r, " F a i l e d t o open i n p u t f i l e \ n " ) ; f o r ( i = 0 ; i < I n p u t S i z e ; i ++) { i f ( f s c a n f ( fp, "%i \ n ", &I n p u t [ i ] )!= 1 ) { f p r i n t f ( s t d e r r, " F a i l e d d u r i n g r e a d. \ n " ) ; f c l o s e ( fp ) ; R e s e t C o u n t e r s ( ) ; i f ( s t a r t < 0 ) { f o r ( i = 0 ; i < I n p u t S i z e ; i ++) { ( s e a r c h ) ( I n p u t [ i ] ) ; P r i n t C o u n t e r s A n d R e s e t ( ) ; e l s e { f o r ( i = s t a r t ; i < end ; i += i n c r e m e n t ) { ( s e a r c h ) ( i ) ; P r i n t C o u n t e r s A n d R e s e t ( ) ; f r e e ( I n p u t ) ; return 0 ; A. tests.sh #! / b i n / sh rm i r f r e s u l t s mkdir r e s u l t s cd r e s u l t s SIZES=" " f o r j i n $SIZES ; do.. / impl.. / ${ j p a r e s. d a t $ j b > S e a r c h P a i r B i n $ j 1

13 .. / impl.. / ${ j p a r e s. d a t $ j t > S e a r c h P a i r T e r $ j.. / impl.. / ${ j p a r e s. d a t $ j b 1 $ j > S e a r c h W o r s t P a i r B i n $ j.. / impl.. / ${ j p a r e s. d a t $ j t 1 $ j > S e a r c h W o r s t P a i r T e r $ j.. / impl.. / ${ j p a r e s. d a t $ j b $ ( ( $ j + 1 ) ) $ ( ( $ j + 3 ) ) \ > S e a r c h S i n g l e W o r s t P a i r B i n $ j.. / impl.. / ${ j p a r e s. d a t $ j t $ ( ( $ j + 1 ) ) $ ( ( $ j + 3 ) ) \ > S e a r c h S i n g l e W o r s t P a i r T e r $ j FILES=" S e a r c h P a i r B i n S e a r c h P a i r T e r S e a r c h W o r s t P a i r B i n " FILES+=" S e a r c h W o r s t P a i r T e r S e a r c h S i n g l e W o r s t P a i r B i n " FILES+=" S e a r c h S i n g l e W o r s t P a i r T e r " f o r i i n $FILES ; do c a t $ i $ j awk { p r i n t $4 > ${ i ${ j Prep echo n " $ j " >> ${ i Mean echo " l o a d ${ i ${ j Prep ; mean ( ${ i ${ j Prep ) " \ o c t a v e \ e g r e p e " ^ ans " \ awk { p r i n t $3 >> ${ i Mean done done 13

Métodos de Ordenação Parte 3

Métodos de Ordenação Parte 3 Estrutura de Dados II Métodos de Ordenação Parte 3 Prof a Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material baseado nos materiais do Prof. Robson Lins Classificação em Memória Primária

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

Leia mais

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo PMR2300 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó (exceto a

Leia mais

HeapSort. Estrutura de Dados II Jairo Francisco de Souza

HeapSort. Estrutura de Dados II Jairo Francisco de Souza HeapSort Estrutura de Dados II Jairo Francisco de Souza HeapSort Algoritmo criado por John Williams (1964) Complexidade O(NlogN) no pior e médio caso Mesmo tendo a mesma complexidade no caso médio que

Leia mais

Departamento de Ciência de Computadores Estruturas de Dados (CC114) FCUP 2010/11. 2 o Teste: 20/Junho/2011

Departamento de Ciência de Computadores Estruturas de Dados (CC114) FCUP 2010/11. 2 o Teste: 20/Junho/2011 1. Cotação de cada pergunta: 1. 30 / 2. 35 / 3. 35 (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame distribuídas. 1. (Valorização: 30%) Responda às seguintes questões:

Leia mais

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral SCC-214 Projeto de Algoritmos Thiago A. S. Pardo Listas e árvores Listas lineares Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral Diversas aplicações necessitam de estruturas

Leia mais

Algoritmos e Estruturas de Dados 2005/2006. Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema

Algoritmos e Estruturas de Dados 2005/2006. Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema Vectores: Algoritmos de Pesquisa Algoritmos e Estruturas de Dados 2005/2006 Introdução Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema noção de algoritmo muito

Leia mais

Árvores de Pesquisa. A árvore de pesquisa é uma estrutura de dados muito eficiente para armazenar informação.

Árvores de Pesquisa. A árvore de pesquisa é uma estrutura de dados muito eficiente para armazenar informação. Árvores de Pesquisa A árvore de pesquisa é uma estrutura de dados muito eficiente para armazenar informação. Particularmente adequada quando existe necessidade de considerar todos ou alguma combinação

Leia mais

Pesquisa: operação elementar

Pesquisa: operação elementar Pesquisa: operação elementar uma das operações mais usadas em programação pesquisas em: vectores, matrizes, tabelas de registos, ficheiros, tipos de dados estruturados (hierarquicos),... necessidade de

Leia mais

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto

Leia mais

CAL ( ) MIEIC/FEUP Estruturas de Dados ( )

CAL ( ) MIEIC/FEUP Estruturas de Dados ( ) Conjuntos Disjuntos R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes FEUP, MIEIC, CPAL, 2010/2011 1 Conjuntos Disjuntos Objectivo resolver eficientemente o problema da equivalência estrutura

Leia mais

Conjuntos disjuntos. Objectivo resolver eficientemente o problema da equivalência estrutura de dados simples (vector) implementação rápida

Conjuntos disjuntos. Objectivo resolver eficientemente o problema da equivalência estrutura de dados simples (vector) implementação rápida Conjuntos disjuntos Objectivo resolver eficientemente o problema da equivalência estrutura de dados simples (vector) implementação rápida Desempenho análise complicada Uso problemas de grafos equivalência

Leia mais

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos ÁRVORES BINÁRIAS DE BUSCA Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REFERÊNCIA Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Cap. 4 INSTITUTO DE COMPUTAÇÃO

Leia mais

Pesquisa em Memória Primária Árvores de Busca. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Pesquisa em Memória Primária Árvores de Busca. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Pesquisa em Memória Primária Árvores de Busca David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Árvores de Pesquisa A árvore de pesquisa é uma estrutura de dados muito eficiente para armazenar

Leia mais

Algoritmos e Estruturas de Dados 2006/2007

Algoritmos e Estruturas de Dados 2006/2007 Filas de prioridade Algoritmos e Estruturas de Dados 2006/2007 Filas de prioridade Uma fila de prioridade permite, pelo menos, duas operações sobre um conjunto de valores comparáveis: inserção de um elemento

Leia mais

Algoritmos de Busca em Vetores

Algoritmos de Busca em Vetores Algoritmos de Busca em Vetores INF1005 Programação I Prof. Hélio Lopes lopes@inf.puc-rio.br sala 408 RDC 1 busca em vetores tópicos busca linear (sequencial) busca binária referência Capítulo 17 do livro

Leia mais

Árvores de pesquisa. Árvores de pesquisa equilibradas

Árvores de pesquisa. Árvores de pesquisa equilibradas Árvores VL Árvores Splay Árvores Árvores de pesquisa Árvores Vermelho-Preto Árvores e Árvores Multidimensionais quaternárias k-d [Árvores para Pesquisa Lexicográfica tries multivia tries binárias PTRII]

Leia mais

Aula 16: Pesquisa em Memória Primária - Árvores de Busca. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Aula 16: Pesquisa em Memória Primária - Árvores de Busca. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Aula 16: Pesquisa em Memória Primária - Árvores de Busca Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Árvores de Pesquisa A árvore de pesquisa é uma estrutura de dados muito eficiente para

Leia mais

Pesquisa Linear. Adriano J. Holanda 15/3/2016

Pesquisa Linear. Adriano J. Holanda 15/3/2016 Pesquisa Linear Adriano J. Holanda 15/3/2016 Busca Linear em memória principal Introdução O dados estarão sempre armazenados na memória principal (DRAM 1 ): não há necessidade de acesso à memória secundária

Leia mais

UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio;

UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio; UNIVERSIDADE DE SÃO PAULO ICMC SCC 202 Algoritmos e Estrutura de Dados I - 2º Semestre 2010 Profa. Sandra Maria Aluísio; e-mail: sandra@icmc.usp.br Lista de Exercícios Árvores, Árvores Binárias, Árvores

Leia mais

Ordenação: QuickSort. Prof. Túlio Toffolo BCC202 Aula 15 Algoritmos e Estruturas de Dados I

Ordenação: QuickSort. Prof. Túlio Toffolo  BCC202 Aula 15 Algoritmos e Estruturas de Dados I Ordenação: QuickSort Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 15 Algoritmos e Estruturas de Dados I QuickSort Proposto por Hoare em 1960 e publicado em 1962. É o algoritmo de ordenação

Leia mais

Algoritmos de Pesquisa e Ordenação em Vectores

Algoritmos de Pesquisa e Ordenação em Vectores Algoritmos de Pesquisa e Ordenação em Vectores FEUP - MIEEC Programação 2-2008/2009 Pesquisa Sequencial Problema (pesquisa de valor em vector): Verificar se um valor existe no vector e, no caso de existir,

Leia mais

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010 Filas de prioridade Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010 Qual a Utilidade das Filas de Prioridade? Trabalhos maiores devem ser executados no fim (mesmo que não tenha sido o último

Leia mais

ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES

ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES Listas de Prioridades! Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade! A prioridade associada a um dado pode

Leia mais

Programação de Computadores II. Cap. 17 Busca

Programação de Computadores II. Cap. 17 Busca Programação de Computadores II Cap. 17 Busca Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:

Leia mais

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados Ano Lectivo de 2004/2005 2 o Semestre RESOLUÇÃO DA REPESCAGEM DO 2 o TESTE B I. (2.0+1.5+1.5 = 5.0 val.) a) Qual das seguintes declarações pode

Leia mais

Programação II. Busca em Vetor (search) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Busca em Vetor (search) Bruno Feijó Dept. de Informática, PUC-Rio Programação II Busca em Vetor (search) Bruno Feijó Dept. de Informática, PUC-Rio Busca em Vetor Problema: Entrada: vetor v com n elementos elemento d a procurar Saída m se o elemento procurado está em

Leia mais

6. Pesquisa e Ordenação

6. Pesquisa e Ordenação 6. Pesquisa e Ordenação Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 1 / 30 Pesquisa de Informação A pesquisa eficiente de informação

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 13: Ordenação: MergeSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: reifortes@iceb.ufop.br

Leia mais

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária Túlio Toffolo www.decom.ufop.br/toffolo Pesquisa em Memória Primária n Introdução - Conceitos Básicos n Pesquisa Sequencial n Pesquisa Binária n Árvores

Leia mais

Aula 28: Listas de Prioridades

Aula 28: Listas de Prioridades 28.1 Aula 28: Listas de Prioridades Conceitos básicos Definição de heap Alteração de prioridades 28.2 Listas de Prioridades Motivação: Os dados possuem prioridades. A prioridade de um dado pode variar

Leia mais

Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação

Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 Árvores Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 2 Árvore Binária de Busca Definição: uma árvore binária de busca (ABB) é uma árvore binária na qual

Leia mais

Lista 1. 8 de abril de Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b.

Lista 1. 8 de abril de Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b. Lista 1 8 de abril de 2013 1 Exercícios Básicos 1.1 Na bibliografia Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b. 1.2 Outros 1. Projete

Leia mais

Departamento de Ciência de Computadores Estruturas de Dados (CC114)

Departamento de Ciência de Computadores Estruturas de Dados (CC114) 1. Cotação de cada pergunta: 1. 30 / 2. 40 / 3. 30 (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame distribuídas. 1. (Valorização: 30%) Responda às seguintes questões:

Leia mais

INF 1620 P3-25/11/05 Questão 1 Nome:

INF 1620 P3-25/11/05 Questão 1 Nome: INF 1620 P3-25/11/05 Questão 1 Dizemos que uma matriz quadrada é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos de sua diagonal principal

Leia mais

Complexidade de algoritmos Notação Big-O

Complexidade de algoritmos Notação Big-O Complexidade de algoritmos Notação Big-O Prof. Byron Leite Prof. Tiago Massoni Engenharia da Computação Poli - UPE Motivação O projeto de algoritmos é influenciado pelo estudo de seus comportamentos Problema

Leia mais

Algoritmos de pesquisa

Algoritmos de pesquisa Define-se pesquisa como a operação que permite encontrar ou concluir que não existe, um dado elemento num dado conjunto. A pesquisa de um elemento pode ser feita num conjunto ordenado ou não. Quando o

Leia mais

Método de ordenação - objetivos:

Método de ordenação - objetivos: Método de ordenação - objetivos: Corresponde ao processo de rearranjar um conjunto de objetos em uma ordem ascendente ou descendente. Facilitar a recuperação posterior de itens do conjunto ordenado. São

Leia mais

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados Ano Lectivo de 2002/2003 2 o Semestre 2 o Teste A 9 de Junho de 2003 Duração: 2h - O teste é sem consulta. - Para cada questão com escolha múltipla

Leia mais

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula Tópicos Introdução Árvore digital Árvore digital binária

Leia mais

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO Disciplina: Estrutura de Dados II Turma: 4EC/5CC Data: 13/11/15 Nota: Professor: Renato E. N. de Moraes Semestre: 2015-2 Valor: 0,0 pts Aluno: Lista de exercícios 04 1. O que é a eficiência assintótica

Leia mais

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira Árvores SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Listas e árvores Listas lineares Um nó após o outro, adjacentes Nó sucessor e antecessor Diversas aplicações necessitam de estruturas

Leia mais

Listas de Prioridade. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC.

Listas de Prioridade. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Listas de Prioridade Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC. Capítulo 6 Prioridade } Algumas aplicações precisam recuperar rapidamente um dado

Leia mais

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich Árvores Binárias SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista. Figuras editadas por Isadora Maria Mendes http://www.icmc.usp.br/~paulovic

Leia mais

Árvores e Mapas. Luís Lopes. Estruturas de Dados DCC-FCUP

Árvores e Mapas. Luís Lopes. Estruturas de Dados DCC-FCUP Árvores e Mapas Luís Lopes DCC-FCUP Estruturas de Dados Estruturas não lineares Os arrays e as listas são exemplos de estruturas de dados lineares, cada elemento tem: um predecessor único (excepto o primeiro

Leia mais

3. Vectores: Algoritmos de Pesquisa. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2004/2005) Luís Paulo Reis (versão 2005/2006)

3. Vectores: Algoritmos de Pesquisa. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2004/2005) Luís Paulo Reis (versão 2005/2006) 3. Vectores: Algoritmos de Pesquisa João Pascoal Faria (versão original) Ana Paula Rocha (versão 2004/2005) Luís Paulo Reis (versão 2005/2006) FEUP - MIEEC Prog2-2006/2007 Introdução Algoritmo: conjunto

Leia mais

Busca em Regiões Ortogonais

Busca em Regiões Ortogonais Busca em Regiões Ortogonais Claudio Esperança Paulo Roma 1 O problema O problema O problema consiste em recuperar objetos tipicamente pontos que intersectam ou estão contidos numa região simples do espaço

Leia mais

Análise de Algoritmos

Análise de Algoritmos Análise de Algoritmos Parte 1 Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 04 Algoritmos e Estruturas de Dados I Qual a diferença entre um algoritmo e um programa? Como escolher o algoritmo

Leia mais

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof a Karina Oliveira. Fonte: Prof a Ana Eliza

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof a Karina Oliveira. Fonte: Prof a Ana Eliza Algoritmos e Estrutura de Dados II Árvore AVL Prof a Karina Oliveira kkco@dei.unicap.br Fonte: Prof a Ana Eliza Árvores Binárias de Busca Objetivo da Utilização Minimizar o número de comparações efetuadas,

Leia mais

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura Árvores B Prof. Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Fonte: Material da Prof a Ana Eliza Lopes Moura Situação Problema Memória Principal Volátil e limitada Aplicações Grandes

Leia mais

Fontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros:

Fontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros: Fontes Bibliográficas Estruturas de Dados Aula 15: Árvores Livros: Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 13; Projeto de Algoritmos (Nivio Ziviani): Capítulo 5; Estruturas

Leia mais

Departamento de Ciência de Computadores Estruturas de Dados (CC114)

Departamento de Ciência de Computadores Estruturas de Dados (CC114) 1. Cotação de cada pergunta: 1. 32 / 2. 38 / 3. 30 (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame distribuídas. 1. (Valorização: 32%) Responda às seguintes questões:

Leia mais

Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Medida do Tempo de Execução de um Programa. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Medida do Tempo de Execução de um Programa Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Medida do Tempo de Execução de um Programa O projeto de algoritmos é fortemente influenciado pelo estudo

Leia mais

Dicionários. TAD Orientado a conteúdo

Dicionários. TAD Orientado a conteúdo Dicionários TAD Orientado a conteúdo Dicionários efinição: Tipo abstrato de dados orientado a onteúdo. Contrasta com as PILHAs e FILAs que são orientadas a posição. perações implementadas: Inserir(d,x)

Leia mais

INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados

INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados INSTITUTO SUPERIOR TÉCNICO Introdução aos Algoritmos e Estruturas de Dados Ano Lectivo de 2006/2007 2 o Semestre 2 o Teste A - 2 de Julho de 2007 Duração: 2h - O teste é sem consulta. - Para cada questão

Leia mais

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof Márcio Bueno. / Material da Prof a Ana Eliza

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof Márcio Bueno. / Material da Prof a Ana Eliza Algoritmos e Estrutura de Dados II Árvore AVL Prof Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material da Prof a Ana Eliza Árvores Binárias de Busca Objetivo da Utilização Minimizar

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Programação II 2º Semestre Frequência 2 (8 valores) Resolução 30/05/2018 A. Análise de complexidade dos algoritmos 1. (0.75 val) Considere a seguinte função em C: void funcao

Leia mais

Aula 15: Pesquisa em Memória Primária. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Aula 15: Pesquisa em Memória Primária. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Aula 15: Pesquisa em Memória Primária Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Pesquisa em Memória Primária Introdução - Conceitos Básicos Pesquisa Sequencial Pesquisa Binária Árvores de

Leia mais

5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006)

5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006) 5. Análise de Complexidade de Algoritmos João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006) FEUP - MIEEC Prog 2-2006/2007 Introdução Algoritmo: conjunto

Leia mais

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 8. Árvores Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 Árvores - estruturas não lineares (1) Uma lista é um exemplo de uma estrutura de dados

Leia mais

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 8. Árvores Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 Árvores - estruturas não lineares (1) Uma lista é um exemplo de uma estrutura de dados

Leia mais

Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP

Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Árvores Binárias Árvores Árvores representam estruturas de dados caracterizadas por uma relação hierárquica da informação:

Leia mais

Análise de complexidade

Análise de complexidade Introdução Algoritmo: sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador) Estratégia: especificar (definir propriedades) arquitectura

Leia mais

HeapSort Filas de Prioridade Heap. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

HeapSort Filas de Prioridade Heap. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR HeapSort Filas de Prioridade Heap David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Filas de Prioridades É uma estrutura de dados onde a chave de cada item reflete sua habilidade relativa de

Leia mais

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa O projeto de algoritmos é fortemente influenciado pelo

Leia mais

Conjuntos disjuntos. Relações de equivalência

Conjuntos disjuntos. Relações de equivalência Conjuntos disjuntos Objectivo resolver eficientemente o problema da equivalência estrutura de dados simples (vector) implementação rápida análise complicada Uso problemas de grafos equivalência de tipos

Leia mais

Filas de Prioridade. Uma fila de prioridade pode ser vista como uma generalização das filas com as seguintes duas operações:

Filas de Prioridade. Uma fila de prioridade pode ser vista como uma generalização das filas com as seguintes duas operações: Filas de Prioridade e Heaps 9.1 Filas de Prioridade Uma fila de prioridade pode ser vista como uma generalização das filas com as seguintes duas operações: inserir um elemento na fila; remover o elemento

Leia mais

7. Introdução à Complexidade de Algoritmos

7. Introdução à Complexidade de Algoritmos 7. Introdução à Complexidade de Algoritmos Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 7. Introdução à Complexidade de Algoritmos Estruturas de Dados 1 / 1 Análise de Algoritmos

Leia mais

Aula 13: Ordenação - Heapsort. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Aula 13: Ordenação - Heapsort. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Aula 13: Ordenação - Heapsort Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Filas de Prioridades É uma estrutura de dados onde a chave de cada item reflete sua habilidade relativa de abandonar

Leia mais

Aula 20: Árvores Binárias de Busca. Algoritmos de busca e inserção

Aula 20: Árvores Binárias de Busca. Algoritmos de busca e inserção 0.1 Aula 0: Árvores Binárias de Busca Conceitos básicos Algoritmos de busca e inserção Caminhos externo e interno 0. Problema de busca s i = chave S = { s 1,..., s n }, s 1

Leia mais

Programação II. Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio Programação II Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio Árvores Dados organizados de maneira hierárquica Exemplos: arquivos em diretórios, subdivisão de espaço 2D em um

Leia mais

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira. Algoritmos e Estrutura de Dados II Árvore Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estruturas de dados lineares (pilha, fila) são estruturas que guardam coleções de elementos que são acessados

Leia mais

INF1007: Programação 2 7 Busca em Vetores. 01/04/2014 (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 7 Busca em Vetores. 01/04/2014 (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 7 Busca em Vetores 01/04/2014 (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Busca em vetor Busca linear Busca binária 01/04/2014 (c) Dept. Informática - PUC-Rio 2 Busca em

Leia mais

Árvores de Pesquisa (Parte I)

Árvores de Pesquisa (Parte I) Baseado no material do Prof. Reinaldo Fortes para o curso de 2014-01 Arquivo original: 21._arvores_(parte_1) Árvores de Pesquisa (Parte I) Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Algoritmos

Leia mais

Árvores Equilibradas. Sumário

Árvores Equilibradas. Sumário Árvores Equilibradas Sumário Splay Vermelho Preto AA e BB Multidimensionais quaternárias k d Pesquisa Lexicográfica tries multivia tries binárias PATRICIA Árvores Equilibradas Sumário Árvores AVL Árvores

Leia mais

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 17 - Busca 2/6/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)

Leia mais

SCC-601 Introdução à Ciência da Computação II. Ordenação e Complexidade Parte 3. Lucas Antiqueira

SCC-601 Introdução à Ciência da Computação II. Ordenação e Complexidade Parte 3. Lucas Antiqueira SCC-60 Introdução à Ciência da Computação II Ordenação e Complexidade Parte 3 Lucas Antiqueira Ordenação: Utiliza uma estrutura de dados chamada heap para ordenar. Um heap é um vetor (array) que representa

Leia mais

Filas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014

Filas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014 Filas de prioridade Marcelo K. Albertini de Novembro de / Filas de prioridade O que é uma fila de prioridade? Estrutura de dados que generaliza a ideia de ordenação. Coleções de elementos: inserir e remover

Leia mais

Aula 08. Estruturas de dados Árvore e Grafo

Aula 08. Estruturas de dados Árvore e Grafo Logo Aula 08 Estruturas de dados Árvore e Grafo 2 Árvore Estruturas estudadas até agora não são \ adequadas para representar dados que devem ser dispostos de maneira hierárquica Ex., hierarquia de pastas

Leia mais

Filas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013

Filas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013 Filas de prioridade Marcelo K. Albertini de Dezembro de / Filas de prioridade O que é uma fila de prioridade? Estrutura de dados que generaliza a ideia de ordenação. Coleções de elementos: inserir e remover

Leia mais

Informática Parte 17 Prof. Márcio Hunecke

Informática Parte 17 Prof. Márcio Hunecke Escriturário Informática Parte 17 Prof. Márcio Hunecke Informática BUSCA SEQUENCIAL E BUSCA BINÁRIA SOBRE ARRAYS Busca sequencial em vetores não ordenados O termo busca sequencial (ou busca linear) expressa

Leia mais

ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 ANÁLISE DE ALGORITMOS. Armanda Rodrigues 3 de Outubro 2011

ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 ANÁLISE DE ALGORITMOS. Armanda Rodrigues 3 de Outubro 2011 ALGORITMOS E ESTRUTURAS DE DADOS 2011/2012 ANÁLISE DE ALGORITMOS Armanda Rodrigues 3 de Outubro 2011 2 Análise de Algoritmos Temos até agora analisado soluções de problemas de forma intuitiva A análise

Leia mais

Pesquisa em Árvores Digitais. Adaptado de David M.

Pesquisa em Árvores Digitais. Adaptado de David M. Pesquisa em Árvores Digitais Adaptado de David M. Pesquisa Digital Pesquisa digital é baseada na representação das chaves como uma seqüência de caracteres ou de dígitos. Os métodos de pesquisa digital

Leia mais

Árvores. Prof. Byron Leite Prof. Tiago Massoni Prof. Fernando Buarque. Engenharia da Computação. Poli - UPE

Árvores. Prof. Byron Leite Prof. Tiago Massoni Prof. Fernando Buarque. Engenharia da Computação. Poli - UPE Árvores Prof. Byron Leite Prof. Tiago Massoni Prof. Fernando Buarque Engenharia da Computação Poli - UPE Motivação Para entradas realmente grandes, o acesso linear de listas é proibitivo Estrutura de dados

Leia mais

7. Introdução à Complexidade de Algoritmos

7. Introdução à Complexidade de Algoritmos 7. Introdução à Complexidade de Algoritmos Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 7. Introdução à Complexidade de Algoritmos Estruturas de Dados 1 / 1 Análise de Algoritmos

Leia mais

Vectores: Algoritmos de Ordenação. Algoritmos e Estruturas de Dados 2008/2009

Vectores: Algoritmos de Ordenação. Algoritmos e Estruturas de Dados 2008/2009 Vectores: Algoritmos de Ordenação Algoritmos e Estruturas de Dados 2008/2009 Ordenação Problema (ordenação de vector) rearranjar os n elementos de um vector (v) por ordem crescente, ou melhor, por ordem

Leia mais

Diagramas Sintáticos

Diagramas Sintáticos Diagramas Sintáticos Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Classe pública com método main Cada classe X pública é declarada num ficheiro

Leia mais

Algoritmos e Estruturas de Dados 2005/2006

Algoritmos e Estruturas de Dados 2005/2006 Filas de prioridade Algoritmos e Estruturas de Dados 2005/2006 Filas de prioridade Uma fila de prioridade permite, pelo menos, duas operações sobre um conjunto de valores comparáveis: inserção de um elemento

Leia mais

INF 1620 P4-01/07/08 Questão 1 Nome:

INF 1620 P4-01/07/08 Questão 1 Nome: INF 1620 P4-01/07/08 Questão 1 Escreva uma função em C que receba duas strings, cujos caracteres estão ordenados em ordem crescente, e retorne uma nova string alocada dinamicamente, que contém todos os

Leia mais

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres ESTRUTURA DE DADOS E ALGORITMOS Árvores Binárias de Busca Cristina Boeres Árvore Binária de Busca 30! construída de tal forma que, para cada nó: nós com chaves menores estão na sub-árvore esquerda nós

Leia mais

Árvores AVL e Árvores B. Jeane Melo

Árvores AVL e Árvores B. Jeane Melo Árvores AVL e Árvores B Jeane Melo Roteiro Árvores Binárias Árvores AVL Definição Motivação Balanceamento Operações de rebalanceamento Árvores B Introdução Árvores Binárias Árvores binárias Cada nó tem

Leia mais

Recursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição

Recursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição Recursividade Prof. Cesar Augusto Tacla Métodos iterativos Métodos iterativos utilizam estruturas de repetição For While Do while Normalmente, um método invoca outros métodos, não a si mesmo. 2 1 Recursividade

Leia mais

Árvores. Estruturas de Dados. Prof. Vilson Heck Junior

Árvores. Estruturas de Dados. Prof. Vilson Heck Junior Árvores Estruturas de Dados Prof. Vilson Heck Junior Árvores INTRODUÇÃO Introdução Árvores são estruturas de dados utilizadas para armazenar e recuperar dados de forma rápida e eficiente; Árvores não são

Leia mais

Prova de Recuperação PMR3201/PMR2300 1o. semestre 2015 Prof. Thiago Martins

Prova de Recuperação PMR3201/PMR2300 1o. semestre 2015 Prof. Thiago Martins Prova de Recuperação PMR21/PMR2 1o. semestre 2 Prof. Thiago Martins Instruções: screva o nome e o número USP na folha de papel almaço. 1. (2 pontos) Uma pilha é uma estrutura de dados na qual o elemento

Leia mais

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1 Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) PIP/CA - Programa Interdisciplinar de Pós-Graduação

Leia mais