Strings (Casamento de padrões) Estrutura de Dados II Jairo Francisco de Souza
|
|
- Vítor Gabriel Meneses Penha
- 7 Há anos
- Visualizações:
Transcrição
1 Strings (Casamento de padrões) Estrutura de Dados II Jairo Francisco de Souza
2 Strings Tipo de dado importante para diversas aplicações. Abordaremos algumas questões relacionadas com Strings nos seguintes tópicos Busca em Strings (String matching) Codificação Compressão 2
3 Busca em Cadeias de Caracteres Dados a ser processados nem sempre se decompõem logicamente em registros independentes com pequenas partes identificáveis Este tipo de dados é caracterizado apenas pelo fato de que pode ser escrito como uma cadeia Uma cadeia é uma seqüência linear de caracteres, tipicamente podendo ser muito longa 3
4 Busca em Cadeias de Caracteres Cadeias são centrais em sistemas de processamento de textos, recuperação de informação, estudo de sequências de DNA em biologia computacional, etc. Esses objetos podem ser bem grandes e algoritmos eficientes são necessários para manipulá-los T = ABACAABACCABACABAABB P = ABACAB P é uma substring de T, mais exatamente, P = T[ ]. 4
5 Busca em Cadeias de Caracteres Outro tipo de cadeia é a cadeia binária Cadeia binária é uma seqüência de apenas valores 0 e 1 Em certo sentido, isso é simplesmente um caso especial de cadeia de caracteres Mas vale a pena fazer distinção, porque algoritmos diferentes são apropriados para cada caso Além disso, cadeias binárias aparecem naturalmente em muitas aplicações Por exemplo, alguns sistemas gráficos representam figuras como cadeias binárias 5
6 Busca em Cadeias de Caracteres Veremos que o tamanho do alfabeto a partir do qual os caracteres são tomados para formar uma cadeia é um fator importante no projeto de algoritmos de processamento de cadeias Uma operação fundamental sobre cadeias é o casamento de padrão: Dado uma cadeia de comprimento N e um padrão de comprimento M, encontrar uma ocorrência do padrão no texto Vamos usar o termo texto para referenciar tanto uma seqüência de valores 0 e 1 quanto qualquer outro tipo especial de cadeia 6
7 Busca em Cadeias de Caracteres A maioria dos algoritmos para o problema de casamento de padrão pode ser facilmente estendida para encontrar todas as ocorrências do padrão no texto O problema de casamento de padrão pode ser visto também como um problema de busca com o padrão sendo a chave 7
8 Um Breve Histórico O algoritmo mais óbvio de busca em cadeia, chamado algoritmo força-bruta ou algoritmo ingênuo, tem o pior caso de tempo de execução proporcional a MN Embora as cadeias que aparecem em muitas aplicações levam a um tempo de execução que é virtualmente proporcional a M + N 8
9 Um Breve Histórico Em 1970, S. A. Cook provou um resultado teórico sobre um tipo particular de autômato que implicava na existência de um algoritmo de casamento de padrão com tempo proporcional a M + N no pior caso D. E. Knuth e V. R. Pratt seguindo a construção que Cook usara na demonstração do seu teorema obtiveram um algoritmo relativamente simples e prático 9
10 Um Breve Histórico Ocorreu também que J. H. Morris descobriu praticamente o mesmo algoritmo como solução de um problema de edição de texto Os três cientistas, Knuth, Morris e Pratt, não se preocuparam em publicar o algoritmo até 1976 Nesse meio tempo, R. S. Boyer e J. S. Moore (e, independentemente, R. W. Gosper) descobriram um algoritmo que é muito mais rápido em muitas aplicações Muitos editores de texto usam esse algoritmo para busca de cadeias 10
11 Um Breve Histórico Em 1980, M. O. Rabin e R. M. Karp desenvolveram um algoritmo tão simples quanto o de força bruta que roda virtualmente sempre em tempo proporcional a M + N Além disso, o algoritmo deles estende-se facilmente a padrões bidimensionais que o torna mais útil que os outros para processamento de figuras 11
12 Algoritmo Força-Bruta O método óbvio para casamento de padrão resume-se em testar, em cada posição do texto onde o padrão pode casar, se ele de fato casa O proceedimento forcabruta a seguir busca dessa maneira a primeira ocorrência do padrão p no texto t 12
13 Algoritmo Força-Bruta procedure ForcaBruta ( var T: TipoTexto ; var n : integer ; var P: TipoPadrao; var m : integer ) ; { Pesquisa P[ 1..m] em T[ 1..n] } var i, j, k : Integer ; begin for i := 1 to n m + 1 do begin k := i ; j := 1; while T[ k ] = P[ j ] do begin j := j + 1; k := k + 1; end; if j > m then writeln ( Casamento na posicao, i:3 ) ; end; end; 13
14 Algoritmo Força-Bruta 14
15 Algoritmo Força-Bruta Pior caso O pior caso ocorre quando, por exemplo, o padrão e o texto são os dois uma seqüência de zeros seguidos por um 1 Por exemplo, e Ou seja, quando é preciso percorrer praticamente todo P várias vezes a cada posição de T, estando P no fim da cadeia Complexidade: m*n 15
16 Algoritmo KMP A idéia básica do algoritmo desenvolvido por Knuth, Morris e Pratt é: quando um descasamento é detectado, o falso começo consiste em caracteres que já conhecemos de antemão (porque eles estão no padrão) De alguma forma, podemos levar vantagem desta informação ao invés de retroceder o índice j por todos os caracteres conhecidos 16
17 Algoritmo KMP Foi o primeiro algoritmo cujo pior caso tem complexidade de tempo linear no tamanho do texto: O(n) É um dos algoritmos mais famosos para resolver casamento de padrões Tem implementação complicada e na prática perde em eficiência para outros algoritmos, como o de Boyer. 17
18 Algoritmo KMP O algoritmo computa o sufixo mais longo no texto que é também o prefixo de P. Quando o comprimento do sufixo no texto é igual a P, ocorre um casamento. O pré-processamento de P permite que nenhum caractere seja reexaminado. O apontador para o texto nunca é decrementado. 18
19 Algoritmo KMP 19
20 Algoritmo KMP Porém, como saber quantas posições devem ser deslocadas? Para tal, utilizamos uma função chamada de Função Prefixo, denotada por π. Por enquanto iremos considerar que essa função é conhecida. 20
21 Função Prefixo Tendo P = ababaca contra um texto T. Em (a) sendo, q = 5, de caracteres que parearam com T. Conhecendo estes q caracteres do texto é possível determinar que alguns deslocamentos s são inválidos (não precisam ser testados). O deslocamento s = s + 1 é inválido, mas o deslocamento s = s + 2 é potencialmente válido pelo que conhecemos do texto. Dado que q caracteres tiveram comparações com sucesso no deslocamento s, o próximo potencial deslocamento válido será: s = s + (q π[q]) 21
22 Função Prefixo A função prefixo encapsula o conhecimento sobre quantas posições deve-se caminhar para continuar procedendo o casamento do padrão, evitando comparações inúteis. Para tal, a função analisa o padrão fornecido e cria uma tabela de deslocamentos. Idéia simples. 22
23 Função Prefixo Valores da função prefixo para P: P q π a b a b a c a Outro exemplo: q P b c b a b c b a e b c b a b c b a Prefix
24 Caso importante Considere o exemplo abaixo: i P c g c g a g c g c g c Prefix ? Qual o valor para Prefix(10)? Prefix(9)=4. Mas P(4) P(10). Podemos concluir que Prefix(10)=0? Não, não podemos. 24
25 Caso importante Existe um prefixo mais curto com tamanho 2 que é igual a um sufixo de P(0,9), e P(10)=P(2). Podemos concluir que Prefix(10)=2+1=3. i P c g c g a g c g c g c Prefix ? 25
26 Exemplo 26
27 Algoritmo KMP public static int KMPmatch(String text, String pattern) { int n = text.length(); int m = pattern.length(); int[] fail = prefixfunction(pattern); int i = 0; int j = 0; while (i < n) { if (pattern.charat(j) == text.charat(i)) { if (j == m - 1) return i - m + 1; // match i++; j++; } else if (j > 0) j = fail[j - 1]; else i++; } return -1; // no match } public static int[] prefixfunction(string pattern) { int[] fail = new int[pattern.length()]; fail[0] = 0; int m = pattern.length(); int j = 0; int i = 1; while (i < m) { if (pattern.charat(j) == pattern.charat(i)) { fail[i] = j + 1; i++; j++; } else if (j > 0) // j follows a matching prefix j = fail[j - 1]; else { // no match fail[i] = 0; i++; } } return fail; } 27
28 Algoritmo KMP Como são evitadas comparações em P, o algoritmo é executado em tempo polinomial. É feito um pré-processamento em P O(n) É feito um processamento em T O(m) Processamento total: O(n + m) 28
29 Exercício Considere o texto abaixo: ABACAABACCABACABAABB Pesquise o padrão ABACAB utilizando o método KMP. Diga quantas comparações o método faz. 29
30 Algoritmo BMH Também chamado de Boyer-Moore-Horspool. Pela extrema simplicidade de implementação e comprovada eficiência, o BMH deve ser escolhido em aplicações de uso geral que necessitam realizar casamento exato de cadeias. A idéia é pesquisar no padrão no sentido da direita para a esquerda, o que torna o algoritmo muito rápido. Executado frequentemente em editores de texto para os comandos de localizar" e "substituir". Veremos primeiro o algoritmo BM, o algoritmo original. 30
31 Algoritmo BM O algoritmo faz a varredura dos símbolos do padrão da direita para à esquerda (rightmost). O algoritmo utiliza duas funções pré-processadas para deslocar o padrão à direita. Estas funções dos deslocamentos são chamadas funções de ocorrência e de casamento. 31
32 Heurística de ocorrência Alinha a posição que causou a colisão no texto com o primeiro caractere no padrão que casa com este caractere; Ex.: P ={cacbac}, T ={aabcaccacbac} a a b c a c c a c b a c c a c b a c c a c b a c c a c b a c c a c b a c c a c b a c 32
33 Heurística de ocorrência A partir da posição 6, da direita para a esquerda, existe uma colisão na posição 4 de T, entre b do padrão e c do texto. Logo, o padrão deve ser deslocado para a direita até o primeiro caractere no padrão que casa com c. O processo é repetido até encontrar um casamento a partir da posição 7 de T. 33
34 Heurística do casamento Ao mover o padrão para a direita, faça-o casar com o pedaço do texto anteriormente casado. Ex.: P ={cacbac} no texto T ={aabcaccacbac} a a b c a c c a c b a c c a c b a c c a c b a c c a c b a c 34
35 Heurística do casamento Novamente, a partir da posição 6, da direita para a esquerda, existe uma colisão na posição 4 de T, entre o b do padrão e o c do texto. Neste caso, o padrão deve ser deslocado para a direita até casar com o pedaço do texto anteriormente casado, no caso ac, deslocando o padrão 3 posições à direita. O processo é repetido mais uma vez e o casamento entre P e T ocorre. 35
36 Escolha da heurística O algoritmo BM escolhe a heurística que provoca o maior deslocamento do padrão. Esta escolha implica em realizar uma comparação entre dois inteiros para cada caractere lido do texto, penalizando o desempenho do algoritmo com relação ao tempo de processamento. Várias propostas de simplificação ocorreram ao longo dos anos. As que produzem os melhores resultados são as que consideram apenas a heurística de ocorrência. 36
37 Algoritmo BMH A simplificação mais importante é devida a Horspool em Executa mais rápido do que o algoritmo BM original. Parte da observação de que qualquer caractere já lido do texto a partir do último deslocamento pode ser usado para endereçar a tabela de deslocamentos. Endereça a tabela com o caractere no texto correspondente ao último caractere do padrão. 37
38 Algoritmo BMH Tabela de Deslocamentos Para pré-computar o padrão o valor inicial de todas as entradas na tabela de deslocamentos é feito igual a m. A seguir, apenas os m 1 primeiros caracteres do padrão são usados para obter os outros valores da tabela. Formalmente, d[x] = min { j tal que j = m (1 j < m & P [m j] = x) }. Ex.: Para o padrão P ={teste}, os valores de d são d[t] = 1, d[e] = 3, d[s] = 2, e todos os outros valores são iguais ao valor de P, nesse caso m = 5. Para o padrão P={bola}, os valores de d são d[b] = 3, d[o] = 2, d[l] = 1, d[a] = 4. 38
39 Algoritmo BMH 39
40 Algoritmo BMH [e] 40
41 Algoritmo BMH { G C A T C G C A G A G A G T A T A C A G T A C G } 41
42 Algoritmo BMH achou! 42
43 Algoritmo BMH 43
44 Implementação procedure BMH ( var T: TipoTexto ; var n : integer ; var P: TipoPadrao ; var m: integer ) ; { Pesquisa P[ 1.. m] em T[ 1.. n] } var i, j, k : Integer ; d : array [ 0..MaxTamAlfabeto] of integer ; begin { Pre processamento do padrao } for j := 0 to MaxTamAlfabeto do d[ j ] : = m; for j := 0 to m-2 do d[ ord(p[ j ] ) ] : = m-j-1 ; i : = m; while i <= n do { Pesquisa } begin k := i ; j : = m; while (T[ k ] = P[ j ] ) and ( j >0) do begin k : = k 1; j : = j 1; end; if j = 0 then writeln ( Casamento na posicao :,k+1:3); i : = i + d[ ord(t[ i ] ) ] ; end; 44 end;
45 Exercício Considere o texto abaixo: ABACAABACCABACABAABB Pesquise o padrão ABACAB utilizando o método BMH. Diga quantas comparações o método faz. 45
46 Algoritmo BHMS Sunday (1990) apresentou outra simplificação importante para o algoritmo BM, ficando conhecida como BMHS. Variante do BMH: endereçar a tabela com o caractere no texto correspondente ao próximo caractere após o último caractere do padrão, em vez de deslocar o padrão usando o último caractere como no algoritmo BMH. Para pré-computar o padrão, o valor inicial de todas as entradas na tabela de deslocamentos é feito igual a m + 1. A seguir, os m primeiros caracteres do padrão são usados para obter os outros valores da tabela. Formalmente d[x] = min{j tal que j = m (1 j m & P [m + 1 j] = x)}. Exemplo: Para o padrão P = teste, os valores de d são d[t] = 2, d[e] = 1, d[s] = 3, e todos os outros valores são iguais ao valor de P
47 Implementação procedure BMHS ( var T: TipoTexto ; var n : integer ; var P: TipoPadrao ; var m: integer ) ; var i, j, k : Integer ; d : array [ 0.. MaxChar] of integer ; begin { Pre processamento do padrao } for j := 0 to MaxChar do d[ j ] : = m+1; for j := 0 to m-1 do d[ ord(p[ j ] ) ] : = m j ; i : = m; while i <= n do { Pesquisa } begin k := i ; j : = m; while (T[ k ] = P[ j ] ) and ( j >0) do begin k : = k 1; j : = j 1; end; if j = 0 then writeln ( Casamento na posicao :, k+1:3); i : = i + d[ ord(t[ i +1])]; end; end; 47
48 Implementação O pré-processamento do padrão ocorre nas duas primeiras linhas do código. A fase de pesquisa é constituída por um laço em que i varia de m até n, com incrementos d[ord(t[i+1])], o que equivale ao endereço na tabela d do caractere que está na i + 1-ésima posição no texto, a qual corresponde à posição do último caractere de P. 48
49 Exemplo [e] 49
50 Exemplo Shift para [c] = 4 Shift para [c] = 4 match! 50
51 Algoritmo BMHS Embora normalmente utiliza-se a comparação do padrão seguindo da direita, ao contrário dos algoritmos de BM e BMH, o algoritmo de Sunday pode comparar o padrão de forma arbitrária. Caso saiba-se qual o caracter menos comum no padrão, ele pode ser utilizado primeiro na comparação 51
52 Exercício Considere o texto abaixo: ABACAABACCABACABAABB Pesquise o padrão ABACAB utilizando o método BMHS. Diga quantas comparações o método faz. 52
53 BM - Análise Os dois tipos de deslocamento (ocorrência e casamento) podem ser pré-computados com base apenas no padrão e no alfabeto. Assim, a complexidade de tempo e de espaço para esta fase é O(m + c). O pior caso do algoritmo é O(n + rm), onde r é igual ao número total de casamentos, o que torna o algoritmo ineficente quando o número de casamentos é grande. O melhor caso e o caso médio para o algoritmo é O(n/m), um resultado excelente pois executa em tempo sublinear. 53
54 BMH - Análise O deslocamento de ocorrência também pode ser pré-computado com base apenas no padrão e no alfabeto. A complexidade de tempo e de espaço para essa fase é O(c). Para a fase de pesquisa, o pior caso do algoritmo é O(nm), o melhor caso é O(n/m) e o caso esperado é O(n/m), se c não é pequeno e m não é muito grande. 54
55 BMHS - Análise Na variante BMHS, seu comportamento assintótico é igual ao do algoritmo BMH. Entretanto, os deslocamentos são mais longos (podendo ser iguais a m + 1), levando a saltos relativamente maiores para padrões curtos. Por exemplo, para um padrão de tamanho m = 1, o deslocamento é igual a 2m quando não há casamento. 55
56 Análise 56
57 Método Robin-Karp Princípio: tratar cada substring de tamanho M do texto como chave de uma tabela de dispersão padrão é encontrado quando a chave da substring coincide com a do padrão como se procura chave específica, não é preciso guardar a tabela, mas apenas calcular as chaves com tabela virtual: tamanho elevado reduz probabilidade de falsas escolhas Para que o método seja eficaz cálculo da chave deve ser menos pesado que fazer as comparações função de dispersão: h(k) = k mod q q primo grande cálculo das chaves: chave da posição i usa a da posição i-1 M caracteres transformam-se em número: empacotados na máquina como palavra, e esta interpretada como número 57
58 Pré-processamento do padrão = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} = 10 P temos: (P[1] * 10 + P[2]) = 19 (19 * 10) + P[3] = 199 (199 * 10) + P[4] = 1991 = alfabeto = tamanho de Dado um caractere, a representação numérica deste será sua posição no alfabeto Complexidade O(m) Generalizando: P[m] + (P[m-1]+ (P[m-2] (P[2] + P[1]) )) 58
59 Processamento do texto Padrão P Texto T = 1887 tempo O(m), para s = = 8871 não usaremos tempo O(m) para s > 0, pois temos que: s = 0, temos O(m) s > 0, temos O(1) s variando de 0 à n m para calcular m - 1 temos O(lg m) = O(m) + (n m)o(1) + O(lg m) = O(n) (1887 m - 1 * P[1]) * + P[s+m] = 8871, onde m - 1 foi previamente calculado Portanto temos tempo O(1), para cada deslocamento s > 0 59
60 Método Robin-Karp Aplicando a idéia para caracteres: Atribuir números a cada letra (código ASCII, por exemplo) Aplicar hashing para a cadeia S[1,..,m] na base b (número primo) Por exemplo, considerando a base como 101 (a base pode ser o tamanho do alfabeto): Palavra hi = =
61 Método Robin-Karp Os valores das transformações de P e das substrings de T são muito grandes, quando m e são muito longos Solução 1: reduzir esses valores a uma faixa controlada, utilizando módulo de um número q,, por exemplo. Novo problema: um mesmo valor pode representar substrings distintas. Solução 2: ocorrendo um provável casamento de ocorrendo um provável casamento de P com uma substring X de T, cada caractere de P deve ser comparado a cada caractere de X, para verificar se o casamento realmente acontece. 61
62 Método Robin-Karp Implementação Calcular hashing(padrao) Calcular hashing(substrings(texto)) Opção: Guardar em uma tabela Pesquisar hashing(padrao) na tabela Se não encontrar, padrão não existe no texto Se encontrar, Verificar se Substring(TEXTO) = PADRAO Se for diferente, padrão não existe no texto 62
63 Método Robin-Karp Usado para descobrir casos de plágio Análise: - custo para pré-processamento do padrão P é O(m) - custo para processamento do texto T é O(n) - número máximo de deslocamentos s válidos é n m + 1 No pior caso: - Todas as substrings X de T casam com P Sabemos que o número de deslocamentos s válidos é n m + 1, então temos s possíveis X, sabemos também que X = P = m, é possível concluir então que para cada s faremos m comparações, então: O((n-m+1)m). 63
64 Exercício Aplique o método de Robin-Karp para criar a tabela de hashing do texto abaixo, considerando um tamanho 3 de caracteres pro hashing e um alfabeto de tamanho 27, onde a letra A é denotada pelo número 1, B pela número 2, C como 3, D como 4, etc... Texto = ABCAABAC Como você procuraria a existência do padrão ABA no texto? 64
Reconhecimento de Padrões. Prof. Flávio Humberto Cabral Nunes
Reconhecimento de Padrões Prof. Flávio Humberto Cabral Nunes Conteúdo 1. Força Bruta 2. Knuth-Morris-Pratt 3. Boyer-Moore 4. Aho-Corasick Capítulo: 13 (APOSTILA). Força Bruta Características principais
Leia maisCasamento de Padrões
Casamento de Padrões Ricardo Terra rterrabh [at] gmail.com Ricardo Terra (rterrabh [at] gmail.com) Casamento de Padrões Fevereiro, 2013 1 / 34 CV Nome: Ricardo Terra Email: rterrabh [at] gmail.com www:
Leia maisProcessamento de Cadeias de Caracteres
Processamento de Cadeias de Caracteres Última alteração: 21 de Setembro de 2004 Transparências elaboradas por Fabiano Cupertino Botelho, Charles Ornelas Almeida e Nivio Ziviani Projeto de Algoritmos Cap.8
Leia maisUniversidade Federal de Mato Grosso do Sul Estruturas de Dados e Programação. Processamento de Cadeias
Universidade Federal de Mato Grosso do Sul Estruturas de Dados e Programação Processamento de Cadeias 1 Introdução Processar documentos é atualmente uma das principais funções dos computadores. São inúmeras
Leia maisUniversidade 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 Problema do casamento de cadeias Algoritmo
Leia maisAlgoritmos em Strings
Algoritmos em Strings R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes FEUP, MIEIC, CAL, 2010/2011 1 Índice Pesquisa exacta (string matching) Pesquisa aproximada (approximate string matching)
Leia maisProcessamento de Cadeias de Caracteres
Processamento de Cadeias de Caracteres Última alteração: 31 de Outubro de 2010 Transparências elaboradas por Fabiano Cupertino Botelho, Charles Ornelas Almeida, Israel Guerra e Nivio Ziviani Projeto de
Leia maisAnálise e Síntese de Algoritmos. Emparelhamento de Cadeias de Caracteres CLRS, Cap. 32
Análise e Síntese de Algoritmos Emparelhamento de Cadeias de Caracteres CLRS, Cap. 32 Contexto Revisão Algoritmos em Grafos Programação Linear Programação Dinâmica Algoritmos Greedy Emparelhamento de Cadeias
Leia maisProcessamento de Cadeias de Caracteres
Projeto de Algoritmos Cap.8 Processamento de Cadeias de Caracteres Seção 8. 3 Notação Texto: arranjo T[..n] de tamanho n; Padrão: arranjo P[..m] de tamanho m n. Os elementos de P e T são escolhidos de
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 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 maisPesquisa: 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 maisTabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou
Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou também denominada de tabela hashing com endereçamento aberto.
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 maisImplemente a função de remoção de uma chave na tabela hashing fechada em questão. void remover(tabela tabela, int n) {
Implemente a função de remoção de uma chave na tabela hashing fechada em questão. void remover(tabela tabela, int n) { } Tabelas de hash fechada: Exercício int posicao = buscar(tabela, n); if (posicao
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 maisUnidade VI. Técnicas de Teste de Software Teste Estrutural. Profa. Dra. Sandra Fabbri
Unidade VI Técnicas de Teste de Software Profa. Dra. Sandra Fabbri Os requisitos de teste são extraídos de uma implementação em particular Teste dos detalhes procedimentais A maioria dos critérios dessa
Leia maisPesquisa em Memória Primária. Prof. Jonas Potros
Pesquisa em Memória Primária Prof. Jonas Potros Transformação de Chave (Hashing) transformação de chave difere-se dos métodos anteriores, porque os registros são armazenados em uma tabela e são diretamente
Leia maisi a[i]
Técnicas de Hashing Outra forma de se fazer busca em uma tabela, é construir-se a tabela de forma a facilitar a busca, colocando-se cada elemento numa posição pré-determinada. Tal posição é obtida aplicando-se
Leia maisEstrutura de dados 1. Processamento de Cadeias de Caracteres
Estrutura de dados 1 Processamento de Cadeias de Caracteres Casamento de Cadeias Casamento de Cadeias Casamento Exato Casamento Aproximado Compressão Por Que Usar Compressão Compressão de Textos em Linguagem
Leia maisLinguagem e Técnicas em Programação. Gilson de Souza Carvalho
Gilson de Souza Carvalho gaucho.gilson@hotmail.com 3.1.3 Condições compostas Linguagem e Técnicas em Programação As condições que vimos até agora sempre foram únicas. Entretanto, conforme aumenta a complexidade
Leia maisAlgoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos
Leia maisLinguagem Computacional. Estruturas de Controle: Estruturas de Repetição. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves
Informática II Linguagem Computacional Estruturas de Controle: Estruturas de Repetição Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves 1 Sumário q Estruturas de Controle de Fluxo Repetição Enquanto
Leia maisSumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)
Algoritmos e Programação Informática II Ciência da Computação Prof. Dr. Leandro Alves Neves Aula 10 1 Sumário Estruturas de Controle de Fluxo q Repetição Enquanto (Teste no início) Repeat (Teste no final)
Leia maisPesquisa em Memória Primária Hashing
Pesquisa em Memória Primária Hashing Livro Projeto de Algoritmos Nívio Ziviani Capítulo 5 Seções 5.5 http://www2.dcc.ufmg.br/livros/algoritmos/ ( Hashing ) Transformação de Chave Os registros armazenados
Leia maisAnálise de Algoritmos Estrutura de Dados II
Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Análise de Algoritmos Estrutura de Dados II COM10078 - Estrutura de Dados II Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br
Leia maisAula 1. Teoria da Computação III
Aula 1 Teoria da Computação III Complexidade de Algoritmos Um problema pode ser resolvido através de diversos algoritmos; O fato de um algoritmo resolver um dado problema não significa que seja aceitável
Leia maisÁrvores B. Hashing. Estrutura de Dados II Jairo Francisco de Souza
Árvores B Hashing Estrutura de Dados II Jairo Francisco de Souza Pesquisa sequencial Procedimento Elementos pesquisados sucessivamente Comparação determina se o elemento foi encontrado ou não Exemplo:
Leia maisUniversidade 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 maisAlgoritmos probabilísticos
Algoritmos probabilísticos Na execução, algumas decisões usam números aleatórios Tempo de execução depende não só da entrada mas também de números aleatórios gerados Eficiência: pior caso é o mesmo ue
Leia maisESTRUTURA DE DADOS I AULA I
ESTRUTURA DE DADOS I AULA I PROF. ME. HÉLIO ESPERIDIÃO O que é um dado? Dado pode ser definido como a matéria-prima originalmente obtida de uma ou mais fontes (etapa de coleta). o que é a informação A
Leia maisLinguagens de Domínio Específico
Linguagens de Domínio Específico Fabio Mascarenhas 2016.1 http://www.dcc.ufrj.br/~fabiom/dsl Processamento de uma DSL Análise Sintática Descendente O analisador sintático descendente é parecido com o analisador
Leia maisEndereçamento Aberto
Endereçamento Aberto ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 11/2008 Material baseado em slides
Leia maisCompressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso:
Compressão de Textos Estrutura de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM O volume
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 maisCompressão Sem Perdas: Codificações Huffman e Aritmética. Adelar da Silva Queiróz Marcelo Teixeira Thiago da Silva Sodré
Compressão Sem Perdas: Codificações Huffman e Aritmética Adelar da Silva Queiróz Marcelo Teixeira Thiago da Silva Sodré Compressão Sem Perdas (Lossless Data Compression) Refere-se a métodos de compressão
Leia maisAnálise de Complexidade de Algoritmos. mario alexandre gazziro
Análise de Complexidade de Algoritmos mario alexandre gazziro Definição A complexidade de um algoritmo consiste na quantidade de esforço computacional necessária para sua execução. Esse esforço é expresso
Leia maisA Linguagem Lua Lua Puc-Rio
A Linguagem Lua Lua foi projetada e implementada por uma equipe no Tecgraf, o Grupo de Computação Gráfica da Puc-Rio (Pontifícia Universidade Católica do Rio de Janeiro). 1 Exemplos de linguagens de scripts
Leia maisNem todos os problemas algorítmicos que podem ser resolvidos em princípio podem ser resolvidos na prática: os recursos computacionais requeridos
Nem todos os problemas algorítmicos que podem ser resolvidos em princípio podem ser resolvidos na prática: os recursos computacionais requeridos (tempo ou espaço) podem ser proibitivos. 1 Suponha que duas
Leia maisLaços de repetição for, while, do-while
Computação Eletrônica Laços de repetição for, while, do-while Prof: Luciano Barbosa Estruturas de Repetição Imagine um programa que calcula a média de um aluno. Este programa é bastante simples, bastaria:
Leia maisIntrodução à Computação II Unesp Rio Claro 2012Prof. Rafael Oliveira
Recursão A recursão é bastante usada na matemática para definir funções, usando elas mesmas nas suas próprias definições. Por exemplo o cálculo de um fatorial, pode ser representada em forma de recursão
Leia mais13 Hashing (parte 2) SCC201/501 - Introdução à Ciência de Computação II
13 Hashing (parte 2) 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 Ponti Jr. (ICMCUSP)
Leia maisUNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática
Programação 1 Prof. Osório Aula 03 Pag.: 1 UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática PROGRAMAÇÃO I AULA 03 Disciplina: Linguagem
Leia maisAULA 21. Algoritmos p.760/792
AULA 21 Algoritmos p.760/792 Busca de palavras (string matching) CLRS 32 Algoritmos p.761/792 Busca de palavras em um texto Dizemos que um vetor P [1.. m] ocorre em um vetor T [1.. n] se P [1.. m] = T
Leia maisProgramação Introdução
PROGRAMAÇÃO Programação Introdução Prof. Dr. Adriano Mauro Cansian 1 Introdução Para armazenar um algoritmo na memória de um computador e para que ele possa, em seguida, comandar as operações a serem executadas,
Leia maisInformática para Ciências e Engenharias 2013/14. Teórica 7
Informática para Ciências e Engenharias 2013/14 Teórica 7 Na aula de hoje... Controlo de execução ciclos condicionais while end Exemplos raiz quadrada histograma fórmula química while while e matrizes
Leia maisEstruturas de Dados Tabelas de Espalhamento
Estruturas de Dados Tabelas de Espalhamento Prof. Eduardo Alchieri (introdução) Uma estrutura como, as árvores binárias de busca, que trabalhe na ordem de log n é muito eficiente, mas em algumas situações
Leia mais4 C odigos de Huffman 4.1 Arvores de c odigo folhas os internos n ıvel altura Arvore bin aria arvore bin aria ordenada
4 Códigos de Huffman 4.1 Árvores de código Numa árvore qualquer, os nós que não têm filhos são chamados de folhas e os demais nós são chamados de nós internos. Se um nó de uma árvore é filho de outro,
Leia maisRadix Sorting. Várias aplicações têm chaves que são inteiros, definidos dentro de um intervalo
Radix Sorting Os registros a serem ordenados podem ter chaves bastante complexas, como por exemplo sequências de caracteres (lista telefônica) o Ordenação via comparação de chaves Várias aplicações têm
Leia maisPesquisa em memória primária: hashing. Algoritmos e Estruturas de Dados II
Pesquisa em memória primária: hashing Algoritmos e Estruturas de Dados II Hashing Algoritmos vistos efetuam comparações para localizar uma chave. Os registros armazenados em uma tabela são diretamente
Leia maisBusca em Memória Primária Estrutura de Dados II
Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Busca em Memória Primária Estrutura de Dados II Estrutura de Dados II COM10078 2017-I Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br
Leia maisBusca em Memória Primária Estrutura de Dados II
Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Busca em Memória Primária Estrutura de Dados II COM10078 Estrutura de Dados II Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br
Leia maisTÉCNICO DE INFORMÁTICA - SISTEMAS
782 - Programação em C/C++ - estrutura básica e conceitos fundamentais Linguagens de programação Linguagem de programação são conjuntos de palavras formais, utilizadas na escrita de programas, para enunciar
Leia maisEstruturas de dados para listas arrays e listas ligadas
Estruturas de dados para listas arrays e listas ligadas Fernando Lobo Algoritmos e Estrutura de Dados Algumas figuras retiradas do livro Introduction to Algorithms, 3rd Edition. 1 / 29 Listas Uma lista
Leia maisANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa
ANÁLISE DE ALGORITMOS: PARTE 1 Prof. André Backes Algoritmos 2 Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa Precisamos escrever o seu algoritmo Um algoritmo
Leia maisTabelas de Dispersão. Estrutura de Dados e Algoritmos
Tabelas de Dispersão Tabelas de Dispersão Sumário Definição. Características. Resolução de colisões: dispersão com listas e dispersão aberta. Teste quadrático. Desempenho de tabelas de dispersão. Interface
Leia maisInformática para Ciências e Engenharias 2014/15. Teórica 7
Informática para Ciências e Engenharias 2014/15 Teórica 7 Na aula de hoje... Controlo de execução ciclos condicionais while end Exemplos raiz quadrada histograma fórmula química while while e matrizes
Leia maisTécnicas Inteligência Artificial
Universidade do Sul de Santa Catarina Ciência da Computação Técnicas Inteligência Artificial Aula 03 Métodos de Busca Parte 1 Prof. Max Pereira Solução de Problemas como Busca Um problema pode ser considerado
Leia maisVETORES Motivação AULA 19
AULA 19 VETORES 19.1 Motivação Considere o problema de calcular a média aritmética das notas de 5 alunos de uma disciplina e determinar e escrever o número de alunos que obtiveram nota superior à média
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 maisRefinamentos sucessivos
Refinamentos sucessivos Objetivos: Estudar a técnica de refinamentos sucessivos Jogo: 2048 Implementaremos o jogo 2048, com o objetivo de estudar a manipulação dos elementos de uma matriz Utilizaremos
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 maisCompiladores - Análise Ascendente
Compiladores - Análise Ascendente Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Análise Descendente vs. Ascendente As técnicas de análise que vimos até agora (recursiva com retrocesso,
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 maisCompiladores - Análise Ascendente
Compiladores - Análise Ascendente Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Análise Descendente vs. Ascendente As técnicas de análise que vimos até agora (recursiva com retrocesso,
Leia maisLista de Figuras Figura 1 1: Figura 1 2: Figura 1 3: Figura 1 4: Figura 1 5: Figura 1 6: Figura 1 7: Figura 1 8: Figura 1 9: Figura 1 10:
Lista de Figuras Figura 1 1: Módulo de Memória DRAM 26 Figura 1 2: Um Disco Magnético com Três Pratos e Seis Superfícies 28 Figura 1 3: Geometria de uma Superfície de Disco Magnético 29 Figura 1 4: Um
Leia maisINSTRUÇÕES DE REPETIÇÃO
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 6 INSTRUÇÕES DE REPETIÇÃO As instruções de repetição permitem fazer com que a execução de uma
Leia maisAprendizado de Máquina
Aprendizado de Máquina Template Matching Luiz Eduardo S. Oliveira Universidade Federal do Paraná Departamento de Informática http://lesoliveira.net October 25, 2012 Luiz S. Oliveira (UFPR) Aprendizado
Leia maisProgramação de Computadores
Programação de Computadores Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho Conteúdo Exercícios e implementação de algoritmos: Número capicua Constante
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 maisCapítulo 1: Alfabetos, cadeias, linguagens
Capítulo 1: Alfabetos, cadeias, linguagens Símbolos e alfabetos. Um alfabeto é, para os nossos fins, um conjunto finito não vazio cujos elementos são chamados de símbolos. Dessa maneira, os conceitos de
Leia maisÁrvores B. Hashing. Estrutura de Dados II Jairo Francisco de Souza
Árvores B Hashing Estrutura de Dados II Jairo Francisco de Souza Funções Hashing Divisão Compressão de chaves alfanuméricas Multiplicação Enlaçamento Deslocado Limite Função Meio-Quadrado Extração Transformação
Leia mais6) ESTRUTURA DE UM PROGRAMA
Página 1 de 16 6) ESTRUTURA DE UM PROGRAMA = = program ; = uses
Leia maisAula 31: Encadeamento exterior. Modelo de encadeamento exterior. Complexidade do encadeamento exterior
31.1 Aula 31: Encadeamento exterior Conceito de encadeamento Modelo de encadeamento exterior Complexidade do encadeamento exterior 31.2 Introdução Recordando: uma colisão ocorre quando duas chaves diferentes
Leia maisUniversidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Ciência da Computação
Universidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Ciência da Computação PROJETO E ANÁLISE DE ALGORITMOS Casamento Exato e Aproximado de Cadeias de Caracteres Terceiro Trabalho
Leia maisLinguagens de Domínio Específico
Linguagens de Domínio Específico Fabio Mascarenhas 2016.1 http://www.dcc.ufrj.br/~fabiom/dsl Processamento de uma DSL Gramáticas Vamos usar uma notação parecida com a de expressões regulares para definir
Leia maisDepartamento de Engenharia Rural Centro de Ciências Agrárias. Programação I
Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Algoritmos de busca Basicamente podem ser citadas duas estratégias para procurar (ou buscar) algo em uma coleção de dados: Busca
Leia maisAlfabeto, Cadeias, Operações e Linguagens
Linguagens de Programação e Compiladores - Aula 3 1 Alfabeto, Cadeias, Operações e Linguagens 1.Conjuntos Para representar um determinado conjunto é necessário buscar uma notação para representá-lo e ter
Leia mais4. Constantes. Constantes pré-definidas
4. Constantes Constantes pré-definidas O PHP possui algumas constantes pré-definidas, indicando a versão do PHP, o Sistema Operacional do servidor, o arquivo em execução, e diversas outras informações.
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 maisEstruturas de Dados 2
Estruturas de Dados 2 Técnicas de Projeto de Algoritmos Força Bruta IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/36 Técnica de Projeto de Algoritmos por Força
Leia maisEstruturas de Controle em c#
Estruturas de Controle em c# Fábio Moura Governo de Pernambuco Agenda Tipos de estruturas de controle; if; if-else; if-else-if; switch-case; while; do-while; for; foreach; Exercício. Tipos de Estruturas
Leia maisSCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)
SCC 202 Algoritmos e Estruturas de Dados I Pilhas (Stacks) (implementação dinâmica) Operações alocação encadeada dinâmica typedef struct elem{ tipo_info info; struct elem *lig; tipo_elem; typedef struct{
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 maisUm Estudo Teórico e Experimental em Algoritmos Clássicos de Busca em Texto
Um Estudo Teórico e Experimental em Algoritmos Clássicos de Busca em Texto PAULO SÉRGIO R. CARVALHO DEIVE DE OLIVEIRA ALESSANDRA GUARACY ALISSON GOMES FERNADO CESAR DA CONCEIÇÃO JOSEANE FREIRE JONES ALBUQUERQUE
Leia maisCasamento de Cadeias. Introdução. Introdução. Estrutura de Dados. Cadeia de caracteres: sequência de elementos denominados caracteres.
Introdução de Cadeias Estrutura de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM 1 Cadeia
Leia maisDepartamento de Engenharia Rural Centro de Ciências Agrárias. Programação I
Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Exercícios Variáveis compostas homogêneas Multidimensionais (matrizes e outras abstrações) Manipulação de Strings e caracteres
Leia maisHashing (Tabela de Dispersão)
Hashing (Tabela de Dispersão) Prof. Marcos Alves 2009-B Roteiro Contextualização Conceitos Básicos Hashing (método de pesquisa) Hashing Perfeito Hashing Imperfeito Colisões Métodos de Tratamento de Colisões
Leia maisAula 03: Análise de algoritmos melhor caso, pior caso e caso médio
Aula 03: Análise de algoritmos melhor caso, pior caso e caso médio David Déharbe Programa de Pós-graduação em Sistemas e Computação Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas
Leia maisAlgoritmos e Estrutura de Dados. Aula 11 Estrutura de Dados: Tabelas Hash Parte II Prof. Tiago A. E. Ferreira
Algoritmos e Estrutura de Dados Aula 11 Estrutura de Dados: Tabelas Hash Parte II Prof. Tiago A. E. Ferreira Introdução Como visto na aula passada as tabelas hash: Diminuem a quantidade de endereçamento
Leia maisProgramação de Computadores II
Programação de Computadores II 1. Programação Básica 2019.1 Slides adaptados do material de Karina Mochetti Problema, Algoritmo, Programa Um programa de computador é a implementação de um algoritmo para
Leia maisComplexidade de Algoritmos
Complexidade de Algoritmos Complexidade de Algoritmos Definição A Complexidade de um Algoritmo consiste na quantidade de trabalho necessária para a sua execução, expressa em função das operações fundamentais,
Leia maisProfessor Mauricio Lederer Algoritmos. Entrada e saída de dados
Entrada Algoritmos Entrada e saída de dados Muitas vezes, um algoritmo, para que possa trabalhar, precisa de dados de entrada informados pelo usuário, porque nem sempre é necessário ter esse tipo de dados.
Leia mais5. Expressões aritméticas
5. Expressões aritméticas 5.1. Conceito de Expressão O conceito de expressão em termos computacionais está intimamente ligado ao conceito de expressão (ou fórmula) matemática, onde um conjunto de variáveis
Leia maisUNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 04 Programa Recursivo e Máquinas Prof.ª Danielle Casillo Funções recursivas Alguma função é recursiva quando
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 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 maisSintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)
Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida) Não-terminais são nomes mnemônicos colocados entre parênteses angulares. Vocabulário terminal formado por
Leia maisComplexidade de Algoritmos
Complexidade de Algoritmos! Uma característica importante de qualquer algoritmo é seu tempo de execução! é possível determiná-lo através de métodos empíricos, considerando-se entradas diversas! é também
Leia mais