AED-II, 2011/2012 Trabalho prático 1

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

Download "AED-II, 2011/2012 Trabalho prático 1"

Transcrição

1 AED-II, 2011/2012 Trabalho prático 1 Prazos e formalidades Prazo de entrega: 02/Mar/2012. Devem entregar um único ficheiro PDF com o nome aed2-trab1-gxx.pdf, em que XX é o vosso número de grupo. Na primeira folha do documento deve aparecer os nomes e números dos alunos que constituem o grupo. A entrega deve ser feita por para fernando.lobo@gmail.com. O subject do deverá ser: aed2-trab1-gxx. Exercícios 1. Insertion Sort Escalabilidade empírica. a) Implemente o algoritmo Insertion Sort (provavelmente já o fez em AED-I) numa linguagem de programação à sua escolha. b) Teste o algoritmo em inputs gerados aleatoriamente de tamanho 2 10,2 11, 2 12,...,2 20, e meça o tempo de execução do algoritmo. (Nota: Não é necessário ir até n =2 20, caso o algoritmo se torne demasiado lento no seu computador. Pode terminar os testes quando as execuções do algoritmo começarem a exceder 5 minutos.) c) Repita a alínea anterior em inputs que correspondam ao melhor caso. d) Repita a alínea anterior em inputs que correspondam ao pior caso. e) Faça um gráfico com os resultados obtidos (tamanho do problema no eixo do x, tempo de execução no eixo do y). O que pode concluir? f) Altere o código do Insertion Sort de tal forma que para além de ordenar o array de input, o algoritmo retorne o número de vezes que a instrução A[i +1] = A[i] é executada (linha 6 do pseudocódigo dado na aula teórica). g) Repita as alíneas (b), (c), (d), com a versão modificado do algoritmo, registando desta vez o número de vezes que a instrução A[i + 1]= A[i] é executada, para cada tamanho de input, e para cada tipo de input (melhor caso, pior caso, aleatório). 1

2 h) Faça um novo gráfico com os resultados obtidos (tamanho do problema no eixo do x, número de execuções de A[i +1]=A[i]). O que pode concluir? i) Indique uma estimativa do tempo que o seu algoritmo demoraria a ordenar um array de (10 milhões) de números, assumindo que o input se encontra ordenado de forma aleatória. 2. Crescimento de funções. a) Imagine que tem à sua disposição 2 algoritmos, A e B. O tempo de execução do algoritmo A para resolver um problema de dimensão n é de 100n 2. O tempo de execução do algoritmo B para resolver o mesmo problema de dimensão n é de 2 n. A partir de que valor de n é que o algoritmo A é mais rápido do que o algoritmo B? 3. Complexidade assimptótica. a) Mostre que (n + a) b = Θ(n b ) para quaisquer constantes reais a e b, com b>0. b) 2 n+1 = O(2 n )? c) 2 2n = O(2 n )? d) Sejam f e g duas funções não negativas. Isto é, f(n) 0, g(n) 0, n. Mostre que se f(n) = O(g(n)), então g(n) = Ω(f(n)). 2

3 AED-II, 2011/2012 Trabalho prático 2 Prazos e formalidades Prazo de entrega: 16/Mar/2012. Devem entregar um único ficheiro PDF com o nome aed2-trab2-gxx.pdf, em que XX é o vosso número de grupo. Na primeira folha do documento deve aparecer os nomes e números dos alunos que constituem o grupo. A entrega deve ser feita por para fernando.lobo@gmail.com. O subject do deverá ser: aed2-trab2-gxx. 1. Indução matemática Prove por indução matemática que: a) n i=1 i = n(n +1)/2 b) n i=0 2i =2 n+1 1 c) n 1 i=0 ari = arn a, com r = 1 r 1 (soma dos n primeiros termos da progressão geométrica: a, ar, ar 2,..., ar n 1 ) 2. Recorrências: Método de substituição. Utilize o método de substituição nestas alíneas. a) Seja T (n) =T (n/2) + 1. Mostre que T (n) éo(lg n). b) Seja T (n) =2T (n/2) + n. Mostre que T (n) éω(n lg n). 3. Recorrências: Método da árvore de recorrência. a) Use o método da árvore de recorrência para determinar um bom limite assimptótico superior para a recorrência T (n) = 3 T (n/2)+ n. 1

4 b) Argumente, com o auxílio de uma árvore de recorrência, que a solução de T (n) =T (n/3) + T (2n/3) + n é Ω(n lg n). 4. Mais recorrências. a) Use o teorema Mestre para obter limites assimptóticos apertados para as seguintes recorrências: 1. T (n) =2T (n/4) T (n) =2T (n/4) + n. 3. T (n) =2T (n/4) + n. 4. T (n) =2T (n/4) + n 2. b) Sejam A e B dois algoritmos para resolver um determinado problema. O tempo de execução do algoritmo A é dado por T A (n) =7T (n/2) + n 2. O tempo de execução do algoritmo B é dado por T B (n) =dt(n/4) + n 2. Qual o maior valor inteiro que d pode assumir de forma a que o algoritmo B seja assimptóticamente mais rápido do que o algoritmo A? c) Use o teorema Mestre para mostrar que a solução da recorrência para a pesquisa binária, T (n) =T (n/2) + Θ(1), é T (n) =Θ(lg n). d) Suponha que tem à sua disposição os seguintes três algoritmos para resolver um problema de dimensão n: O algoritmo A resolve o problema dividindo-o em cinco sub-problemas de tamanho n/2, resolvendo cada um dos sub-problemas recursivamente e combinando as soluções em tempo linear. O algoritmo B resolve o problema dividindo-o em dois sub-problemas de tamanho n 1, resolvendo cada um dos sub-problemas recursivamente e combinando as soluções em tempo constante. O algoritmo C resolve o problema dividindo-o em nove sub-problemas de tamanho n/3, resolvendo cada um dos sub-problemas recursivamente e combinando as soluções em O(n 2 ). Qual a complexidade temporal de cada um destes algoritmos? Qual deles é assimptoticamente mais rápido? Justifique. 5. Divisão e Conquista: Exercício de aquecimento. a) Faça um algoritmo baseado no paradigma de divisão e conquista, para obter o valor máximo de um array de n elementos. b) Indique a recorrência para o tempo de execução do algoritmo. c) Resolva a recorrência. Qual a complexidade do algoritmo? 6. Escalabilidade empírica. a) Implemente o algoritmo Merge Sort dado na aula teórica. 2

