A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Construção e Análise de Algoritmos

Apresentações semelhantes


Apresentação em tema: "Construção e Análise de Algoritmos"— Transcrição da apresentação:

1 Construção e Análise de Algoritmos
Prof. Marcos José Negreiros Gomes, DSc Mestrado Integrado Profissional em Computação - UECE/CEFET

2 Introdução às Classes de Complexidade de Algoritmos - Módulo II

3 Tópicos... 1. Introdução 2. Tipologia dos Problemas
2.1. Resolvíveis e Não Resolvíveis 2.2. Formas dos Problemas 2.3. Problemas Tratáveis 2.4. Problemas Resolvíveis mas Intratáveis 2.5. Problemas Intratáveis e Indecidíveis 3. Classes de Complexidade 3.1. Polinomial 3.2. Não Polinomial 3.3. Nâo Polinomial Completo 4. Bibliografia

4 1. Introdução... Nosso Objetivo: Deseja-se Sempre:
Resolver Problemas dos mais variados via Algoritmos Computacionais! Deseja-se Sempre: Complexidades Inferiores à Polinomial. Fora disso, o problema pode se tornar INTRATÁVEL, ou seja: o tempo que um algoritmo ótimo levará para resolver (Completar e encontrar a solução) poderá ser muito longo e proibitivo

5 2. Tipologia dos Problemas...
2.1. Problemas Resolvíveis e Não Resolvíveis Resolvíveis: Há pelo menos um algoritmo que o descreve e o resolve Não Resolvíveis: Não há um algoritmo para resolvê-los. São também chamados de Problemas HALTING, ou seja problemas onde: Sejam dados um programa qualquer e um conjunto de entradas válidas e genéricas. O programa irá terminar?

6 2. Tipologia dos Problemas...
2.2. Formas de Problemas Problemas de Decisão São problemas onde deseja-se apenas saber se há ou não uma solução factível (Resposta: SIM ou NÃO) Problemas de Localização São problemas onde deseja-se além de conhecer se há uma solução, também ocupa-se em mostrá-la. Problemas de Otimização São problemas de decisão que localizam o conjunto de soluções ótimas, ou mostra pelo menos uma solução ótima.

7 2. Tipologia dos Problemas...
2.3. Problemas Tratáveis São todos os tipos de problema da natureza que podem ser resolvidos em tempo hábil, independentemente do tamanho da entrada. Nestes casos, compensa investir em melhorias nas velocidades de processamento do hardware ou até mesmo em reprojetar processos - como por exemplo uma implementação do algoritmo ótimo via processamento paralelo e/ou distribuído, para que seja possível a obtenção de respostas em tempo mais breve, uma vez que o tempo de resposta dos algoritmos ótimos dos problemas tratáveis são previsivelmente de natureza igual ou abaixo à complexidade polinomial Exemplos: - Problemas de Ordenação; - Soma, multiplicação, produto, divisão, MDC, MMC e exponenciação em aritmética ilimitada; - Problemas de Atribuição; - Problema de Filas de Prioridade; - Problemas de seleção em estruturas ordenadas;

8 2. Tipologia dos Problemas...
2.4. Problemas Resolvíveis mas Intratáveis Exemplos: 1. Problema do Caixeiro Viajante 2. Problema do Ciclo Hamiltoniano 3. Encontrar subconjuntos mutuamente disjuntos de um conjunto, dadas condições de formação (Restrições). 4. Encontrar o melhor preenchimento de uma mochila, sabendo que ela tem um limite de peso para carregar itens de valor, dentre muitos itens existentes de valor conhecido...

9 2. Tipologia dos Problemas...
2.5. Problemas Intratáveis e Indecidíveis Esta classe de problemas é extrema, em termos de complexidade, uma vez que estes não têm nenhuma garantia sobre sua programabilidade, ou até mesmo, se um algoritmo existe para tratá-lo de alguma forma, tal algoritmo não há prova dele ser ótimo a menos que P=NP. Sendo assim, nem sempre é possível afirmar que a solução ótima desejada é possível de ser obtida, uma vez que não existe método generalista que a encontre para toda instância. Exemplos: - O problema do Número Cromático; - O problema de Steiner Euclidiano; - O problema de Empacotamento de Vértices (Vertex Packing), etc. Tais problemas aproximam-se àqueles do tipo Halting, porém não são Halting.

