Programação Dinâmica. Programa do PA. Técnicas Avançadas de Projeto. Aulas Anteriores. Introdução. Plano de Aula. Técnicas de Projeto de Algoritmos
|
|
- Cláudia Pedroso Bentes
- 8 Há anos
- Visualizações:
Transcrição
1 Programação Dinâmica Técnicas de Projeto de Algoritmos Aula 13 Alessandro L. Koerich Pontifícia Universidade Católica do Paraná (PUCPR) Ciência da Computação 7 o Período Engenharia de Computação 5 o Período 1. Resolução de Problemas e Tipos de Problemas 6. Força Bruta Introdução 7. Dividir & Conquistar 8. Decrementar & Conquistar 9. Transformar & Conquistar 10. Compromisso Tempo-Espaço 11. Programação Dinâmica 12. Estratégia Gulosa 13. Backtracking & Branch and Bound 14. Algoritmos Aproximados Técnicas de Projeto de Algoritmos Programa do PA 2. Fundamentos 3. Notação Assintótica e Classe de Eficiência 4. Análise Matemática de Algoritmos 5. Análise Empírica de Algoritmos Fundamentos da Análise da Eficiência de Algoritmos 15. Teorema do Limite Inferior 16. Árvores de Decisão 17. Problemas P, NP e NPC Limitações Ciência/Eng. de Computação Proj. Anal. Algoritmos Aulas Anteriores Técnicas Avançadas de Projeto Estratégia Força Bruta Programação Dinâmica Estratégia Dividir & Conquistar Algoritmos Gulosos (Greedy) Estratégia Reduzir & Conquistar Algoritmos Aproximados Estratégia Transformar & Conquistar Estratégia Compromisso Tempo Espaço Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Plano de Aula Introdução Introdução Exemplo: Multiplicação de Cadeias de Matrizes A programação dinâmica se aplica tipicamente a problemas de otimização onde uma série de escolhas deve ser feita, a fim de se alcançar um solução ótima Subseqüência Comum Mais Longa Elementos da Programação Dinâmica Resumo Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
2 Introdução Introdução Resolve problemas combinando as soluções de subproblemas Aplicado quando os subproblemas não são independentes, isto é, quando os subproblemas compartilham subsubproblemas. Resolve cada subsubproblema somente uma vez e grava a resposta em uma tabela, evitando assim o trabalho de recalcular a resposta toda a vez que o subsubproblema é encontrado Em geral, a programação dinâmica é aplicada em problemas de otimização. Problemas de otimização Muitas soluções possíveis; Cada solução tem um valor; Desejamos encontrar uma solução com um valor ótimo (min ou máx). Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Introdução Introdução O desenvolvimento de um algoritmo de programação dinâmica pode ser desmembrado em: Caracterizar a estrutura de uma solução ótima Definir recursivamente o valor de uma solução ótima Calcular o valor de uma solução ótima em um processo bottom up Construir uma solução ótima a partir de informações calculadas Usaremos a programação dinâmica para resolver alguns problemas de otimização. Primeiro exemplo: programação de duas linhas de montagem Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Uma fábrica de automóveis com duas linhas de montagem Um chassis entra em cada linha de montagem Peças são adicionadas a ele em uma série de estações O automóvel sai pronto no final da linha Cada linha tem n estações numeradas com j=1,2,3,...,n Indicamos a j ésima estação na linha i por S i,j. A j ésima estação da linha 1 (S 1,j ) executa a mesma função que a j ésima estação da linha 2 (S 1,j ) Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
3 Porém, as estações foram construídas em épocas diferentes e com tecnologias diferentes, assim, o tempo exigido em cada estação varia. Indicamos o tempo de montagem exigido na estação S i,j por a i,j. Normalmente, um chassis entra e sai de uma mesma linha de montagem. Porém, no caso de um pedido urgente, um automóvel parcialmente concluído pode ser passado de uma linha de montagem a outra. Temos também e i e x i como os tempos para um chassis entrar na linha de montagem i e sair concluído da linha de montagem i respectivamente. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Problema O tempo para transferir um chassi da linha de montagem i depois da passagem pela estação S i,j é t i,j, onde i =1,2 e j=1,2,...,n 1 Determinar que estações escolher na linha 1 e quais escolher na linha 2 de modo a minimizar o tempo total de passagem de um único automóvel pela fábrica. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Como resolver o problema? Força Bruta: enumerar todos os modos possíveis e calcular quanto tempo cada um deles demora. O tempo total mais rápido resulta da escolha das estações 1, 3 e 6 da linha 1 e das estações 2, 4 e 5 da linha 2. Existem 2 n maneiras possíveis de escolher estações Ω (2 n ) impraticável para n grande Solução possível programação dinâmica Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
4 Etapa 1: A estrutura do caminho mais rápido pela fábrica Caracterizar a estrutura de uma solução ótima Considerar o modo mais rápido possível para um chassis seguir desde o ponto de partida passando pela estação S 1,j. Se j = 1, fácil: determinar somente quanto tempo demora para passar pela estação S 1,j Se j 2, há duas opções para obter S 1,j : Através de S 1,j-1, e depois diretamente para S 1,j Através de S 2,j-1, e depois transferido para S 1,j Supondo que o caminho mais rápido é através de S 1,j-1 Observação chave: devemos ter pego um caminho mais rápido a partir da entrada através de S 1,j-1 nesta solução. Se houvesse um caminho mais rápido através de S 1,j-1, nós o usaríamos para obter um caminho mais rápido através de S 1,j Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Supondo agora que o caminho mais rápido é através de S 2,j-1 Observação chave: Novamente, devemos ter pego um caminho mais rápido a partir da entrada através de S 2,j-1 nesta solução. Se houvesse um caminho mais rápido através de S 2,j-1, nós o usaríamos para obter um caminho mais rápido através de S 1,j Geralmente: Uma solução ótima para um problema (o caminho mais rápido através S 1,j ) contém dentro dele um solução ótima para subproblemas (o caminho mais rápido através S 1,j-1 ou S 2,j-1 ) Isto é uma subestrutura ótima. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Usar subestruturas ótimas para construir soluções ótimas para o problema a partir de soluções ótimas para subproblemas O caminho mais rápido através de S 1,j é tanto: Caminho mais rápido através de S 1,j-1, e depois diretamente através de S 1,j ou Caminho mais rápido através de S 2,j-1, transferência da linha 2 para linha 1, e depois através S 1,j Simetricamente... O caminho mais rápido através de S 2,j é tanto: Caminho mais rápido através de S 2,j-1, e depois diretamente através de S 2,j ou Caminho mais rápido através de S 1,j-1, transferência da linha 1 para linha 2, e depois através S 2,j Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
5 Portanto, para resolver problemas de encontrar um caminho mais rápido através de S 1,j e S 2,j, resolver os subproblemas de encontrar um caminho mais rápido através de S 1,j-1 e S 2,j-1. Etapa 2: Solução Recursiva Definir recursivamente o valor de uma solução ótima em termos das soluções ótimas dos subproblemas Subproblemas: encontrar o caminho mais rápido pela estação j em ambas as linhas, para j = 1, 2,..., n. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Seja f i [j] = o tempo mais rápido possível para levar um chassi desde o ponto de partida até a estação S i,j, onde i = 1, 2 e j = 1, 2,..., n. Meta: f* = tempo mais rápido para levar um chassi por todo o percurso na fábrica. Para j = 2,..., n: f 1 [1] = min( f 1 [ j 1] + a 1,j, f 2 [ j 1] + t 2,j-1 + a 1,j ) f 2 [1] = min( f 2 [ j 1] + a 2,j, f 1 [ j 1] + t 1,j-1 + a 2,j ) f* = min ( f 1 [n]+x 1, f 2 [n]+x 2 ) onde f 1 [1]=e 1 + a 1,1 e f 2 [1]=e 2 + a 2,1 Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Combinando as equações anteriores, obtemos as equações recursivas: f i [j] fornece o valor de uma solução ótima. E se quisermos construir uma solução ótima? e1 + a1,1 f1[ j] = min( f1[ j 1] + a e2 + a2,1 f2[ j] = min( f2[ j 1] + a 1,j 2,j, f [ j 1] + t 2, f [ j 1] + t 1 2,j-1 1,j-1 + a + a 1,j 2,j ) ) se j = 1 se j 2 se j = 1 se j 2 Definimos l i [j] = # linha (1 ou 2) cuja estação j 1 é usada em um caminho mais rápido pela estação S i,j. Onde i = 1, 2 e j = 2, 3,..., n l* = # linha cuja estação n é usada em um caminho mais rápido pela fábrica inteira. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
6 Vamos através do caminho ótimo dado pelos valores de l (linhas sombreadas na figura anterior). Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Etapa 3: Cálculo dos Tempos mais Rápidos (Computar uma solução ótima) Seja r i (j) o número de referências feitas a f i [j] em um algoritmo recursivo Poderíamos somente escrever um algoritmo recursivo baseado nas recorrências anteriores. A partir da primeira equação temos: r 1 (n) = r 2 (n) = 1 Porém, seu tempo de execução é exponencial em n. Pelas recorrências temos: r 1 (j) = r 2 (j) = r 1 (j+1)+r 2 (j+1) para j = 1, 2,..., n 1 Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Assim, r i (j) = 2 n-j Portanto, f 1 [1] sozinho é referenciado 2 n-1 vezes Prova: Indução sobre j, decrescente a partir de n Base: j = n, 2 n j = 2 0 = 1 = r i (n) Passo de indução: Assumir r i (j+1) = 2 n (j+1) Então, r i (j) = r i (j+1) + r 2 (j+1) = 2 n (j+1) + 2 n (j+1) = 2 n (j+1)+1 =2 n j Θ(2 n ) Portanto, top down não é uma boa maneira de computar f i [j]. Observação: Podemos fazer melhor. f i [j] depende somente de f 1 [j 1] e f 2 [j 1] para j 2. Portanto, a computação deve ser feita em ordem crescente de j Θ(n) Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
7 O procedimento Fast Way toma como entrada os valores (a i,j, t i,j, e i e x i ), bem como n, o número de estações em cada linha de montagem. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Etapa 4: Construção do Caminho mais Rápido pela Fábrica (Construindo uma solução ótima) Após calculados f i [j], f*, l i [j] e l*, podemos construir a seqüência de estações usadas no caminho mais rápido pela fábrica. Procedimento Print Stations Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Resumo Procedimento Print Stations Características da Programação Dinâmica: No exemplo da figura, teríamos: Linha 1: estação 6 Linha 2: estação 5 Linha 2: estação 4 Linha 1: estação 3 Linha 2: estação 2 Linha 1: estação 1 O problema precisa ter a propriedade da subestrutura ótima Então começamos com uma solução recursiva, mas ela será inviável Com isso, a transformamos em uma solução iterativa, que irá ter tempo polinomial, com a característica de calcular primeiro o valor de uma solução ótima e só depois construir a solução. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
8 Problema: Recebemos uma seqüência (cadeia) < A 1, A 2,..., A n > de n matrizes a serem multiplicadas e desejamos calcular o produto. A 1 A 2...A n Solução: Utilizar um algoritmo padrão para multiplicação de pares de matrizes. Quais pares multiplicar? Em que ordem? A multiplicação de matrizes é associativa, e assim, todas as colocações de parênteses resultam no mesmo produto. Exemplo: Para a cadeia de matrizes < A 1, A 2, A 3, A 4 >, o produto A 1 A 2 A 3 A 4 pode ser completamente colocado entre parênteses de cinco modos distintos: ( A 1 ( A 2 ( A 3 A 4 ) ) ) ( A 1 ( ( A 2 A 3 ) A 4 ) ) ( ( A 1 A 2 )(A 3 A 4 ) ) ( ( A 1 ( A 2 A 3 ))A 4 ) ( ( ( A 1 A 2 ) A 3 ) A 4 ) Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Atenção!!! O modo como uma cadeia de matrizes é colocada entre parênteses pode ter um impacto dramático sobre o custo de avaliação do produto. Considere primeiro o custo de multiplicar duas matrizes. O pseudo código do algoritmo padrão é fornecido a seguir Se A é uma matriz p x q e B é uma matriz q x r, a matriz resultante C é uma matriz p x r. O tempo para calcular C é dominado pelo número de multiplicações escalares na linha 7, que é pqr. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Exemplo: Considere o problema de uma cadeia < A 1 A 2 A 3 > de três matrizes onde as dimensões são: 10 x 100, 100 x 5 e 5 x 50 respectivamente. Se fizermos ((A 1 A 2 )A 3 )... Se fizermos (A 1 (A 2 A 3 ) )... O problema de multiplicação de cadeia de matrizes pode ser enunciado da forma a seguir: Dada uma cadeia < A 1,A 2,..., A n > de n matrizes na qual, para i = 1, 2,..., n, a matriz A i tem dimensão p i 1 p i, coloque completamente entre parênteses o produto A 1 A 2...A n de um modo que minimize o número de multiplicações escalares Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
9 Contagem do número de colocações entre parênteses. Sendo P(n) o número de alternativas para a colocação dos parênteses em uma seqüência de n matrizes. 1 P( n) = n 1 P( k) P( n k) k= 1 se n = 1 se n 2 A solução para a recorrência é Ω(2 n ) força bruta é uma estratégia não adequada. Etapa 1: A estrutura de uma parentização ótima Seja A i...j para a matriz que resulta da avaliação do produto A i A i+1...a j. Para obter a solução do problema proposto, devemos obter A 1...n que pode ser obtido pelo produto de A 1...k A k+1...n cujo custo ótimo é obtido pela soma do custo de A 1...k com A k+1...n mais o custo do produto delas. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Etapa 1: A estrutura de uma parentização ótima A sub cadeia A 1..k deve ter parentização ótima Do contrário poderíamos substituí la por outra com custo menor que o ótimo, o que é uma contradição. Logo, uma solução ótima para uma instância do problema contém soluções ótimas para as subinstâncias do mesmo problema, o que permite o emprego da programação dinâmica. Etapa 2: Uma solução ótima recursiva Definir um expressão recursiva em função das subinstâncias. Usaremos uma tabela m[i,j] 1 i j n, onde m éo número mínimo de multiplicações escalares necessárias para calcular a matriz A i...j m[i,i]=0 pois A i...i = A i, não havendo necessidade de qualquer cálculo. Para i<j, podemos usar a estrutura ótima delineada no passo 1 Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Etapa 2 (cont.): Uma solução ótima recursiva Assim A i..j pode ser dividido em duas partes: A i...k A k+1...j, i k < j, e m[i,j] é igual ao menor custo para calcular A i...k e A k+1...j, mais o custo para multiplicar essas duas matrizes. Etapa 2 (cont.): Uma solução ótima recursiva A equação recursiva pressupõe que conhecemos o valor de k. Porém existem j 1 valores possíveis para k. A definição recursiva para o custo mínimo de colocar entre parênteses o produto A i A i+1... A j se torna: O custo para multiplicar A i...k A k+1...j vale p i-1 p k p j multiplicações escalares. Desse modo obtemos: m[i,j] = m[i,k] + m[k+1,j] + p i-1 p k p j 0 m[ i, j] = { }. min m[i,k] + m[k + 1, j] + pi-1pkp j se i = j se i < j Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
10 Etapa 2 (cont.): Uma solução ótima recursiva Como indicar uma parentização ótima? O valor m[i,j] dá o custo ótimo, mas não informações para a construção de uma solução ótima Basta armazenar na matriz s[i,j] o valor de k usado para o valor ótimo de m[i,j], ou seja m[i,j] = m[i,k] + m[k+1,j] + p i-1 p k p j Etapa 3: Determinando a solução ótima Em vez de calcular recursivamente a solução para a recorrência anterior, calculamos o custo ótimo usando uma abordagem tabular de baixo para cima. Neste ponto deve-se elaborar um algoritmo para resolução do problema, Fazendo os cálculos de tal forma que nenhuma solução seja requisitada antes que a mesma já tenha sido calculada Usando a programação dinâmica passamos a ter Θ(n 2 ) subproblemas Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Etapa 3 (cont.): Determinando a solução ótima O problema (preencher a tabela m) deve ser resolvido em ordem crescente de comprimento da cadeia de matrizes O que equivale a percorrer as diagonais superiores da matriz de custo, a partir da diagonal maior. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos L2 e L3: O algoritmo calcula primeiro m[i,i]=0 para i=1,2,...,n (custos mínimos para cadeias de comprimento 1) L4 a L12: Usa a recorrência para calcular m[i,i+1] para i=1,2,...,n 1 (custos mínimos para cadeias de comprimento 2) Na segunda passagem através do loop, ele calcula m[i,i+2] para i=1,2,...,n 2 (custos mínimos para cadeias de comprimento 3) e assim por diante. Em cada etapa, o custo m[i,j] calculado em L9 e L12, depende apenas de m[i,k] e m[k+1,j] já calculadas. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
11 O tempo de execução de Matrix Chain Order é O(n 3 ). Os loops estão aninhados com profundidade três e cada índice de loop (l,i,k) toma no máximo n valores. Assim, Matrix Chain Order é muito mais eficiente que o método de força bruta (tempo exponencial) Etapa 4: Construção da solução ótima Matrix-Chain-Order determina somente o número ótimo de multiplicações escalares necessárias para calcular um produto de cadeias de matrizes. Ele não mostra diretamente como multiplicar as matrizes. A solução ótima é calculada a partir das informações armazenadas na tabela s[1...n,1...n] Cada entrada s[i,j] registra o valor de k tal que a colocação ótima dos parenteses de A i A i+1...a j divide o produto entre A k e A k+1. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Elementos da Programação Dinâmica Quando aplicar um método de programação dinâmica? Ingredientes fundamentais que um problema de otimização deve ter para que a programação dinâmica seja aplicável: Para o exemplo anterior Print Optimal Parens produz ((A 1 (A 2 A 3 )) ((A 4 A 5 )A 6 )) Subestrutura ótima Subproblemas sobrepostos Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Mostrar que a solução para um problema consiste em fazer um escolha, a qual deixa um ou mais subproblemas para resolver. Suponha que seja dada uma última escolha que leve a uma solução ótima Dada esta escolha, determinar quais subproblemas surgem e como caracterizar o espaço resultante de subproblemas Mostrar que as soluções para subproblemas usadas dentro de uma solução ótima devem ser também ótimas. Usar geralmente cut and paste Usar geralmente cut and paste: Suponha que uma das soluções dos subproblemas não seja ótima Corte a fora Cole no lugar uma solução ótima Obtenha uma melhor solução para o problema original. Contradiz a otimalidade da solução do problema. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
12 Como caracterizar o espaço dos subproblemas? Manter o espaço o mais simples possível? Expandi lo quando necessário Exemplos: Programação de uma linha de montagem Espaço de subproblemas era a maneira mais rápida a partir da entrada e através das estações S 1,j e S 2,j Não há necessidade de tentar um espaço mais geral de subproblemas Subestrutura ótima varia através dos domínios dos problemas. 1. Quantos subproblemas são usados em um solução ótima? 2. Quantas escolhas para determinar qual subproblema utilizar? Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Programação da linha de montagem 1 subproblema 2 escolhas (para S i,j, usar S 1,j-1 ou S 2,j-1 ) Subseqüência Comum mais Longa (LCS) 1 subproblema e: 1 escolha ( se x i =y i, LCS de X i-1 e Y j-1 ), ou 2 escolhas ( se x i y i, LCS de X i-1 e Y, e LCS de X e Y j-1 ) Informalmente, o tempo de execução depende (número de subproblemas) vezes (número de escolhas) Programação da linha de montagem: Θ (n) subproblemas, 2 escolhas para cada tempo de execução Θ (n) Subseqüência comum mais longa: Θ (mn) subproblemas, 2 escolhas para cada tempo de execução Θ (mn) Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Programação Dinâmica usa subestrutura ótima bottom up. Primeiro, encontrar soluções ótimas para subproblemas Então, escolher a qual utilizar em uma solução ótima para o problema. Quando estudarmos algoritmos gulosos, veremos que eles funcionam top down, primeiro fazendo uma escolha que pareça melhor e então resolvendo os subproblemas resultantes. Não se engane pensando que subestruturas ótimas se aplicam a todos os problemas de otimização. Ex: Dois problemas que parecem similares. Em ambos, são dados grafos diretos não ponderados G = (V,E), onde: V é um conjunto de vértices E é um conjunto de arestas Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
13 Encontre um caminho (seqüência de arestas conectadas) do vértice u ao vértice v. O caminho mais curto tem subestrutura ótima Caminho mais curto: encontrar o caminho u v com menos arestas. Deve ser simples (sem ciclos) pois removendo um ciclo de um caminho temos um caminho com menos arestas; Caminho simples mais longo: encontrar um caminho simples u v com mais arestas. Suponha que p é o caminho mais curto u v. Seja w qualquer vértice sobre p. Seja p 1 uma porção de p, u w. Então, p 1 é um caminho mais curto u w. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Prova: Suponha que exista um caminho mais curto p 1 u v. Cortar p 1, substituí lo por p 1 e p obter o caminho u 1 p w 2 v com menos arestas que p. O caminho mais longo tem uma subestrutura ótima? Parece que sim Mas ele não tem!! Portanto, podemos encontrar o caminho mais curto u v considerando todos os vértices intermediários w e então encontrando os caminhos mais curtos u w e w v. O mesmo argumento se aplica a p 2 Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Considere q r t = caminho mais longo entre q e t. Os seus subcaminhos são os subcaminhos mais longos? Não!!! Subcaminho entre q e r é q r. Caminho simples mais longo entre q e r é q s t r Subcaminho entre r e t é r t. Caminho simples mais longo entre r e t é r q s t Além de não existir uma subestrutura ótima, não podemos montar uma solução legal a partir da solução para subproblemas. Combinar caminho mais longos simples: q s t r q s t Não é simples!!! De fato, este problema é NP completo Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
14 Qual é a grande diferença entre o caminho mais longo e o caminho mais curto? O caminho mais curto tem subproblemas independentes A solução para um subproblema não afeta a solução de outro subproblema do mesmo problema Caminho simples mais longo: subproblemas não são independentes Considere subproblemas do caminho simples mais longo: q r e r t. O caminho simples mais longo q r utiliza s e t. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Qual é a grande diferença entre o caminho mais longo e o caminho mais curto (cont.)? Não podemos utilizar s e t para resolver o caminho simples mais longo r t, pois se o fizermos, o caminho não será simples. Subproblemas independentes: Linha de montagem e Subseqüência comum mais longa: 1 subproblema automáticamente independente Mas temos que utilizar t para encontrar o caminho simples mais longo r t. Utilizando recursos (vértices) para resolver um subproblema torná os indisponíveis para resolver outros subproblemas. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Subproblemas Sobrepostos Subproblemas sobrepostos O segundo ingrediente que um problema de otimização deve ter para a programação dinâmica ser aplicável. O espaço de subproblemas deve ser pequeno. Subproblemas Sobrepostos Subproblemas sobrepostos ocorrem quando um algoritmo recursivo revisita o mesmo problema repetidamente Bons algoritmos dividir e conquistar geralmente geram um novo problema em cada estágio da recursão. Exemplo: Merge Sort Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
15 Subproblemas Sobrepostos Subproblemas Sobrepostos Exemplo:. Matrix Chain Order procura repetidamente a solução para subproblemas em linhas inferiores quando resolve problemas em linhas superiores. Ex: a entrada m[3,4] é referenciada 4 vezes: durante o cálculo de m[2,4], m[1,4], m[3,5] e m[3,6]. Comparar com o procedimento recursivo. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Subproblemas Sobrepostos Memoização Método Alternativo: Memoization Armazene, não recompute Faça uma tabela indexada por subproblemas Quando resolver um subproblema: Buscar na tabela Se a resposta for sim, use a Senão, compute a resposta e armazene a Recursivo: Ω(2 n ) Programação Dinâmica: O(n 2 ) Em programação dinâmica, vamos um passo adiante. Determinamos em que ordem queremos acessar a tabela e preenchemos desta maneira. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Memoização Problema: Dadas duas sequências, X=<x 1, x 2,..., x m > e Y=<y 1,y 2,...y n >, encontrar a subsequência comum a ambas cujo comprimento seja o mais longo. Uma subsequência não precisa ser consecutiva (contínua), mas ela deve estar em ordem. O problema da LCS pode se resolvido por força bruta ou programação dinâmica. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
16 Algoritmo Força Bruta Para cada subseqüência de X, verificar se é uma subseqüência de Y. Tempo: Θ ( n 2 m ) 2 m subseqüências de X para verificar Cada subseqüência leva Θ (n) para verificar. Varrer Y para a primeira letra, a partir dela, varrer pela segunda letra, e assim por diante. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Etapa 1: Caracterização de uma Subseqüência Comum mais Longa Algoritmo Força Bruta : Para cada subseqüência de X, verificar se é uma subseqüência de Y. Cada subseqüência de X corresponde a um subconjunto dos índices {1,2,..., m} de X. Existem 2 m subseqüências de X. Tempo: Θ ( n 2 m ) 2 m subseqüências de X para verificar Cada subseqüência leva Θ (n) para verificar. Varrer Y para a primeira letra, a partir dela, varrer pela segunda letra, e assim por diante. Etapa 1 (cont.) Porém o problema da LCS tem uma propriedade de subestrutura ótima. Dada uma seqüência X = < x 1,x 2,...,x m >, definimos o i ésimo prefixo de X, para i=0,1,...,m como X i =< x 1,x 2,...,x i >. Ex: Se X = < A, B, C, B, D, A, B>, então X 4 = < A, B, C, B > e X 0 é a seqüência vazia. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Etapa 1 (cont.) Sejam as seqüências X = < x 1,x 2,...,x m > e Y = < y 1,y 2,...,y m > e seja Z = < z 1,z 2,...,z m > qualquer LCS de X e Y. Notação: X i = prefixo <x 1,...,x i > Y i = prefixo <y 1,...,y i > Teorema: Seja Z = <z 1,...,z k > qualquer LCS de X e Y. 1. Se x m =y n, então z k =x m e Z k 1 é uma LCS de X m 1 e Y n Se x m y n, então z k x m Z é uma LCS de X m 1 e Y. 3. Se x m y n, então z k y n Z é uma LCS de X e Y n 1. Etapa 1 (cont.) Prova: 1. Primeira mostrar que z k =x m =y n. Suponha que não. Então, faça uma subseqüência Z = <z 1,...,z k, x m >. É uma subseqüência comum de X e Y e tem comprimento k + 1 Z é uma subseqüência comum mais longa que Z contradiz Z sendo uma LCS. Agora mostrar que Z k+1 é uma LCS de X m 1 e Y n 1. Claramente, é uma subseqüência comum. Agora suponha que existe uma subseqüência comum W de X m 1 e Y n 1 que é mais longa que Z k+1 comprimento de W k. Faça a subseqüência W anexando x m a W. W é uma subseqüência comum de X e Y, tem comprimento k+1 contradiz Z sendo uma LCS. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
17 Etapa 1 (cont.) Prova (cont.): 2. Se z k x m, então Z é uma subseqüência comum de X m 1 e Y. Suponha que exista uma subseqüência W de X m 1 e Y com comprimento > k. Então W é uma subseqüência comum de X e Y contradiz Z sendo uma LCS. 3. Simétrica a 2. Portanto, uma LCS de duas seqüências contém como um prefixo uma LCS de prefixos das seqüências. Etapa 2 : Formulação Recursiva Do teorema anterior, temos que existem 1 ou 2 subproblemas a examinar quando se encontra uma LCS de X = < x 1,x 2,...,x m > e Y = < y 1,y 2,...,y m > Se x m =y n, devemos encontrar uma LCS de X m 1 e Y n 1. Se x m y n, devemos resolver 2 subproblemas: Encontrar uma LCS de X m 1 e Y. Encontrar uma LCS de X e Y n 1. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Etapa 2 (cont.): Formulação Recursiva A solução recursiva para o problema da LCS envolve estabelecer uma recorrência para o valor de uma solução ótima. Definindo c [ i,j ] = comprimento da LCS de X i e Y j. Se i=0 ou j=0, uma das seqüencias tem comprimento 0, logo LCS = 0. A subestrutura ótima do problema da LCS fornece a fórmula recursiva: Etapa 3: Calculando o Comprimento da LCS O procedimento LCS LENGTH toma duas seqüencias X e Y como entradas. Armazena os valores de c[i,j] em uma tabela c[0...m,0...n].. 0 c[ i, j] = c[ i 1, j 1] + 1 max( c[ i 1, j],c[ i, j 1]) se i = 0 ou j = 0 se i, j > 0 e x se i, j > 0 e x i i = y j y j Mantém uma tabela b[1...m,1...n] para construir a solução ótima. b[i,j] aponta para a entrada da tabela correspondente à solução ótima do subproblema escolhida ao se calcular c[i,j]. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Etapa 3(cont.): Cálculo do comprimento da solução ótima Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos
18 Etapa 4: Cálculo do comprimento da solução ótima Construção de uma LCS A chamada inicial é PRINT LCS (b,x,m,n) b[i,j] aponta para a entrada da tabela cujo subproblema usamos para resolver LCS de X i e Y j. Quando b[i,j] =, estendemos LCS em um caractere. Então a subseqüência comum mais longa = entradas contendo. Ciência/Eng. de Computação Proj. Anal. Algoritmos Ciência/Eng. de Computação Proj. Anal. Algoritmos Resumo Características da Programação Dinâmica: O problema precisa ter a propriedade da subestrutura ótima Então começamos com uma solução recursiva, mas ela será inviável Com isso, a transformamos em uma solução interativa, que irá ter tempo polinomial, com a característica de calcular primeiro o valor de uma solução ótima e só depois construir a solução. Ciência/Eng. de Computação Proj. Anal. Algoritmos
Exercícios Teóricos Resolvidos
Universidade Federal de Minas Gerais Instituto de Ciências Exatas Departamento de Matemática Exercícios Teóricos Resolvidos O propósito deste texto é tentar mostrar aos alunos várias maneiras de raciocinar
Leia maisAula 4 Estatística Conceitos básicos
Aula 4 Estatística Conceitos básicos Plano de Aula Amostra e universo Média Variância / desvio-padrão / erro-padrão Intervalo de confiança Teste de hipótese Amostra e Universo A estatística nos ajuda a
Leia maisResolução de sistemas lineares
Resolução de sistemas lineares J M Martínez A Friedlander 1 Alguns exemplos Comecemos mostrando alguns exemplos de sistemas lineares: 3x + 2y = 5 x 2y = 1 (1) 045x 1 2x 2 + 6x 3 x 4 = 10 x 2 x 5 = 0 (2)
Leia maisFaculdade de Computação
UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Disciplina : Teoria da Computação Professora : Sandra Aparecida de Amo Lista de Exercícios n o 2 Exercícios sobre Modelos de Máquinas de Turing
Leia mais6. Programação Inteira
Pesquisa Operacional II 6. Programação Inteira Faculdade de Engenharia Eng. Celso Daniel Engenharia de Produção Programação Inteira São problemas de programação matemática em que a função objetivo, bem
Leia maisSolução de problemas por meio de busca (com Python) Luis Martí DEE/PUC-Rio http://lmarti.com
Solução de problemas por meio de busca (com Python) Luis Martí DEE/PUC-Rio http://lmarti.com Python e AI (Re)-introdução ao Python. Problemas de busca e principais abordagens. Exemplos em Python Por que
Leia maisCálculo Numérico Faculdade de Engenharia, Arquiteturas e Urbanismo FEAU
Cálculo Numérico Faculdade de Engenharia, Arquiteturas e Urbanismo FEAU Prof. Dr. Sergio Pilling (IPD/ Física e Astronomia) III Resolução de sistemas lineares por métodos numéricos. Objetivos: Veremos
Leia maisJorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.1. Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.
Agenda Análise e Técnicas de Algoritmos Jorge Figueiredo Problemas de de otimização Conceitos ásicos O Problema da da Mochila Fracionária Template Genérico xemplos: Código de de Huffman Algoritmos Gulosos
Leia maisCapítulo 5: Aplicações da Derivada
Instituto de Ciências Exatas - Departamento de Matemática Cálculo I Profª Maria Julieta Ventura Carvalho de Araujo Capítulo 5: Aplicações da Derivada 5- Acréscimos e Diferenciais - Acréscimos Seja y f
Leia maisAV1 - MA 12-2012. (b) Se o comprador preferir efetuar o pagamento à vista, qual deverá ser o valor desse pagamento único? 1 1, 02 1 1 0, 788 1 0, 980
Questão 1. Uma venda imobiliária envolve o pagamento de 12 prestações mensais iguais a R$ 10.000,00, a primeira no ato da venda, acrescidas de uma parcela final de R$ 100.000,00, 12 meses após a venda.
Leia maisPedro Ribeiro 2014/2015
Programação Dinâmica Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Programação Dinâmica 2014/2015 1 / 56 Números de Fibonacci Sequência de números muito famosa definida por Leonardo Fibonacci
Leia maisN1Q1 Solução. a) Há várias formas de se cobrir o tabuleiro usando somente peças do tipo A; a figura mostra duas delas.
1 N1Q1 Solução a) Há várias formas de se cobrir o tabuleiro usando somente peças do tipo A; a figura mostra duas delas. b) Há várias formas de se cobrir o tabuleiro com peças dos tipos A e B, com pelo
Leia maisA Torre de Hanói e o Princípio da Indução Matemática
A Torre de Hanói e o Princípio da Indução Matemática I. O jogo A Torre de Hanói consiste de uma base com três pinos e um certo número n de discos de diâmetros diferentes, colocados um sobre o outro em
Leia maisEstudaremos métodos numéricos para resolução de sistemas lineares com n equações e n incógnitas. Estes podem ser:
1 UNIVERSIDADE FEDERAL DE VIÇOSA Departamento de Matemática - CCE Cálculo Numérico - MAT 271 Prof.: Valéria Mattos da Rosa As notas de aula que se seguem são uma compilação dos textos relacionados na bibliografia
Leia maisMaterial Teórico - Aplicações das Técnicas Desenvolvidas. Exercícios e Tópicos Relacionados a Combinatória. Segundo Ano do Ensino Médio
Material Teórico - Aplicações das Técnicas Desenvolvidas Exercícios e Tópicos Relacionados a Combinatória Segundo Ano do Ensino Médio Prof Cícero Thiago Bernardino Magalhães Prof Antonio Caminha Muniz
Leia maisMD Sequências e Indução Matemática 1
Sequências Indução Matemática Renato Martins Assunção assuncao@dcc.ufmg.br Antonio Alfredo Ferreira Loureiro loureiro@dcc.ufmg.br MD Sequências e Indução Matemática 1 Introdução Uma das tarefas mais importantes
Leia maisInteligência Artificial. Metodologias de Busca
Inteligência Artificial Metodologias de Busca 1 Solução de problemas como Busca Um problema pode ser considerado como um objetivo Um conjunto de ações podem ser praticadas para alcançar esse objetivo Ao
Leia maisUm jogo de preencher casas
Um jogo de preencher casas 12 de Janeiro de 2015 Resumo Objetivos principais da aula de hoje: resolver um jogo com a ajuda de problemas de divisibilidade. Descrevemos nestas notas um jogo que estudamos
Leia maisProgramação em papel quadriculado
4 NOME DA AULA: Programação em papel quadriculado Tempo de aula: 45 60 minutos Tempo de preparação: 10 minutos Objetivo principal: ajudar os alunos a entender como a codificação funciona. RESUMO Ao "programar"
Leia maisTestedegeradoresde. Parte X. 38 Testes de Ajuste à Distribuição. 38.1 Teste Chi-Quadrado
Parte X Testedegeradoresde números aleatórios Os usuários de uma simulação devem se certificar de que os números fornecidos pelo gerador de números aleatórios são suficientemente aleatórios. O primeiro
Leia maisNotas de Cálculo Numérico
Notas de Cálculo Numérico Túlio Carvalho 6 de novembro de 2002 2 Cálculo Numérico Capítulo 1 Elementos sobre erros numéricos Neste primeiro capítulo, vamos falar de uma limitação importante do cálculo
Leia maisFACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2
FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO Projeto e Análise de Algoritmos II Lista de Exercícios 2 Prof. Osvaldo. 1. Desenvolva algoritmos para as operações abaixo e calcule a complexidade
Leia maisProf. Daniela Barreiro Claro
Prof. Daniela Barreiro Claro SQL, SQL3 e OQL são linguagens declarativas O SGBD deve processar e otimizar estas consultas antes delas serem efetivamente executadas Uma consulta possui muitas estratégias
Leia maisNível 1 IV FAPMAT 28/10/2007
1 Nível 1 IV FAPMAT 28/10/2007 1. Sabendo que o triângulo ABC é isósceles, calcule o perímetro do triângulo DEF. a ) 17,5 cm b ) 25 cm c ) 27,5 cm d ) 16,5 cm e ) 75 cm 2. Em viagem à Argentina, em julho
Leia maisExercícios Adicionais
Exercícios Adicionais Observação: Estes exercícios são um complemento àqueles apresentados no livro. Eles foram elaborados com o objetivo de oferecer aos alunos exercícios de cunho mais teórico. Nós recomendamos
Leia mais7 - Análise de redes Pesquisa Operacional CAPÍTULO 7 ANÁLISE DE REDES. 4 c. Figura 7.1 - Exemplo de um grafo linear.
CAPÍTULO 7 7 ANÁLISE DE REDES 7.1 Conceitos Básicos em Teoria dos Grafos Diversos problemas de programação linear, inclusive os problemas de transporte, podem ser modelados como problemas de fluxo de redes.
Leia maisUnidade 5: Sistemas de Representação
Arquitetura e Organização de Computadores Atualização: 9/8/ Unidade 5: Sistemas de Representação Números de Ponto Flutuante IEEE 754/8 e Caracteres ASCII Prof. Daniel Caetano Objetivo: Compreender a representação
Leia mais1. Introdução. Avaliação de Usabilidade Página 1
1. Introdução Avaliação de Usabilidade Página 1 Os procedimentos da Avaliação Heurística correspondem às quatro fases abaixo e no final é apresentado como resultado, uma lista de problemas de usabilidade,
Leia maisExercícios 1. Determinar x de modo que a matriz
setor 08 080509 080509-SP Aula 35 MATRIZ INVERSA Uma matriz quadrada A de ordem n diz-se invertível, ou não singular, se, e somente se, existir uma matriz que indicamos por A, tal que: A A = A A = I n
Leia maisRelatório Trabalho Prático 2 : Colônia de Formigas para Otimização e Agrupamento
Relatório Trabalho Prático 2 : Colônia de Formigas para Otimização e Agrupamento Ramon Pereira Lopes Rangel Silva Oliveira 31 de outubro de 2011 1 Introdução O presente documento refere-se ao relatório
Leia maisÁlgebra. SeM MiSTéRio
Álgebra SeM MiSTéRio Série SeM MiSTéRio Alemão Sem Mistério Álgebra Sem Mistério Cálculo Sem Mistério Conversação em Alemão Sem Mistério Conversação em Espanhol Sem Mistério Conversação em Francês Sem
Leia maisUnidade 3 Função Logarítmica. Definição de logaritmos de um número Propriedades operatórias Mudança de base Logaritmos decimais Função Logarítmica
Unidade 3 Função Logarítmica Definição de aritmos de um número Propriedades operatórias Mudança de base Logaritmos decimais Função Logarítmica Definição de Logaritmo de um número Suponha que certo medicamento,
Leia maisSoluções Nível 1 5 a e 6 a séries (6º e 7º anos) do Ensino Fundamental
a e 6 a séries (6º e 7º anos) do Ensino Fundamental 1. (alternativa C) Os números 0,01 e 0,119 são menores que 0,12. Por outro lado, 0,1 e 0,7 são maiores que 0,. Finalmente, 0,29 é maior que 0,12 e menor
Leia maisUNIDADE 6 - PROGRAMAÇÃO MODULAR
UNIDADE 6 - PROGRAMAÇÃO MODULAR Até o momento as estruturas de controle (seqüência, seleção e repetição) de um algoritmo definia-o como um bloco lógico (início e fim). À medida que os problemas a serem
Leia maisRetas e Planos. Equação Paramétrica da Reta no Espaço
Retas e lanos Equações de Retas Equação aramétrica da Reta no Espaço Considere o espaço ambiente como o espaço tridimensional Um vetor v = (a, b, c) determina uma direção no espaço Dado um ponto 0 = (x
Leia maisAlgoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo
Algoritmos e Estruturas de Dados I 01/2013 Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo Problema 1 Suponha que soma (+) e subtração (-) são as únicas operações disponíveis em
Leia maisDois eventos são disjuntos ou mutuamente exclusivos quando não tem elementos em comum. Isto é, A B = Φ
Probabilidade Vimos anteriormente como caracterizar uma massa de dados, como o objetivo de organizar e resumir informações. Agora, apresentamos a teoria matemática que dá base teórica para o desenvolvimento
Leia maisProgramação Funcional. Aula 5. Funções Recursivas. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2011.
Programação Funcional Aula 5 Funções Recursivas José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011.2 1/39 1 Funções recursivas 2 Recursividade mútua 3 Recursividade
Leia maisObjetivo principal: aprender como definir e chamar funções.
12 NOME DA AULA: Escrevendo músicas Duração da aula: 45 60 minutos de músicas durante vários dias) Preparação: 5 minutos (se possível com introduções Objetivo principal: aprender como definir e chamar
Leia maisInteligência Artificial Prof. Marcos Quinet Pólo Universitário de Rio das Ostras PURO Universidade Federal Fluminense UFF
Inteligência Artificial Prof. Marcos Quinet Pólo Universitário de Rio das Ostras PURO Universidade Federal Fluminense UFF No capítulo anterior... Estratégias de busca auxiliadas por heurísticas (A*, BRPM)
Leia maisProgramação Dinâmica
fib(5) fib(4) fib(3) fib(3) fib(2) fib(2) fib(1) fib(2) fib(1) fib(1) fib(0) fib(1) fib(0) fib(1) fib(0) Uma metodologia de resolução de problemas Center for Research in Advanced Computing Systems (CRACS
Leia maisLista 1 para a P2. Operações com subespaços
Lista 1 para a P2 Observação 1: Estes exercícios são um complemento àqueles apresentados no livro. Eles foram elaborados com o objetivo de oferecer aos alunos exercícios de cunho mais teórico. Nós sugerimos
Leia maisBanco de Dados I 2007. Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli
Banco de Dados I 2007 Módulo V: Indexação em Banco de Dados (Aulas 4) Clodis Boscarioli Agenda: Indexação em SQL; Vantagens e Custo dos Índices; Indexação no PostgreSQL; Dicas Práticas. Índice em SQL Sintaxe:
Leia maisP r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m - 2 0 1 3 P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:
Inteligência É a faculdade de criar objetos artificiais, especialmente ferramentas para fazer ferramentas. Henri Bergson. WHILE Além dos comandos if-else e switch, o controle de fluxo de um programa pode
Leia maisAula 4 Conceitos Básicos de Estatística. Aula 4 Conceitos básicos de estatística
Aula 4 Conceitos Básicos de Estatística Aula 4 Conceitos básicos de estatística A Estatística é a ciência de aprendizagem a partir de dados. Trata-se de uma disciplina estratégica, que coleta, analisa
Leia maisSistemas de Apoio à Decisão
Sistemas de Apoio à Decisão Processo de tomada de decisões baseia-se em informação toma em consideração objectivos toma em consideração conhecimento sobre o domínio. Modelar o processo de tomada de decisões
Leia mais36 a Olimpíada Brasileira de Matemática Nível Universitário Primeira Fase
36 a Olimpíada Brasileira de Matemática Nível Universitário Primeira Fase Problema 1 Turbo, o caracol, está participando de uma corrida Nos últimos 1000 mm, Turbo, que está a 1 mm por hora, se motiva e
Leia maisTecnologia da Informação Prof. Mário Henrique de Souza Pardo Resumo Aula 4
Tecnologia da Informação Prof. Mário Henrique de Souza Pardo Resumo Aula 4 1 MS-Excel Aplicando funções às suas fórmulas de Excel (continuação) Serão vistas, nesta aula as funções de busca e referência
Leia maisTRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com
- Aula 3-1. A CAMADA DE REDE (Parte 1) A camada de Rede está relacionada à transferência de pacotes da origem para o destino. No entanto, chegar ao destino pode envolver vários saltos em roteadores intermediários.
Leia maisALGORITMOS E FLUXOGRAMAS
ALGORITMOS E FLUXOGRAMAS Prof. André Backes INTRODUÇÃO Computadores = cérebros eletrônicos? Computadores são máquinas e, por si sós, não podem ser inteligentes. Alguém as projetou e deu a ela todas as
Leia maisPROGRAMAÇÃO ESTRUTURADA. CC 2º Período
PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 06: Ponteiros Declarando e utilizando ponteiros Ponteiros e vetores Inicializando ponteiros Ponteiros para Ponteiros Cuidados a serem
Leia mais1. A corrida de vetores numa folha de papel.
1. A corrida de vetores numa folha de papel. desenhando a pista. o movimento dos carros. o início da corrida. as regras do jogo. 2. A corrida no computador. o número de jogadores. o teclado numérico. escolhendo
Leia maisMaterial Teórico - Módulo de Métodos sofisticados de contagem. Princípio das Casas dos Pombos. Segundo Ano do Ensino Médio
Material Teórico - Módulo de Métodos sofisticados de contagem Princípio das Casas dos Pombos Segundo Ano do Ensino Médio Prof. Cícero Thiago Bernardino Magalhães Prof. Antonio Caminha Muniz Neto Em Combinatória,
Leia mais4Distribuição de. freqüência
4Distribuição de freqüência O objetivo desta Unidade é partir dos dados brutos, isto é, desorganizados, para uma apresentação formal. Nesse percurso, seção 1, destacaremos a diferença entre tabela primitiva
Leia maisTabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Leia maisProblema de Otimização Combinatória
Problema de Otimização Combinatória Otimização é o processo de encontrar e comparar soluções factíveis até que nenhuma solução melhor possa ser encontrada. Essas soluções são ditas boas ou ruins em termos
Leia maisDadas a base e a altura de um triangulo, determinar sua área.
Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares
Leia maisProbabilidade e Estatística I Antonio Roque Aula 11 Probabilidade Elementar: Novos Conceitos
Probabilidade Elementar: Novos Conceitos Vamos começar com algumas definições: Experimento: Qualquer processo ou ação bem definida que tenha um conjunto de resultados possíveis 1) Lançamento de um dado;
Leia maisINE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA
INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA PARA A COMPUTAÇÃO PROF. DANIEL S. FREITAS UFSC - CTC - INE Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.1/59 2 - FUNDAMENTOS 2.1) Teoria dos Conjuntos 2.2) Números
Leia maispor séries de potências
Seção 23: Resolução de equações diferenciais por séries de potências Até este ponto, quando resolvemos equações diferenciais ordinárias, nosso objetivo foi sempre encontrar as soluções expressas por meio
Leia maisResolução da lista de exercícios de casos de uso
Resolução da lista de exercícios de casos de uso 1. Explique quando são criados e utilizados os diagramas de casos de uso no processo de desenvolvimento incremental e iterativo. Na fase de concepção se
Leia maisTÉCNICAS DE PROGRAMAÇÃO
TÉCNICAS DE PROGRAMAÇÃO (Adaptado do texto do prof. Adair Santa Catarina) ALGORITMOS COM QUALIDADE MÁXIMAS DE PROGRAMAÇÃO 1) Algoritmos devem ser feitos para serem lidos por seres humanos: Tenha em mente
Leia maisTrabalho Computacional
Universidade Federal do Espírito Santo Departamento de Informática Profª Claudia Boeres Teoria dos Grafos - 2014/2 Trabalho Computacional 1. Objetivo Estudo e implementação de algoritmos para resolução
Leia maisDisciplina de Projetos e Análise de Algoritmos
Aula 6 - A Maior Subsequência Comum Possível (Programação Dinâmica Parte IV) Aplicações na Biologia Um problema bastante em voga na Biologia é a análise do DNA de dois ou mais organismos distintos. Um
Leia maisSolução da prova da 1 a fase OBMEP 2008 Nível 1
OBMEP 00 Nível 1 1 QUESTÃO 1 Como Leonardo da Vinci nasceu 91 anos antes de Pedro Américo, ele nasceu no ano 14 91 = 145. Por outro lado, Portinari nasceu 451 anos depois de Leonardo da Vinci, ou seja,
Leia maisProcessos Estocásticos
Processos Estocásticos Terceira Lista de Exercícios 22 de julho de 20 Seja X uma VA contínua com função densidade de probabilidade f dada por Calcule P ( < X < 2. f(x = 2 e x x R. A fdp dada tem o seguinte
Leia maisAulas 17 & 18. Comutação Rápida a Pacote. Eytan Modiano MIT
Aulas 17 & 18 Comutação Rápida a Pacote Eytan Modiano MIT 1 Comutador a Pacote Etiqueta Um comutador a pacote consiste de uma máquina de roteamento (table lookup), um escalonador e uma máquina de comutação.
Leia maisSOCIEDADE BRASILEIRA DE MATEMÁTICA MESTRADO PROFISSIONAL EM REDE NACIONAL PROFMAT
SOCIEDADE BRASILEIRA DE MATEMÁTICA MESTRADO PROFISSIONAL EM REDE NACIONAL PROFMAT GABARITO da 3 a Avaliação Nacional de Aritmética - MA14-21/12/2013 Questão 1. (pontuação: 2) (1,0) a) Enuncie e demonstre
Leia maisA Matemática do ENEM em Bizus
A Matemática do ENEM em Bizus Neste primeiro artigo sobre a Matemática do ENEM, eu quero abordar a estratégia do conteúdo, tendo por base as provas anteriores e as tendências de abordagem. Quando confrontamos
Leia maisComplexidade de Algoritmos. Edson Prestes
Edson Prestes Caminhos de custo mínimo em grafo orientado Este problema consiste em determinar um caminho de custo mínimo a partir de um vértice fonte a cada vértice do grafo. Considere um grafo orientado
Leia maisUma expressão básica em SQL consiste em três cláusulas: select, from e where.
Introdução a Banco de Dados O.K. Takai; I.C.Italiano; J.E. Ferreira. 67 8 A Linguagem SQL A linguagem SQL é um padrão de linguagem de consulta comercial que usa uma combinação de construtores em Álgebra
Leia maisPROPOSTAS DE TRABALHO PARA OS ALUNOS A PARTIR DE JOGOS 2º ANO. Adriana da Silva Santi Coordenação Pedagógica de Matemática
PROPOSTAS DE TRABALHO PARA OS ALUNOS A PARTIR DE JOGOS 2º ANO Adriana da Silva Santi Coordenação Pedagógica de Matemática Piraquara Abril/214 1 JOGOS E PROPOSTAS DE TRABALHO PARA OS ALUNOS JOGO DOS 6 PALITOS
Leia maisMetodologia para seleção de amostras de contratos de obras públicas (jurisdicionados) utilizando a programação linear aplicativo Solver
REVISTA Metodologia para seleção de amostras de contratos de obras públicas (jurisdicionados) utilizando a programação linear aplicativo Solver André Mainardes Berezowski 1 Resumo Trata da apresentação
Leia maisCapítulo 3 - Sistemas de Equações Lineares
Capítulo 3 - Sistemas de Equações Lineares Carlos Balsa balsa@ipb.pt Departamento de Matemática Escola Superior de Tecnologia e Gestão de Bragança Matemática I - 1 o Semestre 2011/2012 Matemática I 1/
Leia maisFundamentos de Teste de Software
Núcleo de Excelência em Testes de Sistemas Fundamentos de Teste de Software Módulo 2- Teste Estático e Teste Dinâmico Aula 6 Teste Dinâmico: Técnicas de Especificação SUMÁRIO INTRODUÇÃO... 3 TÉCNICAS BASEADAS
Leia maisCapítulo 3 - Sistemas de Equações Lineares
Capítulo 3 - Sistemas de Equações Lineares Carlos Balsa balsa@ipb.pt Departamento de Matemática Escola Superior de Tecnologia e Gestão de Bragança Matemática I - 1 o Semestre 2011/2012 Matemática I 1/
Leia maisO mecanismo de alocação da CPU para execução de processos constitui a base dos sistemas operacionais multiprogramados.
O mecanismo de alocação da CPU para execução de processos constitui a base dos sistemas operacionais multiprogramados. A multiprogramação tem como objetivo permitir que, a todo instante, haja algum processo
Leia maisPrograma Olímpico de Treinamento. Aula 9. Curso de Combinatória - Nível 2. Tabuleiros. Prof. Bruno Holanda
Programa Olímpico de Treinamento Curso de Combinatória - Nível Prof. Bruno Holanda Aula 9 Tabuleiros Quem nunca brincou de quebra-cabeça? Temos várias pecinhas e temos que encontrar uma maneira de unir
Leia maisPrimeiros passos das Planilhas de Obra v2.6
Primeiros passos das Planilhas de Obra v2.6 Instalação, configuração e primeiros passos para uso das planilhas de obra Elaborado pela Equipe Planilhas de Obra.com Conteúdo 1. Preparar inicialização das
Leia maisLista de Exercícios Resolvida. Associação de resistores. Prof. Paulo Roberto Ω Ω
Lista de Exercícios Resolvida Associação de resistores Prof. Paulo Roberto 1. (Espcex (Aman) 01) Um circuito elétrico é constituído por um resistor de 4 e outro resistor de. Esse circuito é submetido a
Leia maisCálculo em Computadores - 2007 - trajectórias 1. Trajectórias Planas. 1 Trajectórias. 4.3 exercícios... 6. 4 Coordenadas polares 5
Cálculo em Computadores - 2007 - trajectórias Trajectórias Planas Índice Trajectórias. exercícios............................................... 2 2 Velocidade, pontos regulares e singulares 2 2. exercícios...............................................
Leia maisUsando o do-file editor Automatizando o Stata
Usando o do-file editor Automatizando o Stata 1 O QUE É O EDITOR DE DO-FILE O Stata vem com um editor de texto integrado, o do-file editor (editor de do-files, em português), que pode ser usado para executar
Leia maisESTUDO DE VIABILIDADE. Santander, Victor - Unioeste Aula de Luiz Eduardo Guarino de Vasconcelos
ESTUDO DE VIABILIDADE Santander, Victor - Unioeste Aula de Luiz Eduardo Guarino de Vasconcelos Objetivos O que é um estudo de viabilidade? O que estudar e concluir? Benefícios e custos Análise de Custo/Benefício
Leia maisAnálise de Arredondamento em Ponto Flutuante
Capítulo 2 Análise de Arredondamento em Ponto Flutuante 2.1 Introdução Neste capítulo, chamamos atenção para o fato de que o conjunto dos números representáveis em qualquer máquina é finito, e portanto
Leia maisARQUITETURA DE COMPUTADORES
1 ARQUITETURA DE COMPUTADORES U C P Prof. Leandro Coelho Plano de Aula 2 Aula Passada Definição Evolução dos Computadores Histórico Modelo de Von-Neumann Básico CPU Mémoria E/S Barramentos Plano de Aula
Leia mais1) Eficiência e Equilíbrio Walrasiano: Uma Empresa
1) Eficiência e Equilíbrio Walrasiano: Uma Empresa Suponha que há dois consumidores, Roberto e Tomás, dois bens abóbora (bem 1) e bananas (bem ), e uma empresa. Suponha que a empresa 1 transforme 1 abóbora
Leia maisx0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas?
Recorrências Muitas vezes não é possível resolver problemas de contagem diretamente combinando os princípios aditivo e multiplicativo. Para resolver esses problemas recorremos a outros recursos: as recursões
Leia maisPlanejamento de Aula - Ferramenta Mar aberto
Planejamento de Aula - Ferramenta Mar aberto Planejar uma aula é uma arte não uma tarefa. O planejamento de aula através da ferramenta Mar Aberto ajuda e contribui para infinitas possibilidades para seu
Leia maisRESOLUÇÃO DAS QUESTÕES DE RACIOCÍNIO LÓGICO-MATEMÁTICO
RESOLUÇÃO DAS QUESTÕES DE RACIOCÍNIO LÓGICO-MATEMÁTICO Caro aluno, Disponibilizo abaixo a resolução resumida das questões de Raciocínio Lógico-Matemático da prova de Técnico de Atividade Judiciária do
Leia maisPotenciação no Conjunto dos Números Inteiros - Z
Rua Oto de Alencar nº 5-9, Maracanã/RJ - tel. 04-98/4-98 Potenciação no Conjunto dos Números Inteiros - Z Podemos epressar o produto de quatro fatores iguais a.... por meio de uma potência de base e epoente
Leia mais4 Estudo de caso: Problema de seqüenciamento de carros
4 Estudo de caso: Problema de seqüenciamento de carros O problema de seqüenciamento de carros em linhas de produção das indústrias automobilísticas é um tipo particular de problema de escalonamento que
Leia maisRegras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos
Lógica Aula 2 Técnicas de Programação Criando algoritmos Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos Criando
Leia maisCotagem de dimensões básicas
Cotagem de dimensões básicas Introdução Observe as vistas ortográficas a seguir. Com toda certeza, você já sabe interpretar as formas da peça representada neste desenho. E, você já deve ser capaz de imaginar
Leia maisCurvas em coordenadas polares
1 Curvas em coordenadas polares As coordenadas polares nos dão uma maneira alternativa de localizar pontos no plano e são especialmente adequadas para expressar certas situações, como veremos a seguir.
Leia mais5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES
CAPÍTULO 5 5 VETORES E MATRIZES 5.1 Vetores Um vetor armazena uma determinada quantidade de dados de mesmo tipo. Vamos supor o problema de encontrar a média de idade de 4 pessoas. O programa poderia ser:
Leia maisLÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE I. Prof. Dr. Daniel Caetano 2012-1
LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE I Prof. Dr. Daniel Caetano 2012-1 Objetivos Compreender do que é composto um programa Compreender o que é lógica Compreender
Leia maisINSTITUTO TECNOLÓGICO
PAC - PROGRAMA DE APRIMORAMENTO DE CONTEÚDOS. ATIVIDADES DE NIVELAMENTO BÁSICO. DISCIPLINAS: MATEMÁTICA & ESTATÍSTICA. PROFº.: PROF. DR. AUSTER RUZANTE 1ª SEMANA DE ATIVIDADES DOS CURSOS DE TECNOLOGIA
Leia maisUniversidade Federal de São João Del Rei - UFSJ
Universidade Federal de São João Del Rei - UFSJ Instituída pela Lei 0.45, de 9/04/00 - D.O.U. de /04/00 Pró-Reitoria de Ensino de Graduação - PROEN Disciplina: Cálculo Numérico Ano: 03 Prof: Natã Goulart
Leia maisEstatística II Antonio Roque Aula 9. Testes de Hipóteses
Testes de Hipóteses Os problemas de inferência estatística tratados nas aulas anteriores podem ser enfocados de um ponto de vista um pouco diferente: ao invés de se construir intervalos de confiança para
Leia mais