5 b) Teste o algoritmo em inputs gerados aleatoriamente de tamanho 2 10,2 11, 2 12,...,2 20, e meça o tempo de execução do algoritmo. c) Faça um gráfico com os resultados obtidos (tamanho do problema no eixo do x, tempo de execução no eixo do y). Compare com os resultados do algoritmo Insertion Sort que obteve no trabalho prático da semana anterior. 3

6 AED-II, 2011/2012 Trabalho prático 3 Prazos e formalidades Prazo de entrega: 23/Mar/2012 até às 23:59. Os problemas devem ser submetidos via Mooshak. Devem ir a mooshak/ e registarem-se fazendo os seguintes passos: Seguir o link Register for online contest Escolher AEDII1112 na caixa contest, preencher grupox no campo nome (em que X é o vosso número de grupo) e o de um dos elementos do grupo. Depois do registo, recebem uma password no que indicaram. Devem partilhar essa password pelos elementos do grupo. Problema A: Pares Marafados Dado um array A com n inteiros distintos, pretende-se obter o número de pares marafados contidos no array. Um par (i, j) diz-se marafado se e só se: i<j A[i] > 2 A[j] Como exemplo, o array A = [8, 3, 9, 2, 5] tem 3 pares marafados. Implemente um algoritmo de complexidade Θ(n lg n) para resolver o problema. Pode fazê-lo em C ou Java. Formato para o Mooshak Input O input deverá ter o seguinte formato, n A1 A2... An 1

7 Na primeira linha aparece o número de elementos do array (n 80000). Nas restantes linhas aparecem os elementos do array, um por linha. O timeout é 1 seg. Output O output deverá apresentar o número de pares marafados, seguido de um caracter de fim de linha. Exemplo Input Output 3 Problema B: Ganhar dinheiro na bolsa Considere o seguinte problema relacionado com a bolsa. Dada uma sequência de valores correspondentes à cotação das acções da empresa Marafados Lda ao longo de um período de n dias consecutivos (um valor por dia), pretende-se saber qual teria sido a altura ideal para comprar e a altura ideal para vender, de modo a maximizar o lucro. Para efeitos deste exercício considere que as taxas de juro são nulas. Considere também que apenas pode comprar e vender uma vez ao longo do período de n dias. Como exemplo, para o seguinte input: cotaç~ao: dia: a resposta correcta deveria ser: comprar no dia 2, vender no dia 5, lucro = 4 Implemente um algoritmo de complexidade Θ(n lg n) para resolver o problema. Pode fazê-lo em C ou Java. Pode assumir que as cotações são números inteiros positivos. O timeout é 1 seg. 2

8 Formato para o Mooshak Input O input deverá ter o seguinte formato, n C1 C2... Cn Na primeira linha aparece o número de dias para os quais temos a cotação da acção (n 80000). Nas restantes linhas aparecem as cotações da empresa ao longo dos n dias. C1 é a cotação no 1 o dia, C2 é a cotação no 2 o dia,..., Cn é a cotação no n-ésimo dia. Output O output deverá apresentar o lucro máximo que se consegue obter, seguido de um caracter de fim de linha. Caso não seja possível obter qualquer lucro, o programa deverá escrever a frase no profit is possible, seguido de um caracter de fim de linha. Exemplo 1 Input Output 4 Exemplo 2 Input

9 Output no profit is possible 4

10 AED-II, 2011/2012 Trabalho prático 4 Prazos e formalidades Prazo de entrega: 30/Mar/2012 até às 23:59. Devem entregar um único ficheiro ZIP com o nome aed2-trab4-gxx.zip, em que XX é o vosso número de grupo. No ficheiro ZIP deve estar incluido um PDF com o nome aed2-trab4-gxx.pdf com as respostas às perguntas 1b e 1c. As respostas às perguntas 1a, 2a, 2c devem vir em ficheiros com os nomes p1a.java, p2a.java, p2c.java no caso de programarem em Java, ou p1a.c, p2a.c, p2c.c no caso de programarem em C. As perguntas 1d, 1e, 2b devem ser submetidas ao Mooshak. A entrega do ficheiro ZIP deve ser feita por para fernando.lobo@gmail.com. O subject do deverá ser: aed2-trab4-gxx. As submissões ao Mooshak apenas poderão ser efectuadas a partir de 26/Mar/2012. O timeout de todos os problemas no Mooshak é de 1 segundo. Os exercícios propostos esta semana são exercícios de aquecimento sobre programação dinâmica. Os problemas pedidos foram dados nas aulas teóricas sob a forma de pseudo-código. 1 Combinações Pretende-se fazer um algoritmo que calcule o valor de Comb(n, k), o número de combinações de n, k a k. a) Implemente um algoritmo de força bruta para resolver o problema, através da aplicação directa da fórmula recursiva: Comb(n, k) = 1 Comb(n 1,k 1) + Comb(n 1,k), se k = 0 ou n = k, caso contrário b) Meça o tempo de execução para n =50ek =1, 2, 3,... Pode parar quando o tempo de execução para um determinado valor de k exceder 5 minutos. 1