10 3. Classes de Complexidade...
3.1. Polinomial P é a classe de problemas de decisão que são resolvidos em tempos polinomiais. P={ L | L é resolvivel por alguma RAM de complexidade O(nk) para alguma constante k} Papers of Cobham (1965) e Edmonds (1965) foram os primeiros a definir formalmente esta classe de complexidade como o modelo dos problemas tratáveis, ou resolvíveis eficientemente. Há três razões para a escolha de P: - A primeira é que à medida que n cresce as funções polinomiais crescem mais lentamente que as exponenciais. A distinção, torna-se mais evidente quando se considera como estes algoritmos tiram vantagens sobre o desempenho das máquinas;

11 3. Classes de Complexidade...
3.1. Polinomial Supondo que um algoritmo polinomial é da classe ank, e o exponencial é da forma cn, se conseguirmos uma máquina que processe duas vezes mais rápido quaisquer dos dois algoritmos, o tamanho das instâncias que podem ser resolvidas pelo algoritmo polinomial são multiplicadas de um fator 2k/2, enquanto que o incremento para o algoritmo exponencial é de apenas logc 2. - A segunda vantagem de P é a sua robustez, ou seja, isto significa dizer que estes algoritmos não são sensíveis a mudanças no seu modelo de computação ou às formas de programação. A robustez sugere que tempo polinomial é um conceito fundamental sobre a qual uma teoria bastante unificada pode ser construída; - A terceira vantagem, a obtenção de um algoritmo polinomial para um problema particular de otimização sinaliza em geral que um entendimento bastante aprofundado do problema foi alcançado. Enquanto estudos de um problema particular sempre leva a algoritmos ´menos exponenciais´, quebrar a barreira do tempo exponencial para o tempo polinomial em geral tipicamente requer que se avance amplamente na sua compreesão.

12 3. Classes de Complexidade...
3.1. Polinomial Exemplos: - Problema do Carteiro Chinês Seja dado um Grafo G(V,E) valorado nas arestas, cij0, i,j=1,..,n, deseja-se que, a partir de um dado vértice origem e a ele retornando todas as arestas de G sejam visitadas com o menor custo. Não Orientado - G(V,E) G euleriano Orientado - G(V,A) G euleriano

13 3. Classes de Complexidade...
3.1. Polinomial Exemplos Avançados: - Problema do Clique Dado um Grafo G(V,E) e um inteiro k>0, existe um Clique em G de tamanho maior que k? Clique Maior que 3 k=3

14 3. Classes de Complexidade...
3.1. Polinomial Exemplos Avançados: - Problema da Cobertura de Vértices Dado um Grafo G(V,E) e um inteiro k>0, existe uma Cobertura de vértices em G de tamanho k? Cobertura Menor ou igual a 6 k=6 O problema da Cobertura de Vértices considera um conjunto C onde toda aresta de G está com pelo menos um de seus vérti- ces ligado a C.

15 3. Classes de Complexidade...
3.1. Polinomial Exemplos: - Problema da Coloração Dado um Grafo G(V,E) e um inteiro k>0, existe uma Coloração de vértices em G  k? Coloração Igual a 4 k=4 No problema da Coloração de Vértices considera-se que dois vértices vizinhos de G devem ter cores distintas.

16 3. Classes de Complexidade...
3.1. Polinomial Exemplos : - Problema do Conjunto Independente de Vértices Dado um Grafo G(V,E) e um inteiro k>0, existe um conjunto SV tal que (j) S=, j S, S k? Conjunto independente Igual a 3 k=3 No problema do Conjunto Independente de Vértices, nenhum dos vértices é vizinho ao outro. Observe que encontrar uma solução maior do que k, isto pode ser obtido de forma polinomial, uma vez que não há qualquer preocupação com o tamanho da resposta, deve porém ser um valor inteiro que supere ou iguale a k.

