ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior...

29
Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias P, NP e NP-Completos Professor Ariel da Silva Dias - www.arieldias.com

Transcript of ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior...

Page 1: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Análise e Complexidade de AlgoritmosProfessor Ariel da Silva DiasP, NP e NP-Completos

Professor Ariel da Silva Dias - www.arieldias.com

Page 2: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Introdução

▪ O limite superior de complexidade de um problema refere-se ao melhor algoritmo que o resolve.

▪ O limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade possível que um algoritmo pode alcançar

▪ Quando a diferença entre esses limites desaparece, a complexidade mínima do problema é conhecida e o problema é chamado fechado.

Professor Ariel da Silva Dias - www.arieldias.com

Page 3: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Introdução

▪ O Merge Sort é um algoritmo com limite de complexidade determinada, nlogn

▪ Não existe Merge Sort com complexidade melhor que nlogn

Professor Ariel da Silva Dias - www.arieldias.com

Page 4: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Introdução

▪ A classe P consiste nos problemas que podem ser resolvidos em tempo Polinomial (Problemas tratáveis)

Professor Ariel da Silva Dias - www.arieldias.com

Page 5: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Introdução

▪ A classe P consiste nos problemas que podem ser resolvidos em tempo Polinomial (Problemas tratáveis)

▪ A classe NP consiste nos problemas que podem ser verificados em tempo polinomial (problemas Intratáveis)

▪ Dado do uma entrada é possível verificar se ela corresponde a uma solução do problema: o conjunto de vértices <v1, v2, ...vn> corresponde a um ciclo hamiltoniano? Isto pode ser feito em tempo polinomial.

Professor Ariel da Silva Dias - www.arieldias.com

Page 6: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Introdução

▪ A classe NP-Completos são problemas NP que possuem a característica de que se um deles puder ser resolvido em tempo polinomial então todo problema NP-Completo será uma solução em tempo polinomial

Professor Ariel da Silva Dias - www.arieldias.com

Page 7: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Introdução

▪ Um aspecto interessante é que vários problemas NP-Completos são, a principio, semelhantes a problemas que têm algoritmos de tempo polinomial.

Professor Ariel da Silva Dias - www.arieldias.com

Page 8: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Introdução

▪ Problemas de otimização: dentre as soluções viáveis, qual é a melhor?

▪ Problemas de decisão: existe uma solução para um dado problema?

Professor Ariel da Silva Dias - www.arieldias.com

Page 9: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Problemas: Planejar o Casamento

▪ Existem 2 mesas com 10 lugares;

▪ Existem 2 listas: uma com 9 amigos e outra com 11 familiares. Como decidir quem ficará em qual mesa?

▪ Restrição

▪ Quantidade máxima de pessoas na mesa é igual a 10.

▪ A lista será feita pela irmã da noiva, que deverá ter na mesa apenas pessoas conhecidas por ela.

Professor Ariel da Silva Dias - www.arieldias.com

Page 10: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Problemas: Planejar o Casamento

▪ Uma possível solução é colocar pesos para cada pessoa:

▪ Se não se conhece, a relação recebe 0;

▪ Se são casadas, a relação recebe 50;

▪ Se se conhecem, a relação recebe 1;

▪ Se são amigos da irmã da noiva, a relação recebe 10;

Professor Ariel da Silva Dias - www.arieldias.com

Page 11: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Problemas: Planejar o Casamento

▪ A lista contemplava 107 convidados

▪ A noiva desenvolveu um algoritmo e codificou. Em seguida, colocou para rodar em um super computador. Após 36h de processamento ainda não havia uma solução

▪ Porém o problema parcialmente resolvido ajudou a noiva a escolher o melhor arranjo

Professor Ariel da Silva Dias - www.arieldias.com

Page 12: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Problemas: Bombeiro

▪ Alocar 3 carros de bombeiros que atenda toda a cidade e chegue em uma residência em um tempo fixo

Professor Ariel da Silva Dias - www.arieldias.com

Page 13: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Problemas: Problema do Convite

▪ Ana deseja dar uma festa mas não possuí dinheiro para comprar um convite para cada um dos 6 convidados

Professor Ariel da Silva Dias - www.arieldias.com

Page 14: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Problemas: A. Lincoln e a dificuldade de otimização

▪ Antes de liderar a guerra civil americana, Lincoln trabalhou como advogado de pradaria

▪ Fazia viagens percorrendo as cidades em 14 condados diferentes, cobrindo centenas de KM

▪ Desafio (restrição): visitar todas as cidades percorrendo o menor número de KM possíveis sem passar pela mesma cidade 2 vezes.

Professor Ariel da Silva Dias - www.arieldias.com

Page 15: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Problemas: A. Lincoln e a dificuldade de otimização

▪ Este é um problema da OTIMIZAÇÃO RESTRITA

▪ Em 1930 Karl Menger mencionou como: “problema do carteiro”

▪ Em 1949 Julia Robinson publicou o problema como “Problema do Caixeiro Viajante”

Professor Ariel da Silva Dias - www.arieldias.com

