800 likes | 970 Views
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.
E N D
Complexidade Computacional, Lógica e Teoria da Prova Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler
|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
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
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
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
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
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
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
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
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 FC1 C2... Cn tal que para todo nN (F:n: :m:) f(n) = m) Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler
’ 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
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
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
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
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
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
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
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
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
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
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 |L1L2| 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 iN iN Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler
{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
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
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
Def. NP = NTime(ni ) iN Classes de Complexidade e algumas relações Def. PSpace = DSpace(ni) Def. NPSpace = NSpace(ni) iN iN Def. Log = Space(log) e NLog = NSpace(log) Log NLog P NP NSpace Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler
- 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
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
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
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
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
Fato : Se PNP então NP-NPC . Prova: Diagonalização Uniforme [Ladner 1975] Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler
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 PNP, então Sat P e NPC então existe L P NPC Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler
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
Hierarquia de Kleene Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler
Hierarquia Polinomial Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler
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
Famílias de Circuitos Booleanos Def. L é decidida por uma família (Ci)iN, 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
Resp: NÃO => Problemas indecidíveis tem famílias polinomiais de circuitos booleanos Exemplo: Seja D {1}* uma linguagem indecidível. e seja (Ai)iN 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
Famílias Uniformes de Circuitos Booleanos (klog(n) = n) Fato: NLSpace P Def. Uma família (Ci)iN 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
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
q01 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
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
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 PNP Um caminho para provar PNP : ==> Provar que algum problema NP-completo possui cota inferior superpolinomial Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler
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
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
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
Teorema do Razborov Teorema: Circuitos monotônicos para CLIQUEn,k , quando k = 4n, tem cota inferior : Topicos em Teoria de Complexidade Prof. Edward Hermann Haeusler
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
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
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