PUC-Rio
Departamento de Informática
Prof. Marcus Vinicius S. Poggi de Aragão
Período: 2004.2
Horário: 3as-feiras e 5as-feiras de 13 às 15 horas - Sala 422L
PROJETO E ANÁLISE DE ALGORITMOS (INF 2926)

Lista 2

  1. Considere uma heap com n inteiros e um valor x. A heap possui o seu maior elemento no topo e está organizada em um vetor (de n posições). Proponha um algoritmo para decidir se o valor x é maior ou igual ao k-ésimo maior elemento na heap ou não. O algoritmo deve executar em O(k).

    Dica: Observe que você não precisa necessariamente encontrar o k-ésimo maior elemento da heap.

  2. Considere o seguinte problema:

    [ELE] Dados um conjunto de n inteiros distintos X={ x1, ..., xn} e pesos positivos w(xj), j=1,...,n, associados aos elementos de X, e um inteiro positivo V tal que 0 £ V £ W = åj=1n w(xj); encontrar o elemento xk tal que åxj < xk w(xj) < V e w(xk) + åxj < xk w(xj) ³ V.

    1. Projete um algoritmo O(n log n) para resolver esse problema.
    2. Utilize divisão e conquista para projetar um algoritmo O(n) para resolver esse problema.
    3. Apresente detalhadamente a análise da complexidade do item anterior.

  3. Sejam u e v dois números de n bits (considere que n é potência de 2). A multiplição tradicional de u por v utiliza O(n2) operações. Um algoritmo baseado em divisão e conquista divide os números em duas partes iguais, calculando o produto como: uv = (a2n/2+b)(c2n/2+d) = ac2n + (ad + bc)2n/2 + bd. As multiplicações ac, ad, bc e bd são feitas usando este mesmo algoritmo recursivamente.
  4. Prove que os problemas abaixo pertencem a NP, ou explique porque não se sabe, ou porque não pertence a NP. Para provar que pertence à NP, apresente o certificado e justifique porque a verificação do SIM é feita em tempo polinomial.
    1. Hemisfério Aberto

      Instância: Um conjunto finito de n m-tuplas X={ x1=<x11, x12, ... x1m>, x2, ..., xn } e um inteiro K £ n.

      Pergunta: Existe uma m-tupla y=<y1, y2, ... ym> tal que o produto interno entre y e x é maior que zero, isto é y.x >0, para pelo menos K m-tuplas x Î X ?

    2. K Caminhos mais curtos.

      Instância: Um grafo orientado G=(V,E), as distâncias positivas dos arcos e, e, para e Î E, um par de vértices de V, s e t, e inteiros positivos L e K.

      Pergunta: Existem K caminhos de s a t em G tais que sua distância total não ultrapassa L ?

    3. Equações Diofantinas Quadráticas.

      Instância: Inteiros positivos a, b e c.

      Pergunta: Existem inteiros positivos x e y tais que a.x2 + b.y = c ?

    4. Atribuição Sequencial V/F

      Considere o seguinte jogo entre dois jogadores. Dada um instância do problema 3-SAT, os jogadores atribuem V ou F às variáveis em um sequência pré-fixada. Na primeira rodada o jogador 1 atribui V ou F à variável u1 e o jogador 2 à variável u2, na segunda, 1 à u3 e 2 à u4. Na i-ésima jogada, 1 à u2i-1 e o jogador 2 à u2i. O jogador 1 vence se todas as cláusulas forem satisfeitas. Considere agora o seguinte problema:

      Instância: Uma sequencia de variáveis lógicas U={ u1, u2, ..., un } e uma coleção de cláusulas de tamanho 3, C={ c1(u), c2(u), ..., cn(u) }

      Pergunta: O jogador 1 vence o jogo ? Ou seja, existe um sequência de decisões para o jogador 1 em que ele vence o jogo independente das ações do jogador 2 ?

  5. Considere os seguintes problemas:
    1. Sabendo que (VC) é NP-comleto (foi provado em aula!), prove que (DS) também é NP-completo.

      Dicas: Observe que todo VC é um DS. Pense em formas de obrigar que um DS também seja um VC, ou seja se cobrir todos os vértices no grafo do problema (DS) (o grafo H) então cobre todas a arestas da instância (o grafo G) do problema VC.

    2. Sabendo que (VC) é NP-comleto (foi provado em aula!), prove que (UFL) também é NP-completo.

      Dicas: Observe que, se for interpretado que o (UFL) é definido sobre um grafo, este grafo tem dois tipos de vértices.

    3. Considere a seguinte instância do (VC): G=(V,E) onde V={1, 2, 3, 4, 5}, e E = { (1,2), (1,4), (2,3), (3,4), (1,5), (2,5), (3,5), (4,5) } e seja K = 3. Utilize as transformações que você propôs nos itens anteriores para obter instâncias equivalentes do (DS) e do (UFL).

  6. Considere o problema (VC) Vertex Cover definido na questão anterior. Seja o algoritmo abaixo para resolvê-lo.
    1. Demonstre que a complexidade do algoritmo RVC acima é O(nK) onde n=|V|.
    2. Esta complexidade é polinomial ? (Se é, por que não implica que P = NP ?)

This document was translated from LATEX by HEVEA.