PUC-Rio
Departamento de Informática
Prof. Marcus Vinicius S. Poggi de Aragão
Período: 2003.1
16 de junho de 2003
Horário: 2as-feiras e 4as-feiras de 17 às 19 horas
ANÁLISE DE ALGORITMOS (INF 1721)
3a Lista de Exercícios
  1. Sejam P1, P2 e P3 três problemas tais que P1 an P2 an3logn P3 (i.e., P1 é redutível a P2 em tempo linear e P2 a P3 em tempo n3 log n). Assuma a hipótese de que P1 é W(n log n). Assuma também que você conhece um algoritmo O (n3) para resolver P3. Discuta as afirmações abaixo.
    1. O que você pode dizer sobre a complexidade de resolução de P2 ? Qual a complexidade do melhor algoritmo que você conhece para P2 ?
    2. Todo algoritmo que resolve P2 tem que gastar pelo menos tempo quadrático (P2 é W(n2)).
    3. W(n log n) é um limite inferior para a complexidade de P3.
    4. Todo algoritmo que resolve P1 pode ser usado para resolver P2.
    5. Todo algoritmo que resolve P3 pode ser usado para resolver P2.
    6. P2 pode ser resolvido no pior caso em tempo O(n log n).

  2. Defina as classes de problemas P, NP e NP-completo Relacione estas classes e dê um exemplo de problema para cada classe.

  3. Seja P o conjunto dos problemas para os quais existem algoritmos determinísticos polinomias para a sua resolução. Seja NP o conjunto dos problemas para os quais existem algoritmos não-determinísticos polinomias para a sua resolução. Naturalmente P está contido em NP. Considere os problemas P1 Î P e P2 Î NP-completo. Indique se cada afirmação abaixo é verdadeira, falsa ou se não se sabe.
    1. Conhece-se uma redução de P1 para P2 que toma tempo polinomial (O(nk)).
    2. Se existe um algoritmo determinístico polinomial para a resolução de P2 então podemos afirmar que P1 Î NP-completo assim como P2 Î P.
    3. P2 é pelo menos tão difícil quanto 3-SAT.
    4. 3-SAT é pelo menos tão difícil quanto P2.
    5. Existe uma redução de P2 para P1 que toma tempo polinomial.







  4. Dado que você conhece um algoritmo determinístico polinomial para a resolução do problema (CMC) abaixo, USE ESTE CONHECIMENTO para provar que você também conhece um algoritmo determinístico polinomial para a resolução do problema (VMC) apresentado em seguida.

    (CMC) Dado um grafo orientado G=(V,A) com comprimentos positivos associados aos arcos (i,j) Î A, dois vértices i,j Î V e uma constante K. Pergunta-se se existe uma caminho do vértice i ao vértice j que possua comprimento menor ou igual à K.

    (VMC) Dado um grafo orientado G=(V,A), com comprimentos positivos associados aos arcos (i,j) Î A, e uma constante K. Pergunta-se se existe um par de vértices (i,j) para o qual exista um caminho de i a j e de j a i que tenha comprimento menor ou igual à K.

  5. Sabe-se que o problema (MC), abaixo, pertence a NP-completo. Use este conhecimento para provar que (MS) também pertence a NP-completo.

    Clique-Máximo (MC) - Dado um grafo não-orientado G=(V,A) e uma constante K. Pergunta-se se este grafo G possui um clique (isto é um sub-grafo completo) de cardinalidade maior ou igual à K.

    Estável-Máximo (MS) - Dado um grafo não-orientado G=(V,A) e uma constante K. Pergunta-se se este grafo G possui um conjunto de vértices independentes (isto é, um conjunto de vértices onde não existe aresta entre nenhum par do conjunto) de cardinalidade maior ou igual à K.

    (Dica: Siga os passos para provar que um problema é NP-completo. A redução pedida aqui é muito, mas muito simples. Leia com cuidado e desenhe exemplos dos problemas).

  6. Considere o problema abaixo:

    (MS): Dados um conjunto de máquinas M={ m1, m2, ..., mp} e um conjunto de tarefas T={ t1, t2, ...,tq} cada uma com uma duração di, i=1,...,q associada e uma constante K. Considerando-se que as tarefas podem ser atribuídas à qualquer máquina indistintamente. Pergunta-se se existe uma atribuição das tarefas às p máquinas tal que o instante em que a última tarefa é terminada é menor ou igual que K (Isto é, a duração total é inferior ou igual a K).

    Dado que este problema pertence a NP-completo responda:
    1. Quando temos um algoritmo polinomial determinístico para resolvê-lo ?
    2. Proponha um algoritmo para resolver este problema em tempo polinomial.
    3. Em que casos a solução obtida pelo seu algoritmo é correta ?
    4. Descreva um algoritmo que encontre sempre a resposta correta para este problema.

This document was translated from LATEX by HEVEA.