Você está na página 1de 9

Teoria dos Conjuntos

Este texto baseia-se em J. Ferreira, Elementos de Lgica Matemtica e Teoria dos


Conjuntos, reedio dos captulos iniciais de Lies de Anlise Real, Departamento de Matemtica / Instituto Superior Tcnico, 2001, muito embora existam pequenas diferenas de

notao. Chama-se a designao a uma identificao de um objecto matemtico, seja nmero, conjunto, funo, etc. Uma proposio uma afirmao que pode ser verdadeira ou falsa, mas nunca uma coisa e outra, sendo duas proposies (p e q) equivalentes se tiverem o mesmo valor lgico ( p q ). A conjuno de duas proposies p e q, designa-se por
pq,

uma proposio que verdadeira se e s se ambas as proposies forem

verdadeiras, sendo a disjuno p q tambm uma proposio que verdadeira se e s se alguma das proposies for verdadeira. Dada uma proposio p, a sua negao designada por p , sendo uma proposio verdadeira se e s se p for falsa, pelo que verifica-se (p ) p . Qualquer que sejam as proposies p e q, verificam-se as primeiras leis De Morgan: ( p q ) p q ; ( p q ) p q . Uma implicao entre duas proposies p e q, representa-se por p q sendo uma proposio verdadeira se e s se, caso p seja verdadeira, ento q tambm verdadeira. Sobre designaes e proposies, podem existir variveis, sendo as quais normalmente representadas por letras minsculas. As variveis tm de ser substitudas por objectos do respectivo domnio (por exemplo um nmero real, ou conjunto) de forma a obter designaes ou proposies. Uma designao ou proposio que tenha variveis, chama-se expresso designatria ou expresso proposicional respectivamente. Com expresses proposicionais, pode-se obter proposies utilizando o quantificador universal ou existencial: x px significa que para qualquer que seja o valor da varivel x, a proposio p x verdadeira; x px significa que existe um valor da varivel x, para a qual a proposio p x verdadeira, referindo-se para valores no domnio de x naturalmente. As

segundas leis De Morgan permitem-nos efectuar a negao de proposies com quantificadores: x p x x p x ; x px x p x . Os conjuntos so uma coleco de elementos distintos, sendo por exemplo = {1,2,3,...} o conjunto de nmeros naturais. Representa-se por x X e x X s proposies de x pertence a X e x no pertence a X respectivamente. Normalmente os conjuntos so definidos por expresses proposicionais, sendo os elementos do conjunto os que satisfazem a expresso proposicional: X = {x : p x }. O nmero de elementos de um conjunto A, designa-se por # A = 1 .Um conjunto que A est contido em B, ou A subconjunto de
xA

B, se e s se: x x A x B , escrevendo-se abreviadamente A B sendo a negao de


A B.

Naturalmente que A B B A A = B . Um conjunto sem elemento nenhum um

conjunto vazio e representa-se por: = { }. Dados dois conjuntos A e B, pode-se definir a interseco e unio dos conjuntos: A B = {x : x A x B} , A B = {x : x A x B} . Caso
A B =

diz-se que A e B so conjuntos disjuntos. A diferena de conjuntos definida

por A \ B = {x : x A x B} , sendo formada pelos elementos de A que no pertencem a B. Um par ordenado (a, b ) so duas designaes ordenadas, sendo (a, b, c ) um terno ordenado, e (a1 , a2 ,..., an ) uma sequncia. Duas sequncias so iguais se e s se:

(a1 , a2 ,..., an ) = (b1 , b2 ,..., bn ) i{1,...,n}ai = bi . Um produto cartesiano de n conjuntos, definido


por: A1 ... An = {(x1 ,..., xn ) : x1 A1 ... xn An } . Quando se tem A1 = A2 = ... = An = A , chama-se de n potncia de A e simplifica-se para: A1 ... An = An . Um subconjunto R de A1 ... An , chamado uma relao sobre A1 ,..., An , sendo no caso de n=2 chamada de relao binria. Se R uma relao binria, muitas vezes pode-se abreviar (a, b ) R a R b , como o caso, por exemplo, da desigualdade, que uma relao binrias em 2 : " " = {(x, y ) 2 : x y}. Dada uma relao binria R tem-se que R 1 = {(x, y ) : ( y, x ) R} a relao inversa de R, sendo R chamada de simtrica se e s se x , y (x, y ) R ( y, x ) R , anti-simtrica, se e s se
x y ( x, y ) R ( y , x ) R , xA ( x, x ) R ,

de reflexiva se e s se xA (x, x ) R , de irreflexiva se e s se

