CIC 111 Análise e Projeto de Algoritmos II

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

Download "CIC 111 Análise e Projeto de Algoritmos II"

Transcrição

1 CIC 111 Análise e Projeto de Algoritmos II Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá

2 AULA 27 Square root algorithms Combining algorithms Integer partitions Mo s algorithm

3 Square Root Algorithms Um algoritmo de raiz quadrada é um algoritmo que tem uma raiz quadrada em sua complexidade de tempo. Uma raiz quadrada pode ser vista como um logaritmo do homem pobre : a complexidade O( n) é melhor que O(n), mas pior que O(log n). Em qualquer caso, muitos algoritmos de raiz quadrada são rápidos e utilizáveis na prática.

4 Square Root Algorithms Como exemplo, considere o problema de criar uma estrutura de dados que suporte duas operações em um vetor: modificar um elemento em uma determinada posição e calcular a soma de elementos no intervalo determinado. Anteriormente, resolvemos o problema usando árvores binárias indexadas e segmentadas, que suportam ambas as operações no tempo O(log n). No entanto, agora vamos resolver o problema de outra maneira usando uma estrutura de raiz quadrada que nos permite modificar elementos em tempo O(1) e calcular somas em tempo O(n).

5 Square Root Algorithms A ideia é dividir o vetor em blocos de tamanho n para que cada bloco contenha a soma dos elementos dentro do bloco. Por exemplo, um vetor de 16 elementos será dividida em blocos de 4 elementos da seguinte forma:

6 Square Root Algorithms Nessa estrutura, é fácil modificar os elementos do vetor, pois só é necessário atualizar a soma de um único bloco após cada modificação, o que pode ser feito no tempo O(1). Por exemplo, a figura a seguir mostra como o valor de um elemento e a soma do bloco correspondente mudam:

7 Square Root Algorithms Então, para calcular a soma dos elementos em um intervalo, dividimos o intervalo em três partes, de modo que a soma consiste em valores de elementos únicos e somas de blocos entre eles:

8 Square Root Algorithms Como o número de elementos únicos é O( n) e o número de blocos também é O( n), a consulta soma toma O( n) tempo. O objetivo do tamanho do bloco n é que ele equilibra duas coisas: o vetor é dividido em n blocos, cada um contendo n elementos.

9 Square Root Algorithms Na prática, não é necessário usar o valor exato de n como parâmetro e, em vez disso, podemos usar os parâmetros k e n / k, onde k é diferente de n. O parâmetro ideal depende do problema e da entrada. Por exemplo, se um algoritmo costuma passar pelos blocos, mas raramente inspeciona elementos únicos dentro dos blocos, pode ser uma boa ideia dividir o vetor em blocos k < n, cada um contendo n / k > n elementos.

10 Combining Algorithms Discutiremos dois algoritmos de raiz quadrada baseados na combinação de dois algoritmos em um algoritmo. Em ambos os casos, podemos usar um dos algoritmos sem o outro e resolver o problema no tempo O(n 2 ). No entanto, combinando os algoritmos, o tempo de execução é apenas O(n n).

11 Case Processing Suponha que nos seja dada uma matriz que contenha n células. Cada célula recebe uma letra e nossa tarefa é encontrar duas células com a mesma letra, cuja distância é mínima, onde a distância entre as células (x 1, y 1 ) e (x 2, y 2 ) é x 1 - x 2 + y 1 - y 2. Por exemplo, considere a seguinte matriz: A F B A C E G E B D A F A C B D

12 Case Processing Nesse caso, a distância mínima é de 2 entre as duas letras "E". Podemos resolver o problema considerando cada letra separadamente. Usando essa abordagem, o novo problema é calcular a distância mínima entre duas células com uma letra fixa c. Nós nos concentramos em dois algoritmos para isso:

13 Case Processing Algoritmo 1: Passe por todos os pares de células com a letra c e calcule a distância mínima entre essas células. Isso levará o tempo O(k 2 ) em que k é o número de células com letra c. Algoritmo 2: Realize uma pesquisa por amplitude que inicie simultaneamente em cada célula com a letra c. A distância mínima entre duas células com letra c será calculada no tempo O(n).

14 Case Processing Uma maneira de resolver o problema é escolher um dos algoritmos e usá-lo para todas as letras. Se usarmos o Algoritmo 1, o tempo de execução será O(n 2 ), porque todas as células podem conter a mesma letra e, neste caso, k = n. Além disso, se usarmos o Algoritmo 2, o tempo de execução será O(n 2 ), porque todas as células podem ter letras diferentes e, nesse caso, n pesquisas são necessárias.

15 Case Processing No entanto, podemos combinar os dois algoritmos e usar algoritmos diferentes para letras diferentes, dependendo de quantas vezes cada letra aparece na matriz. Suponha que uma letra c apareça k vezes. Se k n, usamos o Algoritmo 1, e se k > n, usamos o Algoritmo 2. Acontece que, ao fazer isso, o tempo total de execução do algoritmo é apenas O(n n).

16 Case Processing Primeiro, suponha que usemos o Algoritmo 1 para uma letra c. Como c aparece no máximo n vezes na matriz, nós comparamos cada célula com a letra c O(n) vezes com outras células. Assim, o tempo usado para processar todas essas células é O(n n). Então, suponha que usamos o Algoritmo 2 para uma letra c. Existem no máximo n tais letras, então o processamento dessas letras também leva O(n n) tempo.

