12.04.2013 Views

MC538/MC548 - Análise de Algoritmos II Lista de Exerc´ıcios 1

MC538/MC548 - Análise de Algoritmos II Lista de Exerc´ıcios 1

MC538/MC548 - Análise de Algoritmos II Lista de Exerc´ıcios 1

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>MC538</strong>/<strong>MC548</strong> - <strong>Análise</strong> <strong>de</strong> <strong>Algoritmos</strong> <strong>II</strong><br />

<strong>Lista</strong> <strong>de</strong> Exercícios 1<br />

1. Sejam P1 e P2 dois problemas tais que P1 ∝n P2 e suponha que P1 tem cota inferior Ω(n log n),<br />

on<strong>de</strong> n é um parâmetro que me<strong>de</strong> o tamanho da entrada do problema P1. Quais das seguintes<br />

afirmações são verda<strong>de</strong>iras ? Justifique cuidadosamente as suas respostas.<br />

(a) Ω(n log n) também é cota inferior para P2.<br />

(b) Todo algoritmo que resolve P1 também po<strong>de</strong> ser usado para resolver P2.<br />

(c) Todo algoritmo que resolve P2 também po<strong>de</strong> ser usado para resolver P1.<br />

(d) O problema P2 po<strong>de</strong> ser resolvido no pior caso em tempo O(n log n).<br />

2. Sejam P1 e P2 dois problemas tais que um <strong>de</strong>les tenha cota inferior Ω(n k ), para algum k > 1,<br />

num mo<strong>de</strong>lo computacional M e o outro é solúvel em tempo O(n log n) no mesmo mo<strong>de</strong>lo<br />

computacional M. Se P1 é redutível a P2 em tempo linear, <strong>de</strong>cida qual é qual. O parâmetro<br />

n <strong>de</strong>nota o tamanho da entrada dos dois problemas.<br />

3. A idéia <strong>de</strong>ste exercício é enten<strong>de</strong>r porque em geral é fácil reduzir (Turing) um problema <strong>de</strong><br />

otimização para sua versão <strong>de</strong> <strong>de</strong>cisão. Consi<strong>de</strong>re o problema da Árvore Geradora Mínima<br />

(AGM):<br />

Dado um grafo não orientado G = (V, E) com custos inteiros nas arestas, encontrar<br />

uma árvore geradora <strong>de</strong> custo mínimo <strong>de</strong> G.<br />

Consi<strong>de</strong>re agora a versão <strong>de</strong> <strong>de</strong>cisão (AGM<strong>de</strong>c) do mesmo:<br />

Dados um grafo G = (V, E) com custos nas arestas e um número W, <strong>de</strong>cidir se<br />

existe uma árvore geradora em G <strong>de</strong> custo menor ou igual a W (a resposta é SIM<br />

ou N~AO.)<br />

Suponha que n e m <strong>de</strong>notam o número <strong>de</strong> vértices e arestas <strong>de</strong> G e que os valores absolutos<br />

dos custos são limitados por um valor C. Suponha que você tem à disposição um algoritmo<br />

polinomial Alg que resolve AGM<strong>de</strong>c.<br />

(a) Mostre, usando Alg, como <strong>de</strong>terminar o custo <strong>de</strong> uma árvore geradora mínima <strong>de</strong> G em<br />

tempo polinomial em n, m e log C.<br />

(b) Mostre, usando Alg e o custo <strong>de</strong> uma árvore geradora mínima <strong>de</strong>terminada em (a), como<br />

encontrar uma árvore geradora mínima <strong>de</strong> G em tempo polinomial.<br />

(c) Conclua que AGM ∝poli AGM<strong>de</strong>c.<br />

4. Diz-se que um ponto p = (xp, yp) do plano domina um outro ponto distinto q = (xq, yq) do<br />

plano se xp ≥ xq e yp ≥ yq. Um ponto p é maximal em relação a um conjunto <strong>de</strong> pontos S<br />

se p ∈ S e nenhum ponto <strong>de</strong> S domina p.<br />

Projete um algoritmo <strong>de</strong> complexida<strong>de</strong> O(n log n) para encontrar todos os pontos maximais<br />