e transitiva se e s se x , y , z (x, y ) R ( y, z ) R (x, z ) R .

Uma relao F A B uma funo se e s se (x, y ) F (x, z ) F y = z . Para funes, utiliza-se a seguinte abreviatura: (x, y ) F Fx = y . Uma funo diz-se sobrejectiva se e s se yB xA Fx = y , e injectiva se e s se x , yA x y Fx Fy , sendo bijectiva se for simultaneamente sobrejectiva e injectiva.

Problemas e Complexidade
A teoria da complexidade dos problemas, estuda problemas de optimizao, oferecendo uma classificao dos problemas relativamente sua complexidade. O conhecimento da classe a que pertence um problema, muito importante pois permite saber se valer a pena procurar um algoritmo eficiente para obter a soluo ptima, ou se por outro lado, mais vale investir numa heurstica e ficarmo-nos por uma soluo sub ptima. Esta seco baseada no livro de M. Garey; D. Johnson, Computers and Intractability: A Guide to the Theory of NP-Completeness, W.H. Freeman, San Francisco, 1979.

Noes Bsicas
De forma informal, pode dizer-se que um problema fica definido com a caracterizao de uma instncia do problema, e uma pergunta sobre a instncia, ou seja, o que se pretende saber. Um problema diz-se de deciso se a pergunta do tipo sim ou no, de procura se for pedida uma soluo caso exista, e de optimizao se for pedida a melhor soluo segundo uma funo de avaliao, sendo de minimizao ou maximizao de acordo com o objectivo pedido de minimizar ou maximizar a funo. Um problema de deciso pode ser facilmente modelado como um problema de procura, basta que no caso do valor a retornar ser sim, devolver uma soluo ptima sim, devolvendo o conjunto vazio no caso do no, tal como um problema de optimizao fazendo o conjunto de solues igual s solues que minimizam ou maximizam o valor da funo. Para analisar a complexidade dos problemas, estuda-se a relao do tempo que um algoritmo leva a resolver uma instncia do problema, com a dimenso da instncia. Basicamente h dois tipos de algoritmos, os que tm o tempo de execuo limitvel por um polinmio dependente do tamanho da instncia, e dos que no so limitveis por um polinmio. Ao primeiro tipo de algoritmos chamam-se eficientes, e aos segundo tipo de

algoritmos no eficientes. Tal distino justificada porque um algoritmo no limitado por um polinmio tem normalmente uma evoluo exponencial, pelo que acaba em instncias de dimenses reais por disparar em termos de tempo, e ser sempre inferior a um algoritmo limitado por um polinmio. Duas questes se levantam, como medir a dimenso de uma instncia e como medir o tempo de processamento de um algoritmo. Estas questes justificam-se uma vez que ao implementar um algoritmo pode-se utilizar codificaes de uma instncia mais ou menos eficientes, bem como implementar um algoritmo numa linguagem mais rpida, ou correr o mesmo cdigo num computador mais rpido. Assim sendo, poder-se- pensar que o estudo da relao entre o tamanho da instncia e o tempo de processamento est dependente de muitas condies especficas e no pode ser geral. Tal no entanto no verdade, uma vez que as diferenas referidas nunca podem ser exponenciais, quanto muito uma determinada linguagem (ou um computador mais rpido) multiplica por um factor o tempo de processamento, tal como o tamanho de uma instncia apenas pode variar por um factor, devido diferena entre uma boa e uma m codificao. Para poder saber se um algoritmo eficiente ou no, e poder distinguir entre dois algoritmos eficientes de forma a escolher o mais rpido, podia-se pensar num esquema de testar os diversos algoritmos num conjunto de instncias do problema e analisar os tempos de resoluo dos diversos algoritmos. Os que tivessem um comportamento exponencial, seriam no eficientes, e os eficientes seriam classificados de acordo com o tempo de processamento. Tal operao no entanto muito custosa e fica dependente do conjunto de instncias escolhidas. A soluo acaba por ser simples como veremos de seguida, dado no interessar o calculo de tempos exactos uma vez que tais tempos esto dependentes da mquina e compilador, basta contabilizar o nmero mximo de comandos bsicos que um algoritmo necessita, dependendo do tamanho da instncia.

Complexidade temporal de um algoritmo


Sendo p N uma expresso designatria com uma varivel N, o tamanho da instncia, que um mximo do nmero de operaes bsicas necessrias a um determinado algoritmo, O( p N ) a complexidade temporal desse algoritmo. Dadas duas expresses

designatrias p e q, diz-se que O( p N ) < O(q N ) lim pN = 0 , pelo que pode-se concluir N
qN

diversas

regras

de

simplificao,

sendo

