CIC 111 Análise e Projeto de Algoritmos II
|
|
- Lucinda Aires
- 5 Há anos
- Visualizações:
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 Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 18 Tree queries Finding ancestors Subtrees and paths Lowest common ancestor Offline
Leia maisCIC 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 maisCIC 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 maisCIC 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 maisCIC 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 maisCIC 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 maisCIC 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 maisCIC 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 maisCIC 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 maisCIC 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 maisLista 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 maisTeoria 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 maisTABELAS 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 maisAlgoritmos 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 maisCapí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
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 maisTabelas 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 maisIntroduçã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 maisSCC 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 maisCIC 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
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 maisANÁ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 maisLista 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
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 maisAná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 maisMATRIZES - 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 maisMC3305 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 maisCIC 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 maisOtimizaçã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 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 maisindexaçã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 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 maisOrdem. Á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 maisCIC 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 Listas e árvores Listas lineares Um nó após o outro, adjacentes Nó sucessor e antecessor Diversas aplicações necessitam de estruturas
Leia maisDicioná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 maisEdital 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 maisLista 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 maisDicioná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 maisTeoria 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 maisProjeto 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 maisIntroduçã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 maisBases 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 maisTeoria 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 maisSUMÁ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 maisLista 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 maisHashing 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 maisParalelismo 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 maisMedida 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 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 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 maisResoluçã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 maisALGORITMOS 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 executado 1 Fazendo estimativas e simplificações... O número
Leia maisLista 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 maisB-Á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 maisMarina 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 maisMedida 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 maisLista 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 maisOtimizaçã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 maisModelos 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 maisMé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 maisCIC 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
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 maisMé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 mais03 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 maisAlgoritmos 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 maisEdital 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 maisAula 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 maisMé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 maisUNIVERSIDADE 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 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 maisConsolidar 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 maisHashing: 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 maisTabelas 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 maisAlgoritmos 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 maisSCC-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 maisORGANIZAÇÃ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 maisMODULARIZAÇÃ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 maisALGORITMOS 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 maisLó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 maisTabelas 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 maisBusca 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 maisESTRUTURA 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 maisInformá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 maisTGR 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 maisINF 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 maisTrabalho 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 maisContagem 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
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 maisAlinhamento 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 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 maisRESOLUÇÃ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
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 maisTeoria 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 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 maisQuinto 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 maisExercí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 maisEstruturas 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