520 likes | 664 Views
Edward Hermann Haeusler Prof. do Departamento de Informática PUC/RJ. Teoria da Computação e Fundamentação da Matemática : Um pouco de história. 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.
E N D
Edward Hermann Haeusler Prof. do Departamento de Informática PUC/RJ Teoria da Computação e Fundamentação da Matemática : Um pouco de história
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
Máquina de Raciocinar (Leibniz 1667) Máquina de Calcular de Pascal (Pascal sec.XVII) Antes de 1900 d.c ====> Máquina de Babbage (Ch. Babbage sec. XIX) Computável Toda tarefa que pode ser realizada por um ser burro com um mínimo de conhecimento/capacidade. burro = Incapaz de Aprender conhecimento = ? . .
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.
Necessidade de teoria mais abrangente e abstrata Panorama da Matemática no Século XIX - Problemas da Física Matemática (Sec. XVIII-XIX): - Equação da Onda - Equação do Calor - Equação de Poisson - Técnicas de Fourier - Séries Infinitas são usadas na solução de Eq. Dif. Parciais - Problemas de Fundamentação: - Séries divergentes x Séries Convergentes - Conceito de infinito não era preciso - Conceito de função não era preciso - O próprio conceito de número real não era preciso. - Definição de convergência não existia
Panorama da Matemática no Século XIX (cont.) Dedekind (1831-1916) Estabelece o princípio de indução e define conceito de número real Aritmetização da Análise, definição dos conceitos de limite, funções e funções contínuas, convergência de sequências e séries infinitas Cauchy (1789-1857) Bolzano(1781-1848) Definição do conceito de integral e Teorema Fundamental do Cálculo. Geometrias Não-Euclidianas Riemman(1826-1866) Peano (em 1889) Define os axiomas da aritmética Weierstrass (1815-1897) Estabelece critérios para a diferenciação e integração, termo a termo, de séries infinitas Hilbert (em 1898-1899) Estabelece a fundamentação da geometria
Os paradoxos: - Burali-Forti (1897) “Não há o ordinal de todos os ordinais” - Russell (1902) “Não há o conjunto de todos os conjuntos” Teoria Ingênua dos Conjuntos Bolzano concebe a noção (abstrata) de conjuntos (finitos e infinitos) Cantor (de 1867 a 1871) define a teoria de conjuntos e prova a existência de conjuntos infinitos com cardinalidades diferentes. Conceitos de números cardinais e ordinais transfinitos. Resistência aos principais resultados em função do “receio do infinito” R R se e somente se R R R = { x / x x} ==>
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
As 3 Abordagens para a Fundamentação da Matemática Logicismo (Frege) - Toda a Matemática é consequência de princípios puramente lógicos. Formalismo (Hilbert) - A Matemática é fundamentada por sistemas formais cujo único requisito é a consistência Intuicionismo (Brouwer) - A Matemática é uma atividade humana funda- mentada em processos construtivos, sendo assim todo objeto matemático tem sua existência expressa por construção.
O Programa de Hilbert => Obtenção de uma prova da consistência da matemática, observando-se que: - As teorias mais complexas são extensões das mais simples. Th(N) Th(Z) Th(Q) Th(R) Th(C) - Tais extensões são, na sua maior parte, obtidas por operações básicas (classes de equivalência, completamento por simetria, por compactação, completamento algébrico, etc) => Prova da consistência da Aritmética ( Th(N)) com o uso de técnicas finitárias. => Provar que não existe prova de 0 = 1 usando ............
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.
Paradoxo do mentiroso: “Eu estou mentindo” Lema da diagonal (Gödel/Tarski): ( Th(N) T) x1 é a única variável livre em e (t) indica sua substituição por t T |- diagx1(#,#()) se e somente se Seja (x1) uma fórmula com somente x1 livre, então existe tal que T |- (#) Teorema de Gödel: Qualquer axiomatização de Th(N) onde seja possível aritmetizar o conceito de prova é incompleta. Prova: Seja Th(N) e uma fórmula Pr(x,y) tal que |- Pr(#, # ) se e somente se é uma prova com axiomas de . Aplique o lema da diagonal a p Pr(p,x1) Os Teoremas de Gödel Pr Teorema de Tarksi: Não existe uma fórmula Verd(x1) em T capaz de definir a verdade aritmética, isto é, T |- Verd(#) se e somente se é verdadeira na aritmética. Segundo Teorema de Gödel: Seja uma axiomatização como acima, então a fórmula p Pr(p,#(0=1)) não é demonstrável a partir de
Codificando Pr em uma definição recursiva Prova Axiomas formada por Premissas conclusão Regras de Inferência são formada por Sentenças conectivos/ Átomos quantificadores Sentenças Compostas
Leitura computacional do teorema de Gödel · Todas as funções computáveis são representáveis em [N, <, 0, suc, +, *]. · Toda computação pode ser expressa em forma de Dedução a partir de um conjunto de axiomas (GA) que defina as operações aritméticas básicas. Þ Gödel define o conceito de função primitivamente recursiva e relaciona com aquelas que são representáveis em aritmética.
· G Í Th( [N, <, 0, suc, +, *]) · diag é computável. · Como GA é r.c. então Ded é computável Þ Ded é representável em Cn(GA). Qualquer axiomatização r.c. GA para [N, <, 0, suc, +, * ] é incompleta, i.e, Cn(G) é incompleta. Þ ß Existem funções não computáveis
Seja T = fórmulas válidas T ser r.c Cn(T È G) é r.c. fórmula b repr. f em Cn(TÈ GA) função f computável que reconhece Cn(TÈ G) Diag. sobre ~b a « ~b(#a) Î Cn(TÈ GA) Contradição
A Computação do ponto de vista das funções prim. 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.
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)
A Tese de Church é um enunciado científico, portanto não possui demonstração matemática. Evidência Forte para a Tese de Church Teorema de Rogers (1958): Sejam duas FAA’s (i)iN e (i)iN então existe f recursiva tal que i = f(i) Obs: Uma FAA é um conjunto de funções parciais (i)iN, tal que: 1- As funções parc. recursivas estão todas em (i)iN 2- Existe u N com u parc. recursiva tal que para todo i e x u(i,x) = i(x) 3- Existe c recursiva tal que c(i,j) = i j
A Tecnologia e a Construção do Computador 1890-1900: Hollerith cria o cartão perfurado e o utiliza na sua máquina eletromecânica de processamento de dados (Censo de 1890). Criação da perfuradora de cartões (usada até fins dos anos 70 do século XX). 1900-1919: Invenção do diodo a vácuo (rádio-com)- Flemming, Invenção do tríodo (válvula eletrônica)- De Forest, Invenção do CRT- Swinton, descoberta da supercondutividade- Onnes, descoberta da semicondutividade (germânio) -Benedicts, invenção do FLIP-FLOP (unid. armazenamento de 1 bit)- Jordan 1925 : Primeiro computador analógico é construído para resolver equações dif. Bush 1931 : Konrad Zuse constrói a primeira calculadora elétrica digital Z1. 1937 : Claude Shannon aplica lógica booleana a circuitos de chaveamento. Primeiro somador em base binária (Dissert. Mestrado em matemática). G. Stibitz desenvolve o somador usando relés elétricos (na Bell Labs). 1937 : Zuse define o circuito para o teste de igualdade entre números binários. 1938 : Zuse constrói a Z2 que refina a Z1 com aritmética binária em relés. É o primeiro computador eletromecânico
Não Armazenam Programas 1941 : Primeiro computador eletrônico (não-programável) , o ABC, Clifford & Berry 1941 : Zuse desenvolve o Z3, primeira máquina controlada por programa. Memória de 64 palavras e 3 sec por multiplicação. 1942 : John Mauchly introduz a válvula eletrônica como substituta do relé. 1942 : Computador Britânico Collossus (quebra do código alemão ??) 1943 : Computador Mark I na IBM 1943 : ENIAC (Eletronic Numeric Integrator and Computer) (30 ton e 18000 válvulas). 1944 : Visita de John von Neuman às instalações do ENIAC. Após esta visita é iniciado o projeto do EDVAC (computador com programa armazenado). 1945 : Um inseto (bug) nos contatos de um relé do Mark II é descoberto ser a causa de seu mal funcionamento.
1947 : Invenção do Transistor (Bardeen, Brattain & Schokcley). 1947 : Início da construção do EDSAC em Cambridge. 1948 : Introduzido o uso de disco magnético como memória secundária. 1948 : Mark I passa a ser o primeiro computador digital com armazenamento de programas. Limitado porém. 1949 : Primeiro computador pleno com armazenamento de programas (EDSAC) 1950 : Zuse instala o Z4 na universidade de Zurique. 1951 : Primeiro UNIVAC é vendido ao departamento de demografia americano. Pesava cerca de 20 tons e realizava 1000 operações por segundo. 1951 : Primeiro computador americano com arm. de programa EDVAC finalizado e operacional (Univ. Pensilvânia). O conceito de microprogramação é introd. 1954 : UNIVAC equipado com memória de núcleo de ferrite. Em 1955 UNIVAC com transistores no lugar das válvulas.
1956 : FORTRAN é desenvolvido por J. Backus na IBM. 1957 é o ano do primeiro compilador comercial da linguagem. 1958 : John McCarthy desenvolve LISP. ALGOL 58 é desenvolvido pela equipe de Backus. 1959 : Desenvolvimento de FLIP-FLOP em circuitos integrados. 1959 : PDP-1 desenvolvido pela Digital. 4k de RAM, palavras de 18 bits, fita de papel e CRT. 1960-1962 : Desenvolvido o princípio de comunicação por pacotes de dados, P. Baran. 1960 : COBOL é distribuído para instalações comerciais. Consórcio Americano- Europeu especifica o padrão ALGOL 60. 1963 : Programa ELIZA escrito por J. Weinzenbaum (MIT). 1961 : Conceito de “time-sharing”, multiusuário e multiprogramação são introd. 1960-1964 : Computadores IBM pós série 700: s. 1400, 7090, projeto do System/360 1964 : Linguagem BASIC (Beginners All Purpose Language), PL/I (IBM)
1964-1965 : PDP-8 (Digital) é o primeiro mini-computador. 1965 : Projeto Multics (MIT). Linguagem APL (IBM). 1967 : SIMULA-67, primeira linguagem orientada a objeto (Nyygard) 1967 : Primeiro artigo sobre uma rede integrada de computadores (Arpanet) 1967 : Desenvolvimento de PASCAL (N. Wirth). 1968 : Programação Estruturada (goto’s are out) , Dijkstra. 1968 : Primeiro computador feito somente com circuitos integrados (B2500 e B3500) 1969 : Primeira rede não local operacional UCLA, UC Santa Barbara, SRI, U. Utah. 1969 : Padrão RS-232 de comunicação com periféricos. 1970 : UNIX. Linguagem C em 1967. 1971 : Primeiro microprocessador 4004 (4 bits), F. Fagin (Intel). 8008 (1972)
Duas exceções e outros desenvolvimentos: 1970 : Codd define o modelo relacional e sua álgebra, enquadrando BD em uma abordagem com fundamentação matemática e formal. 1960-1970 : Desenvolvimento da teoria de linguagens formais (Chomsky) coloca a área de implementação de linguagens de programação em bases mat. e formais (YACC e etc). 1978- : Uso de álgebra e lógica em modelos de concorrência e de desenvolvimento de software. Introdução do conceito de prova de correção de programa, validação de modelos, etc....... E a história se repete........................ 1968 : Conferência Internacional (NATO conf. on Prog) discute a crise do software e cunha o termo “Engenharia de Software”.
A Ciência da Computação Hoje : NP = P ? (Cook 1970) 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
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.
Como SAT é NP-Completo então Taut é CoNP-Completo ===> Se existe um sistema dedutivo onde todas as provas tem tamanho polinomial em função do tamanho da conclusão, então CoNP = NP. Senão existe tal sistema então CoNP NP e portanto NP P. ===> P = NP é um problema genuinamente matemático. ===> P = NP é um problema genuinamente de ciência da computação. ===> P = NP é um problema genuinamente de fundamentação e lógica. - Já se tentou técnicas de construção de modelos via “forcing” (funcionou com a hipótese generalizada do continum) mas a crença geral é que não funciona. - Técnicas de diagonalização e relativização (tradição lógico-matemática) tem sido extensivamente usadas no estudo de questões relacionadas a NP=P.
conjectura-se que isograph está em NPI Alguns Fatos Importantes : Fato 1: Se PNP então NP-NPC . Prova: Diagonalização Fato 2: Existe um oráculo B tal que PB = NPB Prova: NPSPACE=PSPACE e B um problema NPSPACE completo Fato 3: Existe um oráculo C tal que PC NPC Prova: Diagonalização
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 Prova: Diagonalização Teorema: Se PNP, então Sat P e NPC então existe L P NPC
Teorema do Razborov (1985-1989) Fato: Se L P então existe uma família de circuitos booleanos (Cn)nN e um polinômio p(x) tal que Ln é aceita por Cn e | Cn | p(n). Corolário: Se existe L tal que toda família de circuitos para Ln não é limitada por polinômio então NP P. Teorema (Razborov): Circuitos monotônicos para CLIQUEn,k quando k = 4n tem cota inferior : Indício de que NP P Obs: A prova do teorema de Razborov usa a técnica de ultraprodutos introduzida em 1938 por Lós para provar a compacidade da lógica de primeira ordem
Lembretes: Computação (Matemática/Lógica) Computação Tecnologia não é a essência da Ciência da Computação Engenharia = Conjunto de Técnicas Ciência
O que são técnicas finitárias ??? (visão a posteriori) - Operações efetivas sobre objetos concretos Objetos concretos: |, ||, |||, ||||, ||||||, .... , , , , ........ Operações efetivas: ???????? juntar símbolos apagar símbolos escrever símbolos reconhecer um símbolo
Consistência Def. Uma Teoria é consistente se não sustenta fatos falsos. Def. Uma Teoria é consistente se não prova fatos falsos. Def. Uma Teoria é consistente se não prova todos os fatos. Def. Uma Teoria é consistente se não prova algum absurdo.
Equação da onda u ut(x,0)= g(x) e u(x,0)= f(x) u(x,t) = F(x+ct)+G(x-ct) D’Alembert 1747 + Euler 1748 Daniel Bernouli 1753 x t u(x,t) = 2 0 (sinnysinnxcosnct)f(y)dy + 2 0 (1/n) (sinnysinnxsinnct)g(y)dy Lagrange 1759
Equação do calor u(0,t) = u(L,t) = 0 u(x,0) = f(x) L Fourier 1811 2 2 2 u(x,t) = cne-n Kt/L sin(nx/L) ==> Toda “função” tem expansão em série de senos ????? n=1 f(x) = cnsin(nx/L) Dirichlet (1829,1837) + Fund. Análise (Bolzano, Cauchy, Weierstrass) + Riemann (def. integral, 1900’s) n=1 L cn= (2/L) f(x) sin(nx/L)dx 0
C x + 3 = 9 1 + aC = C x = 6 C(1-a) = 1 C = 1/(1-a) Resolvendo equações Manipulação com séries infinitas (I) :
Diferenciação de uma série (termo a termo) dx Integração de uma série (termo a termo)
Geometrias Não-Euclidianas Hiperbólica Bolyai-Lobachevsky 1820 Plana Euclides 400’s Elíptica Riemman 1800’s Axiomas de Euclides 1. Para cada par de pontos P1 e P2 com P1 P2 existe uma única reta que incide em ambos. 2. Para todos segmentos AB e CD existe um ponto E t.q. E está entre A e B e CDBE 3. Para todo par de pontos O e A com O A existe um única circ. com centro O e raio OA 4. Todos os ângulos retos são congruentes 5. Dados uma reta R e um ponto A fora desta, existe uma única R’ paralela e R e incidente em A.
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|
{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.
T |- (#) Seja t = #(x2(diagx1(x1,x2) (x2))) então será x2(diagx1(t,x2) (x2))) x2(substx1(t,x2) (x2))) (diagx1(t, #) (#)) T |- (#) T |- diagx1(t, #) (#) T |- (x2) diagx1(t,x2) T |- x2= # diagx1(t,x2) (x2) T |- T |- diagx1(t, #) x2 (diagx1(t,x2) (x2)) T |-
Não provabilidade da consistência em Cn(G) · a « ~Pr(#a) Î Cn(G) [Diag] · se a Î Cn(G) então Provavel(#a) Î Cn(G) Þ Cn(G) é inconsistente. Þ se Cn(G) é consistente então a Ï Cn(G). ~Provavel(#a) Î Cn(G) ~Provavel(#(0=1)) Î Cn(G) a Î Cn(G) Þ Portanto se ~Provavel(#(0=1)) Î Cn(G) então Cn(G) é inconsistente
C = n(v) n N -1 -1(v) Paradoxos associados ao Axioma da Escolha S = Rotação de 1/10 de radiano v S C -1(S C) S C -1(v) =