{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

77 4 mapeie o problema abaixo para grafos

Info iconThis preview shows pages 64–67. Sign up to view the full content.

View Full Document Right Arrow Icon
77 (4) Mapeie o problema abaixo para grafos, especificando precisamente o que é vértice, aresta e qual seria o problema a ser resolvido. Não se esqueça de dizer os parâmetros do problema. Por exemplo, uma resposta poderia ser “Encontre um clique com k vértices”. Uma companhia manufatura os produtos químicos C 1 , C 2 , … C n . Alguns destes produtos podem explodir se colocados em contato com outros. Como precaução contra acidentes, a companhia quer construir k armazéns para armazenar os produtos químicos de tal forma que produtos incompatíveis fiquem em armazéns diferentes. Qual é o menor número k de armazéns que devem ser construídos? 64
Background image of page 64

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
16 Redução de Algoritmos Um problema (não algoritmo) P pode ser reduzido a um problema Q se, conhecido um algoritmo para Q, então podemos encontrar um algoritmo para P. Indicaremos que P pode ser reduzido a Q por P Q a direção da flecha indica para onde a solução vai. O problema “encontre o maior elemento de um vetor” pode ser reduzido a “ordene um vetor”. Após ordenar o vetor, podemos simplesmente pegar o último elemento, que é o maior. Note que a transformação do resultado de “ordene um vetor” para “encontre o maior…” é feito em tempo O (1). O problema de multiplicar duas matrizes A e B pode ser reduzido ao problema de elevar uma matriz ao quadrado usando a seguinte fórmula: O B 2 O B O B BA O A O A O A O O AB Tendo A e B, construímos a matriz O B e invocamos o algoritmo A O SQR (X) que retorna X 2 . Do resultado tomamos BA e AB. Conclusão: A complexidade da multiplicação de matrizes não é maior do que a complexidade do problema “Eleve matriz X ao quadrado”. Isto é, tendo disponível um algoritmo para elevar uma matriz ao quadrado, podemos obter um algoritmo para multiplicar matrizes com a mesma complexidade. O problema da ordenação dos números X 1 , X 2 , … X n pode ser reduzido à compressão de dados pelo método de Huffman da seguinte forma: Para isto, construa a árvore de Huffman para 2 X1 , 2 X2 … 2 Xn . Pelo algoritmo, a árvore terá a forma 256 exemplo 32 16 2 1 Os números ordenados podem ser obtidos em tempo linear (O (n)) percorrendo-se a árvore. Deste ponto em diante nós estudaremos apenas os problemas que retornam apenas “sim” ou “não”. A maioria dos problemas pode ser facilmente convertida para este tipo de problema. Definição: Um problema P é polinomialmente redutível a Q se é possível transformar a entrada de P em entrada para Q em tempo polinomial e Q retorna sim (ou não) se e somente se P retorna sim (ou não) com a mesma entrada. Isto é, a resposta dada por Q pode ser usada como a resposta para P. 65
Background image of page 65
resposta sim / não P Q entrada convertida em tempo polinomial Se a conversão da entrada de P para Q tomar tempo O (f (n)) e o algoritmo para Q possuir complexidade O(g(n)), então o algoritmo para P dado pela redução possui complexidade O(f(n)) + O(g(n)) = O(f(n) + g(n)) Em particular, se g (n) for exponencial, O(f(n) + g (n)) será O (g (n)). Se g(n) for polinomial, o algoritmo para P dado pela redução também será polinomial. Exemplos:
Background image of page 66

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
Image of page 67
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}