17 Batch Processing Nosso próximo problema também lida com uma matriz que contém n células. Inicialmente, cada célula, exceto uma, é branca. Realizamos operações n - 1, cada uma das quais calcula primeiro a distância mínima de uma dada célula branca até uma célula preta e depois pinta a célula branca de preto. Por exemplo, considere a seguinte operação: *

18 Batch Processing Primeiro, calculamos a distância mínima da célula branca marcada com * até uma célula preta. A distância mínima é 2, porque podemos mover dois passos para uma célula preta. Então, pintamos a célula branca de preto:

19 Batch Processing Combinamos os algoritmos acima dividindo as operações em lotes O( n), cada um deles consistindo em operações O( n). No início de cada lote, executamos o Algoritmo 1. Em seguida, usamos o Algoritmo 2 para processar as operações no lote. Limpamos a lista do Algoritmo 2 entre os lotes. Em cada operação, a distância mínima até uma célula preta é a distância calculada pelo Algoritmo 1 ou a distância calculada pelo Algoritmo 2.

20 Batch Processing O algoritmo resultante funciona no tempo O(n n). Primeiro, o Algoritmo 1 é executado O( n) vezes, e cada pesquisa trabalha no tempo O(n). Segundo, ao usar o Algoritmo 2 em um lote, a lista contém células O( n) (porque limpamos a lista entre os lotes) e cada operação toma o tempo O( n).

21 Integer Partitions Alguns algoritmos de raiz quadrada são baseados na seguinte observação: se um inteiro positivo n é representado como uma soma de números inteiros positivos, tal soma sempre contém no máximo O(n) números distintos. A razão para isso é que, para construir uma soma que contenha um número máximo de números distintos, devemos escolher números pequenos. Se escolhermos os números 1, 2,, k, a soma resultante é k(k+1) 2. Assim, a quantidade máxima de números distintos é k = O(n). A seguir, discutiremos dois problemas que podem ser resolvidos eficientemente usando essa observação.

22 Knapsack Suponha que recebamos uma lista de pesos inteiros cuja soma é n. Nossa tarefa é descobrir todas as somas que podem ser formadas usando um subconjunto dos pesos. Por exemplo, se os pesos forem {1, 3, 3}, as somas possíveis serão as seguintes: 0 (conjunto vazio) = = = 7

23 Knapsack Usando a abordagem padrão de mochila, o problema pode ser resolvido da seguinte maneira: definimos uma função possible(x, k) cujo valor é 1 se a soma x puder ser formada usando as primeiras ponderações k e 0 caso contrário. Como a soma dos pesos é n, há no máximo n pesos e todos os valores da função podem ser calculados no tempo O(n 2 ) usando a programação dinâmica.

24 Knapsack No entanto, podemos tornar o algoritmo mais eficiente usando o fato de que há no máximo O( n) pesos distintos. Assim, podemos processar os pesos em grupos que consistem em pesos semelhantes. Podemos processar cada grupo no tempo O(n), o que gera um algoritmo de tempo O(n n).

25 Knapsack A ideia é usar um vetor que registre as somas de pesos que podem ser formadas usando os grupos processados até o momento. O vetor contém n elementos: o elemento k é 1 se a soma k puder ser formada e 0 caso contrário. Para processar um grupo de pesos, varremos o vetor da esquerda para a direita e registramos as novas somas de pesos que podem ser formadas usando esse grupo e os grupos anteriores.

26 String Construction Dada uma string s de comprimento n e um conjunto de strings D cujo comprimento total é m, considere o problema de contar o número de maneiras que s podem ser formadas como uma concatenação de strings em D. Por exemplo, se s = ABAB e D = {A, B, AB}, existem 4 maneiras: A + B + A + B AB + A + B A + B + AB AB + AB

27 String Construction Podemos resolver o problema usando programação dinâmica: Dado count(k) denota o número de maneiras de construir o prefixo s[0... k] usando as strings em D. Agora count(n - 1) dá a resposta para o problema, e podemos resolver o problema no tempo O(n 2 ) usando uma estrutura em árvore.

28 String Construction No entanto, podemos resolver o problema de forma mais eficiente usando hashing de string e o fato de que existem no máximo O(m) comprimentos de string distintos em D. Primeiro, construímos um conjunto H que contém todos os valores hash das strings em D. Então, quando calculamos um valor de count(k), passamos por todos os valores de p tal que existe uma string de comprimento p em D, calculamos o valor hash de s [k - p + 1 k] e verifique se ele pertence a H. Uma vez que há no máximo O(m) comprimentos de cadeia distintos, isso resulta em um algoritmo cujo tempo de execução é O(n m).

29 String Construction No entanto, podemos resolver o problema de forma mais eficiente usando hashing de string e o fato de que existem no máximo O( m) comprimentos de string distintos em D. Primeiro, construímos um conjunto H que contém todos os valores hash das strings em D. Então, quando calculamos um valor de count(k), passamos por todos os valores de p tal que existe uma string de comprimento p em D, calculamos o valor hash de s [k - p + 1 k] e verifique se ele pertence a H. Uma vez que há no máximo O( m) comprimentos de cadeia distintos, isso resulta em um algoritmo cujo tempo de execução é O(n m).

