anÁlise e complexidade de algoritmosarieldias.com/material/2019-1/aca/aula9n.pdfo limite inferior...
TRANSCRIPT
Análise e Complexidade de AlgoritmosProfessor Ariel da Silva DiasP, NP e NP-Completos
Professor Ariel da Silva Dias - www.arieldias.com
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Algoritmo Guloso – Problema do Troco
Professor Ariel da Silva Dias - www.arieldias.com
Algoritmo Guloso – Problema do Empacotador
Professor Ariel da Silva Dias - www.arieldias.com
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