Slides da disciplina de Análise de Algoritmos, ministrada pelo Prof. Marcelo H. Carvalho no curso de Pós-Graduação em Ciência da Computação, FACOM - UFMS.
Programação dinâmica é um método para resolver problemas de otimização de forma eficiente através da memorização das soluções de subproblemas, evitando recalcular sobreposições. Aplica-se quando os subproblemas têm subestrutura ótima e há sobreposição. Um exemplo é o cálculo de Fibonacci, que pode ser otimizado de exponencial para linear usando programação dinâmica.
O documento apresenta um algoritmo de programação dinâmica para resolver o problema da multiplicação de cadeias de matrizes. O algoritmo calcula o custo ótimo de realizar as multiplicações considerando todas as possíveis ordens, armazenando os resultados para evitar recalcular subproblemas. A solução ótima é aquela que minimiza o custo total da multiplicação.
O documento discute a programação dinâmica, que surgiu após a Segunda Guerra Mundial para resolver problemas de decisão multiestágios de forma otimizada. A programação dinâmica utiliza decomposição recursiva para solucionar problemas de otimização de forma sequencial. O princípio da otimalidade estabelece que as decisões futuras devem ser ótimas dadas as decisões passadas, levando à equação de Bellman fundamental para a programação dinâmica.
Este documento discute a relação entre matemática e música ao longo da história, destacando como Pitágoras usou o monocórdio para estabelecer relações matemáticas entre comprimentos de corda e intervalos musicais, levando à escala pitagórica, e como a escala temperada posteriormente resolveu problemas da escala pitagórica ao igualar intervalos.
Este documento discute conceitos básicos de produção e custos em três frases ou menos:
Introduz os objetivos de discutir produção, custos e suas definições essenciais; descreve a metodologia de revisão bibliográfica utilizada; e resume os principais pontos sobre função de produção, tipos de custos, e importância da teoria de produção e custos.
Este documento apresenta um resumo sobre linguagens formais e autômatos. Ele discute conceitos básicos de linguagens regulares, incluindo autômatos finitos, expressões regulares e gramáticas regulares. O capítulo 3 se concentra especificamente em linguagens regulares, definindo sistemas de estados finitos, composição seqüencial, não-determinista e autômatos finitos.
Este documento apresenta os conceitos de minimização de autômatos finitos determinísticos (AFD) em 3 frases:
1) Apresenta os pré-requisitos e o algoritmo de minimização de AFD que identifica estados equivalentes e os unifica para gerar o autômato finito mínimo com o menor número de estados possível;
2) Discutem exemplos para ilustrar a aplicação do algoritmo de minimização, incluindo a construção de uma tabela de estados e marcação dos estados equivalentes;
3) Encerra apresentando
O documento discute funções modulares, definindo módulo como a distância entre dois pontos no eixo real e apresentando propriedades e exemplos de funções modulares como |x|, |x-1|, |x2-4|. Também aborda equações e inequações modulares, mostrando como resolvê-las usando propriedades dos módulos como |x| ≤ a ⇔ -a ≤ x ≤ a.
Programação dinâmica é um método para resolver problemas de otimização de forma eficiente através da memorização das soluções de subproblemas, evitando recalcular sobreposições. Aplica-se quando os subproblemas têm subestrutura ótima e há sobreposição. Um exemplo é o cálculo de Fibonacci, que pode ser otimizado de exponencial para linear usando programação dinâmica.
O documento apresenta um algoritmo de programação dinâmica para resolver o problema da multiplicação de cadeias de matrizes. O algoritmo calcula o custo ótimo de realizar as multiplicações considerando todas as possíveis ordens, armazenando os resultados para evitar recalcular subproblemas. A solução ótima é aquela que minimiza o custo total da multiplicação.
O documento discute a programação dinâmica, que surgiu após a Segunda Guerra Mundial para resolver problemas de decisão multiestágios de forma otimizada. A programação dinâmica utiliza decomposição recursiva para solucionar problemas de otimização de forma sequencial. O princípio da otimalidade estabelece que as decisões futuras devem ser ótimas dadas as decisões passadas, levando à equação de Bellman fundamental para a programação dinâmica.
Este documento discute a relação entre matemática e música ao longo da história, destacando como Pitágoras usou o monocórdio para estabelecer relações matemáticas entre comprimentos de corda e intervalos musicais, levando à escala pitagórica, e como a escala temperada posteriormente resolveu problemas da escala pitagórica ao igualar intervalos.
Este documento discute conceitos básicos de produção e custos em três frases ou menos:
Introduz os objetivos de discutir produção, custos e suas definições essenciais; descreve a metodologia de revisão bibliográfica utilizada; e resume os principais pontos sobre função de produção, tipos de custos, e importância da teoria de produção e custos.
Este documento apresenta um resumo sobre linguagens formais e autômatos. Ele discute conceitos básicos de linguagens regulares, incluindo autômatos finitos, expressões regulares e gramáticas regulares. O capítulo 3 se concentra especificamente em linguagens regulares, definindo sistemas de estados finitos, composição seqüencial, não-determinista e autômatos finitos.
Este documento apresenta os conceitos de minimização de autômatos finitos determinísticos (AFD) em 3 frases:
1) Apresenta os pré-requisitos e o algoritmo de minimização de AFD que identifica estados equivalentes e os unifica para gerar o autômato finito mínimo com o menor número de estados possível;
2) Discutem exemplos para ilustrar a aplicação do algoritmo de minimização, incluindo a construção de uma tabela de estados e marcação dos estados equivalentes;
3) Encerra apresentando
O documento discute funções modulares, definindo módulo como a distância entre dois pontos no eixo real e apresentando propriedades e exemplos de funções modulares como |x|, |x-1|, |x2-4|. Também aborda equações e inequações modulares, mostrando como resolvê-las usando propriedades dos módulos como |x| ≤ a ⇔ -a ≤ x ≤ a.
O documento resume as principais características do tecido conjuntivo, incluindo suas células, tipos de tecido conjuntivo como frouxo, denso e adiposo, e a formação dos ossos através da ossificação intramembranosa e endocondral.
Plano de aula po1 capitulo 6 método simplex 2015 vrs 0000 - fazer.ppt [modo...Luis Duncan
O documento descreve o método Simplex para resolver problemas de programação linear (PPL), incluindo como colocar um PPL na forma padrão e implementar o algoritmo Simplex. O método Simplex envolve colocar o PPL em uma forma matricial adequada e, em seguida, iterar por meio de quadros para otimizar a função objetivo, resultando em uma solução ótima ou não para o PPL.
O documento discute os conceitos de monopólio e discriminação de preços, identificando três graus de discriminação de preços e as condições necessárias para cada um. Também aborda a regulação de monopólios pelo governo por meio de impostos e a maximização de lucros pelo monopólio.
O documento discute os processos metabólicos de catabolismo e anabolismo, as vias do metabolismo energético como glicólise, ciclo de Krebs e cadeia respiratória, e a produção e efeitos dos radicais livres no metabolismo aeróbico.
1) O documento discute os conceitos de compensação de Slutsky e Hicks, e como eles se relacionam com os efeitos substituição e renda.
2) É apresentada a equação de Slutsky, que relaciona os efeitos substituição de Slutsky e Hicks.
3) Dois casos especiais são discutidos: complementos perfeitos e preferências quase-lineares.
Uma função quadrática é definida como f(x) = ax2 + bx + c, onde a, b e c são coeficientes reais e a ≠ 0. O gráfico de uma função quadrática é uma parábola, cuja concavidade depende do sinal de a. Quanto maior o valor absoluto de a, menor a abertura da parábola.
1) O documento discute equações de primeiro e segundo grau, incluindo monômios, polinômios, adição, subtração, multiplicação e divisão destes.
2) É explicado o que são equações literais e como resolver equações em ordem a uma variável específica.
3) Diferentes tipos de equações são apresentados como equações com parênteses, fracções e do segundo grau.
O documento discute conceitos econômicos básicos. Explica que economia estuda a administração dos recursos escassos para produzir bens e serviços e distribuí-los para consumo. Divide a economia em descritiva, teórica e política. A teoria econômica é dividida em microeconomia, que estuda indivíduos e empresas, e macroeconomia, que analisa a economia como um todo.
Este documento discute o tópico da derivação em matemática. Explica o conceito de derivada como sendo a inclinação de uma curva e apresenta exemplos de como calcular derivadas de funções como polinomiais, irracionais, funções do produto e quociente. Também apresenta aplicações da derivação em economia, como o cálculo de custos marginais e médios de uma empresa.
[1] Um monopólio é a única empresa que vende um produto sem substitutos, enquanto empresas competitivas tomam preços como dados. [2] Barreiras à entrada, como propriedade exclusiva de recursos, permitem monopólios. [3] Monopólios produzem menos do que seria socialmente ótimo e cobram preços acima dos custos marginais.
Fisica 02 - A teoria cinética dos gasesWalmor Godoi
Este documento apresenta conceitos fundamentais da teoria cinética dos gases, incluindo:
1) Definições de unidades de massa atômica, átomo-grama e molécula-grama;
2) Lei dos gases ideais e sua relação entre pressão, volume e temperatura;
3) Cálculos envolvendo número de Avogadro e conversão entre massa e número de partículas.
Problema da Mochila 0-1 (Knapsack problem)Marcos Castro
O documento descreve o problema da mochila 0-1, no qual o objetivo é selecionar um conjunto de itens de modo a maximizar o valor total dentro da capacidade máxima de uma mochila. O documento discute abordagens gulosas e de programação dinâmica para resolver o problema, concluindo com uma recorrência recursiva para calcular a solução ótima de forma eficiente.
O documento discute os principais pigmentos respiratórios que transportam oxigênio no sangue de diferentes animais, incluindo hemoglobina, hemocianina e mioglobina. Também aborda os fatores que afetam a afinidade destes pigmentos pelo oxigênio, como a pressão parcial de oxigênio, temperatura, pH e fosfatos orgânicos. Finalmente, explica como o transporte de dióxido de carbono ocorre principalmente na forma de bicarbonato no sangue.
O documento discute o tráfico de escravos da África para as Américas entre os séculos 15 e 19. Aborda as consequências demográficas, políticas e sociais na África, incluindo a desestruturação de estados e aumento de guerras devido à procura por escravos. Também descreve o "comércio triangular" entre a Europa, África e Américas, no qual os europeus trocavam bens manufacturados na África por escravos, que eram então vendidos nas Américas por açú
Resumo a lógica matemática para concursosLuiz Ladeira
Este é resumo que fiz para o concurso de lógica matemática da CEMIG segue a matéria pedida com alguns resumos que os ajudaram um melhor entendimento, lembrando este é o resumo de minha autoria baseado no livro de
O documento discute regras fundamentais de limites, incluindo: (1) a regra da constante, onde o limite de um valor k tende a k quando x tende a zero; (2) a regra da soma e diferença, onde o limite da soma ou diferença de duas funções é igual ao limite da primeira função mais ou menos o limite da segunda função; e (3) casos de indeterminação em limites e como resolvê-los.
Dynamic programming is an algorithmic technique that solves problems by breaking them down into smaller subproblems and storing the results of subproblems to avoid recomputing them. It is useful for optimization problems with overlapping subproblems. The key steps are to characterize the structure of an optimal solution, recursively define the value of an optimal solution, compute that value, and construct the optimal solution. Examples discussed include rod cutting, longest increasing subsequence, longest palindrome subsequence, and palindrome partitioning. Other problems that can be solved with dynamic programming include edit distance, shortest paths, optimal binary search trees, the traveling salesman problem, and reliability design.
Calculo I - Uma Breve Introdução ao Estudo de IntegraisRonildo Oliveira
1) O documento apresenta uma breve introdução sobre o estudo de integrais definidas e indefinidas, incluindo definições, métodos de cálculo e exemplos.
2) Aborda conceitos como primitivas, integrais indefinidas e definidas, método de substituição e integral de Riemann.
3) Inclui uma tabela de integrais comuns e exemplos numéricos de cálculo.
MÓDULO 03 - TEORIA - PRONOME - EMPREGO, FORMA DE TRATMENTO E COLOCAÇÃO - ...JulianaGonalves320736
1. O documento discute os pronomes em português, classificando-os e explicando seu emprego correto. 2. Inclui informações sobre pronomes pessoais, possessivos, demonstrativos, indefinidos, relativos e interrogativos. 3. Fornece detalhes sobre a colocação pronominal, explicando as posições do pronome oblíquo átono em relação ao verbo: próclise, mesóclise e ênclise.
Slides da disciplina de Análise de Algoritmos, ministrada pelo Prof. Marcelo H. Carvalho no curso de Pós-Graduação em Ciência da Computação, FACOM - UFMS.
O documento descreve o problema do segmento de soma máxima e apresenta um algoritmo de programação dinâmica chamado SOLIDEZ para resolvê-lo de forma eficiente. O algoritmo calcula a maior soma possível de uma subsequência de números em um vetor de entrada em tempo Θ(n), onde n é o tamanho do vetor. A corretude e complexidade do algoritmo são analisadas formalmente.
O documento resume as principais características do tecido conjuntivo, incluindo suas células, tipos de tecido conjuntivo como frouxo, denso e adiposo, e a formação dos ossos através da ossificação intramembranosa e endocondral.
Plano de aula po1 capitulo 6 método simplex 2015 vrs 0000 - fazer.ppt [modo...Luis Duncan
O documento descreve o método Simplex para resolver problemas de programação linear (PPL), incluindo como colocar um PPL na forma padrão e implementar o algoritmo Simplex. O método Simplex envolve colocar o PPL em uma forma matricial adequada e, em seguida, iterar por meio de quadros para otimizar a função objetivo, resultando em uma solução ótima ou não para o PPL.
O documento discute os conceitos de monopólio e discriminação de preços, identificando três graus de discriminação de preços e as condições necessárias para cada um. Também aborda a regulação de monopólios pelo governo por meio de impostos e a maximização de lucros pelo monopólio.
O documento discute os processos metabólicos de catabolismo e anabolismo, as vias do metabolismo energético como glicólise, ciclo de Krebs e cadeia respiratória, e a produção e efeitos dos radicais livres no metabolismo aeróbico.
1) O documento discute os conceitos de compensação de Slutsky e Hicks, e como eles se relacionam com os efeitos substituição e renda.
2) É apresentada a equação de Slutsky, que relaciona os efeitos substituição de Slutsky e Hicks.
3) Dois casos especiais são discutidos: complementos perfeitos e preferências quase-lineares.
Uma função quadrática é definida como f(x) = ax2 + bx + c, onde a, b e c são coeficientes reais e a ≠ 0. O gráfico de uma função quadrática é uma parábola, cuja concavidade depende do sinal de a. Quanto maior o valor absoluto de a, menor a abertura da parábola.
1) O documento discute equações de primeiro e segundo grau, incluindo monômios, polinômios, adição, subtração, multiplicação e divisão destes.
2) É explicado o que são equações literais e como resolver equações em ordem a uma variável específica.
3) Diferentes tipos de equações são apresentados como equações com parênteses, fracções e do segundo grau.
O documento discute conceitos econômicos básicos. Explica que economia estuda a administração dos recursos escassos para produzir bens e serviços e distribuí-los para consumo. Divide a economia em descritiva, teórica e política. A teoria econômica é dividida em microeconomia, que estuda indivíduos e empresas, e macroeconomia, que analisa a economia como um todo.
Este documento discute o tópico da derivação em matemática. Explica o conceito de derivada como sendo a inclinação de uma curva e apresenta exemplos de como calcular derivadas de funções como polinomiais, irracionais, funções do produto e quociente. Também apresenta aplicações da derivação em economia, como o cálculo de custos marginais e médios de uma empresa.
[1] Um monopólio é a única empresa que vende um produto sem substitutos, enquanto empresas competitivas tomam preços como dados. [2] Barreiras à entrada, como propriedade exclusiva de recursos, permitem monopólios. [3] Monopólios produzem menos do que seria socialmente ótimo e cobram preços acima dos custos marginais.
Fisica 02 - A teoria cinética dos gasesWalmor Godoi
Este documento apresenta conceitos fundamentais da teoria cinética dos gases, incluindo:
1) Definições de unidades de massa atômica, átomo-grama e molécula-grama;
2) Lei dos gases ideais e sua relação entre pressão, volume e temperatura;
3) Cálculos envolvendo número de Avogadro e conversão entre massa e número de partículas.
Problema da Mochila 0-1 (Knapsack problem)Marcos Castro
O documento descreve o problema da mochila 0-1, no qual o objetivo é selecionar um conjunto de itens de modo a maximizar o valor total dentro da capacidade máxima de uma mochila. O documento discute abordagens gulosas e de programação dinâmica para resolver o problema, concluindo com uma recorrência recursiva para calcular a solução ótima de forma eficiente.
O documento discute os principais pigmentos respiratórios que transportam oxigênio no sangue de diferentes animais, incluindo hemoglobina, hemocianina e mioglobina. Também aborda os fatores que afetam a afinidade destes pigmentos pelo oxigênio, como a pressão parcial de oxigênio, temperatura, pH e fosfatos orgânicos. Finalmente, explica como o transporte de dióxido de carbono ocorre principalmente na forma de bicarbonato no sangue.
O documento discute o tráfico de escravos da África para as Américas entre os séculos 15 e 19. Aborda as consequências demográficas, políticas e sociais na África, incluindo a desestruturação de estados e aumento de guerras devido à procura por escravos. Também descreve o "comércio triangular" entre a Europa, África e Américas, no qual os europeus trocavam bens manufacturados na África por escravos, que eram então vendidos nas Américas por açú
Resumo a lógica matemática para concursosLuiz Ladeira
Este é resumo que fiz para o concurso de lógica matemática da CEMIG segue a matéria pedida com alguns resumos que os ajudaram um melhor entendimento, lembrando este é o resumo de minha autoria baseado no livro de
O documento discute regras fundamentais de limites, incluindo: (1) a regra da constante, onde o limite de um valor k tende a k quando x tende a zero; (2) a regra da soma e diferença, onde o limite da soma ou diferença de duas funções é igual ao limite da primeira função mais ou menos o limite da segunda função; e (3) casos de indeterminação em limites e como resolvê-los.
Dynamic programming is an algorithmic technique that solves problems by breaking them down into smaller subproblems and storing the results of subproblems to avoid recomputing them. It is useful for optimization problems with overlapping subproblems. The key steps are to characterize the structure of an optimal solution, recursively define the value of an optimal solution, compute that value, and construct the optimal solution. Examples discussed include rod cutting, longest increasing subsequence, longest palindrome subsequence, and palindrome partitioning. Other problems that can be solved with dynamic programming include edit distance, shortest paths, optimal binary search trees, the traveling salesman problem, and reliability design.
Calculo I - Uma Breve Introdução ao Estudo de IntegraisRonildo Oliveira
1) O documento apresenta uma breve introdução sobre o estudo de integrais definidas e indefinidas, incluindo definições, métodos de cálculo e exemplos.
2) Aborda conceitos como primitivas, integrais indefinidas e definidas, método de substituição e integral de Riemann.
3) Inclui uma tabela de integrais comuns e exemplos numéricos de cálculo.
MÓDULO 03 - TEORIA - PRONOME - EMPREGO, FORMA DE TRATMENTO E COLOCAÇÃO - ...JulianaGonalves320736
1. O documento discute os pronomes em português, classificando-os e explicando seu emprego correto. 2. Inclui informações sobre pronomes pessoais, possessivos, demonstrativos, indefinidos, relativos e interrogativos. 3. Fornece detalhes sobre a colocação pronominal, explicando as posições do pronome oblíquo átono em relação ao verbo: próclise, mesóclise e ênclise.
Slides da disciplina de Análise de Algoritmos, ministrada pelo Prof. Marcelo H. Carvalho no curso de Pós-Graduação em Ciência da Computação, FACOM - UFMS.
O documento descreve o problema do segmento de soma máxima e apresenta um algoritmo de programação dinâmica chamado SOLIDEZ para resolvê-lo de forma eficiente. O algoritmo calcula a maior soma possível de uma subsequência de números em um vetor de entrada em tempo Θ(n), onde n é o tamanho do vetor. A corretude e complexidade do algoritmo são analisadas formalmente.
Slides da disciplina de Análise de Algoritmos, ministrada pelo Prof. Marcelo H. Carvalho no curso de Pós-Graduação em Ciência da Computação, FACOM - UFMS.
O documento discute algoritmos gulosos para o problema do troco mínimo, onde o objetivo é representar um valor com o menor número possível de moedas. Ele apresenta a definição formal do problema, um exemplo passo a passo e uma análise da corretude do algoritmo guloso proposto para o conjunto de moedas {1, 5, 25, 50, 100}.
O documento descreve o algoritmo de Bellman-Ford para encontrar o caminho mínimo em grafos. O algoritmo funciona em três etapas: inicialização, relaxamento e verificação de ciclos negativos. Ele pode lidar com grafos cujas arestas possuem pesos negativos, ao contrário do algoritmo de Dijkstra. A complexidade do algoritmo é O(AV) onde A é o número de arestas e V o número de vértices.
A função recursiva permite que uma função se chame a si mesma de forma limitada. O número de chamadas recursivas depende do tamanho da pilha. A recursividade é uma solução elegante para problemas que envolvem tarefas repetitivas. É preciso tomar cuidado com problemas de pilha e desempenho. Um exemplo de fatorial ilustra como a recursividade funciona reduzindo casos maiores em casos menores até atingir o ponto de parada.
Slides da disciplina de Análise de Algoritmos, ministrada pelo Prof. Marcelo H. Carvalho no curso de Pós-Graduação em Ciência da Computação, FACOM - UFMS.
Este documento apresenta o problema da mochila e suas variantes, como o problema da mochila 0-1. O problema da mochila 0-1 envolve maximizar o valor total de itens selecionados para uma mochila, sem exceder sua capacidade, considerando que cada item é indivisível. O documento descreve como a programação dinâmica pode ser usada para resolver este problema em tempo pseudo-polinomial, construindo uma tabela bottom-up que armazena as soluções para subproblemas.
Classes de problemas p, np,np completo e np-difícilGuilherme Coelho
O documento discute os conceitos de classes de problemas P, NP, NP-completo e NP-difícil e como medir a complexidade de algoritmos. Também apresenta exemplos de algoritmos polinomiais e de complexidade exponencial e teoremas sobre problemas NP-completos.
Slides da disciplina de Análise de Algoritmos, ministrada pelo Prof. Marcelo H. Carvalho no curso de Pós-Graduação em Ciência da Computação, FACOM - UFMS.
Análise de Algoritmos - Problemas, instâncias, algoritmos e tempoDelacyr Ferreira
Slides da disciplina de Análise de Algoritmos, ministrada pelo Prof. Marcelo H. Carvalho no curso de Pós-Graduação em Ciência da Computação, FACOM - UFMS.
Otimização e Implementação dos Algoritmos de Caminhos Mínimos: Dijkstra e Floyd-Warshall.
Este trabalho obteve a primeira colocação na 1ª Competição de Caminhos Mínimos do DECOM/UFOP.
O documento apresenta o algoritmo de Floyd-Warshall para encontrar o menor caminho entre todos os pares de vértices de um grafo orientado e ponderado. O algoritmo utiliza programação dinâmica para calcular uma matriz contendo as distâncias mínimas entre todos os pares de vértices. Sua complexidade é de O(n3) onde n é o número de vértices do grafo.
Otimização, dicas de implementação, como resolver problemas by Adriano Santan...iPhoneDevBr
O documento fornece dicas sobre o Xcode e desenvolvimento para iOS. Ele discute atalhos úteis no Xcode, macros de usuário, ferramentas como o Accessorizer para automatizar tarefas, diferenças entre NSArray e arrays C, como depurar com breakpoints e logs, adicionar bibliotecas estáticas e referências de livros sobre desenvolvimento.
Análise de Algoritmos - Mais problemas NP-CompletosDelacyr Ferreira
Slides da disciplina de Análise de Algoritmos, ministrada pelo Prof. Marcelo H. Carvalho no curso de Pós-Graduação em Ciência da Computação, FACOM - UFMS.
Slides da disciplina de Análise de Algoritmos, ministrada pelo Prof. Marcelo H. Carvalho no curso de Pós-Graduação em Ciência da Computação, FACOM - UFMS.
3.1 Histórico da Pesquisa Operacional: O documento discute o histórico da pesquisa operacional, desde suas origens na Segunda Guerra Mundial até o desenvolvimento do método simplex por Dantzig em 1947.
3.2 Áreas da Pesquisa Operacional: São listadas diversas áreas da pesquisa operacional, incluindo programação linear, programação inteira, grafos, simulação, teoria das filas e teoria dos jogos.
3.4 Introdução à Programação Linear: São apresentadas as hipóteses e limitações
O documento discute algoritmos gulosos e seu uso para resolver problemas de otimização, como o problema da mochila. Apresenta o conceito de algoritmos gulosos, características-chave e exemplos como o problema da mochila 0-1 e fracionária. Fornece detalhes sobre como aplicar uma abordagem gulosa para encontrar uma solução para esses problemas.
The Computer Science solves a lot of daily problems in our lifes, one of them is search problems. These problems sometimes are so hard to find a good solution because is necessary study hard to comprehend the problem, modeling it and after this propose a solution. In this homework, my goal is define and explain the differ- ences between the algorithms DFS - Depth-First Search and Backtrancking. Firstly, I will introduce these algorithms in the section 2 and 3 to DFS and Backtracking respectively. In the section 4 I will show the differences between them. Finally, the conclusion in the section 5.
O documento apresenta um modelo de programação linear para resolver o problema de planejamento de encontros com duas mulheres, levando em conta restrições de tempo, dinheiro e preferências. O modelo formula o problema como uma função objetivo sujeita a restrições, e analisa três alternativas de solução de acordo com dois objetivos distintos: sair o máximo possível com as duas, ou sair mais vezes com uma delas.
1. O documento discute métodos de otimização para full waveform inversion (FWI), que é uma técnica para obter modelos de propriedades da subsuperfície através do ajuste de dados sísmicos.
2. A otimização envolve iterativamente atualizar um modelo corrente para minimizar uma função objetivo que quantifica as diferenças entre os dados observados e calculados.
3. Vários métodos iterativos não-lineares são discutidos, incluindo método do gradiente, método de Newton e método de gradiente conjugado.
Programação dinâmica é um método para construir algoritmos que resolvem problemas de otimização de forma eficiente, evitando recalcular subproblemas repetidos, ao invés de armazenar suas soluções previamente calculadas.
Aula 4 Profmat - Algoritmo de Euclides - MDC e MMC 25 08-17Aline Guedes
1. O documento apresenta o algoritmo de Euclides para calcular o máximo divisor comum (MDC) de dois números inteiros.
2. É explicado que o algoritmo de Euclides funciona através de sucessivas divisões euclidianas para gerar uma sequência de números até que um deles divida o anterior.
3. A aplicação do algoritmo é demonstrada através de um exemplo numérico de cálculo do MDC de 372 e 162, chegando ao resultado de 6.
O documento apresenta duas questões de matemática resolvidas sobre um concurso público para o cargo de Agente Administrativo. A primeira questão trata de variação percentual entre partidos políticos em diferentes eleições. A segunda questão envolve o cálculo do comprimento de uma escada colocada contra um edifício.
O documento resume os conceitos de monômios e polinômios. Monômios são expressões algébricas definidas pela multiplicação entre o coeficiente e a parte literal, enquanto polinômios são a soma de vários monômios. O documento explica como realizar operações como adição, subtração, multiplicação e divisão com monômios e polinômios, seguindo regras como somar ou subtrair apenas os coeficientes.
Este documento discute problemas de otimização que podem ser resolvidos usando funções quadráticas. Apresenta dois exemplos de problemas, um sobre potência elétrica de um circuito e outro sobre área máxima de um cercado, e explica como calcular os valores máximos usando a abscissa do vértice da função quadrática. Também menciona que problemas de otimização são amplamente usados em diversas áreas como Economia, Física e Biologia.
Este documento discute equações de 1o grau com uma incógnita. Ele explica como resolver equações de 1o grau, incluindo transformações para reduzir equações a forma padrão ax = b. Exemplos demonstram como resolver equações e aplicar equações na resolução de problemas.
O documento fornece instruções sobre expressões numéricas, operações com números inteiros e racionais, porcentagem e equações do 1o grau. Explica como resolver expressões numéricas respeitando a ordem de operações, realizar operações como soma, subtração, multiplicação e divisão com números inteiros e fracionários, calcular porcentagens de valores e resolver equações do 1o grau.
O documento discute potenciação, funções exponenciais e logaritmos. Apresenta as propriedades e definições dessas funções, incluindo exemplos de equações e inequações exponenciais e logarítmicas. Explica como resolver esses tipos de problemas aplicando conceitos como mudança de base e propriedades dos logaritmos.
1) O documento discute operações com monômios e polinômios, incluindo potenciação de monômios, produto de monômios por polinômios, e multiplicação de polinômios. 2) Há exemplos e exercícios para praticar cada operação. 3) Um dos exercícios envolve calcular a área e perímetro de uma propriedade retangular dividida em jardim e pomar.
O documento apresenta fórmulas para produtos notáveis e suas aplicações em fatoração de polinômios. Inclui identidades como (x + y)2 = x2 + 2xy + y2 e (x + y)(x - y) = x2 - y2, além de exemplos e exercícios de fatoração usando fator comum e agrupamento.
O documento apresenta um guia sobre módulos, equações e inequações modulares. É dividido em seções que apresentam a definição de módulo, propriedades, interpretação geométrica, exercícios resolvidos e propostos sobre módulos. As próximas seções abordam equações e inequações modulares, apresentando propriedades e exercícios resolvidos e propostos sobre esses tópicos. O objetivo é ensinar esses conceitos de forma prática através de exemplos e exercícios.
O documento discute polinômios, produtos notáveis e frações algébricas. Apresenta definições de polinômios e monômios, operações com polinômios como adição, multiplicação e divisão. Também aborda produtos notáveis que são úteis para simplificar expressões algébricas e casos de fatoração de polinômios.
Frações algébricas são frações com variáveis no denominador. O denominador nunca pode ser igual a zero e as operações com frações algébricas seguem as mesmas regras das frações numéricas.
Frações algébricas são frações com variáveis no denominador. O denominador nunca pode ser igual a zero e as operações com frações algébricas seguem as mesmas regras das frações numéricas.
Frações algébricas são frações com variáveis no denominador. O denominador nunca pode ser igual a zero e as operações com frações algébricas seguem as mesmas regras das frações numéricas.
Esta aula aborda expressões algébricas, definindo monômios e polinômios e apresentando situações para calcular valores numéricos de expressões e operações entre monômios, como adição, subtração, multiplicação e divisão.
1. O documento discute expressões algébricas, definindo-as como expressões matemáticas que contêm letras e podem conter números. As letras representam valores numéricos desconhecidos.
2. Um monômio é uma expressão algébrica representada por um número, incógnita ou produto destes. O grau de um monômio é a soma dos expoentes das variáveis.
3. Operações como adição, subtração, multiplicação e divisão podem ser realizadas com monômios, seguindo regras específicas
O documento apresenta uma série de exercícios sobre equações do segundo grau. Os exercícios abordam tópicos como identificação de coeficientes, resolução de equações, cálculo do discriminante, fórmula de Bhaskara e análise do número de raízes reais.
Semelhante a Análise de Algoritmos - Programação Dinâmica (20)
Slides Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 11, CPAD, A Realidade Bíblica do Inferno, 2Tr24, Pr Henrique, EBD NA TV, Lições Bíblicas, 2º Trimestre de 2024, adultos, Tema, A CARREIRA QUE NOS ESTÁ PROPOSTA, O CAMINHO DA SALVAÇÃO, SANTIDADE E PERSEVERANÇA PARA CHEGAR AO CÉU, Coment Osiel Gomes, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, de Almeida Silva, tel-What, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique, https://ebdnatv.blogspot.com/
Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)Centro Jacques Delors
Estrutura de apresentação:
- Apresentação do Centro de Informação Europeia Jacques Delors (CIEJD);
- Documentação;
- Informação;
- Atividade editorial;
- Atividades pedagógicas, formativas e conteúdos;
- O CIEJD Digital;
- Contactos.
Para mais informações, consulte o portal Eurocid:
- https://eurocid.mne.gov.pt/quem-somos
Autor: Centro de Informação Europeia Jacques Delors
Fonte: https://infoeuropa.mne.gov.pt/Nyron/Library/Catalog/winlibimg.aspx?doc=48197&img=9267
Versão em inglês [EN] também disponível em:
https://infoeuropa.mne.gov.pt/Nyron/Library/Catalog/winlibimg.aspx?doc=48197&img=9266
Data de conceção: setembro/2019.
Data de atualização: maio-junho 2024.
Slides Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 10, Central Gospel, A Batalha Do Armagedom, 1Tr24, Pr Henrique, EBD NA TV, Revista ano 11, nº 1, Revista Estudo Bíblico Jovens E Adultos, Central Gospel, 2º Trimestre de 2024, Professor, Tema, Os Grandes Temas Do Fim, Comentarista, Pr. Joá Caitano, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoMateusTavares54
Quer aprender inglês e espanhol de um jeito divertido? Aqui você encontra atividades legais para imprimir e usar. É só imprimir e começar a brincar enquanto aprende!
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...Biblioteca UCS
A biblioteca abriga, em seu acervo de coleções especiais o terceiro volume da obra editada em Lisboa, em 1843. Sua exibe
detalhes dourados e vermelhos. A obra narra um romance de cavalaria, relatando a
vida e façanhas do cavaleiro Clarimundo,
que se torna Rei da Hungria e Imperador
de Constantinopla.
4. Programação Dinâmica
Aplicável a problemas de otimização
Combina soluções de subproblemas
Subproblemas não são independentes
– p. 2/56
5. Programação Dinâmica
Aplicável a problemas de otimização
Combina soluções de subproblemas
Subproblemas não são independentes
A relação problema – subproblema é
geralmente expressa em termos de uma
fórmula recursiva, que quando implementada
na forma “bottom-up” produz, em muitos casos,
solução eficiente
– p. 2/56
6. Programação Dinâmica
A diferença para o método guloso é que muitas
sequências de decisões são geradas, enquanto
que no método guloso apenas uma sequência
de decisão é gerada
– p. 3/56
9. Multiplicação de matrizes
Problema: Multiplicar n matrizes
M = M1 × M2 × · · · × Mn
realizando o número mínimo de operações
Em outras palavras, determinar qual a melhor
forma de realizar as multiplicações, ou seja, aquela
que requer o número mínimo de operações
– p. 5/56
11. Multiplicação de matrizes
As matrizes são multiplicadas aos pares
Vamos supor que cada matriz Mi tem
dimensões bi−1 × bi. Logo, para calcular
Mi × Mi+1 são necessárias bi−1 ∗ bi ∗ bi+1
operações
– p. 6/56
13. Multiplicação de matrizes
Exemplo: M = M1 × M2 × M3 × M4 com
b = {200, 2, 30, 20, 5}.
Quantas multiplicações são realizadas nas
sequências:
M = (((M1 × M2) × M3) × M4)
M = (M1 × ((M2 × M3) × M4))
– p. 7/56
14. Multiplicação de matrizes
Exemplo: M = M1 × M2 × M3 × M4 com
b = {200, 2, 30, 20, 5}.
Quantas multiplicações são realizadas nas
sequências:
M = (((M1 × M2) × M3) × M4) → 152.000 operações
M = (M1 × ((M2 × M3) × M4)) → 3.400 operações
– p. 8/56
15. Multiplicação de matrizes
Exemplo: M = M1 × M2 × M3 × M4 com
b = {200, 2, 30, 20, 5}.
Quantas multiplicações são realizadas nas
sequências:
M = (((M1 × M2) × M3) × M4) → 152.000 operações
M = (M1 × ((M2 × M3) × M4)) → 3.400 operações
Conclusão: a ordem das multiplicações faz muita
diferença.
– p. 8/56
17. Multiplicação de matrizes
Como determinar uma sequência ótima de
multiplicação?
O algoritmo da “força bruta” é impraticável: existem
Ω(2n
) possibilidades (números de Catalão).
– p. 9/56
18. Multiplicação de matrizes
Como determinar uma sequência ótima de
multiplicação?
O algoritmo da “força bruta” é impraticável: existem
Ω(2n
) possibilidades (números de Catalão).
Pelo método da programação dinâmica, podemos
determinar eficientemente uma sequência ótima de
multiplicação.
– p. 9/56
19. Multiplicação de matrizes
Para resolver este problema, tudo que precisamos
é saber qual o melhor índice k tal que
M = (M1 ×M2 ×· · ·×Mk).(Mk+1 ×Mk+2 ×· · ·×Mn)
onde k varia de 1 a n − 1.
– p. 10/56
20. Multiplicação de matrizes
Mais precisamente, seja Mij o número mínimo de
operações para realizar o produto
Mi × Mi+1 × · · · × Mj
– p. 11/56
21. Multiplicação de matrizes
Mais precisamente, seja Mij o número mínimo de
operações para realizar o produto
Mi × Mi+1 × · · · × Mj
Podemos calcular Mij?
– p. 11/56
22. Multiplicação de matrizes
Mais precisamente, seja Mij o número mínimo de
operações para realizar o produto
Mi × Mi+1 × · · · × Mj
Podemos calcular Mij? Sim.
Mij = min{Mik +Mk+1,j +bi−1bkbj}, k = i, . . . , j −1
– p. 11/56
23. Multiplicação de matrizes
Esta expressão constitui uma recorrência típica do
método de programação dinâmica. Ela sugere um
algoritmo recursivo, mas uma implementação
“bottom-up” é mais eficiente.
– p. 12/56
24. Multiplicação de matrizes
Um algoritmo baseado nesta fórmula tem os
seguintes passos iterativos:
1. os Mi,i são calculados, para 1 ≤ i ≤ n.
Claramente, Mi,i = 0, para todo i;
2. os Mi,i+1 são calculados, para 1 ≤ i ≤ n − 1;
3. os Mi,i+2 são calculados, para 1 ≤ i ≤ n − 2;
4. ... e assim por diante.
– p. 13/56
25. Multiplicação de matrizes
Por exemplo, vamos aplicar o algoritmo acima para
as seguintes matrizes:
M = M1 × M2 × M3 × M4
(200 × 2) (2 × 30) (30 × 20) (20 × 5)
(b0 × b1) (b1 × b2) (b2 × b3) (b3 × b4)
– p. 14/56
26. Multiplicação de matrizes
Por exemplo, vamos aplicar o algoritmo acima para
as seguintes matrizes:
M = M1 × M2 × M3 × M4
(200 × 2) (2 × 30) (30 × 20) (20 × 5)
(b0 × b1) (b1 × b2) (b2 × b3) (b3 × b4)
M1,1 = M2,2 = M3,3 = M4,4 = 0
– p. 14/56
27. Multiplicação de matrizes
Por exemplo, vamos aplicar o algoritmo acima para
as seguintes matrizes:
M = M1 × M2 × M3 × M4
(200 × 2) (2 × 30) (30 × 20) (20 × 5)
(b0 × b1) (b1 × b2) (b2 × b3) (b3 × b4)
M1,1 = M2,2 = M3,3 = M4,4 = 0
M1,2 = 12000, M2,3 = 1200, M3,4 = 3000
– p. 14/56
38. Exercícios
1. Aplique o algoritmo para multiplicar 5 matrizes, onde
b = {30, 35, 15, 5, 10, 20}
2. Descreva mais precisamente o algoritmo estudado
3. Quantas operações são realizadas por este algoritmo?
4. Considere a seguinte proposta gulosa para a solução
do problema de multiplicação de matrizes: a cada
passo, selecione o produto que requer um número
mínimo de operações
5. Apresente uma solução para a variante do problema de
multiplicação de matrizes em que o objetivo é
maximizar o número de operações
– p. 18/56
40. Maior subsequência comum
Problema: Dadas as sequências
X = x1, x2, . . . , xm e Y = y1, y2, . . . , yn , encontrar
uma subsequência comum de maior tamanho
(LCS(X, Y )).
– p. 20/56
41. Maior subsequência comum
Problema: Dadas as sequências
X = x1, x2, . . . , xm e Y = y1, y2, . . . , yn , encontrar
uma subsequência comum de maior tamanho
(LCS(X, Y )).
springtime horseback
snowflakepioneer
– p. 20/56
42. Maior subsequência comum
Uma subsequência não necessita ter elementos
consecutivos; Ela deve ter apenas elementos na
mesma ordem na sequência.
– p. 21/56
43. LCS – Algoritmo força bruta
Para cada subsequência de X, verifique se ela
é subsequência de Y .
– p. 22/56
44. LCS – Algoritmo força bruta
Para cada subsequência de X, verifique se ela
é subsequência de Y .
Qual o tempo?
– p. 22/56
45. LCS – Algoritmo força bruta
Para cada subsequência de X, verifique se ela
é subsequência de Y .
Qual o tempo?
2m
subsequências de X para verificar (pois
cada subsequência de X corresponde a um
subconjunto de {1, 2, . . . , m}) + tempo linear
para verificar cada uma.
– p. 22/56
46. LCS – Algoritmo força bruta
Para cada subsequência de X, verifique se ela
é subsequência de Y .
Qual o tempo?
2m
subsequências de X para verificar (pois
cada subsequência de X corresponde a um
subconjunto de {1, 2, . . . , m}) + tempo linear
para verificar cada uma.
Portanto, esta não é uma boa estratégia.
– p. 22/56
47. LCS – Algoritmo força bruta
Podemos fazer melhor?
– p. 23/56
48. LCS – Algoritmo força bruta
Podemos fazer melhor?
Sim, utilizando programação dinâmica.
– p. 23/56
49. LCS – Algoritmo força bruta
Podemos fazer melhor?
Sim, utilizando programação dinâmica.
Notação:
Xi = x1, x2, . . . , xi , o i-ésimo prefixo de X
Yi = y1, y2, . . . , yi , o i-ésimo prefixo de Y
– p. 23/56
51. Maior subsequência comum
Uma LCS(X, Y ) pode ser obtida recursivamente
da seguinte forma:
Se xm = yn então uma LCS(X, Y ) é formada
por uma LCS(Xm−1, Yn−1) concatenada com
xm
– p. 24/56
52. Maior subsequência comum
Uma LCS(X, Y ) pode ser obtida recursivamente
da seguinte forma:
Se xm = yn então uma LCS(X, Y ) é formada
por uma LCS(Xm−1, Yn−1) concatenada com
xm
Se xm = yn então uma LCS(X, Y ) é formada
por uma LCS(Xm, Yn−1) ou LCS(Xm−1, Yn)
– p. 24/56
54. Maior subsequência comum
Defina c(i, j) como o tamanho da LCS(Xi, Yj).
Então
c(i, j) =
0 se i = 0 ou j = 0
c(i − 1, j − 1) + 1 se xi = yj
max{c(i − 1, j), c(i, j − 1)} se xi = yj
– p. 25/56
55. Maior subsequência comum
Defina c(i, j) como o tamanho da LCS(Xi, Yj).
Então
c(i, j) =
0 se i = 0 ou j = 0
c(i − 1, j − 1) + 1 se xi = yj
max{c(i − 1, j), c(i, j − 1)} se xi = yj
Podemos implementar eficientemente esta fórmula
calculando os c(i, j) para valores crescentes de i e
j até calcular c(m, n).
– p. 25/56
57. Maior subsequência comum
Vamos calcular LCS(X, Y ), onde
X = ABCB e Y = BDCAB.
Xi
Yj
A
A
B
B
B B
C
CD
0
0
0
000000
0
– p. 26/56
58. Maior subsequência comum
Vamos calcular LCS(X, Y ), onde
X = ABCB e Y = BDCAB.
Xi
Yj
A
A
B
B
B B
C
CD
00
0
0
0
0
000000
0
– p. 27/56
59. Maior subsequência comum
Vamos calcular LCS(X, Y ), onde
X = ABCB e Y = BDCAB.
Xi
Yj
A
A
B
B
B B
C
CD
000
0
0
0
0
000000
1 1
– p. 28/56
60. Maior subsequência comum
Vamos calcular LCS(X, Y ), onde
X = ABCB e Y = BDCAB.
Xi
Yj
A
A
B
B
B B
C
CD
000
0
0
0
0
000000
11
11
1111
11
22
222
2
3
– p. 29/56
61. LCS - exemplo para completar
Ex.: X = (A, B, C, B, D, A, B) e Y = (B, D, C, A, B, A).
Yj B D C A B A
Xi 0 0 0 0 0 0 0
A 0
B 0
C 0
B 0
D 0
A 0
B 0
– p. 30/56
64. Maior subsequência comum
Qual o tempo gasto pelo algoritmo? O(m.n)
Como encontrar uma LCS(X, Y ) após completada
a tabela? Qual o tempo?
– p. 31/56
65. Exercícios
1. Determine uma LCS para X = 1, 0, 0, 1, 0, 1, 0, 1 e
Y = 0, 1, 0, 1, 1, 0, 1, 1, 0
2. Descreva mais precisamente o algoritmo estudado
3. Mostre como computar o comprimento de uma LCS
usando apenas 2.min(m, n) entradas (2 linhas ou
colunas da tabela)
4. Forneça um algoritmo O(n2) para encontrar uma maior
subsequência não descrescente de uma dada
sequência de n números
– p. 32/56
66. Exercícios
5. Forneça um algoritmo O(n log n) para encontrar uma
maior subsequência não descrescente de uma dada
sequência de n números
– p. 33/56
68. Caixeiro viajante (PCV)
O PCV consiste em encontrar um circuito de custo
mínimo que contém todos os vertices (circuito
hamiltoniano) em um grafo G com custos não
negativos cij associados à cada aresta (i, j).
– p. 35/56
69. Caixeiro viajante (PCV)
Vamos supor, sem perda de generalidade, que os
vértices estão numerados de 1 a n, e que o circuito
começa e termina no vértice 1.
– p. 36/56
70. Caixeiro viajante (PCV)
Vamos supor, sem perda de generalidade, que os
vértices estão numerados de 1 a n, e que o circuito
começa e termina no vértice 1.
OBS: qualquer circuito hamiltoniano é constituído
por uma aresta (1, k), 2 ≤ k ≤ n, e um caminho de
k até 1 que contém todos os vértices de
V (G) − {1, k}. Esta observação nos motiva a
definir a seguinte função.
– p. 36/56
71. Caixeiro viajante
Seja f(i, C) o custo de um caminho mínimo do
vértice i até 1 e que visita todos os vértices do
conjunto C.
– p. 37/56
72. Caixeiro viajante
Seja f(i, C) o custo de um caminho mínimo do
vértice i até 1 e que visita todos os vértices do
conjunto C.
Podemos calcular f(i, C)?
– p. 37/56
73. Caixeiro viajante
Seja f(i, C) o custo de um caminho mínimo do
vértice i até 1 e que visita todos os vértices do
conjunto C.
Podemos calcular f(i, C)? Sim. Os valores de
f(i, C) podem ser calculados recursivamente da
seguinte forma:
f(i, C) = minj∈C{cij + f(j, C − {j})}
– p. 37/56
74. Caixeiro viajante
Os valores de f(i, C) podem ser calculados
recursivamente da seguinte forma:
f(i, C) = minj∈C{cij + f(j, C − {j})}
– p. 38/56
75. Caixeiro viajante
Os valores de f(i, C) podem ser calculados
recursivamente da seguinte forma:
f(i, C) = minj∈C{cij + f(j, C − {j})}
A solução do PCV está no cálculo de
f(1, V (G)−{1}) = min2≤k≤n{c1k+f(k, V (G)−{1, k})}
– p. 38/56
76. Caixeiro viajante
Os valores de f necessários para resolver o PCV
podem ser obtidos em ordem crescente de |C|, da
seguinte forma:
– p. 39/56
77. Caixeiro viajante
Os valores de f necessários para resolver o PCV
podem ser obtidos em ordem crescente de |C|, da
seguinte forma:
|C| = 0: f(i, ∅) = ci1, ∀ 2 ≤ i ≤ n.
– p. 39/56
78. Caixeiro viajante
Os valores de f necessários para resolver o PCV
podem ser obtidos em ordem crescente de |C|, da
seguinte forma:
|C| = 0: f(i, ∅) = ci1, ∀ 2 ≤ i ≤ n.
|C| = 1: f(i, {j}) = cij + f(j, ∅) = cij + cj1,
∀ 2 ≤ i, j ≤ n, i = j.
– p. 39/56
79. Caixeiro viajante
Os valores de f necessários para resolver o PCV
podem ser obtidos em ordem crescente de |C|, da
seguinte forma:
|C| = 0: f(i, ∅) = ci1, ∀ 2 ≤ i ≤ n.
|C| = 1: f(i, {j}) = cij + f(j, ∅) = cij + cj1,
∀ 2 ≤ i, j ≤ n, i = j.
|C| = 2, 3, . . . , n − 2, usa-se a fórmula geral,
utilizando os valores de f calculados
anteriormente.
– p. 39/56
96. Exercícios
1. Dado um polígono convexo P com vértices
numerados de 1 a n na ordem cíclica, e
suponha que cada diagonal ligando os vértices
i e j possui custo dij. Projete um algoritmo para
determinar uma triangulação de custo mínimo
de P.
– p. 43/56
98. Problema da Mochila
Dados n objetos com valor e peso associado a
cada um deles, e uma mochila que suporta peso
máximo W, determinar um subconjunto de objetos
de valor máximo e cujo peso não excede W.
– p. 45/56
99. Problema da Mochila
Dados n objetos com valor e peso associado a
cada um deles, e uma mochila que suporta peso
máximo W, determinar um subconjunto de objetos
de valor máximo e cujo peso não excede W.
Notação:
Objetos: x1, x2, . . . , xn
Valores: v1, v2, . . . , vn
Pesos: p1, p2, . . . , pn
Peso da mochila: W
– p. 45/56
100. Problema da Mochila
Uma solução para o problema da mochila pode ser
obtida pelo seguinte raciocínio:
“O objeto xn pode estar ou não na solução ótima”
– p. 46/56
101. Problema da Mochila
Uma solução para o problema da mochila pode ser
obtida pelo seguinte raciocínio:
“O objeto xn pode estar ou não na solução ótima”
Se o objeto xn estiver na solução ótima, o valor
desta solução será vn mais o valor de uma
solução ótima do problema da mochila com
capacidade W − pn e considerando só os n − 1
primeiros itens.
– p. 46/56
102. Problema da Mochila
Se o objeto xn não estiver na solução ótima, o
valor ótimo será dado pelo valor de uma
solução ótima do problema da mochila com
capacidade W e considerando só os n − 1
primeiros itens.
– p. 47/56
103. Problema da Mochila
Se o objeto xn não estiver na solução ótima, o
valor ótimo será dado pelo valor de uma
solução ótima do problema da mochila com
capacidade W e considerando só os n − 1
primeiros itens.
Seja f(i, w) o valor ótimo considerando apenas os
i primeiros ítens e uma mochila de capacidade w.
– p. 47/56
104. Problema da Mochila
A recorrência fica então:
f(i, w) =
f(i − 1, w) se pi > w
max{f(i − 1, w − pi) + vi, f(i − 1, w)} se pi ≤ w
– p. 48/56
105. Problema da Mochila
A recorrência fica então:
f(i, w) =
f(i − 1, w) se pi > w
max{f(i − 1, w − pi) + vi, f(i − 1, w)} se pi ≤ w
f(0, w) = 0 e f(i, 0) = 0
– p. 48/56
106. Problema da Mochila - Exemplo
Peso da mochila = 7
Objetos: x1, x2, x3, x4
Valores: 10, 7, 25, 24
Pesos: 2, 1, 6, 5
– p. 49/56
107. Problema da Mochila - Exemplo
Peso da mochila = 7
Objetos: x1, x2, x3, x4
Valores: 10, 7, 25, 24
Pesos: 2, 1, 6, 5
0 1 2 3 4 5 6 7 w
0 0 0 0 0 0 0 0 0
1 0
2 0
3 0
4 0
i
– p. 49/56
111. Problema da Mochila
Qual o tempo gasto pelo algoritmo? O(n.W)
Como encontrar uma composição ótima após
completada a tabela? Qual o tempo?
– p. 51/56
112. Exercício
1. Resolva o problema da mochila para os valores
Peso da mochila = 15
Objetos: x1, x2, x3, x4
Valores: 5, 6, 11, 12
Pesos: 3, 5, 6, 7
2. Uma haste de comprimento H precisa ser cortada em
pequenos pedaços/partes de comprimento
{h1, h2, . . . , hn}. Projete um algoritmo para determinar
em quais pedaços a haste deve ser cortada de forma
que a sobra seja a menor possível.
3. Dada uma coleção A = {a1, a2, . . . , an} de n inteiros
positivos que somam N. Projete um algoritmo para
determinar se existe uma partição de A em dois
subconjuntos com a mesma soma.
– p. 52/56
113. Exercício para pesquisar
4. Considere o seguinte algoritmo guloso para o problema
da mochila: a cada passo, escolha o objeto de maior
valor. Este algoritmo está correto?
– p. 53/56
114. Exercício
5. Problema de investimento de capital:
R$6, 00 unidades de capital disponível
N = 3 atividades diferentes para investimento com
ganhos dados pelo quadro abaixo:
R g1(R) g2(R) g3(R)
0 0 0 0
1 15 15 26
2 40 40 40
3 80 60 45
4 90 70 50
5 95 73 51
6 100 75 53
Qual o distribuição ótima do recurso? – p. 54/56
115. Exercício para pesquisar
6. O problema do corte bidimensional guilhotinado: ...
(mochila bidimensional)
– p. 55/56
116. Exercício para pesquisar
1. Árvore de busca binária ótima: Consideremos o
problema de realizar buscas em uma árvore binária de
busca contendo os elementos de um conjunto
C = {x1, x2, . . . , xn} (listados em ordem crescente)
conhecendo-se as seguintes probabilidades:
(a) q0 = Prob. de buscar um elemento x < x1
(b) pi = Prob. de buscar o elemento xi
(c) qi = Prob. de buscar um elemento xi < x < xi+1
(d) qn = Prob. de buscar um elemento x > xn
O problema é construir uma árvore binária de busca
que representa C em que a execução das buscas seja
feita com número mínimo de comparações.
– p. 56/56