30 Mo s Algorithm O algoritmo de Mo pode ser usado em muitos problemas que requerem consultas de intervalo de processamento em um vetor estático, ou seja, os valores do vetor não são alterados entre as consultas. Em cada consulta, nos é dado um intervalo [a, b], e devemos calcular um valor com base nos elementos do vetor entre as posições a e b. Como o vetor é estático, as consultas podem ser processadas em qualquer ordem e o algoritmo do Mo processa as consultas em uma ordem especial que garante que o algoritmo funcione de maneira eficiente.

31 Mo s Algorithm O algoritmo de Mo mantém um intervalo ativo do vetor e a resposta a uma consulta sobre o intervalo ativo é conhecida em cada momento. O algoritmo processa as consultas uma por uma e sempre move os pontos finais do intervalo ativo inserindo e removendo elementos. A complexidade de tempo do algoritmo é O(n nf(n)) onde o vetor contém n elementos, existem n consultas e cada inserção e remoção de um elemento leva O(f(n)) tempo.

32 Mo s Algorithm O truque no algoritmo de Mo é a ordem em que as consultas são processadas: o vetor é dividido em blocos de elementos k = O(n) e uma consulta [a 1, b 1 ] é processado antes de uma consulta [a 2, b 2 ] se a 1 k < a 2 k ou a 1 k = a 2 k e b 1<b 2.

33 Mo s Algorithm Assim, todas as consultas cujos pontos de extremidade à esquerda estão em um determinado bloco são processadas, uma após a outra, classificadas de acordo com seus pontos de extremidade corretos. Usando essa ordem, o algoritmo somente executa operações O(n n), porque o terminal esquerdo move O(n) vezes O( n) etapas e o terminal direito move O( n) vezes O(n) etapas. Assim, ambos os pontos de extremidade movem um total de etapas O(n n) durante o algoritmo.

34 Example Como exemplo, considere um problema em que recebemos um conjunto de consultas, cada uma delas correspondendo a um intervalo em um vetor, e nossa tarefa é calcular para cada consulta o número de elementos distintos no intervalo. No algoritmo de Mo, as consultas são sempre classificadas da mesma maneira, mas isso depende do problema de como a resposta à consulta é mantida. Nesse problema, podemos manter uma contagem do vetor em que count[x] indica o número de vezes que um elemento x ocorre no intervalo ativo.

35 Example Quando passamos de uma consulta para outra, o intervalo ativo é alterado. Por exemplo, se o intervalo atual for e o próximo alcance é haverá três etapas: o ponto final esquerdo move um passo para a direita e o ponto final direito move dois passos para a direita.

36 Example Após cada etapa, a contagem de matrizes precisa ser atualizada. Depois de adicionar um elemento x, aumentamos o valor de count[x] por 1, e se count[x] = 1 depois disso, aumentamos a resposta para a consulta em 1. Da mesma forma, depois de remover um elemento x, diminuímos o valor valor de count[x] por 1, e se count[x] = 0 depois disso, também diminuiremos a resposta para a consulta em 1. Nesse problema, o tempo necessário para executar cada etapa é O(1), portanto, a complexidade total do tempo do algoritmo é O(n n).

37 Rule Os alunos devem: Ler e descrever os problemas; Avaliar a solução e descrevê-la cada um dos problemas; Identificar as técnicas utilizadas e adicionar a cada problema; Apresentar as bibliografias referentes aos assuntos; Montar a conclusão do trabalho em cima do que foi realizado no documento; Colocar em anexo o código do problema. (obrigatório) Deve usar os arquivos que estão na página do professor. Data da Entrega: 01/06/2018 as 23:00hs

38 Group One URI

39 UVa URI 1767 Group Two

40 UVa 562 URI 1286 Group Three

41 UVa 990 URI 1288 Group Four

42 UVa 1213 URI 2026 Group Five

43 Sites visitar

CIC 111 Análise e Projeto de Algoritmos II

CIC 111 Análise e Projeto de Algoritmos II CIC 111 Análise e Projeto de Algoritmos II Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 18 Tree queries Finding ancestors Subtrees and paths Lowest common ancestor Offline

Leia mais

CIC 110 Análise e Projeto de Algoritmos I

CIC 110 Análise e Projeto de Algoritmos I CIC 110 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 09 Consultas de Intervalo Consulta de Intervalo Neste capítulo, discutimos estruturas

Leia mais

CIC 111 Análise e Projeto de Algoritmos II

CIC 111 Análise e Projeto de Algoritmos II CIC 111 Análise e Projeto de Algoritmos II Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 22 Combinatorics Binomial coefficients Catalan numbers Inclusion-exclusion Burnside

Leia mais

CIC 111 Análise e Projeto de Algoritmos II

CIC 111 Análise e Projeto de Algoritmos II CIC 111 Análise e Projeto de Algoritmos II Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 29 Geometry Complex numbers Points and lines Polygon area Distance functions Geometry

Leia mais

CIC 111 Análise e Projeto de Algoritmos II

CIC 111 Análise e Projeto de Algoritmos II CIC 111 Análise e Projeto de Algoritmos II Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 19 Paths and circuits Eulerian paths Hamiltonian paths De Bruijn sequences Knight s

Leia mais

CIC 110 Análise e Projeto de Algoritmos I

CIC 110 Análise e Projeto de Algoritmos I CIC 110 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 07 Programação Dinâmica Programação Dinâmica A programação dinâmica é uma técnica que