11 c) Faça um gráfico com os tempos obtidos na alínea anterior (k no eixo do x, tempo no eixo do y). d) Utilize programação dinâmica para resolver o mesmo problema. Submeta a sua implementação ao mooshak (Problema C). O input tem 2 linhas, a primeira contêm o valor de n e a segunda contém o valor de k. O output tem apenas uma linha contendo o valor de Comb(n, k) seguido de um caracter de fim de linha. Pode assumir que 0 n 50 e que 0 k n. e) Utilize a técnica de memoization para resolver o mesmo problema. Submeta a sua implementação ao mooshak (Problema D). O formato do input e output é idêntico ao da alínea anterior. 2 Subsequência comum mais longa a) Implemente o algoritmo para obter a subsequência comum mais longa entre 2 strings usando o método de força bruta. b) O mesmo da alínea anterior mas usando programação dinâmica ou memoization. Submeta a sua solução ao mooshak (Problema E). O input tem duas linhas, a primeira contêm uma string X e a segunda contém uma string Y.O comprimento das strings não excede os 1000 caracteres. O output deverá apresentar apenas o comprimento de uma subsequência comum mais longa entre X e Y, seguido de um caracter de fim de linha. Exemplo de input nocturno mosquiteiro Output 4 c) O mesmo da alínea anterior mas desta fazendo o output da subsequência comum mais longa. Com o input dado anteriormente o output tanto poderia ser otro como ouro. Esta versão não é para submeter ao mooshak. 2

12 AED-II, 2011/2012 Trabalho prático 5 Prazos e formalidades Prazo de entrega: 13/Abr/2012 até às 23:59. Devem entregar um único ficheiro ZIP com o nome aed2-trab5-gxx.zip, em que XX é o vosso número de grupo. No ficheiro ZIP deve estar incluido um PDF com o nome aed2-trab5-gxx.pdf com as respostas às perguntas 2c, 2d, 2e. A resposta à pergunta 2b deve vir num ficheiro com o nome p2b.java ou p2b.c consoante a linguagem de programação escolhida. As perguntas 1 e 2a devem ser submetidas ao Mooshak (problemas F e G, respectivamente) A entrega do ficheiro ZIP deve ser feita por para fernando.lobo@gmail.com. O subject do deverá ser: aed2-trab5-gxx. As submissões ao Mooshak apenas poderão ser efectuadas a partir de 04/Abr/2012. O timeout de todos os problemas no Mooshak é de 1 segundo. 1 Ganhar dinheiro na bolsa, outra vez! No trabalho prático n o 3 pediu-se um algoritmo de complexidade Θ(n lg n) para resolver o problema da bolsa. Desta vez, pretende-se um algoritmo de complexidade Θ(n) para resolver o mesmo problema. Implemente o dito algoritmo e submeta-o ao Mooshak. O formato do input e output é exactamente igual ao do problema que resolveram na ficha n o 3. Contudo, desta vez o limite máximo de dias é de n = NOTA: Apenas considerarei a resposta correcta se o algoritmo que fizerem for de complexidade Θ(n), independentemente de terem Accepted no Mooshak. 2 Ladrão de Gambelas O João Gamão vive nos arredores de Faro e ultimamente tem espalhado o terror pelas redondezas. Na noite passada conseguiu entrar na casa de férias da Madonna na Quinta do Lago. Dentro da casa encontrou vários objectos: um anel de diamantes, uma cópia do famoso quadro Les Demoiselles D Avignon de Picasso, uma aparelhagem Bose Wave, uma camisola do Real Madrid assinada pelo Cristiano Ronaldo, e 1

13 um vaso de porcelana da Vista Alegre. O João Gamão tem uma mochila com uma capacidade máxima de 20kg. Cada um dos objectos tem um valor e um peso, e a mochila não aguenta com todos eles. Objecto Valor Peso ========== ===== ==== anel 15 1 picasso 10 9 bosewave 8 3 ronaldo 5 4 vaso 9 6 O João Gamão pretende saber quais os objectos que deve levar de modo a maximizar o seu lucro. Reparem que se a mochila não tivesse limite de peso, ele poderia pura e simplesmente levar os objectos todos e dar à sola. Mas não é esse o caso. A mochila não aguenta com os objectos todos e o nosso João vai ter de decidir o que levar. a) Escreva um programa (em C ou Java) que leia a capacidade máxima da mochila e uma sequência de n objectos, cada qual com o seu valor e peso. O programa deve imprimir o valor associado à melhor combinação de objectos que pode ser colocada na mochila. Pode assumir que a capacidade máxima da mochila, bem como os valores e pesos dos objectos são inteiros positivos. Assuma ainda que o número máximo de objectos é inferior a 100 e que a capacidade máxima da mochila nunca poderá ultrapassar os 200kg. O programa desta alínea deve ser submetido ao Mooshak. b) Implemente uma variante do problema (esta variante não é para submeter ao mooshak) que para além de retornar o valor máximo do recheio que está na mochila, indique também quais os objectos que devem ser roubados. Por exemplo, para o caso do input dado anteriormente, o resultado deveria ser: 42 anel picasso bosewave vaso c) Qual a complexidade temporal e espacial do vosso algoritmo (versão submetida ao mooshak)? Justifique a resposta. d) Especifique uma estratégia greedy para este problema. Essa estratégia dá sempre a solução óptima? Justifique. (Não é necessário fazer o algoritmo, basta especificá-lo em linguagem corrente.) e) Especifique um algoritmo de força bruta para este problema. Qual a complexidade? Justifique. (Também não é necessário fazer o algoritmo, basta especificá-lo em linguagem corrente.) 2