<strong>de</strong> um conjunto P contendo n pontos distintos no plano.<br />

1


5. Consi<strong>de</strong>re o seguinte problema: dados n intervalos na reta real, <strong>de</strong>finidos pelos seus pontos<br />

<strong>de</strong> início e <strong>de</strong> fim, projete um algoritmo que lista todos os intervalos que estão contidos<br />

<strong>de</strong>ntro <strong>de</strong> pelo menos um dos outros intervalos passados na entrada. O seu algoritmo <strong>de</strong>ve<br />

ter complexida<strong>de</strong> O(n log n).<br />

6. Denote porMAX o problema do exercício 4 e porINTERVAL o problema do exercício 5. Encontre<br />

uma redução <strong>de</strong> complexida<strong>de</strong> linear <strong>de</strong> MAX para INTERVAL.<br />

É possível usar o algoritmo <strong>de</strong>senvolvido no exercício anterior e a redução proposta por você<br />

para projetar um algoritmo para MAX ? Em caso afirmativo, como se compara a complexida<strong>de</strong><br />

<strong>de</strong>ste algoritmo com a do algoritmo do exercício 4 ?<br />

7. Encontre uma redução <strong>de</strong> complexida<strong>de</strong> linear <strong>de</strong> INTERVAL para MAX.<br />

8. Usando o conceito <strong>de</strong> dominância entre pontos do exercício 4, po<strong>de</strong>-se <strong>de</strong>finir os Paretos <strong>de</strong><br />

um dado conjunto não vazio <strong>de</strong> pontos P = {p1, . . .,pn} no plano da seguinte forma:<br />

(i) o Pareto 1 <strong>de</strong> P, <strong>de</strong>notado por P1, é o conjunto <strong>de</strong> pontos maximais <strong>de</strong> P;<br />

(ii) para i ≥ 2, o Pareto i <strong>de</strong> P, <strong>de</strong>notado por Pi, é o conjunto <strong>de</strong> pontos maximais <strong>de</strong><br />

P \ (P1 ∪ . . . ∪ Pi−1).<br />

Chamemos <strong>de</strong> índice <strong>de</strong> Pareto <strong>de</strong> P o maior valor <strong>de</strong> i para o qual o Pareto i é não vazio.<br />

Denotemos por i(P) este valor.<br />

Dado um conjunto P como acima, consi<strong>de</strong>re o problema <strong>de</strong> encontrar os i(P) primeiros<br />

Paretos <strong>de</strong> P. Projete um algoritmo O(n log n) para este problema.<br />

9. Encontre uma redução polinomial do problema <strong>de</strong> or<strong>de</strong>nação <strong>de</strong> um vetor <strong>de</strong> n elementos<br />

para o problema PARETO do exercício anterior. A sua redução <strong>de</strong>ve ter complexida<strong>de</strong> O(n).<br />

Pergunta-se: esta redução prova que o algoritmo do exercício anterior é ótimo (do ponto <strong>de</strong><br />

vista <strong>de</strong> complexida<strong>de</strong> computacional) ? Justifique sua resposta.<br />

10. Uma matriz quadrada é dita ser triangular inferior (superior) se todos os seus elementos<br />

não nulos estiverem na diagonal principal ou abaixo (acima) <strong>de</strong>la.<br />

Seja MMIS o problema <strong>de</strong> multiplicar uma matriz triangular inferior por uma matriz triangular<br />

superior e MMA o problema <strong>de</strong> multiplicar duas matrizes quadradas arbitrárias.<br />

Seja T(n) a complexida<strong>de</strong> <strong>de</strong> um algoritmo ótimo para resolver MMIS quando as matrizes<br />

passadas na entrada tem dimensão n×n. Suponha que T(cn) ∈ O(T(n)) para toda constante<br />

c > 0.<br />

Mostre que MMIS é pelo menos tão difícil quanto MMA no sentido <strong>de</strong> que ambos têm a mesma<br />

cota inferior (supondo o mo<strong>de</strong>lo <strong>de</strong> computação usual).<br />

11. Seja S um conjunto <strong>de</strong> n pontos distintos do plano. Seja G = (V, E) o grafo completo on<strong>de</strong><br />