Leia mais

CIC 110 Análise e Projeto de Algoritmos I

CIC 110 Análise e Projeto de Algoritmos I CIC 110 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá Manipulação de bits AULA 10 Manipulação de bits Todos os dados em programas de computador

Leia mais

CIC 111 Análise e Projeto de Algoritmos II

CIC 111 Análise e Projeto de Algoritmos II CIC 111 Análise e Projeto de Algoritmos II Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 25 e 26 Game theory Game states Nim game Sprague Grundy theorem String algorithms String

Leia mais

CIC 111 Análise e Projeto de Algoritmos II

CIC 111 Análise e Projeto de Algoritmos II CIC 111 Análise e Projeto de Algoritmos II Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 16 Directed graphs Topological sorting Dynamic programming Successor paths Cycle detection

Leia mais

CIC 110 Análise e Projeto de Algoritmos I

CIC 110 Análise e Projeto de Algoritmos I CIC 110 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá Algoritmos Gulosos AULA 06 Algoritmos Gulosos Um algoritmo guloso constrói uma solução para

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

Teoria dos Grafos Aula 8

Teoria dos Grafos Aula 8 Teoria dos Grafos Aula 8 Aula passada Grafos com pesos, caminhos e distâncias Ideia e implementação de alg. de Dijkstra Aula de hoje Corretude de Dijkstra Fila de prioridades e Heap Dijkstra eficiente

Leia mais

TABELAS DE DISPERSÃO/HASH

TABELAS DE DISPERSÃO/HASH 1/47 TABELAS DE DISPERSÃO/HASH Introdução 2/47 Introdução Motivação - Considerar o problema de pesquisar um determinado valor num vetor: - Se o vetor não está ordenado, a pesquisa requer O(n) de complexidade

Leia mais

Algoritmos de pesquisa. Tabelas de dispersão/hash

Algoritmos de pesquisa. Tabelas de dispersão/hash Algoritmos de pesquisa Tabelas de dispersão/hash Introdução Motivação: Considerar o problema de pesquisar um determinado valor num vetor. Se o vetor não está ordenado, a pesquisa requer O(n) de complexidade.

Leia mais

Capítulo 6 Análise de Algoritmos Capítulo 6

Capítulo 6 Análise de Algoritmos Capítulo 6 666 Apêndice C Respostas e Sugestões para os Exercícios de Revisão 42. Consulte a Seção 5.4. 43. (a) Escoamento de memória.(b) Porque não há garantia que o cliente irá usá-la devidamente. 44. (a) Contagem

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

Tabelas de dispersão/hash

Tabelas de dispersão/hash Tabelas de dispersão/hash 1 Tabelas de dispersão/hash 1. Considere uma tabela de hash de tamanho m = 1000 e a função de hash h(k)= [m.(k.a % 1)], com A=( 5-1)/2. Calcule os valores de hash das chaves 61,

Leia mais

Introdução à Inteligência Artificial MAC MAC 415. Exercício Programa 1 Busca

Introdução à Inteligência Artificial MAC MAC 415. Exercício Programa 1 Busca Introdução à Inteligência Artificial MAC 5739 - MAC 415 006 Exercício Programa 1 Busca Data de Divulgação: 6 de agosto Data de Entrega: 6 de setembro 1 Objetivo Implementar os algoritmos de busca em Inteligência

Leia mais

SCC Algoritmos e Estruturas de Dados II. 6ª lista de exercícios

SCC Algoritmos e Estruturas de Dados II. 6ª lista de exercícios DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÂO SCC0203 - Algoritmos e Estruturas de Dados II 6ª lista de exercícios Questão 1 Explique a seguinte sentença: Árvores-B são construídas de baixo para cima, enquanto

Leia mais

CIC 110 Análise e Projeto de Algoritmos I

CIC 110 Análise e Projeto de Algoritmos I CIC 110 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá Data structures AULA 04 Estrutura de Dados Uma estrutura de dados é uma maneira de armazenar

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

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS 1/18 ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS Algoritmos 2/18 Algoritmos Algoritmo - sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador)

Leia mais

Lista de exercícios sobre contagem de operações Prof. João B. Oliveira

Lista de exercícios sobre contagem de operações Prof. João B. Oliveira Lista de exercícios sobre contagem de operações Prof. João B. Oliveira 1. metodo m ( Vetor V ) int i, res = 0; para i de 1 a V.size res = res + V[i]; return res; Soma de elementos de um vetor, O( ). 2.

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

Análise de Algoritmos

Análise de Algoritmos Análise de Algoritmos Aula 04 Prof. Fernando Freitas Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então O(f) é considerada a complexidade assintótica ou o

Leia mais

MATRIZES - PARTE Mais exemplos Multiplicação de duas matrizes AULA 26

MATRIZES - PARTE Mais exemplos Multiplicação de duas matrizes AULA 26 AULA 26 MATRIZES - PARTE 2 26. Mais exemplos Nesta aula, veremos mais dois algoritmos envolvendo matrizes. O primeiro deles calcula a matriz resultante da multiplicação de duas matrizes e utiliza três

Leia mais

MC3305 Algoritmos e Estruturas de Dados II. Aula 02 Hashing. Prof. Jesús P. Mena-Chalco.