14 Formato para o Mooshak Para o código submetido ao mooshak, o input deverá ter o seguinte formato, C n O1 V1 P1 O2 V1 P On Vn Pn em que C é a capacidade máxima da mochila em Kg (0 <C 200), n é o número de objectos (0 <n<100), O i é nome do i-ésimo objecto (uma palavra sem espaços com um máximo de 10 caracteres), e V i e P i são inteiros positivos que indicam respectivamente o valor e o peso do i-ésimo objecto. O output deve apresentar o valor máximo que pode ser colocado na mochila, seguido de um caracter de mudança de linha. Exemplo Input 20 5 anel 15 1 picasso 10 9 bosewave 8 3 ronaldo 5 4 vaso 9 6 Output 42 Dicas para a construção do algoritmo O problema do ladrão de Gambelas pode ser resolvido usando programação dinâmica porque exibe subestrutura óptima. Seja OPT uma solução óptima para o problema (pode haver várias). Temos n objectos: O 1,O 2,...,O n. OPT é um subconjunto destes n objectos. Consideremos O n,on-ésimo objecto. Duas coisas podem acontecer: 1. O n OPT, o que implica que a solução óptima é constituída pelo objecto O n mais o melhor subconjunto de objectos que se pode obter usando apenas os restantes n 1 objectos, mas desta vez sujeito à capacidade máxima da mochila ser de C P n, uma vez que o objecto O n pesa P n e está na mochila. Logo sobram apenas C P n Kg para os restantes objectos. 3

15 2. O n OPT, o que implica que a solução óptima é constituída pelo melhor subconjunto de objectos que se pode obter usando apenas os restantes n 1 objectos, sujeito igualmente à capacidade máxima da mochila ser C. O raciocínio exposto acima, mostra que a solução óptima para um problema pode ser definida em termos de soluções óptimas de subproblemas. Faltam apenas alguns detalhes (tais como os casos base) para obter uma formulação recursiva do problema e a subsequente implementação usando programação dinâmica. 4

16 AED-II, 2011/2012 Trabalho prático 6 Prazos e formalidades Prazo de entrega: 20/Abr/2012 até às 23:59. Não é necessário relatório. A submissão é feita via Mooshak a partir de 16/Abr/2012. O timeout no Mooshak é de 2 segundos. Palavra puxa palavra vinho vinha pinha pinta pista pasta casta casca tasca Considere o seguinte problema: É-lhe dado como input um dicionário com N palavras (todas com o mesmo número de caracteres), seguido de M pares de palavras. Cada par indica uma palavra de origem e uma palavra de destino. Para cada um dos M pares, pretende-se gerar como output o comprimento da sequência mais curta possível de palavras, desde a palavra de origem até à palavra de destino, de tal forma que duas palavras consecutivas da sequência só possam ser diferentes numa e numa só posição. Pode assumir que as palavras são constítuidas apenas por caracteres minúsculos de a..z, sem acentos e sem cedilhas. Se a palavra de origem ou de destino não existir no dicionário, o programa deve escrever palavra inexistente. Se ambas as palavras existirem mas não for possível obter uma sequência, o programa deve escrever sequencia inexistente (note bem, sequencia sem acento para evitar eventuais problemas com o Mooshak). a) Escreva um programa (em C ou Java) para resolver este problema. O programa deve ser submetido ao Mooshak (Problema H). O timeout é 2 segundos. b) Indique a complexidade do seu algoritmo em função de N e de M, e eventualmente também em função de outro parâmetro que considere ser relevante. Justifique a complexidade obtida. (Esta alínea deve ser respondida no próprio código submetido ao mooshak, em comentário logo ao início do ficheiro.) 1

17 Formato para o Mooshak Input O input deverá ter o seguinte formato. Na primeira linha aparece o número de palavras do dicionário, N. Segue-se uma sequência de N linhas, com uma palavra por linha. Segue-se uma linha com o número de pares de palavras, M, seguido de uma sequência de M linhas, em que para cada linha aparecem duas palavras (origem e destino) separadas por um espaço. Pode assumir que N<2000, M<100, e que as palavras do dicionário têm todas o mesmo tamanho, entre 3 e 20 caracteres. Output O output consiste em M linhas. Em cada linha deve aparecer a palavra de origem, seguida de ->, seguida da palavra de destino, seguido do caracter :, seguido de um espaço, seguido do comprimento da sequência mais curta de palavras desde a origem até ao destino. Se a palavra de origem ou de destino não existir no dicionário, o programa deve escrever palavra inexistente. Se ambas as palavras existirem mas não for possível obter uma sequência, o programa deve escrever sequencia inexistente Todas as linhas de output terminam com um caracter de fim de linha. Exemplo Input 11 cao sol pai mae mao nao sai sal mal pao aed 4 pai sol sal aed pai faz cao mae 2

18 Output pai->sol: 4 sal->aed: sequencia inexistente pai->faz: palavra inexistente cao->mae: 3 Por curiosidade, uma sequência mais curta de pai para sol seria: pai sai sal sol. E uma sequência mais curta de cao para mae seria: cao mao mae. Dicionário com algumas palavras de 5 letras Emhttp:// está um ficheiro com 1585 palavras, caso queiram usar para fazer testes. 3

Comparação com Divisão e Conquista

Comparação com Divisão e Conquista Programação Dinâmica Programação Dinâmica Fernando Lobo Algoritmos e Estrutura de Dados II Outra técnica de concepção de algoritmos, tal como Divisão e Conquista ou Estratégias Greedy. O termo Programação

Leia mais

O termo Programação Dinâmica é um bocado infeliz.

O termo Programação Dinâmica é um bocado infeliz. Programação Dinâmica Fernando Lobo Algoritmos e Estrutura de Dados II 1 / 18 Programação Dinâmica Outra técnica de concepção de algoritmos, tal como Divisão e Conquista ou Estratégias Greedy. O termo Programação

Leia mais

Algoritmos de ordenação Quicksort

Algoritmos de ordenação Quicksort Algoritmos de ordenação Quicksort Sumário Introdução Descrição do quicksort Desempenho do quicksort Pior caso Melhor caso Particionamento balanceado Versão aleatória do quicksort Análise do quicksort Pior

Leia mais

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010 Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Programa de Pós-Graduação em Ciência da Computação Projeto e Análise de Algoritmos - 1 o semestre de 2010 Professor: David Menotti

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

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

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

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

Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência

Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência Busca Binária Aula 05 Equações com Recorrência Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Idéia: Divisão e Conquista Busca_Binária(A[l...r],k) 1:if r < lthen 2: index = 1

