590 likes | 674 Views
Informática Teórica Engenharia da Computação. COMPLEXIDADE DE TEMPO. Às vezes não é possível achar reduções polinomiais para a busca de força bruta Às vezes nem se sabe se elas existem Não se sabe porque certas redu ções são possíveis Que princípios?
E N D
Informática Teórica Engenharia da Computação
COMPLEXIDADE DE TEMPO • Às vezes não é possível achar reduções polinomiais para a busca de força bruta • Às vezes nem se sabe se elas existem • Não se sabe porque certas reduções são possíveis • Que princípios? • Porém, as complexidades de muitos problemas estão interligadas • Um algoritmo de tempo polinomial para um desses problemas pode ser usado para resolver uma classe inteira de problemas.
COMPLEXIDADE DE TEMPO • Um caminho hamiltoniano num grafo direcionado G é um caminho direcionado que passa por cada nó exatamente uma vez. • Problema: testar se um grafo direcionado contem um caminho hamiltoniano conectando 2 nós dados. • HAMPATH = {<G,s,t>| G é um grafo direcionado com um caminho hamiltoniano de s para t}
COMPLEXIDADE DE TEMPO • Podemos obter um algoritmo de tempo exponencial para o problema HAMPATH modificando o algoritmo de força-bruta para CAM dado
CLASSE P – PROBLEMAS • CAM = {<G,s,t> | G é um grafo direcionado que tem um caminho de s para t }
CLASSE P – PROBLEMAS TEOREMA • CAM ∈ P • Estratégia força bruta • Examina todos os caminhos potenciais em G • Determinar se algum é um caminho direcionado de s para t • Caminho potencial: sequência de nós em G tendo um comprimento de no máximo |V| • Há aproximadamente |V||V| caminhos potenciais • Tempo exponencial
CLASSE P – PROBLEMAS • IDÉIA DA PROVA: usar um método de busca no grafo para evitar a força bruta. • Busca em largura: marcamos sucessivamente todos os nós que são atingíveis a partir de s por caminhos de comprimento 1, depois 2, em seguida 3 etc. • Mostrar que a estratégia é polinomial • PROVA: o algoritmo seguinte M decide CAM em tempo polinomial
CLASSE P – PROBLEMAS • M = “Sobre a entrada <G, s, t> onde G é um grafo direcionado com nós s e t: • 1. Marque o nó s. • 2. Repita o passo seguinte até que nenhum nó adicional seja marcado • 3. Para cada aresta (a,b) de G: se a for um nó marcado e b não estiver marcado, marque b. • 4. Se t estiver marcado, aceite. Senão, rejeite.”
CLASSE P – PROBLEMAS • Número de passos de M • Os passos 1 e 4 executam apenas uma vez • O passo 3 executa no máximo |V| vezes: no pior caso, apenas um nó é marcado a cada vez, exceto a última • Complexidade dos passos de M • Os passos 1 e 4 são facilmente implementados em tempo polinomial • O passo 3 varre cada aresta e executa um teste para ver se um nó está marcado
CLASSE P – PROBLEMAS • Conclusão da prova • M executa uma quantidade de passos polinomial na entrada • Todos os passos de M rodam em tempo polinomial na entrada • Logo, M é polinomial • CAM ∈ P • Exercício do livro: 7.8
CLASSE NP – HAMPATH • Precisamos apenas adicionar um teste para verificar que o caminho atual é hamiltoniano. • Ninguém sabe se HAMPATH é solúvel em tempo polinomial. • Mas ele tem verificabilidade polinomial,importante para entender sua complexidade. • Não conhecemos uma forma polinomial de determinar se um grafo contem um caminho hamiltoniano... • Mas se tal caminho fosse descoberto (talvez usando o algoritmo exponencial), poderíamos facilmente convencer uma outra pessoa de sua existência, simplesmente apresentando-o.
CLASSE NP – HAMPATH • Em outras palavras, verificar a existência de um caminho hamiltoniano pode ser muito mais fácil que determinar sua existência.
CLASSE NP – PROBLEMAS • Outro problema polinomialmenteverificável é a compostura. • Um no. natural é composto se é o produto de 2inteiros maiores que 1 (i.e., não é primo). • COMPOSITES = {x|x= pq, para inteiros p,q > 1} • Ë fácil verificar que um no. é composto, só é necessário um divisor desse no. • Recentemente, um algoritmo de tempo polinomial para testar se um no. é primo ou composto foi descoberto, mas ele é mais complicado que o método acima para verificar compostura.
CLASSE NP – PROBLEMAS • Alguns problemas podem não ser polinomialmente verificáveis. • Ex: , o complemento de HAMPATH. • Mesmo se pudéssemos determinar se um grafo realmente não tivesse um caminho hamiltoniano, não conhecemos uma maneira de permitir a uma outra pessoa verificar sua inexistência sem usar o mesmo algoritmo de tempo exponencial para fazer a determinação primeiramente.
VERIFICADOR DEFINIÇÃO • Um verificador para uma linguagem A éum algoritmo V, onde: • A = {w|Vaceita <w,c> para alguma cadeia c} • Medimos o tempo de um verificador somente em termos do comprimento de w. • Portanto um verificador de tempo polinomial roda em tempo polinomial no comprimento de w. • Uma linguagem A é polinomialmente verificável se ela tem um verificador de tempo polinomial.
VERIFICADOR • Um verificador usa informação adicional (c) para verificar que uma cadeia w é um membro de A. • c é chamada certificadoou provada pertinência a A. • Para verificadores polinomiais, o certificado tem comprimento polinomial (no comprimento de w) porque isso é tudo o que o verificador pode acessar no seu limitante de tempo. • Para HAMPATH , um certificado para uma cadeia <G,s,t>∈HAMPATH é o caminho hamiltoniano de s a t. • Para COMPOSITES, um certificado para o no.compostox é um de seus divisores. • O verificador checa em tempo polinomial que a entrada está na linguagem quando ela recebe o certificado.
VERIFICADOR DEFINIÇÃO • NP é a classe de linguagens que têm verificadores de tempo polinomial. • A classe NP contem muitos problemas de interesse prático. • HAMPATH e COMPOSITES são membros de NP. • COMPOSITES é também membro de P, um subconjunto de NP, mas provar esse resultado é muito mais difícil. • O termo NP vem de tempo polinomial não-determinístico vindo de MTs não-determinísticas de tempo polinomial. .
CLASSE NP • A seguir , uma MT não-determinística (MTND) que decide HAMPATH em tempo polinomial não-determinístico. • O tempo de uma MTND é o tempo usado pelo seu ramo de computação mais longo.
CLASSE NP • N1 = “Sobre a entrada <G,s,t>, onde G é um grafo direcionado com nós s e t: • 1. Escreva uma lista de m nos.p1... pm, m sendoo no.de nós em G. Cada no. na lista é selecionado não-deterministicamente entre 1 e m. • 2. Verifique se há repetições na lista. Se alguma for encontrada, rejeite. • 3. Verifique se s = p1 e t = pm. Se algum falhar, rejeite. • 4. Para cada i entre 1 e m-1, verifique se (pi,pi+1) é aresta de G. Se alguma não for, rejeite. Senão, todos os testes foram positivos, portanto aceite.”
CLASSE NP • Analisemos, examinando cada um de seus estágios. • No estágio 1, a escolha não-determinística claramente roda em tempo polinomial. • No 2 e 3, cada parte é uma simples verificação, portanto juntos eles rodam em tempo polinomial. • Finalmente, o estágio 4 também claramente roda em tempo polinomial. • Por conseguinte, esse algoritmo roda em tempo polinomial não-determinístico.
NP TEOREMA • Uma linguagem está em NP sse ela édecidida por uma MTND de tempo polinomial. • IDEIA DA PROVA: 2 mãos: • Mostramos como converter um verificador de tempo polinomial para uma MTND de tempo polinomial equivalente ... • ...e vice versa. • A MTND simula o verificador adivinhando o certificado. • O verificador simula a MTND usando o ramo de computação de aceitação como o certificado.
NP TEOREMA • Uma linguagem está em NP sse ela édecidida por uma MTND de tempo polinomial. • PROVA: 1ª mão: Suponha que A ∈ NP e mostre que A édecidida por uma MTND de tempo polinomial N. • Seja V o verificador de tempo polinomial para A que existe pela definição de NP. • Assumaque V seja uma MTND que roda em tempo nk e construa N da seguinte maneira.
NP TEOREMA • Uma linguagem está em NP sse ela édecidida por uma MTND de tempo polinomial. • PROVA: 1ª mão: • N = “Sobre a entrada w de comprimento n: • 1. Não-deterministicamente selecione uma cadeia c de comprimento no máximo nk. • 2. Rode V sobre a entrada <w,c>. • 3. Se V aceita, aceite; caso contrário, rejeite.”
NP TEOREMA • Uma linguagem está em NP sse ela édecidida por uma MTND de tempo polinomial. • PROVA: 2ª mão: Assuma que A seja decidida por uma MTND de tempo polinomial N e construa um verificador de tempo polinomial V: • N = “Sobre a entrada <w,c>. • 1. Simule N sobre a entrada w, tratando cada símbolo de c como uma descrição da escolha não-determinística a fazer a cada passo (como na prova do Teorema 3.16). • 2. Se esse ramo da computação de N aceita, aceite; caso contrário,rejeite.”
NP DEFINIÇÃO • NTIME(t(n)) = {L|L é uma linguagem decidida por uma MTND de tempo O(t(n))}. • Definimos a classe de complexidade de tempo não-determinístico NTIME(t(n)) como análoga àclasse de complexidade de tempo determinístico TIME(t(n)).
CLASSE NP DEFINIÇÃO NP = • A classe NP é insensível àescolha do modelo computacional não-determinístico razoável porque todos esses modelos são polinomialmente equivalentes. • Ao descrever e analisar algoritmos de tempo polinomial não-determinísticos, seguimos as convençoesprecedentes para algoritmos determinísticos de tempo polinomial.
CLASSE NP DEFINIÇÃO NP = • Cada estágio de um algoritmo não-determinístico de tempo polinomial deve ter uma implementação óbvia em tempo polinomial não-determinístico em um modelo computacional não-determinístico razoável. • Analisamos o algoritmo para mostrar que todo ramo usa no máximo uma quantidade polinomial de estágios.
CLASSE NP – PROBLEMAS • Um clique em um grafo não-direcionado é um subgrafo, no qual todo par de nós está conectado por uma aresta. • Um k-clique éum clique que contem k nós. • CLIQUE = {<G,k>|G é um grafo não-direcionado com um k-clique}:
CLASSE NP – PROBLEMAS TEOREMA • CLIQUE está em NP. • IDEIA DA PROVA: O clique éo certificado. • PROVA Aqui estáum verificador V para CLIQUE: • V = “Sobre a entrada <<G,k>,c>: • 1. Teste se c é um conjunto de k nós em G • 2. Teste se G contem todas as arestas conectando nós em c. • 3. Se ambos os testes retornam positivo, aceite; caso contrário, rejeite.”
CLASSE NP – PROBLEMAS TEOREMA • CLIQUE está em NP. • PROVA ALTERNATIVA, em termos de MTNDs: • É só fornecer uma que decida CLIQUE. • Observe a similaridade entre as duas provas. • N = “Sobre a entrada <G,k>, onde G éum grafo: • 1. Não-deterministicamente selecione um subconjunto c de k nós de G. • 2. Teste se G contem todas as arestas conectando nós em c. • 3. Se sim, aceite; caso contrário, rejeite.”
CLASSE NP – PROBLEMAS • Seja uma coleção de nos.x1...xke um no.alvot. • Desejamos determinar se a coleção contem uma subcoleção que soma t. • SUBSET-SUM = {<S,t>|S = {x1...xk} e para algum {y1...yl} ⊆ {x1...xk} temos Σyi= t} • <{4,11,16,21,27},25>∈SUBSET-SUM pois 4+21=25. • Note que {x1...xk} e {y1...yl} são considerados como multiconjuntosentão permitem repetição de elementos.
CLASSE NP – PROBLEMAS TEOREMA • SUBSET-SUM está em NP. • IDEIA DA PROVA: O subconjunto é o certificado. • PROVA Eis um verificador V para SUBSET-SUM: • V = “Sobre a entrada <<S,t>,c>: • 1. Teste se c é uma coleção de nos que somam t. • 2. Teste se S contem todos os nos. em c. • 3. Se ambos os testes retornam positivo, aceite; caso contrário, rejeite.”
CLASSE NP – PROBLEMAS TEOREMA • SUBSET-SUM está em NP. • PROVA ALTERNATIVA, em termos de MTNDs: • N = “Sobre a entrada <S,t>: • 1. Não-deterministicamente selecione um subconjunto c dos nos. em S. • 2. Teste se c é uma coleção de nos.que somam t. • 3. Se sim, aceite; caso contrário, rejeite.”
CLASSE NP – PROBLEMAS • Os complementos e não são obviamente membros de NP. • Verificar que algo não está presente parece ser mais difícil que verificar que está presente. • Fazemos uma classe de complexidade separada, chamada coNP, que contem as linguagens que são complementos de linguagens em NP. • Não sabemos se coNPé diferente de NP.
P=NP? • NP é a classe de linguagens solúveis em tempo polinomial numa MTND, ou, • NP é a classe de linguagens onde a pertinência na linguagem pode ser verificadaem tempo polinomial. • P é a classe de linguagens onde a pertinência pode ser testadaem tempo polinomial. • HAMPATH, CLIQUE ∈ NP • HAMPATH, CLIQUE ∈ P ?
P=NP? • O poder de verificabilidade polinomial parece ser muito maior que aquele da decidibilidade polinomial. • Mas, P e NP podem ser iguais. • Somos incapazes de provar a existência de uma única linguagem em NP que não esteja em P. • A maioria dos pesquisadores acreditam que as duas classes não são iguais porque houve esforços enormes para encontrar algoritmos de tempo polinomial para certos problemas em NP, sem sucesso. • Pesquisadorestambém têm tentado provar que as classes são diferentes, mas isso acarretaria mostrar que nenhum algoritmo rápido existe para substituir a força-bruta. • Fazerisso está atualmente além do alcance científico.
P=NP? • O melhor método conhecido para resolver linguagens em NP deterministicamente usa tempo exponencial. • Podemos provar que: • NP ⊆EXPTIME = • Mas não sabemos se NP está numa classe de complexidade de tempo determinístico menor.
NP-COMPLETUDE • Cook – 1971 – NP • Levin – 1973 – problemas de busca • Karp – 21 problemas NP • Eles descobriram certos problemas NP cuja complexidade individual está relacionada à classe NP inteira. • Se um algoritmo de tempo polinomial existe para quaisquer desses problemas, todos os problemas em NP seriam solúveis em tempo polinomial. • Essesproblemas são chamados NP-completos.
NP-COMPLETUDE • O fenômeno da NP-completude é importante por razões tanto teóricas quanto práticas. • No lado teórico, um pesquisador tentando mostrar que P édiferente de NP pode focar sobre um problema NP-completo. • Se algum problema em NP requer mais que tempo polinomial, um NP-completo também requer. • Um pesquisador tentando provar que P=NP só precisa encontrar um algoritmo polinomial para um problema NP-completo para atingir seu objetivo. • No lado prático, a NP-completude pode evitar a perda de tempo buscando por um algoritmo polinomial inexistente para um problema específico
NP-COMPLETUDE • Muito embora possamos não ter a matemáticanecessária para provar que o problema é insolúvel em tempo polinomial, acreditamos que P≠NP. • Portanto provar que um problema é NP-completo é forte evidência de sua não-polinomialidade. • SAT = {<F>| F é uma fórmula booleana satisfatível} • TEOREMA DE COOK-LEVIN: SAT ∈P sseP=NP.
REDUTIBILIDADE EM TEMPO POLINOMIAL • Agora definimos uma versão de redutibilidade em relação à eficiência da computação. • Quando o problema A éeficientemente redutível a B, a solução eficiente para B pode ser usada para A.
REDUTIBILIDADE EM TEMPO POLINOMIAL DEFINIÇÕES • Uma função f: é computável em tempo polinomial se alguma MT polinomial M existe que páracom exatamente f(w) na sua fita, quando iniciada sobre qualquer entrada w. • A linguagem A é redutível (por mapeamento) em tempo polinomial (muitos-para-um), à linguagem B (A B), se uma função computável polinomial f:existe, onde para toda w, w ∈A ⇔f(w) ∈ B: • A função f échamada redução de tempo polinomial de A para B.
REDUTIBILIDADE EM TEMPO POLINOMIAL TEOREMA • Se A B e B ∈P, então A ∈P. • PROVA : Seja M o algoritmo polinomial que decide B e f a redução polinomial de A para B. • Eis um algoritmo polinomial N que decide A: • N = “Sobre a entrada w: • 1. Compute f(w). • 2. Rode M sobre a entrada f(w) e dê como saída a saída de M.”
REDUTIBILIDADE EM TEMPO POLINOMIAL TEOREMA • Se A B e B ∈P, então A ∈P. • PROVA: • w ∈A sempre que f(w) ∈B porque f éuma redução de A para B. • Portanto, M aceita f(w) sempre que w ∈A. • Ademais, N é polinomial pois cada um de seus 2 estágios roda em tempo polinomial. • O estágio 2 é polinomial porque a composição de polinômios é um polinômio.
1-SAT:linear (um literal porsubfórmula) 2-SAT: linear (com fases) (x11 OR x12) AND (x21 OR x22) AND (x31 OR x32) AND… 3-SAT: NP-completo (x11 OR x12 OR x13) AND (x21 OR x22 OR x23) AND (x31 OR x32 OR x33) AND ... O problemasãoosconflitos, quediminuem a satisfabilidade! Não existe um algoritmo polinomial para todas as instâncias do problema SAT, a não ser que P = NP Vira deterministicamente polinomial quando as sentenças viram 2-SAT (no máximo 2 símbolos proposicionais por fórmula) Cláusula de Horn – 1-SAT (No máximo 1 símbolo proposicional positivo em todas as sub-fórmulas) 3-SAT
REDUTIBILIDADE EM TEMPO POLINOMIAL 3SAT = {<F>| F é uma 3fnc-fórmula satisfatível} TEOREMA • 3SAT é redutível em tempo polinomial a CLIQUE. • IDEIA DA PROVA: A redução de tempo polinomial f de 3SAT para CLIQUE converte fórmulas para grafos. • Nos grafos construídos, cliques de um dado tamanho correspondem a atribuições que satisfazem a fórmula. • Estruturas dentro do grafo são projetadas para imitar o comportamento das variáveis e cláusulas.
REDUTIBILIDADE EM TEMPO POLINOMIAL TEOREMA • 3SAT é redutível em tempo polinomial a CLIQUE. • PROVA: Seja F com k cláusulas tal como • = (a1 vb1 vc1) ^ (a2 v b2 vc2) ^ ...^ (ak vbk vck) • A redução f gera a cadeia <G,k> onde G éum grafo não-direcionado definido da seguinte forma. • Os nós em G são organizados em k grupos de 3 nós. • Cada tripla ti corresponde a uma das k cláusulas. • As arestas de G conectam todos exceto dois tipos de pares de nós em G: • Nenhumaaresta existe entre nós na mesma tripla. • Não há aresta entre 2 nós contraditórios.
REDUTIBILIDADE EM TEMPO POLINOMIAL TEOREMA • 3SAT é redutível em tempo polinomial a CLIQUE. • F= (x1 v x1 v x2) ^ (~x1 v ~x2 v ~x2) ^ (~x1 v x2 v x2):
REDUTIBILIDADE EM TEMPO POLINOMIAL TEOREMA • 3SAT é redutível em tempo polinomial a CLIQUE. • PROVA: Numa atribuição que satisfaz F, pelo menos um literal é T em toda cláusula. • Em cada tripla de G, selecionamos um nó de um literal verdadeiro na atribuição que satisfaz F. • Os nós selecionados formam um k-clique. • O número de nós selecionado ék, porque escolhemos um para cada uma das k triplas. • Cada par de nós selecionados é ligado por uma aresta porque nenhum par se encaixa numa das exceções.
DEFINIÇÃO DE NP-COMPLETUDE DEFINIÇÃO • Uma linguagem B éNP-completa se satisfaz : • 1. B está em NP, e • 2. toda A em NP é redutível em tempo polinomial a B. TEOREMA • Se B for NP-completa e B ∈P, então P = NP. • PROVA Esse teorema segue diretamente da definição de redutibilidade de tempo polinomial.