Teoria Da Computação: Uma Introdução À Complexidade e À Lógica Computacional
Teoria Da Computação: Uma Introdução À Complexidade e À Lógica Computacional
Teoria Da Computação: Uma Introdução À Complexidade e À Lógica Computacional
3
Teoria da Computação: Uma Introdução à Com-
plexidade e à Lógica Computacional
Abstract
Computing theory is an abstract and mathematical research area, motivated by the chal-
lenges of computer science practice. Perhaps the main objective of theoretical computer
science is to explore and understand the nature of computing, contributing to development
of efficient and effective methodologies. This course introduces the basics of two funda-
mental subareas of theoretical computer science: computational complexity and compu-
tational logic. Such areas have significantly contributed to the development of computer
science, not only from a foundational, but also from an applied perspective.
Resumo
Imagine que uma campanha de vacinação no estado do Rio de Janeiro precisa visitar cada
uma das capitais dos seus 50 municípios. Por restrições de custo, a equipe responsável,
saindo da cidade do Rio de Janeiro, precisa visitar cada uma das outras 49 cidades e retor-
nar à cidade de partida, realizando um circuito que usa as rodovias do estado e que visita
cada capital de município exatamente uma vez. Será que tal circuito pode ser realizado
no estado do Rio de Janeiro? Este circuito corresponde ao problema do Ciclo Hamiltoni-
ano, formulado por William Hamilton em 1856, e conhecido também como o problema
do Caixeiro Viajante. Uma condição suficiente para que tal circuito do vacinador exista
é que cada cidade tenha muitas rodovias do estado que passem por ela mas esta condição
não é necessária. Uma condição necessária é a inexistência de cidade gargalo, isto é, uma
cidade tal que todas as rotas que conectam outras duas cidades usando rodovias do estado
precisam passar por esta cidade gargalo mas esta condição não é suficiente. No estado do
Rio de Janeiro, o município de Cabo Frio é um gargalo que isola o município de Búzios
e impossibilita um circuito do vacinador. O município de Angra é outro gargalo e isola o
município de Paraty.
Imagine agora que, ao invés de um vacinador que saindo da cidade sede da cam-
panha visita num circuito um conjunto de cidades passando por cada cidade visitada uma
única vez e retornando à cidade de partida, você considera uma campanha para recuperar
a pavimentação das rodovias do estado. Por restrições de custo, a equipe responsável,
saindo da cidade sede da campanha, realiza um circuito que percorre cada rodovia exata-
mente uma vez e retorna à cidade sede de partida. Será que tal circuito pode ser realizado
no estado do Rio de Janeiro? Observe que o circuito do vacinador visita cada cidade
do estado exatamente uma vez enquanto que o circuito do pavimentador percorre cada
rodovia do estado exatamente uma vez. Possivelmente o vacinador deixa de percorrer
alguma rodovia do estado enquanto que possivelmente o pavimentador visita uma cidade
do estado mais de uma vez. O circuito do vacinador corresponde a uma permutação do
conjunto das cidades do estado enquanto que o circuito do pavimentador corresponde a
uma permutação do conjunto das rodovias do estado. Ambos problemas buscam a so-
lução, o circuito desejado, num espaço com um número enorme de circuitos viáveis, da
ordem de 50! circuitos, onde consideramos todas as possíveis permutações. É impraticá-
vel resolver o problema através de um algoritmo de força bruta que testa cada uma das
permutações candidatas. Buscamos uma propriedade matemática do problema que reduza
drasticamente este espaço exponencial de busca. Leonhard Euler resolveu definitivamente
o problema do pavimentador ao publicar em 1736 o que consideramos o primeiro artigo
científico da área de Teoria dos Grafos. Neste artigo, foi apresentada uma propriedade
que caracteriza, uma propriedade que é ao mesmo tempo necessária e suficiente, para a
existência de tal circuito do pavimentador: o número de rodovias que passam por cada
cidade é par. Euler reduziu drasticamente o espaço exponencial de busca constituído de
todas as possíveis permutações das rodovias. A poderosa condição de Euler fornece a
solução após a fácil verificação dos graus das cidades.
Em Matemática e em Computação, a Teoria dos Grafos é a área que estuda es-
truturas matemáticas que modelam relações binárias entre objetos de um conjunto. Um
grafo é definido por um conjunto de objetos chamados vértices e um conjunto de ares-
tas que ligam pares de vértices. Euler em 1736 modelou o problema do pavimentador
através de um problema em Teoria dos Grafos: cada cidade corresponde a um vértice e
cada rodovia entre duas cidades é representada por uma aresta que liga os dois vértices
correspondentes. No estado do Rio de Janeiro temos 50 cidades capitais de municípios
correspondendo a 50 vértices e temos rodovias que correspondem às arestas conectando
estes vértices. A cidade capital de Itaguaí tem 7 rodovias que passam por ela, e corres-
ponde a um vértice de grau ímpar no grafo das cidades capitais e rodovias do estado, o
que segundo o Teorema de Euler impossibilita a existência de um circuito do pavimenta-
dor no estado. Por outro lado, caso encontremos um outro estado onde todas as cidades
tenham grau par, esta condição fácil e poderosa de Euler garante que tal estado admite um
circuito do pavimentador.
Para o problema do pavimentador, podemos decidir se o circuito existe ou não
através da condição simples encontrada por Euler: basta conferir a paridade de cada ci-
dade. Para o problema do vacinador, temos algumas condições apenas necessárias, temos
outras condições apenas suficientes, mas ainda não temos uma condição que caracterize e
resolva o problema, e não sabemos se tal condição existe! Para o problema do vacinador,
hoje nos resignamos a buscar a resposta examinando o enorme espaço exponencial de
busca constituído de todas as possíveis permutações das cidades!
Por outro lado, caso alguém persistente ou com muita sorte apresente um circuito
do vacinador, um circuito que visita cada cidade exatamente uma vez, é fácil verificar que
este circuito satisfaz a restrição: basta conferir que cada cidade é visitada uma vez e que
cidades consecutivas no circuito são de fato conectadas por uma rodovia.
Será que o problema do vacinador é mais difícil que o problema do pavimentador?
Será que existem problemas cuja solução pode ser verificada facilmente mas cuja solução
não pode ser encontrada facilmente? Este é o desafio central para a Teoria da Computação.
Problemas P, NP e NP-completo
Vejamos novo exemplo. Considere uma turma em um colégio, digamos com 40 alunos,
cada qual com certo número de amigos dentro da turma. O problema do Emparelha-
mento procura dividir aqueles alunos em 20 pares, cada par formado por alunos que se-
jam amigos. Note que o número de conjuntos contendo 20 pares de alunos quaisquer,
não necessariamente amigos, é igual a 40!/(20!220 ), aproximadamente 278 , ou 3, 2 × 1023 ,
um número de 24 algarismos! Segundo essa estimativa, temos algo como 3 mil vezes
mais maneiras distintas de dividir nossa turma em 20 pares de alunos do que grãos de
areia no mundo. O problema do emparelhamento é um problema fundamental na área
de complexidade computacional. É um problema cuja solução sugeriu a definição formal
adotada para computação eficiente. Um algoritmo é eficiente se a sua execução consome
um número de passos que cresce como um polinômio no tamanho dos dados da entrada.
O problema do emparelhamento admite algoritmo que o resolve em n3 passos, para uma
turma de n alunos. Para n igual a 40, observe a drástica redução do exponencial 278 , muito
maior que 240 , para o polinomial 403 , que dá um número de passos, ou operações básicas,
próximo a 64 mil. Usamos o conceito de polinomial como sinônimo de tratável, viável,
eficiente, em contraste com exponencial, sinônimo de inviável.
Considere algumas variações do problema do emparelhamento: o problema de se
dividir a turma em grupos contendo 3 amigos mútuos em cada grupo; o problema de se
dividir a turma em 3 grupos contendo apenas amigos mútuos em cada grupo; problema de
organizar os alunos numa única mesa redonda de forma que apenas amigos sentem-se lado
a lado (aqui reencontramos disfarçado o problema do vacinador, na turma de 40 alunos,
existem 40! alocações possíveis numa mesa redonda); No caso de cada uma das variações
do problema, ainda não conhecemos algoritmo que executa um número polinomial de
passos. Cada uma das variações do problema define um problema matemático desafiador,
tema de pesquisa avançada na área da Matemática chamada Combinatória. O desafio é
encontrar alguma propriedade que corresponda a um atalho polinomial para buscar ra-
pidamente no espaço exponencial das possíveis soluções. Estes problemas desafiadores
compartilham uma propriedade: dada uma candidata a solução — um emparelhamento
em grupos de três alunos compatíveis, uma alocação numa única mesa redonda, uma par-
tição em três grupos de alunos compatíveis — podemos aprovar a candidata através de
um algoritmo.
A questão central para Computação é: quão eficientemente um problema pode ser
resolvido através de um algoritmo? Do ponto de vista computacional, distinguimos pro-
blemas fáceis e difíceis usando o conceito de algoritmo polinomial. Consideramos fáceis
os problemas que podem ser resolvidos através de um algoritmo cujo número de passos
cresce com uma potência fixa do número de símbolos usados para especificar a entrada
do problema. Por outro lado, consideramos difíceis os problemas para os quais qualquer
possível algoritmo consome um número extremamente grande de passos até retornar a
resposta. Muitos problemas candidatos a problemas difícies compartilham a propriedade:
encontrar a solução parece difícil mas verificar a solução é fácil. A intuição diz que en-
contrar a solução tem que ser mais difícil do que simplesmente verificar a solução mas
nem sempre a intuição é um bom guia para a verdade. Para estes problemas candidatos a
problemas difíceis, não conhecemos ainda algoritmos polinomiais e não sabemos provar
a inexistência de algoritmo polinomial. A Teoria da Complexidade Computacional consi-
dera estes problemas desafiadores, estes problemas que resistem à classificação em fácil
ou difícil, como o problema do vacinador, dentro de uma única classe contendo problemas
igualmente difíceis, igualmente desafiadores.
Em Teoria da Computação, chamamos de P a classe dos problemas que podem
ser resolvidos através de um algoritmo polinomial, um algoritmo cujo número de passos
seja uma potência fixa no tamanho dos dados do problema. E chamamos de NP a classe
dos problemas onde toda candidata a solução pode ser aprovada ou rejeitada em tempo
polinomial. A condição de verificar parece bem menos restritiva que a de encontrar a
solução. A igualdade P = NP significaria que todo problema que tem solução que pode ser
verificada rapidamente tem também solução que pode ser encontrada rapidamente. Para
estudar a possível igualdade P = NP, os pesquisadores definiram o conjunto dos problemas
igualmente difíceis entre si, e pelo menos tão difíceis quanto qualquer problema em NP.
São os chamados problemas NP-completo. O problema do vacinador é um problema
NP-completo. Caso alguém consiga um algoritmo de tempo polinomial para resolver o
problema do vacinador, terá na verdade revolvido um problema que vale 1 milhão de
dólares porque terá provado que P = NP.
Um grafo é perfeito quando todo subgrafo induzido admite uma coloração própria de
seus vértices (i.e., vértices adjacentes têm cores diferentes) que usa o mesmo número de
cores que o número de vértices de uma de suas cliques (um conjunto de vértices mutua-
mente adjacentes). Os grafos perfeitos definem um rico tópico de pesquisa que pode ser
visto como a interseção de três áreas: Teoria dos Grafos, Complexidade Computacional e
Otimização Combinatória.
Claude Berge [5] introduziu a classe dos grafos perfeitos no início dos anos 1960,
como uma classe de grafos interessante sob três aspectos, cada um com um problema
aberto desafiador: uma classe definida a partir dos problemas de otimização combinatória
NP-difíceis coloração mínima e clique máxima; uma classe cujo problema de reconhe-
cimento (i.e., decidir se um dado grafo é perfeito) não se sabia sequer classificar como
em NP; uma classe que sugeria uma caracterização por uma família auto-complementar
infinita de subgrafos induzidos proibidos. Grötschel, Lovász e Schrijver [24] apresen-
taram em 1979 um algoritmo polinomial para a coloração mínima dos grafos perfeitos
usando o método do elipsóide para programação linear, e deixaram em aberto o problema
de encontrar um algoritmo polinomial de natureza puramente combinatória para colorir
otimamente os grafos perfeitos. Johnson em 1981 na sua coluna The NP-completeness –
an ongoing guide [28] propôs o problema de reconhecimento para a classe dos grafos per-
feitos. Cameron [8] provou em 1982 que esse problema estava em CoNP. A prova de que
a caracterização por subgrafos proibidos proposta por Berge estava correta e o algoritmo
polinomial para o reconhecimento dos grafos perfeitos só apareceriam respectivamente
em 2006 e em 2005 [12, 11]. O algoritmo polinomial de natureza puramente combina-
tória para colorir otimamente os grafos perfeitos ainda permanece como um desafio [37].
Descrevemos a seguir como se deu a classificação da complexidade computacional de dois
problemas centrais, abertos por décadas, um em polinomial e o outro em NP-completo.
Grafo Clique O problema de reconhecimento dos grafos clique foi proposto por Ro-
berts e Spencer em 1971 no contexto de grafos de interseção [39]. Um conjunto completo
de um grafo H = (V, E) é um subconjunto de V que induz um subgrafo completo. Uma
clique é um conjunto completo maximal. Um grafo é um grafo clique se ele é o grafo de
interseção dos conjuntos completos maximais de algum grafo. Foram necessários quase
40 anos para que a prova de NP-completude fosse estabelecida [1]. Não é evidente que
o problema de reconhecimento pertença a NP, já que o número de completos maximais
em um grafo pode ser exponencial no seu número de vértices. Considere por exemplo
o grafo que consiste de um emparelhamento induzido. O grafo contém 2n/2 conjuntos
independentes maximais, e portanto o seu complemento é um grafo com 2n/2 conjuntos
completos maximais. A propriedade de Helly tem sido muito estudada com o objetivo de
classificar a complexidade do problema de reconhecimento de grafos clique. Uma família
de conjuntos F = (Fi )i∈I é intersectante se a interseção de cada dois de seus membros
é não vazia. A interseção total de F é o conjunto F = i∈I Fi . A família F tem a
T T
propriedade de Helly, se qualquer subfamília intersectante tem interseção total não va-
zia. Roberts e Spencer nesse seu artigo fundamental caracterizaram os grafos clique em
termos de uma cobertura das arestas do grafo por conjuntos completos que satisfaz a pro-
priedade de Helly, o que forneceu uma prova de que o problema de reconhecimento dos
grafos clique está em NP. Szwarcfiter caracterizou os grafos clique-Helly e apresentou um
algoritmo polinomial para o seu reconhecimento [44]. O problema de reconhecimento dos
grafos clique foi seguidamente proposto em vários livros [7, 32, 36, 45]. Após a nossa
surpreendente prova de NP-completude [1], continuamos aprofundando o estudo do pro-
blema de reconhecimento dos grafos clique para a classe dos grafos split. A idéia era
buscar um problema que separasse em termos de complexidade as classes cordal e split.
É conhecido que um grafo cordal tem um número linear de conjuntos completos maxi-
mais. Embora a classe dos grafos split seja precisamente a interseção dos grafos cordais
e dos complementos de grafos cordais, são raros os problemas que separam as classes
cordal e split, i.e., problemas que são NP-completos para cordais mas polinomiais para
split, segundo o The NP-completeness – an ongoing guide de Johnson [29] e o livro de
Spinrad [42]. Estabelecemos recentemente que o reconhecimento dos grafos clique split
é NP-completo [2].
classe de grafos vertexcol edgecol maxcut
perfect P N N
chordal P O N
split P O N
strongly chordal P O O
comparability P N O
bipartite P P P
permutation P O O
cographs P O P
proper interval P O O
split-proper interval P P P
Tabela 3.1. N: NP-completo, P: polinomial, O: aberto
split versus cordal O fato de que as classes split e cordal concordam em relação à
complexidade dos três problemas: coloração de vértices, coloração de arestas e corte
máximo, sugere um padrão que tem sido investigado na literatura.
Um grafo é cordal, quando todo ciclo com pelo menos quatro vértices admite uma
corda, e um grafo é split quando o seu conjunto de vértices pode ser particionado em um
conjunto independente e uma clique. Os grafos split constituem uma subclasse dos grafos
cordais muito estruturada, já que são exatamente os grafos tais que tanto o grafo quanto o
seu complemento são ambos cordais.
Johnson, na sua coluna sobre graph restrictions and their effect [29], declarou que
não conhecia problema que separasse as classes split e cordal do aspecto de complexidade.
Spinrad, em seu livro [42] vinte anos depois, ao relatar os resultados de complexidade
para classes de grafos, atualiza os problemas separadores de complexidade em relação às
classes split e cordal: clique máxima e coloração de vértices são polinomiais para ambos;
enquanto conjunto dominante, corte máximo e ciclo hamiltoniano são NP-completos para
ambos. Existem poucos problemas separadores de complexidade em relação às classes
split e cordal: empacotamento de triângulos e pathwidth, para os quais o problema é NP-
completo para cordal mas polinomial para split. Spinrad [42] informa que os grafos split
estão no núcleo dos algoritmos e dos resultados de dificuldade para os grafos cordais.
Problemas separadores de complexidade em relação às classes split e cordal são raros.
Recentemente, tentamos o problema grafo clique, mas obtivemos que o problema perma-
nece NP-completo para grafos split [1, 2]. Possivelmente, a classe dos grafos planares
fornecerá uma classe onde o problema grafo clique seja polinomial [3]. Outro problema
que continua aberto é coloração de arestas, e os resultados parciais para as classes cordal,
intervalo e split sugerem que o problema coloração de arestas é desafiador mesmo restrito
a classes muito estruturadas [16, 34].
grafos sem ciclos com corda única Trotignon e Vušković [46] estudaram a classe C
dos grafos sem ciclos com corda única. A motivação principal para investigar a classe
foi encontrar um teorema que revelasse a estrutura desses grafos, um tipo de resultado
que não é muito frequente na literatura. Dada uma estrutura proibida, por exemplo, ciclo
com corda única, procuramos investigar que consequência traz para a estrutura do grafo,
e que problemas desafiadores tornam-se polinomiais. O teorema é do tipo: todo grafo na
classe C pode ser obtido a partir de grafos básicos de C aplicando uma série de operações
que “identificam” grafos de C. Outra propriedade investigada é a de família de grafos
χ-limitada, introduzida por Gyárfás [25], como uma generalização natural da propriedade
que define os grafos perfeitos. Uma família de grafos G é χ-limitada com função χ-
limitada f se, para todo subgrafo induzido G0 de G ∈ G, temos χ(G0 ) ≤ f (ω(G0 )), onde
χ(G0 ) é o número cromático de G0 e ω(G0 ) denota o tamanho da clique máxima em G0 .
Os grafos perfeitos satisfazem: para todo subgrafo induzido G0 de G na classe dos grafos
perfeitos, temos χ(G0 ) = ω(G0 ), a função χ-limitada f é a função identidade. Por outro
lado, o teorema dos grafos perfeitos estabelece que um grafo G é perfeito se e somente se
G e o complemento de G não admitem um ciclo ímpar sem cordas e com pelo menos 5
vértices. A pesquisa nesta área é dedicada principalmente a entender para que escolhas de
subgrafos induzidos proibidos, a família resultante de grafos é χ-limitada; veja [38] para
um survey sobre o assunto. Pelo Teorema de Vizing para coloração de arestas, a classe dos
grafos de linha de grafos simples é uma classe de grafos χ-limitada com função χ-limitada
f (x) = x + 1 (este limite superior especial é chamado o limite de Vizing) e, além disso, os
grafos de linha são caracterizados por nove subgrafos induzidos proibidos [47]. A classe C
dos grafos sem ciclos com corda única é também χ-limitada com o limite de Vizing [46].
Em [46] os seguintes resultados são obtidos para os grafos na classe C: um algoritmo
O(nm) para a coloração dos vértices, um algoritmo O(n + m) para clique máxima, um
algoritmo O(nm) para o reconhecimento da classe, e a prova de NP-completude para
conjunto independente máximo.
Consideramos a complexidade do problema de coloração de arestas para a classe
C [31]. O problema de coloração de arestas, também conhecido como índice cromático,
é o problema de determinar o menor número χ0 (G) de cores necessárias para colorir as
arestas do grafo G. Também investigamos subclasses obtidas da classe C quando proi-
bimos o ciclo sem cordas com 4 vértices e quando proibimos o ciclo sem cordas com 6
vértices. As Tabelas 3.2 e 3.3 resumem os resultados obtidos, mostrando que classes com
muita estrutura ainda definem problemas difíceis e desafiadores. Nas tabelas, denotamos
por C a classe dos grafos sem ciclo com corda única e por ∆ o grau máximo no grafo.
A classe inicialmente investigada em [31] foi a classe C dos grafos sem ciclo com
corda única. Para os objetivos do trabalho, um grafo G é básico se G é completo, um
ciclo sem cordas com pelo menos 5 vértices, um grafo fortemente 2-bipartido, ou um
subgrafo induzido do grafo de Petersen ou do grafo de Heawood; e G não possui um
vértice de articulação, um corte próprio com 2 vértices ou uma junção própria. Após
provar que coloração de arestas é NP-completo para grafos em C, consideramos os grafos
na subclasse C0 ⊂ C que não têm C4 . Ao proibir um ciclo sem cordas com 4 vértices C4 ,
evitamos a decomposição por junção própria, uma decomposição difícil para coloração
de arestas [4, 40, 41], o que significa que cada grafo da classe C0 que não é básico pode
ser decomposto através de um vértice de articulação ou através de um corte próprio com 2
vértices. Para a classe C0 , estabelecemos então uma dicotomia: coloração de arestas é NP-
completo para grafos de C0 com grau máximo 3 e é polinomial para grafos de C0 com grau
máximo não 3. Adicionalmente, determinamos uma condição necessária para um grafo
G ∈ C0 com grau máximo 3 ser Classe 2, isto é, ter índice cromático χ0 (G) = ∆(G) + 1 = 4.
A condição necessária é ter um grafo P∗ — subgrafo do grafo de Petersen — como um
bloco básico na árvore de decomposição. Consequentemente, se proibimos ambos C4 e
C6 , o índice cromático dos grafos sem ciclo com corda única pode ser determinado em
tempo polinomial. Os resultados alcançados em [31] podem ser relacionados com várias
áreas da pesquisa em coloração de arestas, como observamos a seguir.
A primeira observação diz respeito ao resultado de dicotomia encontrado para a
classe class C0 . A dicotomia é muito interessante porque esta é a primeira classe de grafos
para a qual coloração de arestas é NP-completo para grafos com um dado grau máximo
fixo ∆ mas é polinomial para grafos com grau máximo ∆0 > ∆. Além disso, a classe C0 é a
primeira classe de grafos interessante onde coloração de arestas é NP-completo em geral,
mas é polinomial quando restrito a grafos regulares. É interessante observar que a classe
de grafos C0 é uma classe de grafos com poucos grafos regulares — somente o grafo de
Petersen, o grafo de Heawood , os grafos completos e os ciclos sem cordas.
A segunda observação diz respeito à conjectura de Chetwynd e Hilton. Uma fer-
ramenta importante para identificar classes de grafos que são Classe 2 é o conceito de
sobrecarregado [17]. Um grafo é dito sobrecarregado se satisfaz |E| > ∆(G)b|V|/2c, uma
condição suficiente para que χ0 (G) = ∆(G) + 1. Por exemplo, o ciclo sem cordas com 5
vértices é um grafo sobrecarregado. Uma condição suficiente mais geral é: G é subgrafo
sobrecarregado se G possui o mesmo grau máximo que o grafo e G é sobrecarregado.
Grafos que são subgrafo sobrecarregados são Classe 2 [17] e podemos verificar em tempo
polinomial se um grafo é subgrafo sobrecarregado [33]. Para algumas classes de gra-
fos, ser subgrafo sobrecarregado é equivalente a ser Classe 2. Exemplos de tais classes
são: grafos com vértice universal [35], grafos multipartidos completos [26], e grafos split
com grau máximo ímpar [9]. A conjectura de Chetwynd e Hilton [10] diz que um grafo
G = (V, E) com ∆(G) > |V|/3 é Classe 2 se e somente se é subgrafo sobrecarregado. De
fato, para a maioria das classes para as quais o problema de coloração de arestas é resol-
vido em tempo polinomial, a equivalência “Class 2 = Subgrafo Sobrecarregado” é válida.
É notável que a maioria destas classes é composta de grafos cujo grau máximo é alto —
sempre superior a um terço do número de vértices. Portanto, para estas classes, a equi-
valência “Class 2 = Subgrafo Sobrecarregado” — e o consequente algoritmo polinomial
para o problema de coloração de arestas — seriam consequência direta da Conjectura de
Chetwynd e Hilton para grafos subgrafo sobrecarregados, caso a conjectura seja válida.
Neste sentido, a classe C0 investigada em [31, 46] apresenta um grande interesse: para
grafos em C0 não há limite na relação entre “número de vértices versus grau máximo”;
mesmo assim, se o grau máximo não é 3, a equivalência “Class 2 = Subgrafo Sobrecarre-
gado” é válida. Portanto, a classe dos grafos em C0 com grau máximo não 3 é uma classe
de grafos que não encaixa nas hipóteses da Conjectura de Chetwynd e Hilton para grafos
subgrafo sobrecarregados, mas para a qual coloração de arestas é ainda solúvel em tempo
polinomial através da equivalência “Class 2 = Subgrafo Sobrecarregado”.
classe de grafos k≤2 k≥3
grafos k-partidos polinomial NP-completo
Tabela 3.3. Dicotomia de complexidade NP-completo versus polinomial para a colo-
ração de arestas de grafos multipartidos.
3.2. Lógica Para Computação: Uma Introdução Curta (por Luís C. Lamb)
O entendimento de sistemas lógicos é fundamental em Ciência da Computação. A própria
noção de computabilidade é originária de estudos em lógica. Diversas lógicas têm sido
utilizadas e desenvolvidas em Computação desde o estabelecimento desta como ciência
organizada, particularmente a partir da segunda metade do Século XX. O uso de méto-
dos lógicos tem sido fundamentais em múltiplas subáreas da computação. Estas áreas
incluem: especificação e verificação de sistemas computacionais, projeto de sistemas de
bancos de dados, projeto lógico de circuitos integrados, complexidade descritiva, web se-
mântica, inteligência artificial e sistemas distribuídos. Este capítulo apresenta uma breve
introdução à lógica computacional. Apresentaremos, também, noções históricas sobre a
evolução da lógica em Ciência da Computação, ilustrando com algumas aplicações em
áreas relevantes.
Lógica é uma área organizada do domínio do conhecimento humano. É uma área de es-
tudo caracterizada por conceitos e definições precisas. O estudo das técnicas e métodos de
lógica(s) permite a melhor definição, entendimento e raciocínio sobre diversos domínios
do conhecimento.1
Na Grécia antiga (“clássica”), os Estóicos2 estudaram e definiram noções inici-
ais de lógica proposicional e, preliminarmente, de inferência. O nome de Aristóteles,
fundamental na história da ciência define os silogismos (padrões de raciocínio em que
premissas tem uma conclusão lógica) e o raciocínio com quantificadores (séc. IV A.C).
Exemplo simples de silogismo: Todos os lógicos são filósofos; Luís é lógico; Portanto,
Luís é filósofo; silogismos foram utilizados até a idade média, servindo, inclusive para
a formalização de textos escolásticos. No período medieval, alguns lógicos se desta-
cam, como Pierre Abélard (França), no Século XIII, e William of Ockham (Inglaterra)
no Século XIV. Ockham é referenciado até hoje pelo conceito da “navalha de Ockham”,
mas também introduziu princípios similares ao que conhecemos hoje como Leis de De
Morgan em linguagem natural, além de lógicas tri-valoradas. Abélard publica o Logica
ingredientibus, em 1121 (lógica para principiantes) e destaca-se como grande propagador
do sistema de Aristóteles. Ambos fazem uso do sistema silogístico para verificação de
argumentos. No mesmo período, Ramon Llull (latim: Lulio), no Séc. XIII, desenvolve
estudos para verificar automaticamente a verdade de silogismos, desenvolvendo um sis-
tema de raciocínio como computação. É importante ressaltar que o trabalho de Llull, de
certa forma, influenciou o trabalho de Leibniz.
Durante um longo período, o conhecimento acadêmico foi pouco desenvolvido ou
relatado e reportado, algumas vezes justificado pelo período da idade média no mundo
ocidental. Na idade média, o ensino da lógica era parte do trivium: conjunto de disci-
plinas básicas das artes liberais: gramática, lógica e retórica. O trivium era base para o
quadrivium, conjunto de disciplinas formado pela aritmética, geometria, música e astro-
nomia. Neste período, há desenvolvimentos relevantes no oriente médio e vizinhança,
particularmente na pérsia, sub-continente asiático (Índia) e Oriente.3 Outras contribui-
ções significativas são de Gottfried Willhem Leibniz (1646-1716). Leibniz, grande nome
da matemática, idealizou uma linguagem universal a lingua characteristica universalis
para expressar todo conhecimento humano. Desenvolveu também o Calculus ratiocina-
tor: modelo universal teórico de cálculo lógico - executado por máquinas - para derivar
relações lógicas. Esta contribuição é relevante devido ao objetivo computacional. Tanto
que Leibniz é referido como o “Patron saint of Computer Science” por Moshe Vardi, na
Communications of the ACM, no Editorial de Dezembro de 2011.
1O objetivo deste texto não é oferecer uma história completa da lógica. As considerações históricas são
apresentadas, apenas, para estimular o leitor a buscar informações adicionais sobre a evolução da lógica e
seu impacto na ciência da computação. O texto também não oferece um curso completo de lógica; apenas
introduz, de forma não exaustiva, conceitos e noções básicas e - em reduzida síntese - sua relação com a
ciência da computação. O leitor é convidado a consultar as referências bibliográficas citadas no texto.
2 O pensamento estóico tem como pioneiro Zeno (ou Zenão) de Cítio (344-262 AC). O pensamento
estóico foi predominante na filosofia ocidental até o crescimento da doutrina cristã. Para os estóicos, a
lógica inclui a análise de argumentos, a retórica, gramática, teoria de conceitos, percepções, proposições,
pensamentos, o que - de certa forma - poderia ser visto como epistemologia ou filosofia da linguagem. No
entanto, não há espaço suficiente neste capítulo para maiores detalhes sobre o estoicismo. Uma referência
na moderna “Stanford Encyclopedia of Philosophy” [48] é uma boa bibliografia inicial sobre o assunto.
3 Para melhor entendimento dos estudos em lógica desenvolvidos neste período histórico recomendamos
a consulta do Handbook of Philosophical Logic e Handbook of the History of Logic. Estas importantes obras
modernas de organização do conhecimento sobre lógica pura e aplicada publicaram capítulos específicos
sobre o desenvolvimento da lógica nestas regiões e nestes períodos históricos [67, 69].
Figura 3.1. Aristoteles, G. W. Leibniz
Figura 3.2. Grandes Lógicos do Século XIX: Boole, De Morgan, Frege, Peirce
Entre 1903 e 1910, Alfred North Whitehead (1861-1947) e Bertrand Russell (1872-
1970) escrevem o monumental Principia Mathematica [99], em 3 volumes, com mais de
2 mil páginas. O objetivo era formalizar na linguagem da lógica, utilizando axiomas e
regras de inferência, todo o conhecimento matemático. A partir deste período, a lógica
matemática e a teoria de conjuntos estabelecem-se como fundamentos da matemática mo-
derna.4
4O Principia ou PM, como também é conhecido, foi considerado um dos 100 livros de não-ficção
mais importantes do Século XX pelo New York Times(http://www.nytimes.com/library/books/042999best-
nonfiction-list.html). Whitehead e Russell foram filósofos de grande influência no Século XX. Russell
foi considerado por muitos especialistas o “filósofo do século” [89]. Whitehead foi considerado genial pela
famosa intelectual da primeira metade do século, Gertrude Stein, que nas primeiras frases da “Autobiografia
Figura 3.3. Alfred Whitehead, Bertrand Russell, David Hilbert, L.E.J. Brouwer, Alfred Tarski
de Alice B. Toklas” (na verdade sua própria autobiografia, uma obra vanguardista na cultura ocidental)
afirmou “... that only three times in my life have I met a genius ... the three geniuses of whom I wish to
speak are Gertrude Stein, Pablo Picasso and Alfred Whitehead."
5 A contribuição de Kurt Gödel foi inclusive popularizada pelos grandes meios de comunicação da im-
prensa. Em 1999, Gödel foi escolhido o matemático do século pela revista Time Magazine.
ressante observar que estudos em decidibilidade contribuem decisivamente para o desen-
volvimento da noção de computibilidade. Neste mesmo período histórico e até os anos
1950, a definição precisa de consequência lógica, a noção de verdade em uma estrutura e
trabalhos fundamentais na teoria de modelos são desenvolvidos por Alfred Tarski.
Além disso, Gödel desenvolve um sistema completo e correto para a lógica de
primeira ordem. Church encontra uma solução negativa ao Entscheidungsproblem [52]:
é impossível decidir algoritmicamente se afirmações da aritmética são verdadeiras ou
falsas; Church define a noção de calculabilidade e também introduz o cálculo-λ para
estudo das funções referidas por ele como calculáveis - mas referidas por Turing como
computáveis. Posteriormente, o cálculo-λ também passa a ter forte influência na ciência
da computação, principalmente na área de linguagens de programação, a partir da década
de 1960. De grande influência na comunidade de lógica, Church orientou as teses de
nomes relevantes em lógica e ciência da computação como: A.M. Turing, S. Kleene, J.B.
Rosser, D.S. Scott, M.O. Rabin, H. Rogers Jr., R. Smullyan e Leon Henkin.
Atualmente, em poucos textos a referência ao termo calculabilidade é encontrada.
No famoso artigo de Turing [93], ele faz referência pioneira ao termo “computable” en-
quanto esclarece que o conceito de “calculable” (calculável) de Church ao estudar funções
calculáveis é equivalente à sua definição de computável [93]:
Although the class of computable numbers is so great, and in many ways similar to
the class of real numbers, it is nevertheless enumerable. In §8 I examine certain
arguments which would seem to prove the contrary. By the correct application of
one of these arguments, conclusions are reached which are superficially similar to
those of Gödel [1]. These results have valuable applications. In particular, it is
shown (§11) that the Hilbertian Entscheidungsproblem can have no solution. In a
recent paper Alonzo Church [2] has introduced an idea of “effective calculability”,
which is equivalent to my “computability”, but is very differently defined. Church
also reaches similar conclusions about the Entscheidungsproblem [3]. The proof of
equivalence between “computability” and “effective calculability” is outlined in an
appendix to the present paper.
[1] Uber formal unentscheidbare Satze der Principia Mathematica und verwandter Systeme,
I. Monatshefte fur Mathematik und Physik, 38(1931):173-198.
[2] An unsolvable problem of elementary number theory, Amer. J. Math, 58(1936): 345-363.
[3] A note on the Entscheidungsproblem. J. of Symbolic Logic, 1(1936): 40-41.
Figura 3.4. Alan Turing, FRS (1912-54), Kurt Gödel (1906-78), Alonzo Church (1903-95)
Existem diversos sistemas de prova para lógica proposicional e de primeira ordem. Entre
as diversas formas de apresentação de sistemas lógicos, sistemas axiomáticos estão entre
as mais utilizadas. Esta apresentação também é conhecida como apresentação à la Frege-
Hilbert, ou, no “estilo de Hilbert” [84]. O sistema axiomático é historicamente muito
utilizado por filósofos e matemáticos. Tem como limitação (en. “drawback”) o fato de
levar à construção de provas complexas, mesmo para experientes. Um sistema axiomático
consiste de fórmulas que são definidas como axiomas e pela especificação de suas regras
de inferência. Para exemplificarmos a sua utilização, apresentamos a seguinte axiomati-
zação da lógica proposicional. Se α, β e γ são quaisquer fórmulas bem-formadas de L,
então os seguintes são axiomas de L [84]; esta axiomatização utiliza apenas os conetivos
→, ¬.
(A1). (α → (β → α))
(A2). ((α → (β → γ)) → ((α → β) → (α → γ)))
(A3). ((¬β → ¬α) → ((¬β → α) → β)).
Uma regra de inferência de L: modus ponens: α, α → β ` β
Exemplo simples: prova em L de A → A.
3. (A → (A → A)) → (A → A) 1, 2, MP
4. A → (A → A) Esquema Ax. A1
5. A → A A partir de 3, 4 por MP
1. A → (B → A)
3. (A → B) → (¬B → ¬A)
4. ¬¬A → A
5. A → ¬¬A
O método de dedução natural, foi proposto por Gentzen [70], e refinado por Fitch [63] em
um formato onde provas e subprovas são representadas hierarquicamente. O método con-
siste em uma representação formal da argumentação direta, em que utilizamos regras do
sistema para manipular premissas e obter conclusões. A formalização do raciocínio é feita
através de regras ditas de introdução e de eliminação. Regras de introdução permitem in-
troduzir em uma linha de prova uma fórmula que utilizam um determinado conetivo que
está sendo “introduzido”. Regras de eliminação permitem a inferência de uma nova fór-
mula em que um conetivo foi “eliminado” (estas noções são detalhadas a seguir). Nossa
representação utilizará o formato de “boxes” (caixas) que lembram a hierarquia da estru-
tura original no formato de árvores como Gentzen utilizava. Os livros [50, 51, 66, 76]
utilizam os formatos de caixas, que - de certa forma, ressalte-se - lembram também a
estrutura de um programa de computador. O método de dedução natural é muito utili-
zado como formalização do raciocínio utilizado em provas por especialistas; i.e. existe
uma correspondência próxima com a forma de como teoremas são provados (na “prática”
lógico-matemática) e como são construídas as relações entre premissas e conclusões em
dedução natural. Em vez de axiomas, há regras de inferência, que descrevem o que pode
ser derivado a partir de premissas e hipóteses.
Em síntese, o sistema de dedução natural tem uma série de vantagens em relação a
outros sistemas, como em relação ao sistema axiomático, pois: (i) concentra-se na noção
de dedução, que é a noção fundamental em lógica; (ii) evita que tenhamos de definir um
conjunto de fórmulas como axiomas; (iii) freqüentemente as regras de dedução natural
são mais fáceis de serem manipuladas. (iv) de certa forma, ele espelha a forma como os
seres humanos realizam inferências.
1. [α] hipótese
. 1. α → β
2. .. 2. α
3. β 3. β → E(1, 2)
4. α → β → I(1, 3)
Regras para a conjunção ∧: Regra de Introdução: Para introduzir (ou para escrever) uma
fórmula do tipo α ∧ β em uma prova, devemos provar α e provar β. Regra de Eliminação:
Se provamos α ∧ β então podemos escrever α e/ou podemos também escrever β. As regras
podem ser representadas como a seguir.
1. α
. 1. α ∧ β
2. .. 2. α ∧E(1)
3. β 3. β ∧E(1)
4. α ∧ β ∧I(1, 3)
1. α ∨ β
2. [α] hipótese 5. [β] hipótese
1. α . ..
2. α ∨ β ∨I(1) 3. .. hprovai 6. . hprovai
4. γ 7. γ
8. γ ∨E(1, 2 − 4, 5 − 7)
Regras para (¬): Introdução: Para mostrar ¬α, assumimos α e provamos ⊥. A hipótese
não pode ser utilizada fora da subprova. Note que nesta regra, usa-se também o raciocínio
hipotético, e interpreta-se ¬α como α → ⊥. Eliminação: A partir de α e de ¬α, provamos
⊥.
1. [α] hipótese 1. α
.. .
2. . 2. ..
3. ⊥ 3. ¬α
4. ¬α ¬I(1, 3) 4. ⊥ ¬E(1, 3)
Entre as regras derivadas do sistema de dedução natural, podemos citar a regra de elimi-
nação da dupla negação ¬¬E: A partir de ¬¬α provamos α. Esta regra é utilizada para
simplificar passos de prova, mas pode ser derivada de outras regras do sistema de dedução
natural. A seguir mostramos que, em lógica clássica, qualquer fórmula pode ser obtida a
partir de uma prova de ⊥ (também referido como falsum). Isto é, mostramos que ⊥ ` A
para qualquer fórmula A.
1. ⊥ Premissa
2. [¬A] hipót.
3. ⊥ X (1)
4. ¬¬A ¬I(2, 3)
5. A ¬¬E(4)
1. [¬α] hipótese
.
2. ..
3. ⊥
4. α PC(1,3)
Regras para ⊥: Introdução: Para provar ⊥ temos de provar α e provar ¬α, para fórmulas
quaisquer. Esta regra é análoga à regra ¬E. Eliminação: A partir de uma prova de ⊥
podemos derivar qualquer fórmula.
1. ¬α
.
2. .. 1. ⊥
3. α 2. α ⊥E(1)
4. ⊥ ⊥I(1, 3)
Existem também regras para >, de introdução e eliminação. > pode ser introduzido em
qualquer ponto de uma prova, pois é uma fórmula sempre válida, enquanto que se temos
> nada podemos afirmar a partir desta fórmula.
Utilização de Lemas: Lemas são fórmulas provadas (válidas), e assim denominadas
quando utilizadas na construção de uma prova maior. Por exemplo, um lema muito utili-
zado em dedução natural para lógica clássica é a lei do meio excluído, i.e. α ∨ ¬α. Este
lema - em geral - deve ser utilizado em conjunto com uma eliminação de ∨, onde ¬α e α
serão hipóteses para um raciocínio por casos.
Regras para ↔: Lembre-se que α ↔ β é equivalente a (α ∧ β) ∨ (¬α ∧ ¬β), e também
é equivalente a (α → β) ∧ (β → α). Introdução: Para provar α ↔ β, devemos provar α e
β ou devemos provar ¬α e ¬β. Devido à equivalência acima, também podemos derivar
α ↔ β ao provarmos (α → β) e (β → α). Eliminação: A partir de α ↔ β, podemos provar
(α → β) e (β → α) e (α ∧ β) ∨ (¬α ∧ ¬β). Assim como as demais regras para os conetivos,
as regras para ↔ também estão representadas na Figura 3.6.
1. α
. 1. α ↔ β
2. .. 2. (α ∧ β) ∨ (¬α ∧ ¬β) ↔ E(1)
3. β 3. (α → β) ∧ (β → α) ↔ E(1)
4. α ↔ β ↔ I(1, 3)
1. p → (q → r) premissa
2. [p ∧ q] hip.
3. p ∧ E(2)
4. q ∧ E(2)
5. q → r → E(1, 3)
6. r → E(4, 5)
7. p∧q → r → I(1, 6)
Figura 3.6. Resumo das Regras para os Conetivos Clássicos. As linhas da tabela
servem como referência. Obviamente poderíamos adotar uma numeração genérica
para as linhas de prova; mas como exemplo didático, a numeração a seguir é clara.
1. α
. 1. α ∧ β
2. .. 2. α ∧E(1)
3. β 3. β ∧E(1)
4. α ∧ β ∧I(1, 3)
1. [α] hipótese
. 1. α → β
2. .. 2. α
3. β 3. β → E(1, 2)
4. α → β → I(1, 3)
1. α ∨ β
2. [α] hipótese 5. [β] hipótese
1. α .. ..
2. α ∨ β ∨I(1) 3. . hprovai 6. . hprovai
4. γ 7. γ
8. γ ∨E(1, 2 − 4, 5 − 7)
1. [α] hipótese 1. α
.. .
2. . 2. ..
3. ⊥ 3. ¬α
4. ¬α ¬I(1, 3) 4. ⊥ ¬E(1, 3)
1. ¬α
.
2. ..
1. ⊥
2. α ⊥E(1)
3. α
4. ⊥ ⊥I(1, 3)
1. [¬α] hipótese
1. ¬¬α ..
2. .
2. α ¬¬E(1)
3. ⊥
4. α PC(1,3)
1. α
. 1. α ↔ β
2. .. 2. (α ∧ β) ∨ (¬α ∧ ¬β) ↔ E(1)
3. β 3. (α → β) ∧ (β → α) ↔ E(1)
4. α ↔ β ↔ I(1, 3)
As provas no cálculo de dedução natural para lógica de predicados são similares às provas
para lógica proposicional. Introduz-se regras para os quantificadores e para o símbolo de
igualdade. As regras para os conetivos são preservadas: as regras para lógica proposi-
cional continuam válidas para a lógica de predicados. Novamente, nossa apresentação
sumariza os sistemas apresentados em [51, 66, 76] que apresentam um sistema de de-
dução natural para lógica de predicados com estrutura hierárquica no formato de caixas.
Primeiramente, temos as regras para igualdade (=). A reflexividade da igualdade permite
escrever em qualquer linha de prova que t = t. Isto é, qualquer termo t é igual a si mesmo,
o que na verdade é um axioma. Dada uma fórmula arbitrária α, se provamos α(t) e prova-
mos que t = u, sendo t, u termos, então pela substituição de termos iguais = sub podemos
mostrar α(u). As regras estão representadas na Figura 3.8. Exemplo: Podemos mostrar,
1. α(t) provado
.. ..
1. . 2. .
2. t=t =refl 3. t=u provado
4. α(u) =sub (1,3)
Figura 3.8. Regras de Dedução Natural para Igualdade (=)
10 Por questões de espaço a apresentação formal da semântica da lógica de primeira ordem não é apresen-
tada neste texto. No entanto, pode ser compreendida através da leitura dos excelentes livros [54, 76].
usando as regras acima que (exemplo de [76]):
1. (x + 1) = (1 + x) premissa
2. (x + 1 > 1) → (x + 1 > 0) premissa
3. (1 + x > 1) → (1 + x > 0) =sub(1,2)
Para qualquer fórmula ∀xα(x), podemos derivar α(t) para qualquer termo fechado t. Isto
se deve ao fato de afirmações universais serem verdade para quaisquer objetos de um
domínio, isto é para quaisquer termos fechados. Assim, a regra de eliminação do quanti-
ficador universal denotada por ∀E pode ser representada como na Figura 3.9. A regra de
introdução do quantificador universal ∀I requer a utilização de raciocínio hipotético. É
necessário provar, para um termo arbitrário t, ainda não utilizado em nenhuma outra linha
de prova, que α(t) é válido. Note que nesta regra escrevemos um termo em uma linha de
prova, o que não ocorre nas demais regras do sistema de dedução natural. Note que t é
arbitrário, não sendo utilizado na prova posteriormente. A anotação feita à direita t − ∀I,
ao lado do termo t na linha 1, denota este termo arbitrário t, para o qual temos de provar
a fórmula α(t), conforme a Figura 3.9.
Para mostrarmos uma sentença ∃xα através do sistema de dedução natural, temos que
mostrar que α(t) para um termo fechado t (que não inclui variáveis). Assim, a regra de
introdução do quantificador existencial ∃I é representada na Figura 3.9. A eliminação do
quantificador existencial exige a utilização de uma análise de casos, através de raciocínio
hipotético. Lembre-se que a quantificação existencial ∃xα(x) significa que α é verda-
deira para pelo menos uma atribuição de x; isto é ∃xα(x) pode ser interpretado como
uma disjunção. Se provamos a sentença ∃xα(x), a partir da hipótese de que α(t) é verda-
deiro construímos uma prova de β, então podemos afirmar que β foi derivado a partir de
∃xα(x). No formato hierárquico que estamos utilizando, a regra é representada como a
seguir. Como exemplo, provamos o seguinte sequente: ∃x¬α(x) |− ¬∀xα(x).
1. ∃xα(x)
1. t t − ∀I
.. 2. [α(t)] hip.
. 1. ∀xα(x) 1. α(t) .
3. ..
2.
3. α(t) 2. α(t) ∀E(1) 2. ∃xα(x) ∃I(1)
4. β
4. ∀xα(x) ∀I(1, 3)
5. β ∃E(1, 2 − 4)
Figura 3.9. Regras de Dedução Natural para os Quantificadores ∀, ∃.
1. ∃x¬α(x) premissa
2. [∀xα(x)] hip.
3. [¬α(t)] hip.
4. α(t) ∀E(2)
5. ⊥ ¬E(3, 4)
6. ⊥ ∃E(1, 3 − 5)
7. ¬∀xα(x) ¬I(2, 6)
Explicação: Para provarmos ¬∀xα(x), temos ∃x¬α(x) como premissa. Note que a con-
clusão é uma fórmula negada. Portanto, podemos usar a regra de ¬I para prová-la; faze-
mos isto assumindo ∀xα(x) como hipótese para derivar uma contradição ⊥. Observe que,
ao assumirmos ∀xα(x) e tendo a premissa da linha 1 (i.e. ∃x¬α(x)), a hipótese ¬α(t) da
linha 3 pode levar a uma contradição com a fórmula α(t) da linha 4. Assim, obtemos a
conclusão.
3.2.6. Lógicas-Não-Clássicas
Em lógica clássica assumimos uma única situação, um único mundo possível em que
fórmulas são avaliadas, isto é, em que assumem valores-verdade. Em diversos domínios
do conhecimento, este modelo não é satisfatório. Em Ciência da Computação, nosso
conhecimento do mundo, pode se referir a outros “mundos/estados possíveis” [72]. Raci-
ocinar/refletir sobre conhecimento, computações e ações é fundamental em computação:
como processos se coordenam para executar uma ação? O que robôs precisam saber
para executar suas tarefas? O que programas (“agentes”) precisam saber sobre os outros
programas para se comunicarem? As lógicas que investigam estas questões são lógicas
não-clássicas: modais, temporais, epistêmicas, entre outras.
Além disso, sistemas computacionais são dinâmicos e interativos. O tempo, por
exemplo, é um aspecto fundamental, assim como estados, transições, trocas de mensa-
gens. Para aplicações em Ciência da Computação, Inteligência Artificial entre outras,
estas lógicas requerem uma formalização/axiomatização distinta da realizada através de
lógica clássica. A lógica clássica é monotônica, i.e. um resultado não é refutado sob
novas informações. Em inteligência artificial, no entanto, muitas vezes é necessário uti-
lizar raciocínios não-monotônicos. Tendo em vista as características e a complexidade
das aplicações em IA e computação, surgem então diversas propostas de lógicas “não-
clássicas”.11
Entre as lógicas originárias da Ciência da Computação podemos citar as lógicas
desenvolvidas para raciocinar sobre programas, a partir dos trabalhos de Hoare, Dijks-
tra e Floyd [76]. Hoare e Milner também desenvolveram cálculos computacionais para
expressar propriedades de concorrência e interação, que demandam novas lógicas com-
putacionais para expressar propriedades de sistemas concorrentes [74, 85]. Dijkstra foi
um pioneiro da área de verificação formal e da derivação de programas, método no qual
um programa e sua prova são desenvolvidos concomitantemente. Uma lógica modal que
Figura 3.10. E.W. Dijkstra, C.A.R. Hoare, Robin Milner: Turing Awards (1972, 1980, 1991)
• Modalidades Aléticas:
2φ: φ é necessariamente verdadeiro.
♦φ: φ é possivelmente verdadeiro (equivalente a ¬2¬φ).
• Modalidades epistêmicas
Ka φ: Agente a sabe φ.
Ba φ: Agente a acredita que φ é verdade.
• Modalidades temporais lineares:
φ (ou Xφ): φ será verdade no próximo ponto de tempo (estado do mundo).
φ (ou Gφ): φ será verdadeiro sempre.
♦φ (ou Fφ): φ será possivelmente (contingencialmente) verdadeiro no futuro (equi-
valente a ¬¬φ: φ não será sempre falso).
φUψ: φ é verdadeiro até que ψ seja verdadeiro.
Embora existam diversos modelos semânticos para as lógicas modais, esta síntese se con-
centra na semântica relacional de Kripke/Hintikka. O modelo dos mundos possíveis de
Kripke é utilizado de forma ampla, inclusive como modelo de conhecimento, para ló-
gicas modais epistêmicas. Kripke [80, 81] definiu uma teoria de modelos baseada em
“mundos possíveis” e relações de acessibilidade explícita entre mundos. Estes modelos
são aplicáveis em uma classe ampla de lógicas. A noção de que mundos são “possíveis”
depende do mundo atual, ou de referência. Por exemplo, em lógica modal temporal as
noções de passado e futuro dependem do mundo atual. Se considerarmos um conjunto
W de mundos possíveis e uma relação binária R em W, podemos ler R(ω1 , ω2 ) como ω2
é um mundo possível tendo ω1 como referência, ou a partir de ω1 . Podemos considerar
diversas propriedades das relações de acessibilidade. Um frame de Kripke é definido por
uma estrutura (W, R) onde W é um conjunto de não vazio e R é uma relação em W.
A noção de relação de acessibilidade também é relevante pois sistemas diferentes
de lógicas modais se caracterizam pelas propriedades das relações de acessibilidade. Por
exemplo, se definirmos que a relação de acessibilidade é reflexiva, simétrica e transitiva
definimos um sistema lógico conhecido como lógica modal S 5 (ou KT 45) [62]. De forma
simplificada, podemos definir então uma Estrutura de Kripke: M = (W, R, v), onde: W é
um conjunto de mundos possíveis; R ⊆ W 2 é a relação de acessibilidade entre mundos; e
v(ω) associa a cada mundo ω ∈ W um conjunto de variáveis proposicionais. A satisfação
de fórmulas (M, ω) |= α (que pode ser lida α é verdadeira em (M, ω) ou α é satisfeita em
(M, ω), pode então ser definida:
R1
q p, q
t1 t2
R1, R2 R1, R3
p
t3
p
q
R3 t6
t4 R1, R2
t5
Vários tipos de sistemas de prova para lógicas modais foram propostos, e.g., [51, 64].
Em alguns destes sistemas, as fórmulas são rotuladas pelos mundos (estados) em que elas
são verdadeiras, o que pode facilitar no entendimento e desenvolvimento das provas. Nas
regras apresentadas a seguir, no estilo de dedução natural, a notação ϕ : ω significa que ϕ
é verdadeira no mundo possível ω. A relação de acessibilidade R também é explicitada
neste sistema de dedução rotulado, o que também auxilia na derivação de em que mundos
(estados) as fórmulas podem ser inferidas a partir da informação sobre as relações R
entre mundos. As diferenças entre as diversas lógicas, por exemplo lógicas modais, são
ditadas pelas propriedades diferentes das relações de acessibilidade. Isso é possível pela
união, nas unidades declarativas que são constituídas de fórmulas com rótulos. Também
definimos uma álgebra de rotulação que representa as propriedades específicas de cada
sistema lógico. Há também regras de inferência estruturais (não formalizadas aqui por
simplicidade) que permitem raciocínio sobre diagramas (relações) em configurações.
Na regra 2I a hipótese [R(ω, gϕ (ω))] é interpretada como: dado um mundo possí-
vel arbitrário gϕ (ω), se podemos inferir ϕ : gϕ (ω) então é possível provar que 2ϕ : ω. A
regra 3E pode ser vista, informalmente, como uma skolemização do quantificador exis-
tencial sobre mundos possíveis, o que é semanticamente implicado pela fórmula 3ϕ na
premissa. Assim, o termo fϕ (ω) define um mundo possível particular unicamente asso-
ciado à fórmula ϕ inferido e acessível a partir do mundo possível ω (i.e. R(ω, fϕ (ω))). A
regra de 3I representa que se tivermos a relação R(ω1 , ω2 ) e se ϕ é verdade em ω2 então
derivamos 3ϕ no mundo ω1 . Finalmente, a regra 2E significa que, se 2ϕ vale no mundo
ω1 e ω1 está relacionado com (é acessível de) ω2 então podemos inferir que ϕ é verda-
deiro em ω2 . Assim, as fórmulas são rotuladas pelos mundos em que elas são verdadeiras
para facilitar o processo de raciocínio e inferência. As referências explícitas às relações
de acessibilidade também auxiliam na derivação de fórmulas nos mundos relacionados
por R [51].
[R(ω, gϕ (ω))]
·· 2ϕ : ω1 , R(ω1 , ω2 )
· 2E
ϕ : gϕ (ω) ϕ : ω2
2I
2ϕ : ω
3ϕ : ω ϕ : ω2 , R(ω1 , ω2 )
3E 3I
ϕ : fϕ (ω), R(ω, fϕ (ω)) 3ϕ : ω1
[α : ω] [β : ω]
·· ·· α:ω
· · ∨I
α∨β : ω γ : ω γ:ω
∨E α∨β : ω
γ:ω
α∧β : ω α : ω, β : ω
∧E ∧I
α : ω, β : ω α∧β : ω
[α : ω]
··
α ⊃ β : ω, α : ω ·
⊃E β:ω
β:ω ⊃I
α⊃β:ω
[α : ω]
¬¬α : ω ··
¬E ·
α:ω ⊥ : ω0
¬I
¬α : ω
Em 2003, Valiant propôs um grande desafio para a Ciência da Computação [95]. O desafio
consiste no desenvolvimento de modelos efetivos de computação cognitiva integrando
raciocínio e aprendizado.
3.2.7. Sumário
O estudo de sistemas lógicos têm sido fundamental desde as origens da Ciência da Com-
putação, a ponto da lógica ser citada como o cálculo da computação [72]. Recentemente,
temos presenciado resultados muito promissores de pesquisas em Ciência da Computação
e Inteligência Artificial [90, 97], que demonstram que os sistemas computacionais atuais
já são capazes de integrar habilidades cognitivas complexas, como o aprendizado a partir
Figura 3.14. Michael O. Rabin, Leslie G. Valiant
Our field is still in its embryonic stage. It’s great that we haven’t been around
for 2000 years. We are at a stage where very, very important results occur in
front of our eyes. M.O. Rabin em [91]
Referências
[1] L. Alcon, L. Faria, C. M. H. de Figueiredo, and M. Gutierrez, The complexity of
clique graph recognition, Theoret. Comput. Sci. 410 (2009) 2072–2083.
[2] L. Alcon, L. Faria, C. M. H. de Figueiredo, and M. Gutierrez, Split clique graph
complexity, Theoret. Comput. Sci. 506 (2013) 29–42.
[3] L. Alcón, and M. Gutierrez, Cliques and extended triangles. A necessary condition
for planar clique graphs, Discrete Appl. Math. 141 (2004) 3–17.
[4] M. M. Barbosa, C. P. de Mello, and J. Meidanis, Local conditions for edge-colouring
of cographs, Congr. Numer. 133 (1998) 45–55.
[5] C. Berge, and V. Chvátal, Topics on Perfect Graphs, North-Holland Mathematics
Studies, 88. Annals of Discrete Mathematics, 21. North-Holland Publishing Co.,
Amsterdam, 1984.
[6] H. L. Bodlaender, C. M. H. de Figueiredo, M. Gutierrez, T. Kloks, and R. Nieder-
meier, Simple max-cut for split-indifference graphs and graphs with few P4 ’s, Proc.
of Third International Workshop on Experimental and Efficient Algorithms (WEA
2004). Lecture Notes in Comput. Sci. 3059 (2004), 87–99.
[7] A. Brandstädt, V. B. Le, and J. P. Spinrad, Graph Classes: A survey. SIAM Mono-
graphs on Discrete Mathematics and Applications, 1999.
[8] K. Cameron, Polyhedral and Algorithmic Ramifications of Antichains, Ph.D. Thesis,
Department of Combinatorics and Optimization, University of Waterloo, Waterloo,
1982.
[9] B. L. Chen, H.-L. Fu, and M. T. Ko, Total chromatic number and chromatic index
of split graphs, J. Combin. Math. Combin. Comput. 17 (1995) 137–146.
[10] A. G. Chetwynd, and A. J. W. Hilton, Star multigraphs with three vertices of maxi-
mum degree, Math. Proc. Cambridge Philos. Soc. 100 (1986) 303–317.
[11] M. Chudnovsky, G. Cornuéjols, X. Liu, P. Seymour, and K. Vušković, Recognizing
Berge graphs, Combinatorica 25 (2005) 143–186.
[12] M. Chudnovsky, N. Robertson, P. Seymour, and R. Thomas, The strong perfect
graph theorem, Ann. of Math. 164 (2006) 51–229.
[13] V. Chvátal, Star-cutsets and perfect graphs, J. Combin. Theory Ser. B 39 (1985)
189–199.
[14] T. Feder, P. Hell, S. Klein, and R. Motwani, List partitions, SIAM J. Discrete Math.
16 (2003) 449–478.
[22] L. Fortnow, The status of the P versus NP problem, Communications of the ACM
52 (2009) 78–86.
[23] M. R. Garey, and D. S. Johnson, Computers and Intractability. A Guide to the Theory
of NP-completeness. WH Freeman, New York, 1979.
[25] A. Gyárfás, Problems from the world surrounding perfect graphs, Zastos. Mat. 19
(1987) 413–441.
[33] T. Niessen, How to find overfull subgraphs in graphs with large maximum degree,
Electron. J. Combin. 8 (2001) #R7.
[35] M. Plantholt, The chromatic index of graphs with a spanning star, J. Graph Theory
5 (1981) 45–53.
[36] E. Prisner, Graph Dynamics, Pitman Research Notes in Mathematics 338, Longman,
1995.
[47] D. B. West, Introduction to Graph Theory. Second edition. Prentice Hall, 2001.
[48] Dirk Baltzly. Stoicism. In Edward N. Zalta, editor, The Stanford Encyclopedia of
Philosophy. Spring 2014 edition, 2014.
[49] Rafael V. Borges, Artur d’Avila Garcez, and Luís C. Lamb. Learning and repre-
senting temporal knowledge in recurrent networks. IEEE Transactions on Neural
Networks, 22(12):2409–2421, 2011.
[51] K. Broda, D.M. Gabbay, L.C. Lamb, and A. Russo. Compiled Labelled Deductive
Systems: A Uniform Presentation of Non-classical Logics. Studies in Logic and
Computation. Research Studies Press/Institute of Physics Publishing, Baldock, UK,
Philadelphia, PA, 2004.
[54] Flavio Corrêa da Silva, Marcelo Finger, and Ana C. V. de Melo. Lógica para Com-
putação. Thomson, São Paulo, 2006.
[55] Artur d’Avila Garcez, Marco Gori, Pascal Hitzler, and Luís C. Lamb. Neural-
Symbolic Learning and Reasoning (Dagstuhl Seminar 14381). Dagstuhl Reports,
4(9):50–84, 2015.
[56] A.S. d’Avila Garcez and L.C. Lamb. A connectionist computational model for epis-
temic and temporal reasoning. Neural Computation, 18(7):1711–1738, 2006.
[57] A.S. d’Avila Garcez, L.C. Lamb, and D.M. Gabbay. Connectionist computations of
intuitionistic reasoning. Theoretical Computer Science, 358(1):34–55, 2006.
[58] A.S. d’Avila Garcez, L.C. Lamb, and D.M. Gabbay. Connectionist modal logic:
Representing modalities in neural networks. Theoretical Computer Science, 371(1-
2):34–53, 2007.
[59] A.S. d’Avila Garcez, L.C Lamb, and D.M. Gabbay. Neural-Symbolic Cognitive
Reasoning. Cognitive Technologies. Springer, 2009.
[60] Leonardo M. de Moura and Nikolaj Bjørner. Satisfiability modulo theories: intro-
duction and applications. Commun. ACM, 54(9):69-77, 2011.
[61] Leo de Penning, Artur S. d’Avila Garcez, Luís C. Lamb, and John-Jules Ch. Meyer.
A neural-symbolic cognitive agent for online learning and reasoning. In Toby Walsh,
editor, IJCAI-11, pages 1653–1658. IJCAI/AAAI, 2011.
[62] R. Fagin, J. Halpern, Y. Moses, and M. Vardi. Reasoning about Knowledge. MIT
Press, 1995.
[63] Frederic B. Fitch. Symbolic Logic. The Ronald Press Company, New York, 1952.
[64] M. Fitting. Proof methods for modal and intuitionistic logics. D. Reidel Publishing
Company, Dordrecht, 1983.
[67] Dov M. Gabbay and F. Guenthner, editors. Handbook of Philosophical Logic, vo-
lume I-XVIII. Springer, 2008-2015.
[68] Dov M. Gabbay, Amir Pnueli, Saharon Shelah, and Jonathan Stavi. On the temporal
basis of fairness. In Conference Record of the Seventh Annual ACM Symposium
on Principles of Programming Languages, Las Vegas, Nevada, USA, January 1980,
pages 163–173, 1980.
[69] Dov M. Gabbay and John Woods, editors. Handbook of The History of Logic, vo-
lume I-XI. Elsevier, 2008-2015.
[72] J.Y. Halpern, R. Harper, N. Immerman, P.G. Kolaitis, M.Y. Vardi, and V. Vianu. On
the unusual effectiveness of logic in computer science. Bulletin of Symbolic Logic,
7(2):213–236, 2001.
[75] C. Howson. Probability and logic. J. Applied Logic 1(3-4), 151-165, 2003.
[76] M. Huth and M. Ryan. Logic in Computer Science: modelling and reasoning about
systems. Cambridge University Press, 2000.
[77] R. Khardon and D. Roth. Learning to reason. Journal of the ACM, 44(5):697–725,
1997.
[78] Robert A. Kowalski. Computational Logic and Human Thinking: How to be Artifi-
cially Intelligent. Cambridge University Press, 2011.
[79] Robert A. Kowalski. Logic for Problem Solving, Revisited. Herstellung und Verlag:
Books on Demand, 2014.
[81] S. Kripke. Semantic analysis of modal logics I, normal propositional calculi. Zeits-
chrift für mathematische Logik und Glundlagen der Mathematik, 9:67–96, 1963.
[83] Z. Manna and R. Waldinger. The logical basis for computer programming. Volume
1: deductive reasoning. Addison-Wesley, Boston, 1985.
[85] Robin Milner. Communication and concurrency. PHI Series in computer science.
Prentice Hall, 1989.
[86] Joan Moschovakis. Intuitionistic logic. In Edward N. Zalta, editor, The Stanford
Encyclopedia of Philosophy. Spring 2015 edition, 2015.
[87] A. Pnueli. The temporal logic of programs. In Proceedings of 18th IEEE Annual
Symposium on Foundations of Computer Science, pages 46–57, 1977.
[88] S.J. Russell. Unifying Logic and Probability: A New Dawn for AI? In Information
Processing and Management of Uncertainty in Knowledge-Based Systems - 15th
International Conference, IPMU 2014, pages 10–14, 2014.
[89] Ralph Schoenman, editor. Bertrand Russell: Philosopher of the Century. Allen and
Unwin, London, 1967.
[90] Bernhard Schoelkopf. Artificial intelligence: Learning to see and act. Nature,
518:486–487, 2015.
[91] Denis Shasha and Cathy Lazere. Out of Their Minds: The Lives and Discoveries of
15 Great Computer Scientists. Copernicus, 1995.
[92] R. M. Smullyan. First-Order Logic. Dover Publications, New York, revised edition,
1995.
[94] Alan M. Turing. Computing machinery and intelligence. Mind, 59:433–460, 1950.
[95] L. G. Valiant. Three problems in computer science. Journal of ACM, 50(1):96–99,
2003.
[96] Dirk Van Dalen. Intuitionistic logic. In D. Gabbay and F. Guenthner, editors,
Handbook of Philosophical Logic, volume 166 of Synthese Library, pages 225–339.
Springer Netherlands, 1986.
[97] Moshe Y. Vardi. Is information technology destroying the middle class? Commun.
ACM, 58(2):5, 2015.
[98] M.Y. Vardi. Why is modal logic so robustly decidable? In N. Immerman and P. Ko-
laitis, editors, Descriptive Complexity and Finite Models, volume 31 of Discrete
Mathematics and Theoretical Computer Science, pages 149–184. DIMACS, 1997.
[99] Alfred North Whitehead and Bertrand Russell. Principia Mathematica, volume I,II,
III. Cambridge University Press, Cambridge, 1910, 1912, 1913.