Leia mais

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira

Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira Algoritmos e Estrutura de Dados Aula 3 Conceitos Básicos de Algoritmos Prof. Tiago A. E. Ferreira Definição de Algoritmo Informalmente... Um Algoritmo é qualquer procedimento computacional bem definido

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

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Análise de Algoritmos Aula 01 Complexidade de Algoritmos Edirlei Soares de Lima O que é um algoritmo? Um conjunto de instruções executáveis para resolver um problema (são

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

Fernando Lobo. Algoritmos e Estrutura de Dados. Outra técnica de concepção de algoritmos, tal como Divisão e Conquista.

Fernando Lobo. Algoritmos e Estrutura de Dados. Outra técnica de concepção de algoritmos, tal como Divisão e Conquista. Programação Dinâmica Fernando Lobo Algoritmos e Estrutura de Dados 1 / 56 Programação Dinâmica Outra técnica de concepção de algoritmos, tal como Divisão e Conquista. O termo Programação Dinâmica é um

Leia mais

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada. Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada antunes@ibilce.unesp.br, socorro@ibilce.unesp.br Grafos e Algoritmos Preparado a partir do texto: Rangel, Socorro.

Leia mais

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013 Lista 1 - PMR2300 Fabio G. Cozman 3 de abril de 2013 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u b l i c s t a t i c void

Leia mais

Aula 1. Teoria da Computação III

Aula 1. Teoria da Computação III Aula 1 Teoria da Computação III Complexidade de Algoritmos Um problema pode ser resolvido através de diversos algoritmos; O fato de um algoritmo resolver um dado problema não significa que seja aceitável

Leia mais

Algoritmos de Ordenação

Algoritmos de Ordenação Algoritmos de Ordenação ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 10/2008 Material baseado em

Leia mais

Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort

Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort Mergesort Aula 0 Divisão e Conquista- MergeSort Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Mergesort é um algoritmo de ordenação recursivo Ele recursivamente ordena as duas

Leia mais

É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser

É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser executado 1 Fazendo estimativas e simplificações... O número

Leia mais

Algoritmos Greedy. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Algoritmos Greedy 2014/ / 40

Algoritmos Greedy. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Algoritmos Greedy 2014/ / 40 Algoritmos Greedy Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Algoritmos Greedy 2014/2015 1 / 40 Algoritmos Greedy Vamos falar de algoritmos greedy. Em português são conhecidos como: Algoritmos

Leia mais

Abordagens para Resolução de Problemas

Abordagens para Resolução de Problemas Abordagens para Resolução de Problemas UDESC - Universidade do Estado de Santa Catarina Departamento de Ciência da Computação CAL - Complexidade de Algoritmos Teodoro Alberto Borges Junior Abordagens para

Leia mais

7. Introdução à Complexidade de Algoritmos

7. Introdução à Complexidade de Algoritmos 7. Introdução à Complexidade de Algoritmos Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 7. Introdução à Complexidade de Algoritmos Estruturas de Dados 1 / 1 Análise de Algoritmos

Leia mais

Divisão e Conquista: Par de Pontos mais Próximo

Divisão e Conquista: Par de Pontos mais Próximo Divisão e Conquista: Par de Pontos mais Próximo Fernando Lobo Algoritmos e Estrutura de Dados II 1 / 18 Divisão e Conquista (cont.) Problema: Dado um conjunto de pontos no plano, obter o par de pontos

Leia mais

Lista de Exercícios 6: Soluções Funções

Lista de Exercícios 6: Soluções Funções UFMG/ICEx/DCC DCC Matemática Discreta Lista de Exercícios 6: Soluções Funções Ciências Exatas & Engenharias o Semestre de 06 Conceitos. Determine e justifique se a seguinte afirmação é verdadeira ou não

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

Encriptação de Mensagens

Encriptação de Mensagens Instituto Superior Técnico Fundamentos da Programação 2016/2017 Enunciado do 1 o Projecto Data de entrega: 4 de Novembro de 2016 às 23h59 Encriptação de Mensagens Pretende-se com este trabalho a implementação

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

Estruturas de Dados 2

Estruturas de Dados 2 Estruturas de Dados 2 Técnicas de Projeto de Algoritmos Dividir e Conquistar IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/83 Projeto de Algoritmos por Divisão

Leia mais

Grupo 2 - Implementação de uma Classe Simples

Grupo 2 - Implementação de uma Classe Simples Estruturas de Dados 2017/2018 Época Normal (15 de Junho de 2018) Versão A Duração: 2h30m + 30m Número mecanográco: Nome completo do estudante: Grupo 1 - Fundamentos de Java 1.1. Escreva pequenos excertos

Leia mais

Divisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder

Divisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder Divisão e Conquista Norton T. Roman Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder Divisão e Conquista Construção incremental Ex: Consiste em, inicialmente, resolver

Leia mais

Algoritmos 3/17/ Algoritmos como área de estudo e investigação

Algoritmos 3/17/ Algoritmos como área de estudo e investigação Algoritmos e Complexidade Ana Teresa Freitas INESC-ID/IST ID/IST 3/17/2005 1 O que é um algoritmo? Algoritmos: Sequência de instruções necessárias para a resolução de um problema bem formulado [passíveis

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

Lista de Exercícios 6 Funções

Lista de Exercícios 6 Funções UFMG/ICEx/DCC DCC Matemática Discreta Lista de Exercícios 6 Funções Ciências Exatas & Engenharias o Semestre de 06 Conceitos. Determine e justifique se a seguinte afirmação é verdadeira ou não para todas

Leia mais

Análise de Algoritmos

Análise de Algoritmos Análise de Algoritmos Estes slides são adaptações de slides do Prof. Paulo Feofiloff e do Prof. José Coelho de Pina. Algoritmos p. 1 Introdução CLRS 2.2 e 3.1 AU 3.3, 3.4 e 3.6 Essas transparências foram

Leia mais

Análise de complexidade

Análise de complexidade Introdução Algoritmo: sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador) Estratégia: especificar (definir propriedades) arquitectura

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

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (5)

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (5) 1 Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (5) DECOM/UFOP 2012/2 5º. Período Anderson Almeida Ferreira Adaptado do material de Andréa Iabrudi Tavares BCC241/2012-2 3 Algoritmos Gulosos

Leia mais

Estruturas de Dados 2

Estruturas de Dados 2 Estruturas de Dados 2 Recorrências IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/31 Recorrências Análise da Eficiência de Algoritmos: Velocidade de Execução; Análise

Leia mais

ANÁLISE DE ALGORITMOS: PARTE 3

ANÁLISE DE ALGORITMOS: PARTE 3 ANÁLISE DE ALGORITMOS: PARTE 3 Prof. André Backes 2 A notação grande-o é a forma mais conhecida e utilizada de análise Complexidade do nosso algoritmo no pior caso Seja de tempo ou de espaço É o caso mais

Leia mais

Informática para Ciências e Engenharias-B 2017/18

Informática para Ciências e Engenharias-B 2017/18 Informática para Ciências e Engenharias-B 2017/18 Trabalho Prático N o 2 2017/18 1 Objectivo do Trabalho Até 1982, a insulina disponível para tratamento de diabetes era obtida por purificação de tecidos

Leia mais

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA PARA A COMPUTAÇÃO PROF. DANIEL S. FREITAS UFSC - CTC - INE Prof. Daniel S. Freitas - UFSC/CTC/INE/2007 p.1/27 4 - INTROD. À ANÁLISE COMBINATÓRIA 4.1) Arranjos