Page 16: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Problemas: A. Lincoln e a dificuldade de otimização

▪ A principal questão não é se um ser humano ou computador consegue encontrar a rota mais curta

▪ A questão principal é que o número de cidades cresce e a lista de rotas possíveis tendem a estourar

Professor Ariel da Silva Dias - www.arieldias.com

Page 17: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Problemas: A. Lincoln e a dificuldade de otimização

▪ Em 1956 Jacks Edmond disse “Conjecturo que não exista um bom algoritmo para o problema do caixeiro viajante”

▪ Em 1960 Jacks Edmonds e Alan Cobaham da IBM apresentaram a tese de que “Um algoritmo deveria ser considerado eficaz se executasse em tempo polinomial”

▪ E daí vem o insight da computação: é possível quantificar um determinado problema

Professor Ariel da Silva Dias - www.arieldias.com

Page 18: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Problemas: A. Lincoln e a dificuldade de otimização

▪ E onde fica o problema do caixeiro viajante?

Professor Ariel da Silva Dias - www.arieldias.com

Page 19: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Relaxamento das Restrições

▪ Remover os componentes restritivos do problema

▪ No caixeiro viajante ele pode fazer a rota livremente, sem o componente: “não passar por uma cidade mais de 2 vezes”

Professor Ariel da Silva Dias - www.arieldias.com

Page 20: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Relaxamento das Restrições

▪ A rota mais curta segundo as regras mais frouxas produz a ÁRVORE DE ABRANGÊNCIA MINIMA

▪ Se na Árvore de Abrangência Minima a distância total for 150KM, podemos ter certeza que a distância no problema real será maior que isso.

Professor Ariel da Silva Dias - www.arieldias.com

Page 21: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Relaxamento das Restrições

▪ Relaxamento Contínuo

▪ Problema do Caixeiro Viajante, do Bombeiro e do Casamento são conhecidos como otimização discreta (ou uma coisa ou outra)

▪ Dividir o problema

▪ Problema do Convite: envia 3 convites respectivamente para os amigos A, B e C e pede para cada um convidar um conhecido em comum (D, E e F)

▪ E se o amigo A e B forem convidar o mesmo amigo D?

Professor Ariel da Silva Dias - www.arieldias.com

Page 22: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Relaxamento das Restrições

▪ Relaxamento Lagrangiano

▪ Uma criança reclama com a mãe: “tenho que ir a escola, tenho que fazer a lição, tenho que estudar, tenho que ir ao judô, tenho que ir ao inglês... Estou cansado de fazer tanta coisa”

▪ E a mãe responde: “Tecnicamente você não tem que fazer nada disso. Você nem precisa respeitar seus pais. Tecnicamente. Mas se não o fizer, terá que arcar com as consequências”

Professor Ariel da Silva Dias - www.arieldias.com

Page 23: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Relaxamento das Restrições

▪ Na otimização discreta dizemos: “Faça isso ou então...”

▪ No relaxamento Lagrangiano dizemos: “Faça isso ou então... Então o que?”

Professor Ariel da Silva Dias - www.arieldias.com

Page 24: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Relaxamento das Restrições

▪ Se pensarmos no caso do casamento, a noiva poderia relaxar o problema no modo Lagrangiano e colocar os 9 amigos em uma mesa e os 11 familiares em outra mesa.

▪ Entretanto, a penalidade será as cotoveladas entre os convidados que ficarão apertados na mesa

Professor Ariel da Silva Dias - www.arieldias.com

Page 25: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Problemas: da mochia

▪ Uma mochila com compartimento único e com uma capacidade limitada

▪ Conjunto de itens, cada qual com um peso e um valor associado

▪ Quais itens podem ser inseridos na mochila sem exceder sua capacidade e maximizando o valor a ser agregado?

Professor Ariel da Silva Dias - www.arieldias.com

Page 26: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Algoritmo Guloso

▪ A solução de um problema é alcançada através de uma sequência de decisões;

▪ As decisões são tomadas de forma isolada, em cada passo da solução: seleciona-se um elemento e decide-se se é viável ou não;

▪ A estratégia é, portanto, pegar a melhor opção em cada momento (solução ótima local). Quando o algoritmo acaba, espera-se que tenha ocorrido a melhor solução.

Professor Ariel da Silva Dias - www.arieldias.com

Page 27: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Algoritmo Guloso – Problema do Troco

Professor Ariel da Silva Dias - www.arieldias.com

Page 28: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Algoritmo Guloso – Problema do Empacotador

Professor Ariel da Silva Dias - www.arieldias.com

Page 29: ANÁLISE E COMPLEXIDADE DE ALGORITMOSarieldias.com/material/2019-1/ACA/Aula9n.pdfO limite inferior de um problema refere-se a um resultado teórico que determina qual é a melhor complexidade

Desafio

Professor Ariel da Silva Dias - www.arieldias.com

▪ Desafio: Estudar e implementar o código de Huffman

▪ A codificação proposta por Huffman(1952) têm sido uma técnica importante utilizada para comprimir dados e, portanto, economizar espaço de armazenamento de arquivos