17 3. Classes de Complexidade...
3.1. Polinomial Exemplos Avançados: - Problema de Satisfabilidade Dada uma expressão booleana E(x1, x2, x3,..., xn) na sua forma normal conjuntiva, ela é verdadeira ? Ex.: E(x1, x2, x3, x4) = ((x1  x2)  (x3  x2  x1))  (x3  x4) uma cláusula da expressão booleana é por exemplo (x3  x4) .

18 3. Classes de Complexidade...
3.2. Não Polinomial (NP) A Classe NP é definida da seguinte forma para melhor caracterizar e identificar problemas com esta propriedade. Uma P-relação, é uma função R: **{0,1} tq: i. R é calculada em tempo polinomial ii. Há uma função polinomial p(n) tal que para todo x,w*, se |w|>p(|x|), então R(x,w)=0. Definição: Seja L um problema de decisão, L *. Então L pertence à classe NP se há uma P-relação R tal que L = { x | existe um w tal que R(x,w)=1 } O que acontece é que R(x,w) faz uma verificação em tempo polinomial de que w é uma testemunha que garante xL. R é chamada de relação porque ela expressa o relacionamento entre as instâncias x e as testemunhas w. A condição ii. Na definição de uma P-relação diz que, para cada x, não há muitas testemunhas (maior do que algum polinômio do tamanho de x). Donde temos que PNP.

19 3. Classes de Complexidade...
3.2. Não Polinomial (NP) Se LNP, então L pode ser resolvido por um algoritmo de complexidade O(cp(n)), para algum polinômio p e uma constante c. Assim, dada uma entrada x, este algoritmo executa R(x,w) para todo w* com |w|p(|x|), até um w com R(x,w)=1 ser encontrado; se nenhum w for encontrado o algoritmo responde “falso”. Seria uma grande surpresa se cada L em NP fosse resolvido em tempo polinomial, não há qualquer prova ainda de que isto seja impossível. NP pode ser definido de forma equivalente em termos de algoritmos não determinísticos. A notação NP, significa também “tempo polinomial não determinístico”. O Não Determinismo significa que há muitas maneiras de se proceder a computação do problema.

20 3. Classes de Complexidade...
3.2. Não Polinomial (NP) Uma RAM (Máquina de Acesso Aleatório) é não determinística (NRAM) quando ela permite um outro tipo de instrução: PARTIR(R1, R2). Quando a máquina executa tal instrução, imaginamos que ela particiona em duas máquinas, ou descendentes (filhas); uma continua a execução na instrução R1, e a outra continua na R2. Cada descendente pode então quebrar novamente, e assim por diante. A resposta da máquina pai (de origem) é “verdadeiro” se pelo menos um de seus descendentes responder “verdadeiro”. Não é difícil ver que problemas NP são uma classe de problemas de decisão resolvidos em tempo polinomial por uma NRAM, onde o tempo de execução é definido como o máximo número de instruções executadas ao longo de um simples caminho desta execução em ramificações.

21 3. Classes de Complexidade...
3.2. Não Polinomial (NP) Suponha que LNP, como definido acima, e seja x uma entrada de tamanho n. Partindo O(p(n)) vezes ao longo de cada caminho, uma NRAM pode produzir cp(n) descendentes tais que cada um executa R(x,w) para um w diferente e responde “verdadeiro” se R(x,w)=1. REDUZIBILIDADE ENTRE PROBLEMAS Seja L1 e L2 problemas de decisão, L1, L2  *. Então L1 é transformável em tempo polinomial a L2, escrito da forma L1L2, se há uma função f: * *, tal que: 1. f é executada em tempo polinomial 2. x *  f(x) L2 para todo x* Proposição 1: Se L1L2, L2 P, então L1 P Proposição 2: é transitivo, ou seja: Se L1L2 e L2L3, então: L1L3

