André Aziz, Natália Flora 2
Problemas NP-Completos
André Aziz e Natália Flora{aaca,[email protected]}
André Aziz, Natália Flora 3
Para pensar...
• O problema do caixeiro viajante -“travelling-salesman problem”...
“Suponha que um caixeiro viajante tenha de visitar n cidades diferentes, iniciando e encerrando sua viagem na primeira cidade. Suponha, também, que não importa a ordem com que as cidades são visitadas e que de cada uma delas pode-se ir diretamente a qualquer outra.O problema do caixeiro viajante consiste em descobrir a rota que torna mínima a viagem total”.
Fonte: http://www.mat.ufrgs.br/~portosil/caixeiro.html
André Aziz, Natália Flora 4
Para pensar...
André Aziz, Natália Flora 5
Para pensar...
• Para o exemplo 6 pontos (cidades):
• Partindo de A e retornado para A, temos:
FEDCBACidades ,,,,,
120
R
AA
AFBEDCA
AFEBDCA
AFEDBCA
AFEDCBA
R
André Aziz, Natália Flora 6
Para pensar...
• Problema de otimização combinatória.• Pode ser reduzido ao problema de enumeração:
• Suponha 1 computador capaz de realizar 1 bilhão de operações por segundo:
!1 nnR
n Rotas por seg. (109/n-1) (n-1)! Tempo Total
5 250 milhões 24 Insignificante
10 110 milhões 362.880 0,003 seg
15 71 milhões 87 bilhões 20 min
20 53 milhões 1,2x1017 73 anos
25 42 milhões 6,2x1023 470 milhões de anos
Fonte: http://www.mat.ufrgs.br/~portosil/caixeiro.html
André Aziz, Natália Flora 7
Para pensar...
• E se existisse uma redução a um problema de ordem polinomial?
5nnR
n Rotas por seg. (109/n-1) n5 Tempo Total
5 250 milhões 3.125 Insignificante
10 110 milhões 100.000 Insignificante
15 71 milhões 759.375 0,01 seg
20 53 milhões 3.200.000 0,06 seg
25 42 milhões 9.765.625 0,23 seg
Fonte: http://www.mat.ufrgs.br/~portosil/caixeiro.html
André Aziz, Natália Flora 8
Agenda
• Conceitos básicos;
• Redução de problemas;
• Classes de problemas;
• Algoritmos não-determinísticos;
• NP, NP-difícil e NP-completo;
• Técnicas.
André Aziz, Natália Flora 9
Alguns conceitos...
• O que são algoritmos eficientes? – São os algoritmos que apresentam solução em tempo polinomial, ou
seja, O(P(n)), onde P(n) é um polinômio no tamanho da entrada n.
• O que são problemas tratáveis?– Problemas tratáveis são aqueles cuja solução é dada por algoritmos
eficientes.
Na teoria O(n10) é eficiente, porém na prática apenas nos interessam os polinômios de
menor grau!
André Aziz, Natália Flora 10
Redução entre Problemas
• Redução de Turing (Básico):
Uma redução do problema A para o problema B é um par de transformações τI e τS tal que, dada uma instância qualquer IA da entrada de A:
1. τI transforma IA em uma instância IB de B e;
2. τS transforma a solução SB de IB em uma solução SA de IA.
11
Redução de Turing
• Par de transformações (I e S).
• Quando usar:– Determinar limite superior ou inferior de um algoritmo.– Redução de Turing Otimização
André Aziz, Natália Flora
Problema A Problema B
IA Transforma IA em IB
πB
SBSA
IB
Transforma SB em SA
I
S
André Aziz, Natália Flora 12
Casamento cíclico de cadeias (CSM)
• Entrada: – Alfabeto Σ e duas cadeias de caracteres de tamanho n:
• Problema:– B é um deslocamento cíclico de A?
• Como resolver esse problema?
110110 nn bbbBeaaaA
1,,0,1,,0 mod nibank inik
André Aziz, Natália Flora 13
Casamento de cadeias (SM)
• Entrada: – Alfabeto Σ e duas cadeias de caracteres:
• Problema:– B é uma subcadeia de A?
– Pode ser resolvido através do algoritmos KMP com O(m+n).
nmbbbBeaaaA mn ,110110
1,,0,1,,0 mibank iik
André Aziz, Natália Flora 14
Redução; CSM SM
• Instância de CSM:
• τI constrói instância de SM:
– τI é O(n).
• Se k é a solução de SM para ISM, então k também é solução de ICSM. Logo, τs é O(1) e a redução é O(n).
• Exemplo:
nBAICSM ,,
.',,,2,' AAAondenBnAISM
.2;5,,10,
;5,,
kSS
cdeababcdeabcdeI
cdeababcdeI
CSMSM
SM
CSM
André Aziz, Natália Flora 15
Erros comuns ao usar redução
• Usar a redução na ordem inversa;
• Usar o algoritmo de uma redução sem se preocupar com um outro mais eficiente.
Após a redução AB descobrir que, pelo menos, A é tão difícil quanto B
“Perde tempo tentando entender o
B não.. o A já resolve.. e daí que ele demora mais!”
André Aziz, Natália Flora 16
Redução Polinomial
Definição:Tome L1 e L2 duas linguagens de uma entrada nos espaços U1 e U2, respectivamente. Dizemos que L1 é polinomialmente reduzível a L2 se existe um algoritmo de tempo polinomial que converte cada entrada u1U1 a outra entrada u2U2 tal que u1L1 se e somente se u2L2
* O algoritmo é polinomial no tamanho da entrada u1.
André Aziz, Natália Flora 17
Redução Polinomial
Em outras palavras ...
• Se Af(n) B e f(n) O(n k), para algum valor k real, então a redução de A para B é polinomial.
Daí deduzimos o seguinte teorema ...
André Aziz, Natália Flora 18
Polinomialmente Reduzível
Eu quero ver é provar!
Teorema 11.1:Se L1 é polinomialmente reduzível a L2 e existe um algoritmo de tempo polinomial para L2, então existe um algoritmo de tempo polinomial para L1.
André Aziz, Natália Flora 19
Transitividade
Eu quero ver é provar!
Teorema 11.2:Se L1 é polinomialmente reduzível a L2 e L2 é polinomialmente reduzível a L3, então L1 é polinomialmente reduzível a L3.
20
Problema da Satisfatibilidade (SAT)
• Problema de satisfazer uma fórmula lógica F na formal normal conjuntiva:
• Foi o primeiro problema identificado como pertencente a classe a NP-completo (Teorema de Cook).
• Existe algum valor para as variáveis x1,x2,...,xn tal que F seja verdadeira?
André Aziz, Natália Flora
2121 ,... iiim xxCondeCCCF
André Aziz, Natália Flora 21
Problema da Satisfatibilidade (SAT)
• Exemplo:
• Solução:
• Para pensar...– Encontrar um algoritmo para SAT. Qual a complexidade dele?
31321321 xxxxxxxxF
101 321 Fxxex
André Aziz, Natália Flora 22
Problema da Satisfatibilidade (SAT)
• Não (existe) se conhece algoritmo eficiente para SAT.
• Achar um algoritmo que o resolve é difícil (resolução), mas verificar se uma solução é válida normalmente é fácil (verificação).
31321321 xxxxxxxxF
101 321 Fxxex
“... chegar lá em cima é possível, difícil é achar o caminho...”
André Aziz, Natália Flora 23
Tipos de Redução e Classes de Problemas
• Redução de Turing (ou Cook):– O algoritmo πB pode ser executado múltiplas vezes, se a redução é
polinomial e o número de chamadas a πB é limitado a um polinômio no tamanho da entrada, pode-se afirmar que o problema reduzido (A) é resolvido em tempo polinomial.
Problema A Problema B
IATransforma IA em IB
πB
SBSA
IB
Transforma SB em SA
I
S
André Aziz, Natália Flora 24
Tipos de Redução e Classes de Problemas
• Redução de Karp:– O algoritmo πB só pode ser usado uma única vez, além disso πB deve
responder SIM para IB sss IA é uma instância SIM para o problema A.
Problema A Problema B
IATransforma IA em IB
πB
SBSA
IB
Transforma SB em SA
I
S
25
Redução de Karp
• Par de transformações (I e S).
• É um caso particular da Redução de Turing.• Quando usar:
– Usada para provas de pertinência de problemas de decisão.– Redução de Karp problema de decisão.
André Aziz, Natália Flora
Problema A Problema B
IA Transforma IA em IB
πB
SBSA
IB
Transforma SB em SA
I
S
André Aziz, Natália Flora 26
Algoritmos
• Determinísticos:– O resultado de cada operação é definido de maneira única.
• Não-Determinísticos:– São divididos em 2 fases:
• Construção: nesta fase pode ser usado o comando não-determinístico, nd-choice, para a construção da proposta de solução (certificado).
• Verificação: nesta fase são usados apenas comandos determinísticos e a proposta de solução é verificada. Ao final desta fase o algoritmo retornará aceita ou rejeita.
André Aziz, Natália Flora 27
Comando ND-Choice (Escolha)
• Usado para a manipulação de escolhas!
• A complexidade de execução do comando nd-choice é O(1), oráculo!
Dizemos que uma linguagem L é reconhecida por um algoritmo não determinístico se:
Dada uma entrada x , é possível converter cada nd-choice encontrada durante a execução do algoritmo em uma escolha real tal que a saída do algoritmo será aceitar x se e somente se xL.
André Aziz, Natália Flora 28
Complexidade ND
• Algoritmos não-determinísticos– Corresponde ao número mínimo de passos (escolhas) necessários
para que o algoritmo retorne aceitar.– Se o algoritmo retornar rejeita seu tempo de execução é O(1)!
• Uma máquina não-determinística é aquela capaz de executar uma algoritmo não-determinístico.
André Aziz, Natália Flora 29
Simulando MáquinasNão-Determinísticas• Imagine:
– Máquinas com quantidade INFINITA de processadores;
– Processadores se comunicam entre si de modo INSTANTÂNEO.
• A execução de um algoritmo não-determinístico pode ser esquematizado em uma árvore:– Cada caminho começando da raiz corresponde uma sequência de
escolhas.
!@#$
André Aziz, Natália Flora 30
Simulando MáquinasNão-Determinísticas• ... árvores:
– Em um dado vértice, filhos serão criados ao se executar o comando ND-choice (Escolha).
– Para cada novo filho é alocado um novo processador para continuar a execução do algoritmo.
• Imagine que essa árvore de execução é percorrida em largura e que se algum processador retorna Aceitar, ele consegue parar a execução em todos os demais instantaneamente...
......!!
André Aziz, Natália Flora 31
Simulando MáquinasNão-Determinísticas• Exemplo problema CLIQUE:
– Dado um grafo conexo não-orientado– E um inteiro
• G possui um subgrafo completo com k vértices?
Hum!
EVG ,
Vnondenk ,,,1
André Aziz, Natália Flora 32
Simulando MáquinasNão-Determinísticas• Algoritmo não-determinístico para CLIQUE:
• Não (existe) se conhece um algoritmodeterminístico para CLIQUE.
;
;,
,
;1
;
);(
;
;0
,,
SIMretornar
NÃOretornarEvuSe
façaCemvudiferentesvérticesdepartodoPara
jj
uCC
entãoCuSe
SEscolhau
façakjEnquanto
C
j
knGCliqueND
zzZZzzZzzZ...
Complexidade:
22 nOkkO
André Aziz, Natália Flora 33
Classes P e NP
• Definição de P– Conjunto de problemas que podem ser resolvidos por um algoritmo
determinístico polinomial.
• Definição de NP– Conjunto de todos os problemas que podem ser resolvidos por um
algoritmo não-determinístico polinomial.
Como todo algoritmo determinístico é um caso particular de um não-determinístico, temos que PNP.
André Aziz, Natália Flora 34
P = NP?
• Questão fundamental da teoria da computação!– Acredita-se que essa proposição seja falsa!
• Como mostrar que é falsa?– Encontrar um problema ANP e mostrar que nenhum algoritmo
determinístico polinomial pode resolver A.
• Como mostrar que é verdadeira?– Para todo problema BNP existe um algoritmo determinístico
polinomial que o resolve.
35
Classes NP-difícil e NP-completo
• NP-Difícil:– Classificamos um problema A como NP-Difícil se todo problema de NP
se reduz polinomialmente a A.
– O problema A é pelo menos tão difícil quanto o L;• O problema A não precisa estar NP, pois não precisa ser um problema de
decisão, e se for um problema de decisão ainda sim não precisa estar em NP.
– Se P≠NP então o NP-difícil não tem solução em tempo polinomial.
André Aziz, Natália Flora
André Aziz, Natália Flora 36
Classes NP-difícil e NP-completo
• NP-Completo:– A é um problema NP-Completo se:
• A NP e• A NP-Difícil
Pela definição NP-Completo NP-Difícil, se for encontrado qualquer algoritmo polinomial para um problema em NP-Difícil então ficará provado que P = NP.
André Aziz, Natália Flora 37
Arrumando tudo...
André Aziz, Natália Flora 38
Próximos Passos...
• Teorema de Cook: “SAT é NP-completo”;
• Problema da Parada;
• Tratamento de Problemas NP-difíceis.
André Aziz, Natália Flora 39
Teorema de Cook
• O problema SAT é NP-Completo.
• Para provar usou Máquinas de Turing.
• Abriu portas para novos problemas:– No ano seguinte 24 novos problemas foram identificados como sendo
NP-completos!
André Aziz, Natália Flora 40
Meu problema é NPC?
• Fácil!?...
• ... simples.
Achar um problema NPC que possui uma redução polinomial para o meu problema!
André Aziz, Natália Flora 41
SAT -> Clique
• Tomar E uma expressão booleana qualquer na forma normal conjutiva (CNF);
• Cada cláusula contém n variáveis;
• Qual a resposta para a seguinte expressão SIM ou NÃO?
mEEEE 21
zyzyxzyxE
wzyxEi
André Aziz, Natália Flora 42
SAT -> clique
• Transformamos cada cláusula (com suas n variáveis) em uma “coluna”;
• As variáveis vão representar os vértices;
• Estabelecemos as conexões entre os vértices:– não conectamos variáveis da mesma cláusula;– Não conectamos variáveis complementares;
• Objetivo: Encontrar um clique com pelo menos o número de Cláusulas.
André Aziz, Natália Flora 43
SAT -> Clique
• Vamos para o quadro fazer as seguintes atividades:– Montar o grafo;– Estabelecer as conexões (arestas)!
z
x
y
y
zz
x
y
André Aziz, Natália Flora 44
Indecidibilidade:O Problema da Parada
• Suponha que você recebeu uma subrotina H muito especial que realiza a seguinte tarefa. Dado um programa P implementado por uma codificação <P> e uma entrada x, H retorna SIM se <P> pára com a entrada x e retorna N caso contrário.
• Usando H, posso escrever o programa D representado a seguir cujo objetivo é decidir se um programa P pára quando a sua própria codificação for passada na entrada.
André Aziz, Natália Flora 45
Indecidibilidade:O Problema da Parada
O que acontece se passarmos D como entrada para ele mesmo?Analisando:
Programa D(<P>);a: Se H(<P>, <P>) = SIM, então repita a; se não PARE.
!,
,),(,
!,
,),(,
)(
pararDsesejaou
SIMretornarDDHsepáranão
pararnãoDsesejaou
NÃOretornarDDHsepára
DD
André Aziz, Natália Flora 46
Tratamento de Problemas NP-difíceis
• Backtracking
• Programação Linear
• Heurísticas
• Aproximações
André Aziz, Natália Flora 47
Backtracking
• Representa um refinamento do algoritmo de força bruta, consiste em eliminar múltiplas soluções antes que estas sejam examinadas. – Encontrar uma solução usando este algoritmo consiste em fazer uma
busca em profundidade na EE (árvore de espaço de estados);
– Soluções podem ser representadas por vetores de tamanho fixo ou variável na forma (x1 , ..., xn);
– Solucionar significa encontrar uma tupla que optimiza a função critério P(x1 , ..., xn) ou encontrar todas as tuplas que satisfaçam P(x1 , ..., xn).
48
Backtracking
• Aplicações:– Pode ser aplicado para problemas que admitem o conceito de
“soluções parciais candidatas”:• Satisfação de restrições.
• Exemplo:– Jogo das oito rainhas;– Palavras cruzadas.
André Aziz, Natália Flora
André Aziz, Natália Flora 49
Tratamento de NP-DifícilBranch & Bound• Utilizado para otimizar a função objetivo.
• Em cada nó da árvore, a função classificadora estima o melhor valor da função objetivo no subespaço do EE representados por aquele nó.
• Os nós são amadurecidos por:– Inviabilidade;– Limitante;– Otimalidade .
• Exemplo de problema: mochila binária (BKP).
André Aziz, Natália Flora 50
• É um método para otimizar a função objetivo sujeita a restrições lineares.
• São expressos como:
• Ou na forma matricial por:
onde A é uma matriz mxn e b e c são vetores de m e n posições respectivamente.
Tratamento de NP-Difícil Programação Linear
njx
mibxa
xcz
j
i
n
j jij
n
j jj
,,1,0
,,1,1
1
min
Sujeito a
nx
bAx
cxz
min
Sujeito a
André Aziz, Natália Flora 51
Tratamento de NP-DifícilProgramação Linear• Exemplo da Fazenda:
– A hectares de terra;– P quantidade de inseticida;– F quantidade de fertilizante;– S preço de venda;– x área plantada de uma cultura.
Área Plantada
MilhoSorgo
0,0 21
2211
2211
21
2211
xx
PxPxP
FxFxF
Axx
xSxSFunção Objetivo
Restrições
André Aziz, Natália Flora 52
Tratamento de NP-DifícilOutras Técnicas
• Heurísticas:– Algoritmos que geram soluções viáveis para as quais não se pode dar
garantias de qualidade.• Não se sabe quão distante sua solução está da solução ótima.
• Aproximações:– Algoritmos aproximados encontram uma solução com garantia de
qualidade em tempo polinomial.
André Aziz, Natália Flora 53
Problemas NP-Completos
André Aziz e Natália Flora{aaca,[email protected]}
Obrigado.
Top Related