Programação Dinâmica Partição de Inteiros

Tamanho: px
Começar a partir da página:

Download "Programação Dinâmica Partição de Inteiros"

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

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 mais

Método Guloso. Troco mínimo. Paulo Eustáquio Duarte Pinto (pauloedp arroba ime.uerj.br) junho/2012. Troco mínimo. Troco mínimo

Mé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 mais

Programação dinâmica

Programaçã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 mais

Introdução à Análise Algoritmos

Introduçã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 mais

Aná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 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 mais

Programaçã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 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 mais

Programação Dinâmica. Prof. Anderson Almeida Ferreira

Programaçã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 mais

AULA 15. Algoritmos p.600/637

AULA 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 mais

PCC104 - Projeto e Análise de Algoritmos

PCC104 - 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 mais

Divisã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. É 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 mais

Backtracking. Backtracking

Backtracking. 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 mais

Complexidade de Algoritmos

Complexidade 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 mais

5ª Lista de Exercícios de Programação I

5ª 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 mais

Tópicos Avançados em Algoritmos - exercícios de Prog. Din. com correcção parcial

Tó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 mais

MATRIZES - PARTE Mais exemplos Multiplicação de duas matrizes AULA 26

MATRIZES - 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 mais

Programação Dinâmica. Prof. Marcio Delamaro ICMC/USP

Programaçã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 mais

Aprendizado de Máquina

Aprendizado 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 mais

Algoritmos de Ordenação. Profº Carlos Alberto T. Batista

Algoritmos 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 mais

Exercícios: Recursão

Exercí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 mais

Problema 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. 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 mais

Algoritmos 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 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 mais

PROGRAMAÇÃO DINÂMICA

PROGRAMAÇÃ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 mais

Aula 5 - Produto Vetorial

Aula 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 mais

Desafios de Programação

Desafios 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 mais

Lista 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 Lista de exercícios sobre contagem de operações Prof. João B. Oliveira 1. metodo m ( Vetor V ) int i, res = 0; para i de 1 a V.size res = res + V[i]; return res; Soma de elementos de um vetor, O( ). 2.

Leia mais

Complexidade de Algoritmos. Edson Prestes

Complexidade 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 mais

Teoria dos Grafos Aula 23

Teoria 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 mais

EXERCÍCIOS DE RECORDAÇÃO DE ALGORITMOS

EXERCÍ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 mais

Listas Lineares. Alocação Encadeada. Notas de aula da disciplina IME ESTRUTURAS DE DADOS I

Listas 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 mais

Divisão e conquista. Eficiência de divisão e conquista

Divisã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 mais

Classes, Herança e Interfaces

Classes, 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 mais

Algoritmos em Strings

Algoritmos 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 mais

Divisão e conquista. Há divisão quando o algoritmo tem pelo menos 2 chamadas recursivas no corpo

Divisã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 mais

Introdução Paradigmas

Introduçã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

Á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 mais

Teoria dos Grafos Aula 22

Teoria 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 mais

ANÁLISE DE ALGORITMOS

ANÁ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 mais

Resolução de Sistemas Lineares. Ana Paula

Resoluçã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 mais

Análise de algoritmos

Aná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 mais

Fundamentos de Matemática Curso: Informática Biomédica

Fundamentos 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 mais

Questões de Divisão e Conquista

Questõ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 mais

Projeto 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 ( ) 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 mais

Paradigmas de programação

Paradigmas 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 mais

Análise e Complexidade de Algoritmos

Aná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 mais

Teoria dos Grafos Aula 24

Teoria 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 mais

Otimização Combinatória - Parte 4

Otimizaçã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 mais

CADERNO DE EXERCÍCIOS ALGORITMOS

CADERNO 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 mais

Exercícios: Vetores e Matrizes

Exercí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 mais

Aula 13: Branch-and-bound

Aula 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 mais

CIC 111 Análise e Projeto de Algoritmos II

CIC 111 Análise e Projeto de Algoritmos II CIC 111 Análise e Projeto de Algoritmos II Prof. Roberto Affonso da Costa Junior Universidade Federal de Itajubá AULA 27 Square root algorithms Combining algorithms Integer partitions Mo s algorithm Square

Leia mais

Paradigmas de Projetos de Algoritmos

Paradigmas 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 mais

Algoritmos gulosos (greedy)

Algoritmos 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 mais

Grafos: caminhos (matriz adjacência)

Grafos: 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 mais

Sistemas de Equações Lineares Algébricas

Sistemas 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 mais

Algoritmos de Ordenação

Algoritmos 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 mais

Programaçã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 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 mais

Projeto e Análise de Algoritmos

Projeto 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 mais

CAL ( ) - MIEIC/FEUP Programação Dinâmica ( )

CAL ( ) - 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 mais

Espaç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.

Espaç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 mais

Aula 10: Introdução a Vetores e Matrizes

Aula 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 mais

Solução de Recorrências

Soluçã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 mais

Projeto e Análise de Algoritmos

Projeto 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 mais

Teoria dos Grafos Aula 17

Teoria 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 mais

Exercícios sobre algoritmos

Exercí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 mais

n 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

n 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 mais

Faculdades 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 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 mais

OBMEP 2010 Soluções da prova da 2ª Fase Nível 2. Questão 1

OBMEP 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 mais

CI811 Tópicos em Algoritmos

CI811 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 mais

Resolução de sistemas de equações lineares: Fatorações de matrizes

Resoluçã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 mais

INSTITUTO 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. 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 mais

Resolução de sistemas de equações lineares: Fatorações de matrizes

Resoluçã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 mais

MAP Métodos Numéricos e Aplicações Escola Politécnica 1 Semestre de 2017 EPREC - Entrega em 27 de julho de 2017

MAP 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 mais

Actividade Formativa 1

Actividade 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 mais

Primeira Lista de Exercícios 2005/1... Exercício 1 Desenhe Diagrama de Estados para Máquinas que Decidem as Linguagens:

Primeira 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 mais

Projeto 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 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 mais

Busca em Regiões Ortogonais

Busca 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 mais

Pesquisa Operacional. Prof. José Luiz

Pesquisa 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 mais

Coloração de intervalos

Coloraçã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 mais

Complexidade de Algoritmos

Complexidade de Algoritmos Complexidade de Algoritmos! Uma característica importante de qualquer algoritmo é seu tempo de execução! é possível determiná-lo através de métodos empíricos, considerando-se entradas diversas! é também

Leia mais

Terça-feira, 7 de maio

Terç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 mais

Escalonamento em uma máquina

Escalonamento 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 mais

Tópicos em Algoritmos. André Guedes

Tó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 mais

Ficha 1 Noções de sequência e decisão em algoritmia

Ficha 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 mais

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

ANÁ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 mais

SISTEMAS LINEARES PROF. EDÉZIO

SISTEMAS 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 mais

Refletores de Householder e Fatoração QR

Refletores 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 mais

Sistemas Lineares. Métodos Iterativos Estacionários

Sistemas 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 mais

DINTER 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 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 mais

Problema 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 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 mais

Estrutura 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 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 mais

Universidade 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 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 mais

Análise e Complexidade de Algoritmos

Aná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 mais

Alguns 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 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 mais

Estruturas de Repetição WHILE e DO- WHILE

Estruturas 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 mais

Bucketsort. CLRS sec 8.4. Algoritmos p. 1

Bucketsort. 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

Á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 mais

Projeto e Análise de Algoritmos

Projeto 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 mais

AULA 17. Algoritmos p.662/695

AULA 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 mais

Sistemas Lineares - Eliminação de Gauss

Sistemas 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 mais

Programaçã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 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