Programação Dinâmica Partição de Inteiros
|
|
- Washington Castilho
- 5 Há anos
- Visualizações:
Transcrição
1 Notas de aula da disciplina IME -8 ALGORITMOS E ESTRUTURAS DE DADOS II Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) abril/9 Partição de Inteiros Dado n inteiro, determinar o número de maneiras de particionamento de n. Exemplo : n = Exemplo : n = 6 maneiras distintas: maneiras distintas: Partição de Inteiros Formulação recursiva: dado n, T(n, p) = número de partições onde a maior parcela p T(n, p) =, se (n < ) ou (n > e p = ) T(n, p) =, se (n = ) T(n, p) = T(n p, p) + T(n, p - ), n >, p > Procura-se obter T(n, n). Pode-se implementar a recursão com memorização. Partição de Inteiros T(n, p) =, se (n < ) ou (n >, p = ) T(n, p) =, se (n = ) T(n, p) = T(n p, p) + T(n, p - ), n >, p > Quer-se obter T(n, n). A idéia da programação dinâmica é evitar a recursão, de forma análoga à memorização, mas calculando, de forma bottom-up, todos os subproblemas menores do que o problema a ser solucionado. Por forma bottom-up deve-se entender que a solução dos subproblemas deve ser feita por ordem de tamanho, dos menores para os maiores. Neste caso, é possível usar a idéia da PD! Partição de Inteiros T(n, p) =, se (n < ) ou (n >, p = ) T(n, p) =, se (n = ) T(n, p) = T(n p, p) + T(n, p - ), n >, p > Quer-se obter T(n, n). Para implementar PD, calcular T(n, p) em ordem crescente por n e p, começando por qualquer um dos dois parâmetros. Partição de Inteiros T(n, p) =, se (n < ) ou (n >, p = ) T(n, p) =, se (n = ) T(n, p) = T(n p, p) + T(n, p - ), n >, p > Algoritmo (por linha): Partição(): para p até n incl.: T[, p] para i até n incl.: T[i, ] para p até n incl.: se (i p): T[i, p] T[i, p-] + T[i-p, p] senão: T[i, p] T[i, p-] Complexidade: O(n )
2 Partição de Inteiros T(n, p) =, se (n < ) ou (n >, p = ) T(n, p) =, se (n = ) T(n, p) = T(n p, p) + T(n, p - ), n >, p > Algoritmo (por coluna): Partição(): T[,] para i até n incl.: T[i, ] para p até n incl.: para i até n incl.: se (i p): T[i, p] T[i, p-] + T[i-p, p]; senão: T[i, p] T[i, p-] Partição de Inteiros Cálculo de T(, ) 6 Partição de Inteiros ExS Completar a tabela abaixo, para n = 6 Partição de Inteiros Exercício - Solução Completar a tabela abaixo, para n = Dados os tipos de moedas de um país, determinar o número de maneiras distintas para dar um troco de valor n. Exemplo: V = {,,,,,} m = 6 n = 6 Há maneiras distintas:,,,,,,...,,,,,,,...,,...,...,,,,,,,,,...,,,...,,..., Formulação recursiva: dados m, n T(p, n) = formas distintas de dar um troco n, usando os p tipos iniciais de moedas, V[]...V[p] T(p, n) =, (n < ) T(p, n) =, (n = ) T(p, n) = T(p, n V[p]) + T(p-, n), (n > ) A solução do problema é obter T(m, n). Observe que a formulação é a mesma feita no estudo de memorização.
3 Exemplo: V = {,,,,,} m = 6 n = 6 Há maneiras distintas: T(,6) =T(,)+...=+.., T(,6)=T(,6)+...=6+..,,,,,...,,,,,,,...,,...,... T(,6)=T(,) +,,,=,,,,, = +...,,,,..,,,..,,..,.. =T(,6) =,... Exemplo: V = {,,,,, } m = 6, n = A solução por PD consiste em preencher a tabela m x n por ordem crescente do tamanho dos subproblemas, sem necessidade de recursão. Há duas formas de fazer isso: + ou + Ex. da a forma: V = {,,,,, } Exercício: Completar a tabela abaixo para n = V = {,, } ExS: Preencher a tabala para n = T(p, n) =, (n < ) ou (p = ) T(p, n) =, (n = ) T(p, n) = T(p, n V[p])+T(p-,n), (n > ) Algoritmo, com preenchimento linha x coluna: (): para i até m incl.: T[i, ] para j até n incl.: se j > V[i]: T[i,j] T[i,j] + T[i,j-V[i]] senão T[i, j] se i > T[i, j] T[i,j] + T[i-, j] Complexidade: O(n.m)
4 PD x Memorização V = {,,,,, } Formulação recursiva: dados m, n T(p, n) = formas distintas de dar um troco n, usando os p tipos iniciais de moedas, V[]...V[p] T(p, n) =, (n < ) T(p, n) =, (n = ) T(p, n) = Σ T(i, n V[i]), (n > ), i p A solução do problema é obter T(m, n). Observe que a formulação é diferente daquela feita no estudo de memorização. Exemplo: V = {,,,,, } m = 6, n = Mochila (/) Dada uma mochila com capacidade M e t ítens com peso w i cada, verificar se existe uma combinação de itens que preencha exatamente a mochila. Exemplo: Dado o conjunto de ítens {,,, 9, }, é possível preencher exatamente mochilas com capacidades e, mas não é possível preencher mochila com capacidade 6. Mochila (/) Define-se K(q, n) = x = indicador de solução quando se usa os q itens iniciais numa mochila de capacidade n. x =- não há solução, cc indica o menor índice de ítem que que completa a mochila. Formulação recursiva: K(q, ) =, K(, n) = -, se n >, K(q, n) = K(q-, n), se K(q-,n) -, n M; q t; K(q, n) = q, se K(q-, n-p q ) -, n M; q t; K(q, n) = -, nos demais casos Mochila (/) K(q, ) =, K(, n) = -, se n >, K(q, n) = K(q-, n), se K(q-,n) -, n M; q t; K(q, n) = q, se K(q-, n-p q ) -, n M; q t; K(q, n) = -, nos demais casos Algoritmo: Mochila(): K[, ] para j até M incl.: K[, j] - para i até t incl.: para j até M incl.: se (K[i-, j] -): K[i, j] K[i-, j] senão Se ((j P[i]) e (K[i-, j-p[i]] -)): K[i, j] i senão K[i, j] - Complexidade: O(t.M)
5 Mochila (/) Exemplo: P= {,,, 9, } M = Obs: - não representado () Mochila (/) P = {,,, 9, } ExS: Completar a tabela abaixo para M = () Mochila (/) Apresentação de uma solução Solução(): j M enquanto (j ): escrever (P[K[t, j]]) j j - P[K[t,j]] Para M =, a saída seria: 9 () () (9) () () () (9) () () () () (9) () Mochila (/) P = {,,, 9, } Exercício: Encontrar a solução para M = Mochila (/) outras versões a) usar dois valores booleanos em cada célula, o primeiro indicando se há solução e o segundo se o ítem atual é o de menor índice para a solução Exemplo: P = {,,, 9, } M = Obs: célula em branco com (F,F) Mochila (/) outras versões b) usar um vetor ao invés de uma matriz Exemplo: P = {,,, 9, } M = () () () (9) () () () () (9) () VF VF VV VF VV VF VV VF VF VV VF VV VF VV VV VF VF VF VF VF VV VF VF VV VF VV VV VV VF VF VF VF VF VF VF VF VF VF VF VF VV VF VV Algoritmo: Mochila(): K[] para j até M incl.: K[j] - para i até t incl.: para j M..P[i] incl.: se ((K[j] = -) e (K[j-P[i]] )): K[j] i
6 Mochila (/) outras versões b) usar um vetor ao invés de uma matriz Exemplo: P = {,,, 9, } M = Exercício: mostrar a situação do vetor acima após o processamento de cada ítem, a partir da situação inicial: Mochila (/) outras versões ExS: mostrar a situação do vetor para o problema mochila para M =, e ítens: {,,,, 6}: Mochila (/) outras versões b) usar um vetor ao invés de uma matriz Problema Ferry Loading (Val 6) Tem-se um ferry de comprimento lf, duas linhas para carros e uma fila dada de carros, com seus comprimen-tos lc i. Quer-se saber quantos carros podem ser carregados, obedecendo-se a fila. Dados: n carros de comprimentos lc i dados e o ferry com comprimento lf. lf = 9 Fila:,,,,,,, Sol: (/, /, /, /, /) Mochila (/) outras versões b) usar um vetor ao invés de uma matriz Problema Ferry Loading (Val 6) Tem-se um ferry de comprimento lf, duas linhas para carros e uma fila dada de carros, com seus comprimentos lc i. Quer-se saber quantos carros podem ser carregados, obedecendo a fila. lf = 9, lc = (,,,,,,, ) tot SIT V V V - - V - - V F Mochila (/) outras versões Problema Ferry Loading (Val 6) - Escolha dos carros Algoritmo: FerryLoading(): K[*] -; K[] ; F[*] ; i ; lotado F; tot ; enquanto ((i t) e (não lotado)): tot tot + lc[i]; lotado V; para j lf..lc[i] incl.: se ((K[j-lc[i]] > -) e ((tot-j) lf)): lotado F; F[i] ; se (K[j] = -): k[j] i; i i+; Mochila (/) outras versões Problema Ferry Loading (Val 6) - Determinação das filas Solução(): i lf enquanto (K[i] = -): i i-; enquanto (i > ): j K[i]; F[j] ; Vetor K Vetor F i i-lc[j]; SIT - - F i 6 8 9
7 Mochila (/) outras versões c) contar o número de soluções Exemplo: P = {,,,, } M = Mochila (/) outras versões c) contar o número de soluções Algoritmo: Mochila (/) outras versões ExS6: mostrar o preenchimento do vetor para contar o número de soluções para M =, e ítens: {,,,,6}: ContaSoluçõesMochila(): K[] para j até M incl.: K[j] para i até t incl.: para j M..P[i] incl.: K[j] K[j] + K[j-P[i]] TESTE : SOLUÇÕES DA MOCHILA Escrever a recorrência para contar o número de soluções distintas da Mochila, K(p, q) Mochila (/) outras versões d) contar o número de itens na solução Exemplo: P = {,,, 9, } M = Mochila (/) outras versões d) contar o número de itens na solução Exemplo: P = {,,, 9, } M = Algoritmo: Algoritmo: ContaSoluçõesMochila(): K[] para j até M incl.: K[j] para i até t incl.: para j M..P[i] incl.: K[j] K[j] + K[j-P[i]] ExS6: M =, e ítens: {,,,,6}: ContaItensMochila(): K[,] para j até M incl.: K[,j] - para i até t incl.: para j até M incl.: K[i,j] - para r i.. incl.: para j P[i] até M incl.: se ((K[r, j] = -) e (K[r-,j-P[i]] )): K[r, j] i
8 Mochila (/) outras versões d) contar o número de itens na solução Problema Tug of War (Val ) Tem-se n competidores, e são dados os pesos de cada um. Quer-se dividir as pessoas em dois times tal que o número de competidores difira no máximo em e a soma dos pesos deve ser mínima. Indicar os pesos de cada grupo. Dados: n = 9 Pesos:, 6,, 8, 9,,, 66, 8 Sol: (,,,,,,,, ) Mochila (/) outras versões d) contar o número de itens na solução Problema Joys of Farming (Val ) Tem-se n casas, cada uma com quartos, em cada quarto um número variável de camas. Quer-se distribuir m moças e r rapazes pelas casas, tal que em cada quarto só tenha ou moças ou rapazes e não podendo os dois quartos de uma mesma casa serem ocupados pelo mesmo sexo. É possível fazer a distribuição? Dados: n =, m =, r = Quartos: /8, /6, /, 6/, / Sol: S (moças:, 6,, 6, rapazes: 8,,,, ) Mochila (/) - ExS: mostrar o preenchimento da matriz para mostrar o número de ítens na solução M =, e ítens: {,,,,6}: Mochila (/) outras versões e) Mochila com peso e valor: a cada ítem, além do peso(p) é associado um valor(v). O objetivo passa a ser determinar o valor máximo que pode comportar a mochila Ex: P = {(,), (,), (,), (9,), (,)} M = Mochila (/) outras versões Peso e Valor Ex: P = {(,), (,), (,), (9,), (,)} M = Mochila (/) outras versões Peso e Valor e) Mochila com peso e valor: a cada ítem, além do peso(w) é associado um valor(v). O objetivo passa a ser determinar o valor máximo que pode comportar a mochila Ex: P, V = {(,), (,6), (,), (9,), (,)} M = MochilaPesoeValor(): K[].me ; K[].vm ; para j até M incl.: K[j].me -; K[j].vm ; para i até t incl.: para j M..P[i] incl.: se ((K[j-P[i]].me ) e (K[j].vm < (K[j-P[i]].vm+V[i]))): K[j].me i; K[j].vm K[j-P[i]].vm+V[i]; Obs: K[j].me = menor índice que obtém o valor máximo K[j].vm = valor máximo
9 Mochila (/) outras versões - Peso e Valor ExS8: mostrar a situação do vetor para os seguintes ítens, M =. Ex: P, V = {(,), (,), (,), (,)} M = Mochila (/) outras versões - Peso e Valor f) Mochila múltiplos itens: existem infinitos objetos de cada tipo de ítem Ex: P = {,,, 9, } M = Mochila outras versões f) Mochila múltiplos itens: existem infinitos objetos de cada tipo de ítem Ex: P = {,,, 9, } M = MochilaItensMultiplos(): K[] para j até M incl.: K[j] - para i até t incl.: para j P[i] até M incl.: se ((K[j-P[i]] ) e (K[j] = -)): K[j] i; Mochila outras versões g) Mochila com múltiplos itens, cada um com peso e valor: a cada ítem, além do peso(p) é associado um valor(v). O objetivo passa a ser determinar o valor máximo que pode comportar a mochila Ex: W = {(,), (,6), (,), (9,), (,)} M = (valores da versão /) Mochila outras versões g) Mochila com múltiplos itens, cada um com peso e valor: a cada ítem, além do peso(w) é associado um valor(v). O objetivo passa a ser determinar o valor máximo que pode comportar a mochila Ex: P, V = {(,), (,6), (,), (9,), (,)} M = MochilaItensMultiplosPesoeValor(): K[].me ; K[].vm ; para j até M incl.: K[j].me -; K[j].vm ; para i até t incl.: para j P[i] até M incl.: se ((K[j-P[i]].me ) e (K[j].vm < (K[j-P[i]].vm+V[i])): K[j].me i; K[j].vm K[j-P[i]].vm+V[i]; Mochila (/) Ítens múltiplos ExS9: mostrar a situação do vetor para os seguintes ítens, M =, Ex: P, V = {(,), (,), (,), (,)} M = a) Sem considerar o valor b) Considerando o valor
10 Mochila outras versões h) Mochila com ítens fracionáveis: cada ítem pode ser fracionado. Será visto adiante (Guloso) i) Mochila mista: parte dos itens não fracionáveis e parte fracionáveis. Será visto adiante (PD+Guloso) Mochila PD x Backtracking -Muitos itens pequenos S = {,,,, 9,, 6,,, 8,,,,,,,,,,, } é melhor PD -Poucos itens grandes S = {., 9.99,.,., 899.6,..,..6.86,.99..} é melhor BK Problemas com paradigma da "diagonal" Alguns problemas com solução por PD requerem que se examine todos os subproblemas relativos a intervalos consecutivos de um vetor, ou seja intervalos (,), (,)...(,n),(,)...(n-,n)(n,n). Neste caso, o resultado ótimo para cada intervalo (i,j), com j i é guardado na célula (i,j) de uma matriz M n x n, que geralmente é preenchida por diagonais, onde cada diagonal representa dada diferença de índices j-i, dos diversos intervalos. Só é preenchido o "triângulo" superior da matriz, Problemas apresentados são: Produto de Matrizes e Jogo da Soma. x x x x x x Produto de Matrizes Dada uma sequência de matrizes que devem ser multi-plicadas, determinar a ordem ótima de multiplicação (aquela que requer o menor número de operações), considerando que o produto é associativo. Exemplo: M ( x ) M ( x ) M ( x ) M ( x ) O produto pode ser feito de inúmeras maneiras, dentre as quais: ((M x M ) x (M x M )) (M x ((M x M ) x M )) Produto de Matrizes Associatividade M (a x b) x M (b x c) x M (c x d) a) ((M x M ) x M ) = M (a x d), (M x M ) = M (a x c) M ij = Σ k c M ik x M kj = Σ k c (Σ t b M it x M tk,) x M kj = Σ k c Σ t b M it x M tk x M kj b) (M x (M x M )) = M (a x d), (M x M ) = M 6 (b x d) M ij = Σ t b M it x M 6tj = Σ t b M it (Σ k c M itk x M kj ) = Σ k c Σ t b M it x M tk x M kj Produto de Matrizes Quantidade de operações M (a x b) x M (b x c) a x b x c produtos a x (b-) x c somas Produto de Matrizes Mais de duas matrizes M ( x ) M ( x ) M ( x ) M ( x ) a) ((M x M ) x (M x M )) x x + x x + x x = = b) (M x ((M x M ) x M )) x x + x x + x x = =
11 Produto de Matrizes Formulação recursiva Vetor de dimensões: M i (r i- x r i ) n r r r r n T[i, j] = núm. mínimo de operações p/ obter M i... M j T[i, j] = min i k <j {T[i, k]+t[k+,j] + r i- x r k x r j } T[i, i] = Produto de Matrizes Implementação com PD M M M M A idéia é calcular os produtos ótimos M i... M j em ordem crescente da diferença j i: T[,], T[,], T[,], T[,] T[,], T[,], T[,] T[,], T[,] T[,], a solução buscada! Produto de Matrizes Implementação com PD M M M M j i = Produto de Matrizes Implementação com PD M M M M j i = Produto de Matrizes Implementação com PD M M M M j i = Produto de Matrizes Implementação com PD M M M M j i = T[,] k = T[,]+T[,]+r.r.r = =. k = T[,]+T[,]+r.r.r = = T[,] k = T[,]+T[,]+r.r.r = =. k = T[,]+T[,]+r.r.r = =.
12 Produto de Matrizes PD - j i = M M M M T[,] k = T[,]+T[,]+r.r.r = =. k = T[,]+T[,]+r.r.r = =. k = T[,]+T[,]+r.r.r = = 8. Produto de Matrizes PD - Solução Custo Melhor k Multiplicação ótima: ((M x (M x M )) x M ) Produto Matrizes T[i, j] = min{t[i, k]+t[k+,j] + r i- x r k x r j } i k <j T[i, i] = Quer-se encontrar T[, n]. ProdutoMatrizes(): para k até n incl.: T[k, k] para d até n- incl.: para i até n-d incl.: j i + d; T[i, j] ; para k i até j- incl.: se ((T[i, k] + T[k+, j] + r[i-].r[k].r[j]) < T[i, j]): T[i, j] T[i, k] + T[k+, j] + r[i-].r[k].r[j]; MK[i, j] k; Complexidade: O(n ) Produto de Matrizes M M M M ExS: Calcular a pior maneira de multiplicar as matrizes acima. Produto Matrizes Impressão da expressão: baseada em uma recorrência sobre a matriz MK Algoritmo: String Expressao(i,j): se (i = j): retornar 'M' + i senão: retornar '(' + Expressao(i,MK[i,j])+ 'x' + Expressao(MK[i,j]+,j) + ')'; Jogo da Soma Dado um vetor V contendo inteiros, determinar ao melhor resultado para o seguinte jogo: os jogadores retiram, em turnos, quantos elementos quiserem do vetor, desde que seja de uma das pontas. A solução é maximizar a diferença entre os dois jogadores, levando em conta que os dois jogam de maneira ótima. Para o vetor abaixo, a maior diferença possível é : o primeiro retira e ; o segundo retira, o primeiro retira - e o segundo -, com a diferença (+-)-(-) =. - -
13 Jogo da Soma - Recorrência M(i,i) = V(i) M(i,j) = max( Ac(i,j), Ac(i,k) - M(k+,j), i k <j, Ac(k,j) - M(i, k-), i< k j, ) O primeiro termo da maximização corresponde à retirada de todos os números i a j; o segundo, às retiradas da ponta esquerda e o trceiro, às retiradas da ponta direita do vetor. Alagoritmo para p Jogo da Soma JogodaSoma(): para k até n incl.: T[k, k] V[k] VA[] para k até n incl.: VA[k] VA[k-]+V[k] para d até n- incl.: para i até n-d incl.: j i + d; T[i, j] VA[j]-VA[i-]; MI[i, j] (i, j); para k i até j- incl.: se ((T[i, j] < (VA[k]-VA[i-]-T[k+,j])): T[i, j] VA[k]-VA[i-]-T[k+,j] MI[i, j] (i, k) para k i+ até j incl.: se ((T[i, j] < (VA[j]-VA[k-]-T[i, k-])): T[i, j] VA[j]-VA[k-]-T[i,k-] MI[i, j] (k, j) Jogo da Soma - Exemplo: V x - x x x x x x x x x Diagonal de diferença de índices= Jogo da Soma - Exemplo: Jogo da Soma - Exemplo: Jogo da Soma - Exemplo: V x - 6 x x x x x x x x x Diagonal de diferença de índices= M(,) = max(-6, --(-), --(-)) = M(,) = max(-, --(), -(-)) =6 M(,) = max(, -(), -()) = M(,) = max(, -(), -()) = V x - 6 x x x x x x x x x Diagonal de diferença de índices= M(,) = max(-, --(6), -6-(), -(), --(-) =- M(,) = max(-, --(), --(), -(6), -(-)) = M(,) = max(, -(), -(), -(), -()) = V x x x x x x x x x x Diagonal de diferença de índices= M(,) = max(-, --(), -6-(),--(), -(-),-(), --(-))= M(,) = max(-, --(), --(), --(), -(),-(6),-(-)) =8
14 Jogo da Soma - Exemplo: V x x x x x x x x x x Diagonal de diferença de índices= M(,) = max(-, --(8), -6-(), --(),--(), -(), -(-), -(), -(-)) = Jogo da Soma - Exemplo: V - - Maior diferença - - x x x x x x x x x x Melhor intervalo x x x x x x - - x x x x - Distância de Edição Dados dois strings A e B, quer-se determinar a menor sequência de operações p/ transformar A em B. Os tipos de operação são: -inserção de um caracter -deleção de um caractér -substituição de um caractér Exemplo: ERRO transforma-se em ACERTO mediante operações: -inserção do A AERRO -inserção do C ACERRO -substituição do R ACERTO Distância de Edição - Formulação recursiva Dados os substrings A i (primeiros i caracteres) e B j, D(i, j) = distância de edição entre A i e B j = D(i-, j-), se a i = b j min(d(i-, j), D(i, j-), D(i-, j-)) +, se a i b j Deleção de a i Inserção de b j Substituição de a i por b j Cálculo da Distância de Edição A C E R T 6 O 6 E R R O Distância de Edição D(i, j) = D(i-, j-) =, se a i = b j min(d(i-, j), D(i, j-), D(i-, j-)) +, se a i b j DistânciaEdição(): #Dados: Strings A e B, com A = n e B = m para i até n incl.: D[i, ] i para j até m incl.: D[, j] j para i até n incl.: para j até m incl.: se (A[i] = B[j]): D[i, j] D[i-, j-] senão: D[i, j] min(d[i-, j-], D[i-, j], D[i, j-])+ Complexidade: O(n.m)
15 Distância de Edição - Apresentando a transformação A C E R T 6 O 6 E R R O Distância de Edição - Apresentando a transformação M A R R O 6 M 6 A M O R A Distância de Edição - Apresentando a transformação Transf(i,j): #Dados Matriz de distâncias D, Strings A e B se ((i>) ou (j>)): se (A[i] = B[j]): Transf(i-,j-); escrever 'Manteve' A[i]; senão se ((j > ) e D[i,j] = D[i,j-]+): Transf(i,j-); escrever 'Inseriu' B[j]; senão se ((i > ) e D[i,j] = D[i-,j]+): Transf(i-,j); escrever 'Deletou' A[i]; senão: Transf(i-,j-) escrever 'Transformou' A[i] 'em' B[j] Transf(n,m) Distância de Edição ExS: Determinar a distância de edição do seu ALSTRING(8 letras iniciais do nome) para o do colega. Mostrar duas transformações mínimas do primeiro string para o segundo. Exercício - a) Resolver intuitivamente o seguinte problema: Qual o valor máximo possível da soma dos números obtidos pela concatenação dos dígitos do particionamento do vetor de dígitos em segmentos consecutivos de a dígitos? Exercício - b) Escrever uma recorrência para o problema: Qual o valor máximo possível da soma dos números obtidos pela concatenação dos dígitos do particionamento do vetor de dígitos em segmentos consecutivos de a dígitos?
16 Exercício - c) Escrever um algoritmo de PD para o problema: Qual o valor máximo possível da soma dos números obtidos pela concatenação dos dígitos do particionamento do vetor de dígitos em segmentos consecutivos de a dígitos? Exercício - d) Escrever um algoritmo de PD para o problema: Qual a maneira de particionar um vetor de dígitos em partições de a dígitos, tal que a soma dos números resultantes da concatenação dos dígitos de cada partição seja máxima? Exercício - a) Escrever a recorrência que indica o número de caminhos mínimos distintos entre os pontos (,) e (n,m) em um grid de dimensões n x m, onde há obstáculos em alguns pontos de cruzamento (no máximo n- obstáculos)., ,6 Exercício b) Escrever um algoritmo de PD para a formulação anterior., Exercício c) Mostrar o preenchimento da matriz para o exemplo abaixo., Exercício - a) Escrever a recorrência que indica o número mínimo de quadrados, T(a,b) que podem ser obtidos com cortes transversais em uma chapa de dimensões a x b. Exemplo: a =, b=6,6,6
17 Exercício - Exercício - b) Escrever um algoritmo de PD para o problema descrito. Exemplo: a =, b=6 c) Preencher a matriz 6 x 6 relativa ao exemplo. Exemplo: a =, b=6 FIM
Programação Dinâmica. Programação Dinâmica Partição de Inteiros. Programação Dinâmica Partição de Inteiros. Programação Dinâmica Partição de Inteiros
Notas de aula da disciplina IME -8 ALGORITMOS E ESTRUTURAS DE DADOS II Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) Partição de Inteiros Dado n inteiro, determinar o número de maneiras de
Leia maisMétodo Guloso. Troco mínimo. Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) junho/2012. Troco mínimo. Troco mínimo
Notas de aula da disciplina IME - ALGORITMOS E ESTRUTURAS DE DADOS II Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) Troco mínimo Dados os tipos de moedas de um país, determinar o número mínimo
Leia maisProgramação dinâmica
Programação dinâmica CLRS 15.2 15.3 = recursão com tabela = transformação inteligente de recursão em iteração Algoritmos p. 1 Multiplicação iterada de matrizes Se A é p q e B é q r então AB é p r. (AB)[i,j]
Leia maisIntrodução à Análise Algoritmos
Introdução à Análise Algoritmos Notas de aula da disciplina IME 4-182 Estruturas de Dados I Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) abril/218 Ordenação por SELEÇÃO: Idéia: Dado um vetor
Leia maisAnálise e Síntese de Algoritmos. Programação Dinâmica CLRS, Cap. 15
Análise e Síntese de Algoritmos Programação Dinâmica CLRS, Cap. 15 Contexto Revisões [CLRS, Cap. 1-10] Algoritmos em Grafos [CLRS, Cap. 22-26] Algoritmos elementares Árvores abrangentes Caminhos mais curtos
Leia maisProgramação Dinâmica. Prof. Anderson Almeida Ferreira. Adaptado do material elaborado por Andrea Iabrudi Tavares
Programação Dinâmica Prof. Anderson Almeida Ferreira Adaptado do material elaborado por Andrea Iabrudi Tavares Programação Dinâmica 1950, Bellman Evitar recálculos dos subproblemas em comum Menor para
Leia maisProgramação Dinâmica. Prof. Anderson Almeida Ferreira
Programação Dinâmica Prof. Anderson Almeida Ferreira Programação Dinâmica 1950, Bellman Evitar recálculos dos subproblemas em comum Menor para maior (bottom-up) Tabelas ou memorização É uma técnica de
Leia maisAULA 15. Algoritmos p.600/637
AULA 15 Algoritmos p.600/637 Programação dinâmica CLRS 15.1 15.3 = recursão com tabela = transformação inteligente de recursão em iteração Algoritmos p.601/637 Programação dinâmica "Dynamic programming
Leia maisPCC104 - Projeto e Análise de Algoritmos
PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 11 de agosto de 2017 Marco Antonio
Leia maisDivisão e Conquista. Fernando Lobo. Algoritmos e Estrutura de Dados II. É uma técnica para resolver problemas (veremos outras técnicas mais adiante).
Divisão e Conquista Fernando Lobo Algoritmos e Estrutura de Dados II 1 / 27 Divisão e Conquista É uma técnica para resolver problemas (veremos outras técnicas mais adiante). Consiste em 3 passos: Dividir
Leia maisBacktracking. Backtracking
Notas de aula da disciplina IME 0-0 ALGORITMOS E ESTRUTURAS DE DADOS II Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) É uma técnica de solução de problemas (construção de algoritmos) que eamina
Leia maisComplexidade de Algoritmos
Complexidade de Algoritmos Prof. Diego Buchinger diego.buchinger@outlook.com diego.buchinger@udesc.br Prof. Cristiano Damiani Vasconcellos cristiano.vasconcellos@udesc.br Abordagens para Resolução de Problemas
Leia mais5ª Lista de Exercícios de Programação I
5ª Lista de Exercícios de Programação I Instrução As questões devem ser implementadas em C. Questões que envolvam leitura de matrizes, a construção dessas matrizes pode ser realizada através da geração
Leia maisTópicos Avançados em Algoritmos - exercícios de Prog. Din. com correcção parcial
Armando Matos, 2008/2009 Tópicos Avançados em Algoritmos - exercícios de Prog. Din. com correcção parcial 1. Optimizar o produto de matrizes Considere o problema da parentização óptima de uma multiplicação
Leia maisMATRIZES - PARTE Mais exemplos Multiplicação de duas matrizes AULA 26
AULA 26 MATRIZES - PARTE 2 26. Mais exemplos Nesta aula, veremos mais dois algoritmos envolvendo matrizes. O primeiro deles calcula a matriz resultante da multiplicação de duas matrizes e utiliza três
Leia maisProgramação Dinâmica. Prof. Marcio Delamaro ICMC/USP
Programação Dinâmica Prof. Marcio Delamaro ICMC/USP Características Resolve problemas combinando soluções para subproblemas Características Resolve problemas combinando soluções para subproblemas Opa!!!
Leia maisAprendizado de Máquina
Aprendizado de Máquina Template Matching Luiz Eduardo S. Oliveira Universidade Federal do Paraná Departamento de Informática http://lesoliveira.net October 25, 2012 Luiz S. Oliveira (UFPR) Aprendizado
Leia maisAlgoritmos de Ordenação. Profº Carlos Alberto T. Batista
Algoritmos de Ordenação Profº Carlos Alberto T. Batista E-mail: carlos.batista@facape.br carlos36_batista@yahoo.com.br Por que ordenar os dados? Encontrar elementos em uma lista torna-se algo simples e
Leia maisExercícios: Recursão
Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Recursão 1. Faça uma função recursiva que calcule e retorne o fatorial
Leia maisProblema de seleção de atividades. Aula 14. Exemplo. Algoritmos Gulosos. Algoritmos Gulosos. Intervalo: par ordenado de números
Problema de seleção de atividades Aula 14 Algoritmos Gulosos Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Intervalo: par ordenado de números [s[i],f[i]): início e fim do intervalo
Leia maisAlgoritmos para Automação e Sistemas. Programação Dinâmica. Universidade Federal do Amazonas Departamento de Eletrônica e Computação
Algoritmos para Automação e Sistemas Programação Dinâmica Universidade Federal do Amazonas Departamento de Eletrônica e Computação Roteiro Programação Dinâmica Problemas de Otimização Linha de Montagem
Leia maisPROGRAMAÇÃO DINÂMICA
PROGRAMAÇÃO DINÂMICA Programação dinâmica é tipicamente aplicada para problemas de otimização. O desenvolvimento de um algoritmo de programação dinâmica pode ser divido em 4 etapas. Caracterizar uma solução
Leia maisAula 5 - Produto Vetorial
Aula 5 - Produto Vetorial Antes de iniciar o conceito de produto vetorial, precisamos recordar como se calculam os determinantes. Mas o que é um Determinante? Determinante é uma função matricial que associa
Leia maisDesafios de Programação
Desafios de Programação 2018.1 Programação Dinâmica É um método de projeto de algoritmos que utiliza a memorização para melhorar a eficiência de um algoritmo. Método parecido com o de divisão e conquista
Leia maisLista de exercícios sobre contagem de operações Prof. João B. Oliveira
Lista de exercícios sobre contagem de operações Prof. João B. Oliveira 1. metodo m ( Vetor V ) int i, res = 0; para i de 1 a V.size res = res + V[i]; return res; Soma de elementos de um vetor, O( ). 2.
Leia maisComplexidade de Algoritmos. Edson Prestes
Edson Prestes Programação Dinâmica A programação dinâmica costuma ser aplicada a problemas de otimização resultando, em geral, em algoritmos mais eficientes que os mais diretos. Esse método é útil quando
Leia maisTeoria dos Grafos Aula 23
Teoria dos Grafos Aula 23 Aula passada Apresentação de trabalhos Discussão da prova Subset sum Problema da mochila Aula de hoje Caminho mais curto entre todos os pares Algortimo de Floyd Warshall Programação
Leia maisEXERCÍCIOS DE RECORDAÇÃO DE ALGORITMOS
UNIVERSIDADE SALGADO DE OLIVEIRA CURSO DE SISTEMAS DE INFORMAÇÃO DISCIPLINA: LINGUAGEM DE PROGRAMAÇÃO I PROF: GIULIANO PRADO DE MORAIS GIGLIO EXERCÍCIOS DE RECORDAÇÃO DE ALGORITMOS 0) Faça um algoritmo
Leia maisListas Lineares. Alocação Encadeada. Notas de aula da disciplina IME ESTRUTURAS DE DADOS I
Notas de aula da disciplina I 04-0820 STUTUAS D DADOS I Paulo ustáuio Duarte Pinto (pauloedp arroba ime.uerj.br) Listas encadeadas: - Conceitos - Buscas/Inserções/deleções de elementos - Pilhas e Filas
Leia maisDivisão e conquista. Eficiência de divisão e conquista
Divisão e conquista Divisão: resolver recursivamente problemas mais pequenos (até caso base) Conquista: solução do problema original é formada com as soluções dos subproblemas á divisão quando o algoritmo
Leia maisClasses, Herança e Interfaces
Escola de Artes, Ciências e Humanidades EACH-USP ACH2002 Introdução à Ciência da Computação II Professor: Delano Medeiros Beder revisada pelo professor: Luciano Digiampietri EACH Segundo Semestre de 2011
Leia maisAlgoritmos em Strings
Algoritmos em Strings R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes FEUP, MIEIC, CAL, 2010/2011 1 Índice Pesquisa exacta (string matching) Pesquisa aproximada (approximate string matching)
Leia maisDivisão e conquista. Há divisão quando o algoritmo tem pelo menos 2 chamadas recursivas no corpo
Divisão e conquista Divisão: resolver recursivamente problemas mais pequenos (até caso base) Conquista: solução do problema original é formada com as soluções dos subproblemas á divisão quando o algoritmo
Leia maisIntrodução Paradigmas
Introdução Paradigmas Recursividade Algoritmos tentativa e erro Divisão e conquista Programação dinâmica Algoritmos gulosos Algoritmos aproximados 1 Introdução O projeto de algoritmos requer abordagens
Leia maisÁrvore Binária de Busca Ótima
MAC 5710 - Estruturas de Dados - 2008 Referência bibliográfica Os slides sobre este assunto são parcialmente baseados nas seções sobre árvore binária de busca ótima do capítulo 4 do livro N. Wirth. Algorithms
Leia maisTeoria dos Grafos Aula 22
Teoria dos Grafos Aula 22 Aula passada Caminho mais curto entre todos os pares Algoritmo de Floyd Warshall Programação dinâmica Aula de hoje Caminho mais curto Algoritmo de Bellman Ford Melhorias Caminho
Leia maisANÁLISE DE ALGORITMOS
ANÁLISE DE ALGORITMOS Paulo Feofiloff Instituto de Matemática e Estatística Universidade de São Paulo agosto 2009 Introdução P. Feofiloff (IME-USP) Análise de Algoritmos agosto 2009 2 / 102 Introdução
Leia maisResolução de Sistemas Lineares. Ana Paula
Resolução de Sistemas Lineares Sumário 1 Aula Anterior 2 Decomposição LU 3 Decomposição LU com Pivotamento 4 Revisão Aula Anterior Aula Anterior Aula Anterior Aula Anterior Eliminação de Gauss Transforma
Leia maisAnálise de algoritmos
Análise de algoritmos Introdução à Ciência de Computação II Baseados nos Slides do Prof. Dr. Thiago A. S. Pardo Análise de algoritmos Existem basicamente 2 formas de estimar o tempo de execução de programas
Leia maisFundamentos de Matemática Curso: Informática Biomédica
Fundamentos de Matemática Curso: Informática Biomédica Profa. Vanessa Rolnik Artioli Assunto: sequências e matrizes 05 e 06/06/14 Sequências Def.: chama-se sequência finita ou n-upla toda aplicação f do
Leia maisQuestões de Divisão e Conquista
Questões de Divisão e Conquista 1. Potência de inteiros Certo ou errado? O algoritmo abaixo Pot(n,k) calcula n k, para n e k inteiros. Sua complexidade é O(k): Pot(n, k): se (k = 0): retornar 1 senão se
Leia maisProjeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )
Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista (2.1-2.2) DECOM/UFOP 2013/1 5º. Período Anderson Almeida Ferreira Adaptado do material desenvolvido por Andréa Iabrudi
Leia maisParadigmas de programação
Paradigmas de programação 1 Paradigma? Um paradigma é algo que serve de exemplo ou modelo. Sinônimos: Padrão Prototipo 2 Paradigma de programação? É uma proposta tecnológica. Fornece uma visão do programador
Leia maisAnálise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Algoritmos Divisão e Conquista Construção incremental Resolver o problema para um sub-conjunto dos elementos de entrada; Então, adicionar
Leia maisTeoria dos Grafos Aula 24
Teoria dos Grafos Aula 24 Aula passada Caminho mais curto entre todos os pares Algortimo de Floyd Warshall Programação dinâmica Aula de hoje Caminho mais curto em grafos Algoritmo de Bellman Ford Algoritmo
Leia maisOtimização Combinatória - Parte 4
Graduação em Matemática Industrial Otimização Combinatória - Parte 4 Prof. Thiago Alves de Queiroz Departamento de Matemática - CAC/UFG 2/2014 Thiago Queiroz (DM) Parte 4 2/2014 1 / 33 Complexidade Computacional
Leia maisCADERNO DE EXERCÍCIOS ALGORITMOS
J. EXERCÍCIOS SOBRE MODULARIZAÇÃO 77. Faça uma função que recebe um número inteiro por parâmetro e retorna verdadeiro se ele for par e falso se for ímpar. 78. Escreva um programa que leia o raio de um
Leia maisExercícios: Vetores e Matrizes
Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Vetores e Matrizes 1 Vetores 1. Faça um programa que possua um vetor
Leia maisAula 13: Branch-and-bound
Aula 13: Branch-and-bound Otimização Linear e Inteira Túlio A. M. Toffolo http://www.toffolo.com.br BCC464/PCC174 2018/2 Departamento de Computação UFOP Previously... Modelagem em PI / Problemas Combinatórios
Leia maisCIC 111 Análise e Projeto de Algoritmos II
CIC 111 Análise e Projeto de Algoritmos II Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 27 Square root algorithms Combining algorithms Integer partitions Mo s algorithm Square
Leia maisParadigmas de Projetos de Algoritmos
Paradigmas de Projetos de Algoritmos Luciana Assis 9 de junho de 2016 Luciana Assis (UFVJM) 9 de junho de 2016 1 / 36 1 Introdução 2 Força Bruta 3 Abordagem Incremental ou Construtiva 4 Recursão 5 Divisão
Leia maisAlgoritmos gulosos (greedy)
Algoritmos gulosos (greedy) CLRS 16.1 e mais... Algoritmos p. 1 Algoritmos gulosos Algoritmo guloso procura ótimo local e acaba obtendo ótimo global costuma ser muito simples e intuitivo muito eficiente
Leia maisGrafos: caminhos (matriz adjacência)
Grafos: caminhos (matriz adjacência) Algoritmos e Estruturas de Dados 2 Graça Nunes 1 O problema do menor caminho Um motorista deseja encontrar o caminho mais curto possível entre duas cidades do Brasil
Leia maisSistemas de Equações Lineares Algébricas
Sistemas de Equações Lineares Algébricas A 11 x 1 + A 12 x 2 +... + A 1n x n = b 1 A 21 x 1 + A 22 x 2 +... + A 2n x n = b 2............... A n1 x1 + A n2 x 2 +... + A nn x n = b n A 11 A 12... A 1n x
Leia maisAlgoritmos de Ordenação
Algoritmos de Ordenação! Problema: encontrar um número de telefone em uma lista telefônica! simplificado pelo fato dos nomes estarem em ordem alfabética! e se estivesse sem uma ordem?! Problema: busca
Leia maisProgramação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante
Programação Dinâmica I SCC0210 Algoritmos Avançados (2/2011) Lucas Schmidt Cavalcante Introdução Soma máxima de uma subsequência contígua Problema do troco Quantidade de formas de dar troco Problema da
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 03 Técnicas de Projeto de Algoritmos (Divisão e Conquista) Edirlei Soares de Lima Estratégias de Projeto de Algoritmos Força Bruta (Brute Force)
Leia maisCAL ( ) - MIEIC/FEUP Programação Dinâmica ( )
AL (-) - MIEI/FEUP Programação Dinâmica (--4) Técnicas de oncepção de Algoritmos (ª parte): programação dinâmica R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes AL, MIEI, FEUP Fevereiro de
Leia maisEspaço amostral Ω: Conjunto enumerável de todos os possíveis resultados de um experimento aleatório. um evento elementar. E = E[X j ] X j.
Universidade Tecnológica Federal do Paraná Professor Murilo V G da Silva Notas de aula Algoritmos Avançados I (Aula 04 Conteúdos da aula: [CLR09: cap 7 e 9][MIE05 4, 5] Vamos estudar nesta aula três algoritmos
Leia maisAula 10: Introdução a Vetores e Matrizes
Aula 10: Introdução a Vetores e Matrizes Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Vetores e Matrizes Programação de Computadores IV 1 / 50 Agenda
Leia maisSolução de Recorrências
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Solução de Recorrências Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ nataliabatista@decom.cefetmg.br
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 05 Técnicas de Projeto de Algoritmos (Programação Dinâmica) Edirlei Soares de Lima Estratégias de Projeto de Algoritmos Força Bruta (Brute Force)
Leia maisTeoria dos Grafos Aula 17
Teoria dos Grafos Aula 17 Aula passada Problema da soma do subconjunto (subset sum) Programação dinâmica Problema da mochila Aula de hoje Alinhamento de sequências Programação dinâmica Caminho mais curto
Leia maisExercícios sobre algoritmos
Exercícios sobre algoritmos Exercícios envolvendo estruturas de decisão Fazer um algoritmo para: 1) Receber um número do usuário e mostrar se esse número é par ou não par 2) Receber 3 valores numéricos,
Leia maisn Programação Dinâmica n Exemplo: Sequência de Fibonnaci n Problemas de Otimização n Multiplicação de Matrizes n Principios de Programação Dinâmica
Proeto e Análise e Algoritmos Altigran Soares a Silva Universiae Feeral o Amazonas Departamento e Ciência a Computação Roteiro Exemplo: Sequência e Fibonnaci Problemas e Otimização Multiplicação e Matrizes
Leia maisFaculdades Integradas Rui Barbosa Programação II Prof. Marcos Antonio Estremote. Exercícios com Vetores e Matrizes
Faculdades Integradas Rui Barbosa Programação II Prof. Marcos Antonio Estremote Exercícios com Vetores e Matrizes 1. Leia um vetor de 12 posições e em seguida ler também dois valores X e Y quaisquer correspondentes
Leia maisOBMEP 2010 Soluções da prova da 2ª Fase Nível 2. Questão 1
Questão a) Para saber o número que deve dizer ao matemágico, Joãozinho deve fazer quatro contas: ª conta: multiplicar o número no cartão escolhido por 2; 2ª conta: somar 3 ao resultado da primeira conta;
Leia maisCI811 Tópicos em Algoritmos
CI811 Tópicos em Algoritmos Problemas 15 de junho de 2016 Aqui segue uma lista com alguns problemas computacionais para serem trabalhados pelos alunos da disciplina de Tópicos em Algoritmos (CI811) do
Leia maisResolução de sistemas de equações lineares: Fatorações de matrizes
Resolução de sistemas de equações lineares: Fatorações de matrizes Marina Andretta/Franklina Toledo ICMC-USP 27 de agosto de 2012 Baseado no livro Análise Numérica, de R. L. Burden e J. D. Faires. Marina
Leia maisINSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS DISCIPLINA: Lab. de Programação PROF: MSc. Flávio Barros PERÍODO: 2 DATA: Aluno (s): 01 ATIVIDADE / / Revisão de Conteúdo
Leia maisResolução de sistemas de equações lineares: Fatorações de matrizes
Resolução de sistemas de equações lineares: Fatorações de matrizes Marina Andretta/Franklina Toledo ICMC-USP 27 de fevereiro de 2015 Baseado no livro Análise Numérica, de R. L. Burden e J. D. Faires. Marina
Leia maisMAP Métodos Numéricos e Aplicações Escola Politécnica 1 Semestre de 2017 EPREC - Entrega em 27 de julho de 2017
1 Preliminares MAP3121 - Métodos Numéricos e Aplicações Escola Politécnica 1 Semestre de 2017 EPREC - Entrega em 27 de julho de 2017 A decomposição de Cholesky aplicada a Finanças O exercício-programa
Leia maisActividade Formativa 1
Actividade Formativa 1 Resolução 1. a. Dada a função y 3+4x definida no conjunto A {x R: 2 x < 7} represente graficamente A e a sua imagem; exprima a imagem de A como um conjunto. b. Dada a função y 3
Leia maisPrimeira Lista de Exercícios 2005/1... Exercício 1 Desenhe Diagrama de Estados para Máquinas que Decidem as Linguagens:
UFLA Universidade Federal de Lavras Departamento de Ciência da Computação COM167 Teoria da Computação Prof. Rudini Sampaio Monitor: Rodrigo Pereira dos Santos Primeira Lista de Exercícios 2005/1 Exercício
Leia maisProjeto e Análise de Algoritmos Projeto de Algoritmos Programação Dinâmica. Prof. Humberto Brandão
Projeto e Análise de Algoritmos Projeto de Algoritmos Programação Dinâmica Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br Universidade Federal de Alfenas versão da aula: 0.3 Programação Dinâmica
Leia maisBusca em Regiões Ortogonais
Busca em Regiões Ortogonais Claudio Esperança Paulo Roma 1 O problema O problema O problema consiste em recuperar objetos tipicamente pontos que intersectam ou estão contidos numa região simples do espaço
Leia maisPesquisa Operacional. Prof. José Luiz
Pesquisa Operacional Prof. José Luiz Resolver um problema de Programação Linear significa basicamente resolver sistemas de equações lineares; Esse procedimento, apesar de correto, é bastante trabalhoso,
Leia maisColoração de intervalos
Coloração de intervalos Problema: Dados intervalos de tempo [s 1,f 1 ),...,[s n,f n ), encontrar uma coloração dos intervalos com o menor número possível de cores em que dois intervalos de mesma cor sempre
Leia maisComplexidade de Algoritmos
Complexidade de Algoritmos! Uma característica importante de qualquer algoritmo é seu tempo de execução! é possível determiná-lo através de métodos empíricos, considerando-se entradas diversas! é também
Leia maisTerça-feira, 7 de maio
15.053 Terça-feira, 7 de maio Formulações de Programação Inteira Distribuir: Anotações da Aula 1 Rápido Resumo de PD PD normalmente funciona para a tomada de decisões ao longo do tempo Objetivos das duas
Leia maisEscalonamento em uma máquina
Capítulo 4 Escalonamento em uma máquina Veremos neste capítulo vários problemas relacionados ao escalonamento em uma máquina. Estes problemas são importantes, pois além de fornecerem idéias para problemas
Leia maisTópicos em Algoritmos. André Guedes
Tópicos em Algoritmos André Guedes 31 de agosto de 2017 Sumário 1 Aulas 1 2 Introdução 2 3 Problemas Computacionais e Algoritmos 4 3.1 Definições............................. 4 3.2 Correção e eficiência.......................
Leia maisFicha 1 Noções de sequência e decisão em algoritmia
Ficha 1 Noções de sequência e decisão em algoritmia 1. Ler uma temperatura em Celsius e converter para Fahrenheit. Elabore o algoritmo e especifique as estruturas de dados necessárias para a resolução
Leia maisANÁLISE DE COMPLEXIDADE DOS ALGORITMOS
1/18 ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS Algoritmos 2/18 Algoritmos Algoritmo - sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador)
Leia maisSISTEMAS LINEARES PROF. EDÉZIO
SOLUÇÕES NUMÉRICAS DE SISTEMAS LINEARES PROF. EDÉZIO Considere o sistema de n equações e n incógnitas: onde E : a x + a x +... + a n x n = b E : a x + a x +... + a n x n = b. =. () E n : a n x + a n x
Leia maisRefletores de Householder e Fatoração QR
Refletores de Householder e Fatoração QR Antonio Elias Fabris Instituto de Matemática e Estatística Universidade de São Paulo Map 2210 Aplicações de Álgebra Linear Antonio Elias Fabris (IME-USP) Householder
Leia maisSistemas Lineares. Métodos Iterativos Estacionários
-58 Sistemas Lineares Estacionários Lucia Catabriga e Andréa Maria Pedrosa Valli Laboratório de Computação de Alto Desempenho (LCAD) Departamento de Informática Universidade Federal do Espírito Santo -
Leia maisDINTER UFF/IFTM - Análise e Síntese de Algoritmos - Lista de Exercícios
DINTER UFF/IFTM - Análise e Síntese de Algoritmos - Lista de Exercícios - 2013 1. Uma pessoa sobe uma escada composta de n degraus, com passos que podem alcançar entre 1 e k n degraus. Escrever equações
Leia maisProblema da Mochila Booleana: Uma Solução Usando Programação Dinâmica. Gabriel Rosa Guilherme Alves
Problema da Mochila Booleana: Uma Solução Usando Programação Dinâmica Gabriel Rosa Guilherme Alves Agenda O problema, definição e exemplo Construindo uma solução... Expressão recursiva Algoritmo recursivo
Leia maisEstrutura de Dados e Algoritmos e Programação e Computadores II. Aula 11: Introdução aos Grafos
Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 11: Introdução aos Grafos Indução Finita Indução Finita é uma técnica para provar teoremas também usada no projecto de algoritmos. Suponha
Leia maisUniversidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python
Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python Exercícios: Funções 1. Crie uma função que recebe como parâmetro um número
Leia maisAnálise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Principais paradigmas do projeto de algoritmos - Recursividade - Tentativa e erro - Divisão e Conquista - Programação dinâmica - Algoritmos Gulosos e de Aproximação
Leia maisAlguns comentários. Segunda prova. Programação dinâmica em grafos. Guloso em grafos. Algoritmos p. 1
Alguns comentários Segunda prova Programação dinâmica em grafos Guloso em grafos Algoritmos p. 1 Problema dos intervalos disjuntos Problema: Dados intervalos [s[1],f[1]),...,[s[n],f[n]), encontrar coleção
Leia maisEstruturas de Repetição WHILE e DO- WHILE
Universidade Federal do Pampa UNIPAMPA Campus Itaqui RS Engenharia de Agrimensura Introdução à Programação (prof. Dr. Rogério Vargas) Lista 2 (entrega: 1 de junho de 2015) Instruções: Trabalhos iguais
Leia maisBucketsort. CLRS sec 8.4. Algoritmos p. 1
Bucketsort CLRS sec 8.4 Algoritmos p. 1 Bucket Sort Recebe um inteiro n e um vetor A[1..n] onde cada elemento é um número no intervalo [0, 1). Algoritmos p. 2 Bucket Sort Recebe um inteiro n e um vetor
Leia maisÁlgebra Linear e Geometria Anaĺıtica. Matrizes e Sistemas de Equações Lineares
universidade de aveiro departamento de matemática Álgebra Linear e Geometria Anaĺıtica Agrupamento IV (ECT, EET, EI) Capítulo 1 Matrizes e Sistemas de Equações Lineares Geometria anaĺıtica em R 3 [1 01]
Leia maisProjeto e Análise de Algoritmos
Projeto e Algoritmos Pontifícia Universidade Católica de Minas Gerais harison@pucpcaldas.br 26 de Maio de 2017 Sumário A complexidade no desempenho de Quando utilizamos uma máquina boa, ela tende a ter
Leia maisAULA 17. Algoritmos p.662/695
AULA 17 Algoritmos p.662/695 Mochila Dados dois vetores x[1.. n] e w[1.. n], denotamos por x w o produto escalar w[1]x[1] + w[2]x[2] + + w[n]x[n]. Suponha dado um número inteiro não-negativo W e vetores
Leia maisSistemas Lineares - Eliminação de Gauss
1-28 Sistemas Lineares - Andréa Maria Pedrosa Valli Laboratório de Computação de Alto Desempenho (LCAD) Departamento de Informática Universidade Federal do Espírito Santo - UFES, Vitória, ES, Brasil 2-28
Leia maisProgramação de Computadores 1 Lista 2. Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP
Programação de Computadores 1 Lista 2 Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP 0.1 Vetores e Cadeias de Caracteres 1. Codifique um programa que leia e armazene duas notas de 10 alunos e calcule
Leia mais