Leia mais

Complementos de Investigação Operacional. Folha nº 1 Programação Inteira 2007/08

Complementos de Investigação Operacional. Folha nº 1 Programação Inteira 2007/08 Complementos de Investigação Operacional Folha nº Programação Inteira 2007/08 - A Eva e o Adão pretendem dividir entre eles as tarefas domésticas (cozinhar, lavar a louça, lavar a roupa, fazer as compras)

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

7. Introdução à Complexidade de Algoritmos

7. Introdução à Complexidade de Algoritmos 7. Introdução à Complexidade de Algoritmos Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 7. Introdução à Complexidade de Algoritmos Estruturas de Dados 1 / 1 Análise de Algoritmos

Leia mais

Lista 1. 8 de abril de Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b.

Lista 1. 8 de abril de Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b. Lista 1 8 de abril de 2013 1 Exercícios Básicos 1.1 Na bibliografia Algorithms: Capítulo 0, exercícios 1 e 2. Tardos: Todos exercícios do cap 2 do livro texto, exceto 7 e 8 letra b. 1.2 Outros 1. Projete

Leia mais

Aula 2. Divisão e conquista. Exemplo 1: Número de inversões de uma permutação (problema 2-4 do CLRS; veja também sec 5.4 do KT)

Aula 2. Divisão e conquista. Exemplo 1: Número de inversões de uma permutação (problema 2-4 do CLRS; veja também sec 5.4 do KT) Aula 2 Divisão e conquista Exemplo 1: Número de inversões de uma permutação (problema 2-4 do CLRS; veja também sec 5.4 do KT) Exemplo 2: Par de pontos mais próximos (sec 33.4 do CLRS) Essas transparências

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

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então

Leia mais

Modelagem com relações de recorrência. Exemplo: Determinada população dobra a cada ano; população inicial = 5 a n = população depois de n anos

Modelagem com relações de recorrência. Exemplo: Determinada população dobra a cada ano; população inicial = 5 a n = população depois de n anos Relações de recorrência 8. RELAÇÕES DE RECORRÊNCIA Introdução a relações de recorrência Modelagem com relações de recorrência Solução de relações de recorrência Exemplos e aplicações Relações de recorrência

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

5. Invólucros Convexos no Plano (cont )

5. Invólucros Convexos no Plano (cont ) 5. Invólucros Convexos no Plano (cont ) Antonio Leslie Bajuelos Departamento de Matemática Universidade de Aveiro Mestrado em Matemática e Aplicações Complexidade Algorítmica Notação O Sejam T(n) e f(n)

Leia mais

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO. 4 a Lista de Exercícios Gabarito de algumas questões.

UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO. 4 a Lista de Exercícios Gabarito de algumas questões. UNIVERSIDADE FEDERAL DO RIO DE JANEIRO DEPARTAMENTO DE CIÊNCIAS DA COMPUTAÇÃO MATEMÁTICA COMBINATÓRIA 4 a Lista de Exercícios Gabarito de algumas questões. Este gabarito foi feito direto no computador

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

Inteligência Artificial

Inteligência Artificial Instituto Politécnico de Setúbal Escola Superior de Tecnologia de Setúbal Departamento de Sistemas e Informática Guia de Exercícios das Aulas Práticas Inteligência Artificial Prof Joaquim Filipe Eng. Adelaide

Leia mais

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas Algoritmos Programação de Computadores Comparando Algoritmos Um algoritmo é um procedimento de passos para cálculos. Este procedimento é composto de instruções que definem uma função Até o momento, vimos

Leia mais

Análise de algoritmos

Análise de algoritmos Análise de algoritmos Recorrências Conteúdo Introdução O método mestre Referências Introdução O tempo de execução de um algoritmo recursivo pode frequentemente ser descrito por uma equação de recorrência.

Leia mais

Lista 2 - PMR2300/3200

Lista 2 - PMR2300/3200 Lista 2 - PMR2300/3200 Fabio G. Cozman, Thiago Martins 8 de março de 2015 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u

Leia mais

Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional

Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional Disciplina: Algoritmos e Estruturas de Dados Professor: Flávio Cardeal Lista de

Leia mais

Teste de P1 12 de Dezembro 2001