reais

positivos

quaisquer:

O( p N ) + O(q N ) = O( p N + q N ) = max{O( p N ), O(q N )}; O N g < O (1 + k )

O(k p N ) = O( p N ) ;

O (N g ) < O (N g + k ) ;

( )

);

O(log N ) < O( N ) .

Pode-se agora definir mais rigorosamente, que um

algoritmo eficiente se existir um g positivo tal que a complexidade temporal do algoritmo seja inferior a O(N g ) , sendo no eficiente caso contrrio. Por exemplo, caso de existam dois ciclos, um dentro do outro, em que so percorridos todos os elementos da instncia com N elementos, e dentro do ciclo so executadas duas operaes, o nmero de passos ser 2 N N , sendo a complexidade temporal O(N 2 ) . Notar que neste exemplo, se pretendermos percorrer todos os pares de elementos mas no interessar a ordem, a varivel do ciclo interior basta comear no elemento seguinte ao da varivel anterior, reduzindo o nmero de passos para 2( N (N 1) 2) = N (N 1) , mas a complexidade temporal permanece igual. Suponha-mos que temos disponvel outro algoritmo para o mesmo problema que necessita de dois ciclos separados, com 4 operaes em cada ciclo e 10 operaes fora de ambos os ciclos. O nmero de passos ser 10 + 4 N + 4 N = 10 + 8 N , sendo a complexidade temporal de O(N ) , e portanto melhor que o primeiro algoritmo. Vejamos um ltimo caso, em que para cada elemento o algoritmo considera marca-lo com uma de 3 cores, repetindo o processo para os restantes elementos, aps o qual troca a cor e repete o processo para os restantes elementos, e finalmente experimenta a ltima cor repetindo o processo novamente. Este tipo de algoritmo, normalmente implementado de forma recursiva, requer um nmero de passos da ordem de k 3N , o que dar uma complexidade temporal de O (3N ), sendo no s pior que os restantes algoritmos, como tambm no eficiente dado no estar limitado por um polinmio.

Teoria da complexidade
Um problema de deciso

definido por um par (D , Y ) com o conjunto de

instncias e as instncias com a resposta sim respectivamente, em que Y D . Um algoritmo M, diz-se que resolve o problema

se para cada instncia I D retornar sim