MC3305 Algoritmos e Estruturas de Dados II. Aula 02 Hashing. Prof. Jesús P. Mena-Chalco. MC3305 Algoritmos e Estruturas de Dados II Aula 02 Hashing Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 2Q-2015 1 Sobre a busca de dados/chaves 2 Busca em tabelas (vetores/arrays) Para se resolver

Leia mais

CIC 110 Análise e Projeto de Algoritmos I

CIC 110 Análise e Projeto de Algoritmos I CIC 110 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá sort AULA 02 Ordenação A classificação é um problema de design de algoritmo fundamental.

Leia mais

Otimização em Grafos

Otimização em Grafos Otimização em Grafos Luidi G. Simonetti PESC/COPPE 2017 Luidi Simonetti (PESC) EEL857 2017 1 / 33 Definição do Problema Dado: um grafo ponderado G = (V, E), orientado ou não, onde d : E R + define as distâncias

Leia mais

Álgebra Linear Semana 04

Álgebra Linear Semana 04 Álgebra Linear Semana 04 Diego Marcon 17 de Abril de 2017 Conteúdo 1 Produto de matrizes 1 11 Exemplos 2 12 Uma interpretação para resolução de sistemas lineares 3 2 Matriz transposta 4 3 Matriz inversa

Leia mais

indexação e hashing Construção de Índices e Funções Hash Diego Gomes Tomé - MSc. Informática Orientador: Prof. Dr. Eduardo Almeida October 13, 2016

indexação e hashing Construção de Índices e Funções Hash Diego Gomes Tomé - MSc. Informática Orientador: Prof. Dr. Eduardo Almeida October 13, 2016 indexação e hashing Construção de Índices e Funções Hash Diego Gomes Tomé - MSc. Informática Orientador: Prof. Dr. Eduardo Almeida October 13, 2016 Universidade Federal do Paraná indexação e hashing Índices

Leia mais

Árvores-B (Parte IV) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures

Árvores-B (Parte IV) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures Árvores-B (Parte IV) Leandro C. Cintra M.C.F. de Oliveira 2004 Fonte: Folk & Zoelick, File Structures http://www.icmc.sc.usp.br/~sce183 Definição e Propriedades de árvores-b Ordem A ordem de uma árvore-b

Leia mais

Ordem. Árvores-B (Parte IV) Número mínimo de chaves por página. Definição formal das Propriedades de árvores-b /30 1

Ordem. Árvores-B (Parte IV) Número mínimo de chaves por página. Definição formal das Propriedades de árvores-b /30 1 Ordem Árvores-B (Parte IV) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures A ordem de uma árvore-b é dada pelo número máximo de descendentes que uma página, ou nó, pode possuir

Leia mais

CIC 110 Análise e Projeto de Algoritmos I

CIC 110 Análise e Projeto de Algoritmos I CIC 110 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 02 C++ e bibliotecas Vector C++ Os programas que iremos usar vai ser em C++ e ter o

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

Dicionários: B-Trees

Dicionários: B-Trees Dicionários: 2003/04 Aula teórica de 2003.11.12 (T9) 2003 Salvador Abreu 2003/04 9-1 Motivação Grandes quantidades de informação Grandes quantidades de informação Requer armazenamento externo (disco) Acesso

Leia mais

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões Edital de Seleção 024/2017 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: «Nome» INSCRIÇÃO: «Inscrição» Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome

Leia mais

Lista de Exercícios 07 Introdução à Ciência de Computação II (SCC0201/501)