Teste de P1 12 de Dezembro 2001 Teste de P1 12 de Dezembro 2001 Pergunta 1: Converta o seguinte segmento de código trocando o bloco de if para o bloco do sem modificar o resultado do programa if ( (i=1) OR (i=x) OR (j=1) OR (j=y) ) then

Leia mais

Complementos de Investigação Operacional. Folha nº 1 Programação Inteira 2006/07

Complementos de Investigação Operacional. Folha nº 1 Programação Inteira 2006/07 Complementos de Investigação Operacional Folha nº Programação Inteira 2006/07 - A Eva e o Adão pretendem dividir entre eles as tarefas domésticas (cozinhar, lavar a louça, lavar a roupa, fazer as compras)

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

Universidade Federal do ABC Avaliação Disciplina Turma Professor Data Instruções para a prova (leia antes de começar): SelectionSort selectonsortrec

Universidade Federal do ABC Avaliação Disciplina Turma Professor Data Instruções para a prova (leia antes de começar): SelectionSort selectonsortrec Universidade Federal do ABC Avaliação: Prova 02 Disciplina: BC1424 - Algoritmos e Estruturas de Dados I Turma: Noturno Professor: Jesús P. Mena-Chalco Data: 03/05/2016 Nome completo: RA: Instruções para

Leia mais

PUC-Rio Departamento de Informática Prof. Marcus Vinicius S. Poggi de Aragão Período: Horário: 4as-feiras de 13 às 16 horas - Sala 520L

PUC-Rio Departamento de Informática Prof. Marcus Vinicius S. Poggi de Aragão Período: Horário: 4as-feiras de 13 às 16 horas - Sala 520L PUC-Rio Departamento de Informática Prof. Marcus Vinicius S. Poggi de Aragão Período: 20047.1 Horário: 4as-feiras de 13 às 16 horas - Sala 520L PROJETO E ANÁLISE DE ALGORITMOS (INF 2926) Lista 1 1. Considere

Leia mais

Algoritmos de Ordenação

Algoritmos de Ordenação Algoritmos de Ordenação Introdução à Ciência da Computação Prof. Edison Ishikawa Objetivo Apresentar diferentes algoritmos de ordenação de dados Mostrar como analisar os algoritmos em termos de tempo de

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

Departamento de Matemática da Universidade de Aveiro Matemática Discreta. A prova consta de 4 questões cada uma cotada com 5 valores.

