1 / 76

Complexidade Computacional, Lógica e Teoria da Prova

Complexidade Computacional, Lógica e Teoria da Prova. |x|. f(x) = 0 2. |x|. 1 => Para se escrever 0 2 a partir de x se usa “tempo” exponencial. É mais fácil verificar uma solução do que calculá-la ???. 2 => Para, dados <x,y>, verificar-se se f(x) = y usa-se “tempo” polinomial.

elsie
Download Presentation

Complexidade Computacional, Lógica e Teoria da Prova

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Complexidade Computacional, Lógica e Teoria da Prova Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  2. |x| f(x) = 02 |x| 1 => Para se escrever 02 a partir de x se usa “tempo” exponencial. É mais fácil verificar uma solução do que calculá-la ??? 2 => Para, dados <x,y>, verificar-se se f(x) = y usa-se “tempo” polinomial 1 => Para se encontrar uma valoração que satisfaça uma fórmula booleana parece precisar-se de “tempo” exponencial. 2 => Dada uma fórmula e uma valoração, verifica-se em “tempo” polinomial se esta satisfaz a fórmula,. Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  3. PVp  PCp se e somente se P = NP Teorema : PVp = { f / f(a1,...,ak)= b é verificável em tempo poli para toda <a1,...,ak,b> } PCp = { f / f(a1,...,ak) é calculável em tempo poli para toda <a1,...,ak>} Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  4. Qual a relação entre a Lógica e a Computação ? - O que é a (Teoria da) Computação ? (Tentativa de) conceituação do Computável - O que é Lógica ? (Tentativa de) conceituação do Razoável Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  5. Lógica Aristotélica e Escolástica (a partir de 300 a.c.)  Álgebras Booleanas (Boole 1847) Antes de 1879 ====>   Álgebra Relacional (DeMorgan, Schroeder, C.S.Peirce XIX) Razoável Todo evento que é passível de uma explicação, na forma argumentativa, construída sobre fatos iniciais inquestionáveis. Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  6. Evolução da Lógica como assunto matemático DeMorgan (1830) Observa que a álgebra não necessita lidar tão somente com conceitos numéricos. Boole (1854) Descreve uma álgebra a partir de operações entre conjuntos e relações lógicas, confirmando DeMorgan. Frege (1879) estabele a lógica como um sistema formal que tem sua linguagem particular e distinta da natural. O conceito de prova matemática passa a ser formal. Frege (1884) busca a fundamentação da aritmética em bases puramente lógicas , com a adição do conceito de pertinência () como primitivo. ===> Os paradoxos aparecem novamente !! ===> Paradoxos associados ao axioma da escolha, etc Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  7. Principais Resultados em Lógica/Metamatemática no início do século XX - Teoria dos Tipos como solução ao paradoxo em Russell - Russell e Whitehead publicam o Principia Mathematica. - Presburger (1929) prova que a aritmética sem a multiplicação é decidível. - Skolem (1931) prova que a aritmética sem a adição e o sucessor é decidível - Herbrand (1931) prova a consistência de um fragmento fraco da aritmética (só o sucessor). -Tarski (1930) formaliza a semântica adequada para a lógica de primeira ordem - Gödel (1930) prova a completude do cálculo de primeira ordem - Gödel (1931) introduz a idéia de aritmetizar (codificar na forma numérica) a linguagem de um sistema formal de forma que (meta) teoremas do sistema possam ser vistos como teoremas aritméticos e prova seu famoso teorema da incompletude. Obs: # é o código de . - Gödel (1931) prova a não-provabilidade da consistência. - Gentzen (1936) prova a consistência da aritmética ( Haupsatz para o Cálculo de Sequentes) Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  8. Computável Toda tarefa que pode ser realizada por um ser burro com um mínimo de conhecimento/capacidade. burro = Incapaz de Aprender conhecimento = ? Máquina de Raciocinar (Leibniz 1667)  . Máquina de Calcular de Pascal l (Pascal sec.XVII) Antes de 1900 d.c ====>  Máquina de Babbage (Ch. Babbage sec. XIX) .  Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  9. A Computação do ponto de vista das funções recursivas Prog. Lógica, Prolog 1931 - Gödel define as funções prim. recursivas associando-as a provas em aritmética 1927/1928 - Ackermann define uma função que necessita de recursão simultânea 1934 - Rózsa Péter - Prova que as funções prim. recursivas formam a classe definida por recursão simples e “nested” a partir de funções iniciais constantes, identidade e a função sucessor. Prova que a função de Ackermann é na realidade definida por recursão em duas variáveis e não é portanto primitivamente recursiva, mas é computável. 1936 - A. Turing - Define uma máquina formal a partir de princípios simples (ler , apagar e escrever símbolos em uma fita) e define o conceito de Máquina Universal. Prova que não existe máquina capaz de verificar se outra máquina pára ou não. Desde o início a sua máquina com versão Não-Determinística Máq. Programável 1936 - A. Church Define o -Calculus e mostra que este é capaz de definir todas as funções para as quais existe uma Máquina de Turing. LISP e Funcionais 1938 - Kleene Define, aceitando que o computável inclui a parcialidade funcional, as funções parcialmente recursivas e lança a Tese de Church. 1954 - Markov Estabele o conceito de computável com base em identificação de palavras e símbolos (algoritmos de Markov) e justifica o ponto de vista finitista da computação. SNOBOL, Ling. Transf. Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  10. n n f é recursiva existe uma máquina de Turing M , tal que M com 11.......111 na fita de entrada M pára com 11.....11111 na saída sss f(n) = m existe um algoritmo de Markov A , t.q. A lendo 11.......111 pára e produz o string 11.....11111 na saída sss f(n) = m m m Sxyz  (xy)xz Kxy  x Ix  x (I SKK) :0:  I :1:  P0K :2:  P1K ..... :n:  P:n-1:K .... P  Tese de Church: f: N  N é computável se e somente se existe um combinador FC1 C2... Cn tal que para todo nN (F:n:  :m:)  f(n) = m) Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  11.  i1 q qi1 qi2 qik q’ - Modelo multi-cabeça (determinístico) i2 ik A Máquina de Turing - Modelo determinístico Máquina Universal U U(i,a) = Ti(a) Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  12. i1 qi1 qik qi2 M. Turing modelo multi-fita (determinístico) 1 2 i2 ik k Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  13. A partir da década de 50 (sec. XX)....... algoritmo Sequência de passos Conjunto de sequência de passos não-determinismo determinismo paralelismo paralelismo c/ sincronia Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  14. q11 q q1 q2 q3 q12 q13             A Máquina de Turing (cont.) - Modelo não-determinístico  Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  15. Medindo a eficiência de algoritmos - Escolha do modelo - Recursos: Tempo x Memória - Relacionando os algoritmos e os problemas que estes resolvem - Computação de Funções - Problemas de otimização - Problemas de decisão, - Linguagens - Classes de complexidade: Como defini-las ??? Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  16. Problemas de Decisão sim x  P ? x não 1 |x|  * Prog. 0 Problemas de Decisão  Linguagens Formais Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  17. Algumas Definições L  DTime(f) sss  m  TuringDet t.q. (m decide L) e c, x  Strings steps(m,x)  cf(|x|) L  DSpace(f) sss  m  TuringDet t.q. (m decide L) e c, x  Strings space(m,x)  cf(|x|) - Como medir espaço (memória) ??? - Qualquer tipo de função serve como parâmetro de medida ?? Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  18. Por que considerar classes assintóticas de funções ?? Teorema: (speedup linear) Se uma linguagem L é decidida em tempo f(n) então para qualquer  > 0 existe uma M. Turing M que decide L em tempo .f(n) + n + 2. Prova : Modificar o tamanho da “palavra” de memória Consequências do seedup: Se L é decidida em tempo f(n) = 165.nk + .... + 54.n + 657 então L é decidida em tempo f’(n) = nk Obs: O mesmo teorema ( e técnica de prova) vale para função de medida e uso de espaço (número máximo de células visitadas) Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  19. Propriedades : - Para qualquer função computável g existe uma função de tempo constru- tível f tal que g < f. - As funçoes polinomiais, exponencial e logaritmos (inteiros) são funções de tempo construtíveis Funções de tempo construtivas Fato: Existe f, tal que, DTime(f) = Dtime(2f) Def. f é uma funçao de tempo construtível, sss, existe uma máquina de Turing M tal que para todo n, M(1n) = 1f(n) e steps(M, 1n)  cf(n). Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  20. As funções step e space - space deve levar a entrada em consideração ? - step deve levar a leitura da entrada em consideração ? - O modelo (M.T.) tem alguma robustez com relação as medidas ? - O que acontece quando modifica-se o número de cabeças ? Fato: Se L é reconhecida em tempo O(f) em uma MT com mais de uma cabeça, então L é reconhecida em tempo O(f2) em uma MT com uma cabeça. - O que acontece quando modifica-se o número de fitas ? Fato: Se L é reconhecida em tempo O(f(|x|)) em uma MT com uma fita, então L é reconhecida em tempo O((1/2k)f(|x|)+ |x|) em uma MT com k fitas Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  21. Algumas propriedades e definições: Se f é de tempo construtível então : coDTime(f) = { L /  m  TuringDet t.q. (m decide Lc) e x  Strings steps(m,x)  O(f(|x|)) } Fato I: DTime(f) =coDTime(f) Fato II: Se n  f(n) e |L1L2| finito então L1  DTime(f) sss L1  DTime(f) Fato III: DTime(f) é construtivamente enumerável, i.e., existe uma MT T tal que T(i,x) = Ti(x) e DTime(f) = {Li / Ti decide Li }. Def. EXP =  DTime(2n ) Def. P =  DTime(ni) i iN iN Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  22. {A / A  B} ==> Seja B um conjunto, então |B| < |2B| Teorema de Cantor Prova: Suponha que |B| = |2B| então existe f: B 2B S = { x / x  f(x) } f-1(S)  S se e somente se f-1(S)  S Paradoxo do Barbeiro: Em uma cidade existe um barbeiro que faz a barba de todos os homens que não barbeiam a sí próprios e somente estes. Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  23. a0= 0, aoo ao1 ao2 ao3 ao4....... aon.............. a1= 0, a1o a11 a12 a13 a14....... a1n.............. 5 se ajj = 9 bj= 9 senão an= 0, ano an1 an2 an3 an4....... ann.............. O método da diagonal de Cantor suponha que |(0,1)| = |N| b = 0,b0 b1 b2 b3 b4....... bn......... |(0,1)|  |N| Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  24. Hierarquia própria de funções construtivas Paraf = { <T,x> / T(x) pára no máximo em f(|x|) passos} FatoI : Paraf DTime(f3) FatoII : Paraf DTime(f(x/2)) Prova: Diagonalização Corolário I : DTime(f(n))  DTime(f(2n+1)3) Corolário II : P  EXP Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  25. Def. NP =  NTime(ni ) iN Classes de Complexidade e algumas relações Def. PSpace =  DSpace(ni) Def. NPSpace =  NSpace(ni) iN iN Def. Log = Space(log) e NLog = NSpace(log) Log  NLog  P  NP  NSpace Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  26. - DSpace(f(n))  NSpace(f(n)) e DTime(f(n))  NTime(f(n)) - NTime(f(n))  DSpace(f(n)) - NSpace(f(n))  DTime(klog n + f(n)) (obs; Número de conf. + alcançabilidade) NSpace(f)  Space(f2) - Alcançabilidade  Space(log2) NSpace(f) = coNSpace(f) - número de nós alcançavel  Space(log) => Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  27. A Ciência da Computação Hoje : NP = P ? (Cook 1971) P : Encontra solução em tempo polinomial NP : Verifica solução em tempo polinomial CoNP : Verifica que não é solução, em tempo polinomial Taut  CoNP Sat  NP Verificação de Modelos Prova de Teoremas Obs: Se CoNP  NP então NP  P Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  28. Def. Seja C uma classe de problemas (linguagens). Diz-se que um problema (ling.) P é C-completo (a) se e somente se todo problema (ling) de C é redutível a P. Isto é resolver P é tão difícil quanto resolver qualquer outro problema em C. Exemplos: - Saber se um programa pára (via outro programa) é Rec-Completo, onde Rec é o conjunto dos problemas (ling) recursivos. - Saber se dado uma solução para um problema esta é verificável em tempo polinomial é tão difícil quanto decidir se uma sentença da lógica proposicional é “verdadeira”. Sat é NP-completa. Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  29. decidir se uma fórmula da lógica de predicados é Sat decidir se uma fórmula da lógica prop é Sat O(2n) decidir primalidade NP NPC ? decidir se 2 cláusulas de Horn prop são equiv. P decidir se uma 3CNF fórmula é Sat O(n3) O(n2) decidir se uma 2CNF é Sat O(n) decidir se uma cláusula de Horn prop é Sat Obs: Supondo P  NP

  30. Alguns Fatos Importantes : Fato 1: Existe um oráculo B tal que PB = NPB Prova: NPSPACE=PSPACE e B um problema NPSPACE completo Fato 2: Existe um oráculo C tal que PC NPC Prova: Diagonalização Discussão : Simulação e Diagonalização para provar P = NP ?? Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  31. Fato : Se PNP então NP-NPC  . Prova: Diagonalização Uniforme [Ladner 1975] Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  32. Lema: Sejam C1 e C2 duas classes de Linguagens, tais que : 1- C1 e C2 são construtivamente enumeráveis 2- C1 e C2 são fechadas para variação finita 3-Existe L1 C1 e L2  C2 nestas condições existe L, tal que: L  C1  C2 e L  L1  L2 Prova: Diagonalização Teorema: Se PNP, então Sat  P e   NPC então existe L  P  NPC Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  33. A representação influencia a complexidade de um problema ?? Alfabetos ?? Teorema: Se alguma linguagem unária for NP-completa então P=NP. Prova : Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  34. Hierarquia de Kleene Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  35. Hierarquia Polinomial Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  36. Circuitos Booleanos 5 2                1 3       4 => Dígrafos acíclicos com nós AND, OR, NOT, nós iniciais (sem arco entrante) e um e somente um nó terminal (sem saída). Exemplo: Circuito para computar alcançabilidade em grafos. Entrada = <Grafo, <1,n>> Gij = matriz de adjacências de um dígrafo direto 12345 101001 200010 310000 400000 510000 01001 00010 10000 00000 10000 pass. por 1. pass. por 1 ou direto. pass. por 2 (poss. por 1 tb) pass. por 2,1 ou direto. pass. por 5,4,3, 2,1 ou direto. Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  37. Famílias de Circuitos Booleanos Def. L é decidida por uma família (Ci)iN, sss, para todo string s, com |s| = n, Cn aceita s se e somente se s  L. Questão : O tamanho de um circuito tem a ver com a complexidade (em MT) do problema de decisão associado ??? Resp. : Prox. Slides Obs: => Alcançabilidade tem circuitos de tamanho O(n3) e profundidade O(n) Conjectura: Todo problema de decisão com famílias de circuitos de tamanho polinomial é um problema que está em P ?? Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  38. Resp: NÃO => Problemas indecidíveis tem famílias polinomiais de circuitos booleanos Exemplo: Seja D  {1}* uma linguagem indecidível. e seja (Ai)iN a família de circuitos tal que - se 1k D então Ak é o circuito só com portas AND e k fontes - se 1k D então Ak é o circuito com só portas AND e uma NOT ao final. Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  39. Famílias Uniformes de Circuitos Booleanos (klog(n) = n) Fato: NLSpace  P Def. Uma família (Ci)iN de circuitos booleanos é uniforme, sss, existe uma MT (não determinística) que para entrada 1n gera o circuito Cn usando log(n) células da fita. ==> Alcançabilidade possui família uniforme de circuitos booleanos - Dado n, existe uma MT para gerar Cn usando somente log(n) de espaço na fita de trabalho. ==> Gerar todos os circuitos de profundidade n com n2 nós fontes e verificar se a forma é a requerida. Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  40. Nova Conjectura: P = Linguagens aceitas por famílias uniformes de Circuitos booleanos de tamanho polinomial ?? Desta vez SIM. Prova: Construção usada na prova que SAT é NP-completo e definição de família uniforme de Circuitos de tamanho polinomial. () Trivial () Seja L P, então existe uma MT det. M que decide L em tempo nk. Seja w  L, tal que |w|=n. Da tabela de computação de M constrói-se um circuito Cn. Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  41. q01 2 n-1 n   .... sn1 s12...... snm at1 a12...... apm s11 s12...... s1m a11 a12...... a1m a21 a22...... a2m s21 s22...... s2m s(n-1)1 s(n-1)2...... s(n-1)m a(p-1)1 a(p-1)2...... a(p-1)m x x-1 x x+1 tempo t tempo t+1 x ad1 ad2...... adm ’1 ’2 ’p-1 ’p   .... qj’2 b11 b12...... b1m b21 b22...... b2m E I T A   .... A C Tabela de computação de M para a entrada w |w|=n nk Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  42. Observações: 1- O tamanho do circuito Pad só depende de M. Se  = Est(M)  Alfa(M) {,} e c = || então |Pad| = 3.c 2- w  L, se e somente se, o circuito tem valor “true” quando “alimentado” com cod(w). 3- O construção de um circuito C|w| é feita a partir de M e |w| usando espaço de ordem log(|w|) na fita. Algoritmo imprime na fita de saída as diversas cópias de Pad (tamanho independente da entrada), com as respectivas junções de e/s que usam espaço de ordem log(|w|) . Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  43. Proposição: Toda linguagem em P possui família uniforme de circuitos booleanos de tamanho polinomial. Corolário: SE existe L NP é tal que toda família uniforme de circuitos que decide L não tem tamanho limitada por nenhum polinômio ENTÃO PNP Um caminho para provar PNP : ==> Provar que algum problema NP-completo possui cota inferior superpolinomial Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  44. Circuitos x Circuitos monotônicos - Circuitos monotônicos são aqueles construídos sem o uso da porta NOT. Def. Uma função booleana f é monotônica, se e somente se, se a b então f(x1,...,a,...,xn)  f(x1,...,b,...,xn). Obs I: Todo circuito monotônico computa uma função monotônica Obs II: O circuito utilizado na demonstração da conjectura é monotônico, ou seja, o problema (P-completo) de avaliar um circuito é redutível via circuitos monotônicos. (Expressividade !!!!!) Exemplos: - Alcançabilidade, circuito hamiltoniano e clique são monotônicos, - Mochila e cobertura euleriana não são monotônicos Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  45. vi vi vi vi k k 1 1   ...    ...    ...    ...    ...  ik ik ik i1 i1 i1  Circuitos ingênuos monotônicos para computar CLIQUEn,k 2 n-1 n 1 1 1 1 1 n n n n 100101010 100101010 100101010 100101010 1 1 1 n n n vi 100101010 100101010 100101010 j S = { ,....., } Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  46. n n ( ) ( ) k k Circuitos “ingênuos” monotônicos para computar CLIQUEn,k 2 n-1 n 1 1 1 1 1 n n n n 100101010 100101010 100101010 100101010 S1 Sj S OR Tamanho = k2 Def. CC(S1, ..., Sm) é o circuito ingênuo construído a partir dos conjuntos S1, ..., Sm de vértices 2n Obs: 2n < ( ) n Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  47. Teorema do Razborov Teorema: Circuitos monotônicos para CLIQUEn,k , quando k = 4n, tem cota inferior : Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  48. Esquema: 1 - Considerar um circuito monotônico qualquer C => Considerar tipos particulares de exemplos negativos e positivos para teste de clique (exemplos em quantidade exponencial) 2- Aproximar C via um circuito ingênuo CC(S1, ..., Sm) introduzindo um número pequeno (poli) de falsos positivos e de falsos negativos. 3- Cada aproximação é executada sobre uma porta (gate) do circuito. 4- Demonstra-se que o circuito ingênuo resultante da aplicação de “3” a todas as portas de C tem uma quantidade exponencial de falsos positivos e de falsos negativos. 5- Concluí-se que C só pode ter uma quantidade exponencial de portas. Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  49. Exemplos positivos e exemplos negativos Exemplo positivo: - Um grafo simples com n vértices contendo um subgrafo completo de tamanho k n k => Existem ( ) exemplos positivos. Exemplo negativo: - Um grafo com n? vértices e (k-1) colorável => Existem (k-1)n exemplos negativos Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

  50. Zi  Zj Zk  Zv = Resultado de combinatória importante para o teorema Lema de Erdös-Rado: Seja F uma família de com mais que M=(p-1)L.L! conjuntos, todos não vazios e todos com cardinalidade máxima L. Então F contêm um “girassol”. Z>M Z1 Z2 = Núcleo Z3 Zj Prova: Por indução em L Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler

More Related