Lista de Exercícios 07 Introdução à Ciência de Computação II (SCC0201/501) Lista de Exercícios 07 Introdução à Ciência de Computação II (SCC0201/501) Prof. Moacir P. Ponti Jr. 24 de novembro de 2010 1 Hashing 1. Suponha uma tabela hash de tamanho 10 com endereçamento aberto para

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

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000) Teoria da Computação Referência Teoria da Computação (Divério, 2000) 1 L={(0,1)*00} de forma que você pode usar uma Máquina de Turing que não altera os símbolos da fita e sempre move a direita. MT_(0,1)*00=({0,1},{q

Leia mais

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão Projeto e Análise de Algoritmos NP Completude Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Universidade Federal de Alfenas versão da aula: 0.4 Introdução Problemas intratáveis ou difíceis são comuns

Leia mais

Introdução à Ciência da Computação II

Introdução à Ciência da Computação II Introdução à Ciência da Computação II 2semestre/200 Prof Alneu de Andrade Lopes Apresentação com material gentilmente cedido pelas profas Renata Pontin Mattos Fortes http://wwwicmcuspbr/~renata e Graça

Leia mais

Bases de Dados. Remoções em árvores B + Remoção em árvores B +

Bases de Dados. Remoções em árvores B + Remoção em árvores B + Bases de Dados Remoções em árvores B + Remoção em árvores B + Remoção procurar o registo e removê-lo do ficheiro se o apontador ou contentor ficar vazio, remover a entrada (valor, apontador) da folha se

Leia mais

Teoria dos Grafos Aula 8

Teoria dos Grafos Aula 8 Teoria dos Grafos Aula 8 Aula passada Grafos com pesos, caminhos e distâncias Ideia e algoritmo de Dijkstra Dijkstra o próprio Aula de hoje Corretude de Dijkstra Fila de prioridades e Heap Dijkstra eficiente

Leia mais

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca ÁRVORES SUMÁRIO Fundamentos Árvores Binárias Árvores Binárias de Busca 2 ÁRVORES Utilizadas em muitas aplicações Modelam uma hierarquia entre elementos árvore genealógica Diagrama hierárquico de uma organização

Leia mais

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013 Lista 1 - PMR2300 Fabio G. Cozman 3 de abril de 2013 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u b l i c s t a t i c void

Leia mais

Hashing Endereçamento Direto Tabelas Hash

Hashing Endereçamento Direto Tabelas Hash Hashing Endereçamento Direto Tabelas Hash Professora: Fátima L. S. Nunes 1 1 1 Vimos até agora: Introdução Conceitos e técnicas de Orientação a Objetos Conceitos e aplicações de Complexidade Assintótica

Leia mais

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data) Paralelismo de dados (execução de simultaneidade) Em métodos tradicionais de programação (processamento sequencial), uma grande quantidade de dados é processada em um único núcleo de uma CPU, enquanto

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 Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então

Leia mais

Árvores B. Hashing. Estrutura de Dados II Jairo Francisco de Souza

Árvores B. Hashing. Estrutura de Dados II Jairo Francisco de Souza Árvores B Hashing Estrutura de Dados II Jairo Francisco de Souza Resolução de colisões Endereçamento aberto Re-hashing Encadeamento Separado Coalescido Coalescido com porão Endereçamento em balde Endereçamento

Leia mais

Árvores Genéricas de Busca

Árvores Genéricas de Busca Árvores Genéricas de Busca Árvores não binárias também podem ser usadas para buscar elementos. Essas árvores são chamadas de árvores genéricas de busca, e elas podem ser de dois tipos: árvore de busca

Leia mais

Resolução de sistemas de equações lineares: Fatorações de matrizes

Resolução de sistemas de equações lineares: Fatorações de matrizes Resolução de sistemas de equações lineares: Fatorações de matrizes Marina Andretta/Franklina Toledo ICMC-USP 5 de fevereiro de 2014 Baseado no livro Análise Numérica, de R. L. Burden e J. D. Faires. Marina

Leia mais

ALGORITMOS DE ORDENAÇÃO

ALGORITMOS DE ORDENAÇÃO ALGORITMOS DE ORDENAÇÃO Prof. André Backes Conceitos básicos 2 Ordenação Ato de colocar um conjunto de dados em uma determinada ordem predefinida Fora de ordem 5, 2, 1, 3, 4 Ordenado 1, 2, 3, 4, 5 OU 5,

Leia mais

É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser

É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser executado 1 Fazendo estimativas e simplificações... O número

Leia mais

Lista de Exercícios. Av. Trabalhador São-carlense, 400. centro. São Carlos - SP cep Brasil.

Lista de Exercícios. Av. Trabalhador São-carlense, 400. centro. São Carlos - SP cep Brasil. Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Organização de Arquivos Profa. Dra. Cristina Dutra de Aguiar Ciferri Lista

Leia mais

B-Árvores. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados

B-Árvores. Siang Wun Song - Universidade de São Paulo - IME/USP. MAC Estruturas de Dados MAC 5710 - Estruturas de Dados - 2008 Referência bibliográfica Os slides sobre este assunto são parcialmente baseados nos artigos Bayer, R. and E. McCreight. Organization and maintenance of large ordered

Leia mais

Marina Andretta. 10 de outubro de Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis.

Marina Andretta. 10 de outubro de Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Solução básica viável inicial Marina Andretta ICMC-USP 10 de outubro de 2016 Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Marina Andretta (ICMC-USP) sme0211

Leia mais

Medida do Tempo de Execução de um Programa

Medida do Tempo de Execução de um Programa Medida do Tempo de Execução de um Programa Livro Projeto de Algoritmos Nívio Ziviani Capítulo 1 Seção 1.3.1 http://www2.dcc.ufmg.br/livros/algoritmos/ Comportamento Assintótico de Funções O parâmetro n

Leia mais

Lista 2 TP060. Exercícios Vetores

Lista 2 TP060. Exercícios Vetores Lista 2 TP060 Esta lista auxilia nos estudos da disciplina, porém é dever do aluno estudar além do que foi visto em sala de aula e procurar resolver exercícios que não estão em listas elaboradas pelo professor

Leia mais

Otimização Combinatória - Parte 4

Otimização Combinatória - Parte 4 Graduação em Matemática Industrial Otimização Combinatória - Parte 4 Prof. Thiago Alves de Queiroz Departamento de Matemática - CAC/UFG 2/2014 Thiago Queiroz (DM) Parte 4 2/2014 1 / 33 Complexidade Computacional

Leia mais

Modelos Universais de Computação

Modelos Universais de Computação Modelos Universais de Computação 1 Equivalência entre Variantes de TM TM s definem naturalmente uma classe. Toda variante razoável de TM define a mesma classe de linguagens. (reforça a Tese Church-Turing)

Leia mais

Métodos de Ordenação Parte 4

Métodos de Ordenação Parte 4 Métodos de Ordenação Parte 4 Introdução à Ciência de Computação II Prof. Diego Raphael Amancio Baseado no material do Prof. Rudinei Goularte e Prof. Thiago A. S. Pardo 1 Ordenação por Intercalação Revisando...

Leia mais

CIC 110 Análise e Projeto de Algoritmos I

CIC 110 Análise e Projeto de Algoritmos I CIC 0 Análise e Projeto de Algoritmos I Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA Caminhos mais curtos Caminhos mais curtos Encontrar um caminho mais curto entre dois nós

Leia mais

Árvore Binária de Busca Ótima

Árvore Binária de Busca Ótima MAC 5710 - Estruturas de Dados - 2008 Referência bibliográfica Os slides sobre este assunto são parcialmente baseados nas seções sobre árvore binária de busca ótima do capítulo 4 do livro N. Wirth. Algorithms

Leia mais

Métodos de Ordenação Parte I

Métodos de Ordenação Parte I Estrutura de Dados II Métodos de Ordenação Parte I Prof a Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material baseado nos materiais da Prof a Ana Eliza e Prof. Robson Lins Rearranjar

Leia mais

03 Análise de Algoritmos (parte 3) SCC201/501 - Introdução à Ciência de Computação II

03 Análise de Algoritmos (parte 3) SCC201/501 - Introdução à Ciência de Computação II 03 Análise de Algoritmos (parte 3) SCC201/501 - Introdução à Ciência de Computação II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2010/2 Moacir

Leia mais

Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo

Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo Algoritmos e Estruturas de Dados I Prof. Tiago Eugenio de Melo tmelo@uea.edu.br www.tiagodemelo.info Observações O conteúdo dessa aula é parcialmente proveniente do Capítulo 11 do livro Fundamentals of

Leia mais

Edital de Seleção 023/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Edital de Seleção 023/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões Edital de Seleção 023/2018 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: INSCRIÇÃO: Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome e o número da sua

Leia mais

Aula 11: Modularização

Aula 11: Modularização Aula 11: Modularização Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Modularização Programação de Computadores IV 1 / 37 Agenda 1 Revisão e Contexto

Leia mais

Método Simplex dual. Marina Andretta ICMC-USP. 24 de outubro de 2016

Método Simplex dual. Marina Andretta ICMC-USP. 24 de outubro de 2016 Método Simplex dual Marina Andretta ICMC-USP 24 de outubro de 2016 Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis. Marina Andretta (ICMC-USP) sme0211 - Otimização

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Exame Especial Resolução 19/07/2013 A. [4.75 val] Algoritmos de ordenação e de pesquisa (usando memória estática

Leia mais

Árvores B. Prof. Flávio Humberto Cabral Nunes

Árvores B. Prof. Flávio Humberto Cabral Nunes Árvores B Prof. Flávio Humberto Cabral Nunes Conteúdo 1. Introdução 2. Busca 3. Inserção 4. Remoção 5. B* 6. B+ Capítulo: 8 (APOSTILA). Introdução Em muitas aplicações, a tabela considerada é muito grande

Leia mais

Consolidar dados de várias planilhas em uma única planilha

Consolidar dados de várias planilhas em uma única planilha Página 1 de 5 Excel > Filtrando e classificando > Consolidando dados Consolidar dados de várias planilhas em uma única planilha Mostrar tudo Para resumir e informar os dados de planilhas separadas, você

Leia mais

Hashing: conceitos. Hashing

Hashing: conceitos. Hashing Hashing: conceitos hashing é uma técnica conhecida como espalhamento, mapeamento ou randomização que tenta distribuir dados em posições aleatórias de uma tabela (array) associa cada objeto (de um determinado

Leia mais

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I

Tabelas Hash. Prof. Túlio Toffolo  BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I Tabelas Hash Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I Pesquisa em Memória Primária Introdução - Conceitos Básicos Pesquisa Sequencial Pesquisa

Leia mais

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira Algoritmos e Estrutura de Dados Aula 3 Conceitos Básicos de Algoritmos Prof. Tiago A. E. Ferreira Definição de Algoritmo Informalmente... Um Algoritmo é qualquer procedimento computacional bem definido

Leia mais

SCC-503 Algoritmos e Estruturas de Dados II. Modificado por Moacir Ponti Jr, do original de:

SCC-503 Algoritmos e Estruturas de Dados II. Modificado por Moacir Ponti Jr, do original de: Árvores-B (Parte II) SCC-503 Algoritmos e Estruturas de Dados II Modificado por Moacir Ponti Jr, do original de: Thiago A. S. Pardo Cristina D. A. Ciferri Leandro C. Cintra M.C.F. de Oliveira Algoritmo:

Leia mais

ORGANIZAÇÃO DE ARQUIVOS INDEXADOS

ORGANIZAÇÃO DE ARQUIVOS INDEXADOS ORGANIZAÇÃO DE ARQUIVOS INDEXADOS Um índice consiste numa coleção de entradas, uma para cada registro de dados, contendo o valor de uma chave de atribuição e um ponteiro de referência que acessa imediatamente

Leia mais

MODULARIZAÇÃO - PARTE 1

MODULARIZAÇÃO - PARTE 1 AULA 27 MODULARIZAÇÃO - PARTE 1 Os algoritmos que temos construído até então são muito simples, pois resolvem problemas simples e apresentam apenas os componentes mais elementares dos algoritmos: constantes,

Leia mais

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE)

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE) Algoritmos e Estruturas de Dados 1 Prof. Eduardo 1 ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE) Já vimos entrada, processamento e saída, que compõem os algoritmos puramente