cada vértice <strong>de</strong> correspon<strong>de</strong> a um ponto <strong>de</strong> S (ou seja, V = S). Além disso, suponha que para<br />

cada aresta (u, v) em E está associado um custo c(u, v) igual à distância eucli<strong>de</strong>ana entre os<br />

pontos u e v em S.<br />

Mostre que o problema <strong>de</strong> encontrar a árvore geradora mínima em um grafo G <strong>de</strong>ste tipo tem<br />

cota inferior Ω(n log n).<br />

2


12. Consi<strong>de</strong>re dados um grafo orientado G = (V, E), um vértice especial s em V e custos c(v) ≥ 0<br />

para cada vértice v em V . Suponha que o custo <strong>de</strong> um caminho orientado representado pela<br />

seqüência <strong>de</strong> vértices (s, x1, x2, . . .,xk, v) seja dado por k i=1 c(xi), ou seja, o custo <strong>de</strong> um<br />

caminho é a soma do custo dos seus vértices internos. Assim, se (s, v) é uma aresta do grafo,<br />

o custo <strong>de</strong>ste caminho é zero.<br />

Deseja-se encontrar um caminho <strong>de</strong> custo mínimo <strong>de</strong> s para todos os vértices <strong>de</strong> V \ {s}.<br />

Projete um algoritmo <strong>de</strong> complexida<strong>de</strong> polinomial para este problema usando uma redução<br />

que envolva o problema do caminho mais curto em grafos com custos nas arestas (veja por<br />

exemplo U. Manber, Introduction to Algorithms: A Creative Approach, Addison Wesley, 1989,<br />

seção 7.5).<br />

13. Um emparelhamento em um grafo não orientado G é um subconjunto <strong>de</strong> arestas sem pontas<br />

em comum. Um emparelhamento é máximo se tem o maior número possível <strong>de</strong> arestas. O<br />

problema do emparelhamento máximo em grafos bipartidos (EMGB) consiste em dado um grafo<br />

bipartido G encontrar um emparelhamento máximo em G.<br />

Dados vértices s e t em um grafo não orientado, dizemos que uma coleção P1, P2, . . .,Pk <strong>de</strong><br />

caminhos com início em s e final em t é disjunta se para quaisquer caminhos Pi e Pj, os<br />

únicos vértices em comum <strong>de</strong>sses são exatamente s e t. O problema dos caminhos disjuntos<br />

(CD) consiste em dados um grafo G e vértices s e t em G encontrar uma coleção disjunta<br />

máxima <strong>de</strong> caminhos.<br />

Mostre que EMGB é redutível em tempo polinomial a CD.<br />

Dica: Humm. . . On<strong>de</strong> colocar os vértices s e t ?<br />

14. Seja G = (V, E) um grafo não orientado tal que pra cada vértice v do grafo temos associado<br />

uma função b(v) ≤ g(v), on<strong>de</strong> g(v) é o grau <strong>de</strong> v em G. Um b-emparelhamento é um subgrafo<br />

B <strong>de</strong> G tal que cada vértice v tem grau exatamente b(v) em B. Em particular, quando<br />

b(v) = 1 para todo v ∈ V , temos o problema do emparelhamento perfeito. Reduza o problema<br />

<strong>de</strong> verificar se um grafo tem um b-emparelhamento ao problema <strong>de</strong> verificar se um grafo tem<br />

um emparelhamento perfeito.<br />

Dica: Dado o grafo G = (V, E), consi<strong>de</strong>re o seguinte grafo G ′ construído como segue. Para<br />

cada v ∈ V crie g(v) − b(v) vértices, v1, . . .,v g(v)−b(v). Se (u, v) é uma aresta <strong>de</strong> G, então<br />

(1) crie os vértices euv e evu. Esses são os vértices <strong>de</strong> G ′ . As arestas são as seguintes:<br />

para cada (u, v) em G, (1) crie uma aresta (euv, evu), (2) crie as arestas (evu, vi) para i =<br />

1, 2, . . .,g(v) −b(v) e (3) as arestas (euv, uj) para j = 1, 2, . . .,g(u) −b(u). Mostre que G tem<br />

um b-emparelhamento se e somente se G ′ tem um emparelhamento perfeito.<br />

3

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!