Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Complexidade de Algorítmos Lista 5, Exercícios de Algoritmos e Programação

Apostilas de Complexidade de Algorítmos da Universidade Estadual de Campinas, Segundo Semestre de 2011, 5 Lista de Exercícios.

Tipologia: Exercícios

2013

Compartilhado em 03/12/2013

Salamaleque
Salamaleque 🇧🇷

4.5

(113)

201 documentos

1 / 2

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
MO417 Complexidade de Algoritmos
Segundo Semestre de 2011
Quinta Lista de Exerc´
ıcios
1 Estat´
ısticas de Ordem
1. Mostre como QUICKSO RT pode ser modificado de modo que tenha complexidade de tempo
O(nlg n)no pior caso.
2. Suponha que vocˆ
e possui um algoritmo linear do tipo “caixa-preta” que resolve o problema
de encontrar a mediana. Descreva um algoritmo linear que resolve o problema da selec¸˜
ao
(encontrar o i-´
esimo menor) para todo i.
3. O k-´
esimo quantil de um vetor de ninteiros s˜
ao os k1elementos que dividiriam o vetor, se
este estivesse ordenado, em kpartes de tamanho quase iguais (diferindo de no m´
aximo 1). Por
exemplo, a mediana ´
e o segundo quantil. Descreva um algoritmo de complexidade O(nlg k)
que determina o k-´
esimo quantil de um vetor de ninteiros.
4. Sejam X[1 ..n]eY[1 ..n]dois vetores ordenados. Descreva um algoritmo de complexidade
O(lg n)para determinar a mediana dos 2nelementos de XeY. Escreva um pseudo-c´
odigo.
Note que a mediana de 2kelementos ´
e o elemento xque ´
e maior ou igual a k1elementos e
menor ou igual a kelementos.
5. Dado um conjunto de nn´
umeros, queremos listar os imaiores elementos em ordem crescente
usando um algoritmo baseado em comparac¸˜
oes. Considere os algoritmos baseados nas seguin-
tes id´
eias:
(a) Ordene os n´
umeros e liste os imaiores.
(b) Construa uma fila de prioridade com os nn´
umeros e chame EXTRACT-MA X ivezes.
(c) Use um algoritmo para encontrar o i-´
esimo maior n´
umero e particione o conjunto em torno
dele. Ent˜
ao ordene e imprima os imaiores elementos.
Analise a complexidade desses algoritmos em func¸˜
ao de nei. Determine quando um algoritmo
´
e melhor que os outros, considerando que valores de i(em func¸˜
ao de n).
2 Projeto de Algoritmos por Induc¸˜
ao
6. Seja A[1 ..n]um vetor de n´
umeros reais. Uma subseq¨
uˆ
encia ´
e um subvetor A[i..j]. Projete
um algoritmo de complexidade de tempo O(n)que determina uma subseq¨
uˆ
encia tal que o
produto de todos seus elementos seja m´
aximo (considerando todos as poss´
ıveis subseq¨
uˆ
encias).
O produto de um segmento vazio ´
e1por definic¸˜
ao.
7. Suponha que s˜
ao dados dois vetores A[1 ..n]eB[1 ..m]de inteiros. Dado um inteiro x, que-
remos saber se existem um elemento em Ae um elemento em Btais que a soma deles ´
e
exatamente x. Seu algoritmo deve ter complexidade O((n+m) lg(n+m)).
1
docsity.com
pf2

Pré-visualização parcial do texto

Baixe Complexidade de Algorítmos Lista 5 e outras Exercícios em PDF para Algoritmos e Programação, somente na Docsity!

MO417 – Complexidade de Algoritmos

Segundo Semestre de 2011

Quinta Lista de Exerc´ıcios

1 Estat´ısticas de Ordem

  1. Mostre como QUICKSORT pode ser modificado de modo que tenha complexidade de tempo O(n lg n) no pior caso.
  2. Suponha que vocˆe possui um algoritmo linear do tipo “caixa-preta” que resolve o problema de encontrar a mediana. Descreva um algoritmo linear que resolve o problema da selec¸˜ao (encontrar o i-´esimo menor) para todo i.
  3. O k-´esimo quantil de um vetor de n inteiros s˜ao os k − 1 elementos que dividiriam o vetor, se este estivesse ordenado, em k partes de tamanho quase iguais (diferindo de no m´aximo 1 ). Por exemplo, a mediana ´e o segundo quantil. Descreva um algoritmo de complexidade O(n lg k) que determina o k-´esimo quantil de um vetor de n inteiros.
  4. Sejam X[1.. n] e Y [1.. n] dois vetores ordenados. Descreva um algoritmo de complexidade O(lg n) para determinar a mediana dos 2 n elementos de X e Y. Escreva um pseudo-c´odigo. Note que a mediana de 2 k elementos ´e o elemento x que ´e maior ou igual a k − 1 elementos e menor ou igual a k elementos.
  5. Dado um conjunto de n n´umeros, queremos listar os i maiores elementos em ordem crescente usando um algoritmo baseado em comparac¸˜oes. Considere os algoritmos baseados nas seguin- tes id´eias:

(a) Ordene os n´umeros e liste os i maiores. (b) Construa uma fila de prioridade com os n n´umeros e chame EXTRACT-MAX i vezes. (c) Use um algoritmo para encontrar o i-´esimo maior n´umero e particione o conjunto em torno dele. Ent˜ao ordene e imprima os i maiores elementos.

Analise a complexidade desses algoritmos em func¸˜ao de n e i. Determine quando um algoritmo ´e melhor que os outros, considerando que valores de i (em func¸˜ao de n).

2 Projeto de Algoritmos por Induc¸˜ao

  1. Seja A[1.. n] um vetor de n´umeros reais. Uma subseq¨uˆencia ´e um subvetor A[i.. j]. Projete um algoritmo de complexidade de tempo O(n) que determina uma subseq¨uˆencia tal que o produto de todos seus elementos seja m´aximo (considerando todos as poss´ıveis subseq¨uˆencias). O produto de um segmento vazio ´e 1 por definic¸˜ao.
  2. Suponha que s˜ao dados dois vetores A[1.. n] e B[1.. m] de inteiros. Dado um inteiro x, que- remos saber se existem um elemento em A e um elemento em B tais que a soma deles ´e exatamente x. Seu algoritmo deve ter complexidade O((n + m) lg(n + m)).

docsity.com

  1. Seja M uma matriz n × m de n´umeros reais tal que

(a) cada linha de M est´a ordenada em ordem crescente (da esquerda para a direita) e (b) cada coluna de M est´a ordenada em ordem crescente (de cima para baixo).

Descreva um algoritmo (baseado em comparac¸˜oes) que recebe M e um inteiro x e determina se x est´a em M (ou seja, se existem ´ındices i, j tais que M [i, j] = x). Seu algoritmo deve ter complexidade O(n + m).

  1. Considere um vetor A[1.. n] de n´umeros inteiros com a seguinte propriedade: para todo i, 1 ≤ i ≤ n − 1 , vale que |A[i] − A[i + 1]| ≤ 1. Suponha que seja dado um elemento x tal que A[1] ≤ x ≤ A[n]. Projete um algoritmo eficiente para encontrar um ´ındice j tal que A[j] = x. ´E verdade que sempre existe tal j? Qual ´e a complexidade do seu algoritmo?
  2. Projete um algoritmo para determinar se dois conjuntos X e Y s˜ao disjuntos (n˜ao tem elementos em comum). Sendo |X| = n e |Y | = m, descreva a complexidade de seu algoritmo em func¸˜ao de n e m.

docsity.com