Leia mais

Lógica de Programação, Algoritmos e Estruturas de Dados

Lógica de Programação, Algoritmos e Estruturas de Dados Lógica de Programação, Algoritmos e Estruturas de Dados Professor: Vilson Heck Junior vilson.junior@ifsc.edu.br Agenda Funções Básicas do Software; Relações entre áreas; Introdução à Algoritmos; Introdução

Leia mais

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que:

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que: Tabelas Hash Tabelas Hash O uso de listas ou árvores para organizar informações é interessante e produz bons resultados. Porem, em nenhuma dessas estruturas se obtém o acesso direto a alguma informação,

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

ESTRUTURA CONDICIONAL E SELEÇÃO

ESTRUTURA CONDICIONAL E SELEÇÃO Algoritmos e Estruturas de Dados 1 Prof. Eduardo 1 ESTRUTURA CONDICIONAL E SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE OU DECISÃO) Até o momento da disciplina vimos algoritmos e programas

Leia mais

Informática I. Aula 14. Aula 14-10/10/2007 1

Informática I. Aula 14.  Aula 14-10/10/2007 1 Informática I Aula 14 http://www.ic.uff.br/~bianca/informatica1/ Aula 14-10/10/2007 1 Ementa Noções Básicas de Computação (Hardware, Software e Internet) HTML e Páginas Web Internet e a Web Javascript