se I Y e no caso contrrio. Um exemplo de um problema, o PARTITION, que pode ser definido como:
PARTITION = (D , Y ) 1,..., n}, f : A + D = A = {

{(

)}

Y = ( A, f ) D : A' A f (i ) = f (i ) i A' i A / A '

No h no entanto necessidade de todo este formalismo, basta definir a instncia e a pergunta. Neste caso a instncia um conjunto A de elementos e uma funo f : A + , sendo a pergunta se existe uma diviso dos elementos de A para a qual a soma dos valores da funo f sejam iguais. Consideramos dois tipos de mquinas, as determinsticas e as no determinsticas. A primeira executa um conjunto de instrues sequencialmente e deterministicamente, enquanto que a segunda tem um mdulo adivinhador que coloca um palpite para a soluo e pode realizar um nmero no limitado de sequencias de instrues em paralelo. No existem naturalmente mquinas no determinsticas, o seu interesse como veremos terico. Caso exista um algoritmo M que resolva o problema numa mquina determinstica em tempo polinomial, ento P . Caso exista um algoritmo M que resolva o problema

numa mquina no determinstica em tempo polinomial, ento

NP .

Como o

algoritmo de uma mquina determinstica pode ser utilizado numa mquina no determinstica ignorando a adivinhao, resulta que
P NP .

O tamanho da instncia pode

ser medido por uma qualquer regra razovel, uma vez que a diferena para outra medida pode ser limitada por um polinmio, sendo insignificante para efeitos de determinar se o tempo polinomial ou no. Facilmente se pode provar que um dado problema pertence a P, basta para tal que se apresente um algoritmo polinomial, muito embora por vezes esse algoritmo possa ser complicado. Para provar que um problema pertence a NP preciso fornecer apenas um algoritmo que utilize a adivinhao (a soluo) e a verifique em tempo polinomial. O mais difcil ser provar que um dado problema no pertence a P, ou seja, que no existe

um algoritmo que resolva o problema em tempo polinomial. A dificuldade de tal ordem que at hoje ningum o fez para qualquer problema em NP. Uma transformao de um problema = (D , Y ) para um problema ' = (D ' , Y ' ) , uma funo polinomial f : D D ' , em que ID I Y f (I ) Y ' , representando-se ' .

Naturalmente que se

' P P ,

e o mesmo para NP, pelo que pode-se provar que um

problema pertence a P ou NP desta forma. Um problema NP-completo se existir uma transformao de qualquer problema de NP para , ou seja: NP completo 'NP ' . Esta definio significa que no existem problemas mais complexos em NP que os que pertencerem a NP-completo. Dada a dificuldade de provar que (no) existe um algoritmo polinomial para certos problemas em NP, esta definio permite agrupar um bom conjunto de problemas que apenas pertencer a P caso P=NP. O primeiro problema a provar-se pertencer a esta classe foi o SAT, que estudado neste texto no captulo 4. Naturalmente que

( NP completo ') ' NP completo , sendo esta a tcnica de prova utilizada,


transformar um problema NP-completo para o problema em causa de forma a provar que NP-completo. Um problema numrico se o valor do maior nmero na instncia no poder ser limitado por um polinmio no tamanho da instncia. Sobre um problema = (D , Y ) numrico pode-se definir um sub problema p = (D = {I D : Max[I ] p(Tam[I ])}, D Y ),
p p

sendo p um polinmio, Max[I] o maior nmero na instncia e Tam[I] o tamanho da instncia. p est limitado pelos valores numricos, no sendo portanto um problema numrico. Se NP completo p P , ento existe um algoritmo pseudo polinomial para
,

dado que pode ser resolvido em tempo polinomial caso sejam restringidos os valores

numricos. Nesse caso diz-se que pertence a NP-completo no sentido normal, sendo no sentido forte se p NP completo . Naturalmente os problemas no numricos pertencem a NP-completo no sentido forte dado que pode-se limitar os valores numricos que o problema fica igual e portanto NP-completo. O problema PARTITION referido anteriormente NP-completo no sentido normal, enquanto que o SAT NP-completo no sentido forte.

Um problema de procura definido por um par (D , {S [I ] : I D }) com o conjunto de instncias e para cada instncia um conjunto de solues. Um algoritmo M, diz-se que resolve o problema se para cada instncia I D retornar uma soluo s S [I ] , ou retornar no caso o conjunto seja vazio. Um exemplo de um problema, o TSP, que pode ser definido como:
TSP = (D , {S [I ] : I D }) D = C = { 1,..., n}, d : A2 +

{(

)}

n n S [I ] = c1 ,..., cn Permutaes(C ) : c '1 ,...,c 'n Permutaes (C )d c 'n ,c '1 + d c 'i ,c 'i+1 < d cn ,c1 + d ci ,ci+1 i =1 i =1

Naturalmente, um problema de deciso = (D , Y ) pode ser formulado como um problema de procura = (D , {S [I ] = {" sim": I Y }: I D }) . Diz-se que um problema ' Turing reduzivel a , escrevendo-se ' T , se existir um algoritmo M numa mquina determinstica, para resolver o problema ' , que faz uso de um algoritmo M para resolver o problema , em que M polinomial se M for polinomial. Naturalmente que se ' ento ' T dado que uma transformao um caso particular em que em que o algoritmo M chamado apenas uma vez. Seja um problema qualquer, pertena ou no a NP, diz-se que NP-difcil se existir uma reduo de Turing de um problema NP-completo: NP dificil 'NP completo ' T , sendo estes problemas naturalmente pelo menos to complicados como um problema NPcompleto. Um problema NP-simples se existir uma reduo de Turing para um problema NP:
NP simples 'NP T ' ,

sendo estes problemas no mais

complicados que um problema NP-completo. A um problema simultaneamente NP-difcil e NP-simples, chama-se NP-equivalente, dado que no mais simples nem mais complicado que um problema NP-completo. Um problema de optimizao

definido

por

um

triplo

(D , {S [I ] : I D }, m : D S [I ] ) com o conjunto de instncias, para cada instncia um


conjunto de solues, e uma funo valor. Ao menor valor de todas as solues de uma instncia assumindo-se um problema de minimizao chama-se de valor ptimo:
OPT (I ) .

Diz-se que um algoritmo M de aproximao, se para cada instncia I D

devolver uma soluo s S [I ] , sendo o valor da soluo m (I , s ) abreviado para M(I). Caso se garanta que para todas as instncias M(I)=OPT(I), ento o algoritmo de optimizao. Ainda no foi encontrado nenhum problema que pertena simultaneamente a P e NPcompleto, pelo que caso saiba que o problema NP-completo, deixa de ter sentido a procura de um algoritmo eficiente, a no ser que se esteja a tentar resolver um problema em aberto com j largas dcadas. Aconselha-se neste caso ser a construo de heursticas, largando a questo da optimalidade, alargando o conjunto de solues de interesse s solues quase ptimas.

Você também pode gostar