Departamento de Matemática da Universidade de Aveiro Matemática Discreta. A prova consta de 4 questões cada uma cotada com 5 valores. Departamento de Matemática da Universidade de Aveiro Matemática Discreta Exame Final ( 2 a Chamada: 22/0/2007 Licenciatura em Matemática (8220 Mest. Int. Eng. Computadores e Telemática (8240 Informações

Leia mais

Análise de algoritmos

Análise de algoritmos Análise de algoritmos Introdução à Ciência da Computação 2 Baseado nos slides do Prof. Thiago A. S. Pardo Algoritmo Noção geral: conjunto de instruções que devem ser seguidas para solucionar um determinado

Leia mais

Tópico 5 Algoritmos de Ordenação. Parte I - métodos de ordenação: inserção, mergesort, heapsort e quicksort.

Tópico 5 Algoritmos de Ordenação. Parte I - métodos de ordenação: inserção, mergesort, heapsort e quicksort. Tópico 5 Algoritmos de Ordenação Parte I - métodos de ordenação: inserção, mergesort, heapsort e quicksort. 1 Problema Computacional: Ordenação Problema computacional que surge em diversas situações. Definição:

Leia mais

Projeto e Análise de Algoritmos

Projeto e Análise de Algoritmos Projeto e Análise de Algoritmos A. G. Silva Baseado nos materiais de Souza, Silva, Lee, Rezende, Miyazawa Unicamp Ribeiro FCUP 18 de agosto de 2017 Conteúdo programático Introdução (4 horas/aula) Notação

Leia mais

ANÁLISE DE ALGORITMOS (INF 1721)

ANÁLISE DE ALGORITMOS (INF 1721) PUC-Rio Departamento de Informática Prof. Marcus Vinicius S. Poggi de Aragão (3WA) Horário: 2as. e 4as. 9-11hs (3WA) 3 de dezembro de 2016 Período: 2016.2 ANÁLISE DE ALGORITMOS (INF 1721) 3 a Lista de

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

Aula 6: Entrada e Saída

Aula 6: Entrada e Saída Aula 6: Entrada e Saída Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Entrada e Saída Programação de Computadores IV 1 / 29 Agenda 1 Revisão e Contexto

Leia mais

Ordenação em tempo linear

Ordenação em tempo linear Ordenação em tempo linear CLRS cap 8 Algoritmos p. 1 Ordenação: limite inferior Problema: Rearranjar um vetor A[1..n] de modo que ele fique em ordem crescente. Existem algoritmos que consomem tempo O(n

Leia mais

Prof. Tiago Alves de Oliveira. Tiago Alves de Oliveira - 1

Prof. Tiago Alves de Oliveira. Tiago Alves de Oliveira - 1 Prof. Tiago Alves de Oliveira tiagofga@gmail.com 1 Operadores Aritméticos; Operadores Relacionais; Operadores Lógicos; Operador MOD Calcula o resto da divisão Estrutura X MOD 2 = 0 verifica se o resto

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

Grupo 2 - Implementação de uma classe simples

Grupo 2 - Implementação de uma classe simples Exame Modelo Estruturas de Dados 2018/2019 Junho de 2019 Duração: 2h30m + 30m Número mecanográco: Nome completo do estudante: Grupo 1 - Fundamentos de Java 1.1. Escreva pequenos excertos de código para

Leia mais

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1 BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1 Na aula anterior Prova 2 Na aula de hoje Técnicas básicas de contagem; Tentativa e Erro; Recursividade.

Leia mais

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados Ano Lectivo de 2004/2005 2 o Semestre RESOLUÇÃO DA REPESCAGEM DO 2 o TESTE B I. (2.0+1.5+1.5 = 5.0 val.) a) Qual das seguintes declarações pode

Leia mais

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DO 2 o TESTE INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos Ano Lectivo de 2006/2007 2 o Semestre RESOLUÇÃO DO 2 o TESTE I. (2,0+2,0+2,0 = 6,0 val.) 1) Calcule o valor óptimo da função objectivo e o respectivo

Leia mais

Técnicas de análise de algoritmos

Técnicas de análise de algoritmos CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Técnicas de análise de algoritmos Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ nataliabatista@decom.cefetmg.br

Leia mais

Pesquisa Operacional / Programação Matemática

Pesquisa Operacional / Programação Matemática Pesquisa Operacional / Programação Matemática Otimização discreta Modelagem com variáveis binárias: problemas clássicos Breve Comentários (aula anterior) Em geral, não faz sentido resolver a relaxação

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

Tabelas de dispersão/hash

Tabelas de dispersão/hash Tabelas de dispersão/hash 1 Tabelas de dispersão/hash 1. Considere uma tabela de hash de tamanho m = 1000 e a função de hash h(k)= [m.(k.a % 1)], com A=( 5-1)/2. Calcule os valores de hash das chaves 61,

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 13: Ordenação: MergeSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: reifortes@iceb.ufop.br

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

Otimização discreta Modelagem com variáveis binárias: problemas clássicos

Otimização discreta Modelagem com variáveis binárias: problemas clássicos Otimização discreta Modelagem com variáveis binárias: problemas clássicos Importância histórica...... e prática. Usados para modelar problemas reais e como subproblemas em problemas maiores (e mais freqüentes

Leia mais

Optimização e Algoritmos (2004/2005) Série de Problemas 1 Programação Linear, Método Simplex

Optimização e Algoritmos (2004/2005) Série de Problemas 1 Programação Linear, Método Simplex Optimização e Algoritmos (24/25) Instituto Superior Técnico Engenharia Electrotécnica e de Computadores Série de Problemas Programação Linear, Método Simplex Nota MATLAB (requer a instalação da optimization

Leia mais

Melhores momentos AULA 3. Algoritmos p.148/188

Melhores momentos AULA 3. Algoritmos p.148/188 Melhores momentos AULA 3 Algoritmos p.148/188 Análise da intercalação Problema: Dados e crescentes, rearranjar de modo que ele fique em ordem crescente. Entra: Sai: Algoritmos p.149/188 Algoritmos p.150/188

Leia mais

> Princípios de Contagem e Enumeração Computacional 1/13

> Princípios de Contagem e Enumeração Computacional 1/13 Princípios de Contagem e Enumeração Computacional > Princípios de Contagem e Enumeração Computacional 1/13 Objetivos Contar/listar o número de elementos de conjuntos finitos Aplicações > Princípios de

Leia mais

Capítulo 6 Análise de Algoritmos Capítulo 6

Capítulo 6 Análise de Algoritmos Capítulo 6 666 Apêndice C Respostas e Sugestões para os Exercícios de Revisão 42. Consulte a Seção 5.4. 43. (a) Escoamento de memória.(b) Porque não há garantia que o cliente irá usá-la devidamente. 44. (a) Contagem

Leia mais

Elementos de Matemática Finita

Elementos de Matemática Finita Elementos de Matemática Finita Exercícios Resolvidos - Princípio de Indução; Algoritmo de Euclides 1. Seja ( n) k n! k!(n k)! o coeficiente binomial, para n k 0. Por convenção, assumimos que, para outros

Leia mais

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4)

Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) 1 Projeto e Análise de Algoritmos Aula 8: Algoritmos Gulosos (DPV 5; CLRS 4) DECOM/UFOP 2013/1 5º. Período Anderson Almeida Ferreira Adaptado do material de Andréa Iabrudi Tavares BCC241/2012-2 3 Comparação

Leia mais

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados

INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados INSTITUTO SUPERIOR TÉCNICO Algoritmos e Estruturas de Dados Ano Lectivo de 2002/2003 2 o Semestre Repescagem do 2 o Teste (A) 18 de Julho de 2003 Duração: 2h - O teste é sem consulta. - Para cada questão

Leia mais

Universidade da Beira Interior Departamento de Matemática. Ficha de exercícios nº3: Dualidade. Interpretação Económica.

Universidade da Beira Interior Departamento de Matemática. Ficha de exercícios nº3: Dualidade. Interpretação Económica. Ano lectivo: 2008/2009; Universidade da Beira Interior Departamento de Matemática INVESTIGAÇÃO OPERACIONAL Ficha de exercícios nº3: Dualidade. Interpretação Económica. Cursos: Economia 1. Formule o problema

Leia mais

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

CT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches Bibliografia T.H. Cormen, C.E. Leiserson and R.L. Rivest Introduction to algorithms R. Sedgewick

Leia mais

Divisão-e-Conquista ( ) CAL ( ) MIEIC/FEUP. ./rr (1) Técnicas de Concepção de Algoritmos

Divisão-e-Conquista ( ) CAL ( ) MIEIC/FEUP. ./rr (1) Técnicas de Concepção de Algoritmos 1 Técnicas de Concepção de Algoritmos (1ª parte): divisão e conquista R. Rossetti, A.P. Rocha, A. Pereira, P.B. Silva, T. Fernandes CAL, MIEIC, FEUP Fevereiro de 2011 2 Divisão e Conquista (divide and

Leia mais

PROVA ESPECÍFICA MODELO. Duração da prova: 120 minutos

PROVA ESPECÍFICA MODELO. Duração da prova: 120 minutos Página 1 de 10 Provas especialmente adequadas destinadas a avaliar a capacidade para a frequência do ensino superior dos maiores de 23 anos, Decreto-Lei n.º 64/2006, de 21 de Março AVALIAÇÃO DA CAPACIDADE

Leia mais

Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins

Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins 1. (25 pontos) A listagem a seguir mostra o código de uma função que converte uma cadeia de caracteres com a representação

Leia mais