Leia mais

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher TGR BCC Representação Computacional de Grafos Prof. Ricardo José Pfitscher Cronograma Representação Matriz de djacências Lista de djacências Matriz de Incidências Representação Como podemos representar

Leia mais

INF 1010 Estruturas de Dados Avançadas

INF 1010 Estruturas de Dados Avançadas INF 1010 Estruturas de Dados Avançadas Árvores B 24/10/16 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1 1 Árvores B estrutura de dados para armazenamento externo tempo de acesso à memória secundária

Leia mais

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010 Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Programa de Pós-Graduação em Ciência da Computação Projeto e Análise de Algoritmos - 1 o semestre de 2010 Professor: David Menotti

Leia mais

Contagem I. Figura 1: Abrindo uma Porta.

Contagem I. Figura 1: Abrindo uma Porta. Polos Olímpicos de Treinamento Curso de Combinatória - Nível 2 Prof. Bruno Holanda Aula 4 Contagem I De quantos modos podemos nos vestir? Quantos números menores que 1000 possuem todos os algarismos pares?

Leia mais

Árvores Conceitos gerais

Árvores Conceitos gerais http://www.mysticfractal.com/ FractalImaginator.html Árvores Conceitos gerais 9/11 Nesta aula veremos conceitos e definições sobre árvores Diferentemente das estruturas de pilhas, filas e listas que são

Leia mais

Alinhamento de Sequências e Genômica Comparativa

Alinhamento de Sequências e Genômica Comparativa Encontro França-Brasil de Bioinformática Universidade Estadual de Santa Cruz (UESC) Ilhéus-BA - Brasil Alinhamento de Sequências e Genômica Comparativa Maria Emília M. T. Walter Departamento de Ciência

Leia mais

ÁRVORE B. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

ÁRVORE B. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos ÁRVORE B Vanessa Braganholo Estruturas de Dados e Seus Algoritmos INTRODUÇÃO 2 ARQUIVOS DE ACESSO DIRETO Basicamente, duas formas de acesso a um registro: Acesso via cálculo do endereço do registro (hashing)

Leia mais

RESOLUÇÃO DCC-UFRJ MATEMÁTICA COMBINATÓRIA 2006/2 PROVA Considere a soma. S n = n 2 n 1

RESOLUÇÃO DCC-UFRJ MATEMÁTICA COMBINATÓRIA 2006/2 PROVA Considere a soma. S n = n 2 n 1 DCC-UFRJ MATEMÁTICA COMBINATÓRIA 2006/2 PROVA 1 1. Considere a soma S n = 1 2 0 + 2 2 1 + 3 2 2 + + n 2 n 1. Mostre, por indução finita, que S n = (n 1)2 n + 1. Indique claramente a base da indução, a

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

Teoria dos Grafos Aula 6

Teoria dos Grafos Aula 6 Teoria dos Grafos Aula 6 Aula passada Busca em grafos Busca em largura (BFS Breadth First Search) Propriedades Aula de hoje BFS implementação Complexidade Busca em profundidade (DFS) Conectividade, componentes

Leia mais

Árvores de Suporte de Custo Mínimo

Árvores de Suporte de Custo Mínimo Árvores de Suporte de Custo Mínimo Pedro Ribeiro DCC/FCUP 2016/2017 Pedro Ribeiro (DCC/FCUP) Árvores de Suporte de Custo Mínimo 2016/2017 1 / 28 Árvore de Suporte Uma árvore de suporte ou árvore de extensão

Leia mais

Quinto Trabalho Prático. Este trabalho tem como objetivo indexar arquivos de dados usando um índice árvore-b.

Quinto Trabalho Prático. Este trabalho tem como objetivo indexar arquivos de dados usando um índice árvore-b. Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Algoritmos e Estruturas de Dados II docente Profa. Dra. Cristina Dutra de

Leia mais

Exercícios: Recursão

Exercícios: Recursão Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Recursão 1. Faça uma função recursiva que calcule e retorne o fatorial

Leia mais

Estruturas de Repetição

Estruturas de Repetição Algoritmos e Estruturas de Dados I (DCC/003) Estruturas de Repetição Aula Tópico 4 (while, for) 1 Problema 10 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em C. Dados dois números

Leia mais