22 3. Classes de Complexidade...
3.3. Não Polinomial Completo (NP-Completo) Definição: NPL se L´L para todo L´NP. O problema de decisão L é NP-Completo se ambos L L  NP e NPL. Proposição 3: Seja L NP-Completo. Então L P se e só se P=NP. Proposição 4: Seja L´ NP-Completo. Se L NP e L´ L , então NP-Completo. Proposição 5: Seja um problema de decisão L denominado NP-Árduo, Se L´ L, para todo L´ NP

23 3. Classes de Complexidade...
3.3. Não Polinomial Completo PROBLEMAS DE OTIMIZAÇÃO Definição: Um Problema Otimização P é um par (F,c) tal que F é uma P-relação e c é uma função executada em tempo polinomial, c: * , para x * , definida como: opt(x) = min {c(s) | F(x,s)=1} Um algoritmo resolve (F,c) se, quando dado x, ele produz algum s tal que F(x,s)=1 e c(s)=opt(x). Se desejamos que em F seja total, ou seja, se cada instância tenha pelo menos uma solução viável, isto nos diz que opt(x) é sempre definida. Isto causa uma perda de generalidade desde que nós podemos sempre incluir uma solução “padrão” para toda instância. Proposição 5: Seja L qualquer problema de decisão NP-completo e seja (F,c) qualquer problema P de otimização. Se LP, então (F,c) pode ser resolvido em tempo polinomial.

24 3. Classes de Complexidade...
3.3. Não Polinomial Completo P NP-Completo NP Área de problemas que são conhecidos serem não polinomiais, haja vista a existência de um algoritmo exponencial que o resolve

25 3. Classes de Complexidade...
3.3. Não Polinomial Completo Exemplos: Problema SAT A expressão booleana E(x1, x2, ..., xn) na sua forma normal conjuntiva é satisfatória? Um algoritmo não-determinístico é capaz de identificar com sucesso, dentre as 2n possíveis atribuições para (x1, x2, ..., xn), uma que torna a expressão verdadeira, e realiza em O(n) a seqüência correta sempre que uma atribuição deste tipo existir. A justificativa apresentada estará correta se e somente se existir em cada cláusula da expressão booleana pelo menos uma variável verdadeira.

26 3. Classes de Complexidade...
3.3. Não Polinomial Completo Exemplos: Problema Vertex Packing Dado um Grafo G´ (V´, E´) gerado a partir de um grafo G(V,E), tal que V´=V e E´ é o conjunto composto pelos vértices não adjacentes de G (ou complemento de E em G). Dado um inteiro k, determinar se G´ possui um conjunto de pelo menos k vértices não adjacentes dois a dois. k3 3-Vértices não adjacentes dois a dois G(V,E) G´(V,E´)

27 3. Classes de Complexidade...
3.3. Não Polinomial Completo Exemplos: Problema do Caixeiro Viajante Dado um Grafo G(V,E), completo, valorado nas arestas, encontrar um circuito que passe por todos os vértices de G apenas uma vez, que possua o menor comprimento. Solução ótima para uma certa valoração de arestas de G

28 4. Bibliografia... 1. Campello, Rui E., Maculan, Nelson (1994) - Algoritmos e Heurísticas, desenvolvimento e avaliação de performance - EDUFF/Niterói 2. Stockmeyer, Larry J. (1992) - Computacional Complexity - Handbooks in Operations Research and Management Science, Vol. 3, Ed. by Coffman, Lenstra & Rinnoy Kan 3. Mayr, Ernstb W., Prömel, Hans J., Steger, Angelika (1998) - Lectures on Proof Verification and Approximation Algorithms, Springer-Verlag 4. Yannakakis, Mihalis (1997) - “Computational Complexity”, - in Local Search in Combinatorial Optimization Ed. by Aarts, Emile, Lenstra, Jan K. - Wiley Interscience Series in Discrete Mathematics and Optimization 5. Manber, Udi (1989) - Introduction to Algorithms a Creative Approach, Addison-Wesley 6. Steger, Angelika (2001) - Approximability of NP-Optimization Problems, Cap. 2 - Brazillian School in Combinatorics and Algorithms, March/2001


Carregar ppt "Construção e Análise de Algoritmos"

Apresentações semelhantes


Anúncios Google