Você está na página 1de 8

ClassesdeProblemas

PalomaRibeiro,RafaelFogliato

CursodeCinciadaComputaoUniversidadeFederaldoPampa(Unipampa)
CampusdeAlegrete

Resumo
.Opresentetrabalhotemcomoobjetivo estudar problemaspertencentesasclassesP
e NPCompleto, contendo definio, possvel soluo e comentrios sobre os problemas
escolhidos.

1.ProblemasClasseP

1.1
CAMINHO

Definio. [1] Um grafo direcionado


G
contm ns
s e
t
. O problema do CAMINHO
determinarseumcaminhodirecionadoexistedesparat.Seja
CAMINHO = {(G,s,t) |
G um grafo direcionadoquetemumcaminhodirecionadode
spara
t
}.

Prova.
Umalgoritmodetempopolinomial
M
para
CAMINHO
operadaseguintemaneira:
M
=Sobreaentrada(
G,s,t
)ondeGumgrafodirecionadocomns
s
e
t
:
1. Coloqueumamarcasobreon
s
.
2. Repitaosseguintespassosatquenenhumnadicionalestejamarcado.
3. Faa uma varredura nas arestas de
G
. Se uma aresta (
a,b
) for encontrada indo deum
nmarcado
a
paraumnmarcado
b
,marqueon
b
.
4. Setestivermarcado,
aceite
.Casocontrrio,
rejeite
.

Os estgios 1 e 4 so executado apenas uma vez, o estgio 3 roda no


m vezes, cada vez,
exceto na ltima vez ele marca um n adicional em
G
. Por conseguinte, o nmero total de
estgiosusadosnomximo1+1+
m
,dandoumpolinmionotamanhode
G
.
Os estgios 1 e 4 de
M so facilmente implementados em tempo polinomial sobre qualquer
modelo determinstico razovel, o estgio 3 envolve uma varredura da entrada e um teste, o
que tambm facilmenteimplementadoemtempopolinomial.Portanto
Mumalgoritmode
tempopolinomialpara
CAMINHO
.

Comentrio.
Para obter um algoritmo de tempo polinomial paraCAMINHO
,umamaneira
usar um mtodo de busca em grafo tal como busca em largura,marcandotodos osnsem
G
quesoatingveisapartirde
s
porcaminhosdirecionados.

1.2
PRIMENTSI

Definio.
[1] Dois nmeros so
primos entre si se 1 o maior inteiro que divide ambos.
Por exemplo, 10 e 21 so primos entre si, muito embora nenhum dos dois seja um nmero
primo em si prprio, enquanto que 10 e 22 no so primos entre si porque ambos so
divisveis por 2. Seja
PRIMENTSI o problema de se testar se dois nmeros so primosentre
si:
PRIMENTSI=
{
(x,y)
|
x
e
y
soprimosentresi}.


Prova.
Oalgoritmoeuclideano,E,comosegue:
E=Sobreaentrada(x,y),onde
x
e
y
sonmerosnaturaisembinrio:
1. Repitaatque
y
=0.
2. Faaaatribuiox
<

xmody
.
3. Intercambieoscontedosde
x
e
y
.
4. Dcomosada
x

Oalgoritmo
R
resolve
PRIMENTSI
,usando
E
comoumasubrotina.
R=Sobreaentrada
(x,y)
,onde
x
e
y
sonmerosnaturaisembinrio:
1. RodeEsobre
(x,y)
.
2. Seoresultadofor1,
aceite
.Casocontrrio,
rejeite
.

Para analisar a complexidade de tempo de


E
, primeiro mostramos que toda a execuo do
estgio 2 (exceto possivelmente o primeiro), corta o valor de x em pelo menos a metade.
Aps o estgio 2serexecutado,
x< ydevidonaturezadafuno
mod.A
psoestgio3,
x>
y
porque os doistiveramseuscontedosintercambiados.Porconseguinte,quandooestgio2
subsequentemente executado,
x > y
. Se x/2 >= y, ento x mod y < y =< x/2 e x cai no
mnimo pela metade. Se
x/2 <
y
, ento x
mod
y=x
y<x/2excainomnimopelametade.
Os valores so intercambiados toda vez que o estgio 3 pe executado,por tanto cadaumdos
valores originais de
x e
y so reduzidos a pelo menos metade em passagens alternadas pelo
lao. Por conseguinte o nmero mximo de vezes que os estgios 2 e 3 so executados o
mnimo entre log
. Esses logaritmos so proporcionais aos comprimentos das
2 x e log
2 y
representaes, dando o nmero de estgios executads como
O
(n), Cada estgio E usa
somentetempopolinomial,portantootempototaldeexecuopolinomial.

Comentrio. Como esse problema puramente matemtico, verificando a relaoentreos


valores, se so primos entre si, fcil deduzir que esse problema tem uma soluo possvel
emtempopolinomial.Soluoessaquefoiapresentadaaquinaformadealgoritmos.

1.3LINGUAGENSLIVREDECONTEXTO

Definio.
[1]TodalinguagemlivredecontextomembrodeP.

Prova.
O algoritmo D implementa a prova, Seja G uma GLC na forma normal deChomsky
L.AssumindoqueSavarivelinicial.

D=Sobreaentradaw=w1...wn:

1. Sew=
eS>
umaregra,aceite.

2. Parai=1atn,
3. ParacadavarivelA,
4. TesteseA>b,umaregra,ondeb=w
i
.
5. Sefor,coloqueAnatabelaa(i,i).
6. Paral=2atn,
7. Parai=1atnl+1,

8. Faaj=i+l1,
9. Parak=iatj1,
10. ParacadaregraA>BC,
11.
Setabela(i,k)contmBetabela(k+1,j) contmC,
natabela(i,j).
12. SeSestemtabela(1,n),
aceite
.Casocontrrio,
rejeite
.

pontaA

Cada estgio facilmente implementado para rodar em tempopolinomial. Osestestgios4


e 5 rodam em no mximo
nv vezes, onde v o nmero devariveisemGeumaconstante
fixa independente de n,daessesestgiosrodam
O
(n)vezes,Oestgio6rodamnomximon
vezes. Cada vez que o estgio 6 roda, o estgio 7 roda no mximo n vezes. Cada vez que o
estgio 9 roda, o estgio 10 roda r vezes, onde r o nmero de regras de G e uma outra
constante fixa. Por conseguinte o estgio 11, o lao mais interno do algoritmo, roda O(n)
vezes.SomandoototalmostraqueDexecuta
O
(n)estgios.

Comentrio.

Esse problema visa determinar se uma linguagem livre decontextoouno,umconceitode


linguagem formais. Para isso a linguagem analisada por um algoritmo de verificao aqui
apresentado, e esse mesmo algoritmo executado em tempo polinomial, o que prova que
esseproblemadeclasseP.

1.4QUICKSORT

Definio:
[2] um dos algoritmos de ordenao que usa diviso e conquista, que consistem
em particionar o problema em instncias menores, resolvendoos sucessiva e
independentemente, e ao final combinandoas para obter a soluo do problema original. O
resultadoumvetorcompletamenteordenado.

Problema da ordenao: rearranjar um vetor


A[p..r] de modo que ele fique em ordem
crescente.

Prova.
Oalgoritmosegueosseguintespasso:

1. Escolhaumelementodalista,denominadopiv
2. Rearranje a lista de forma que todos os elementos anteriores ao piv sejam menores
queele,etodososelementosposterioresaopivsejammaioresqueele.
3. Recursivamente ordene a sublista dos elementos menores e a sublista dos elementos
maiores
A base da recurso so as listas de tamanho zero ou um, que esto sempre ordenadas. O
processo finito,poisacadaiteraopelomenosumelementopostoemsua posiofinale
nosermaismanipuladonaiteraoseguinte.

Oalgoritmodeordenao
Quicksort
podeterasseguintescircunstncias:

1. Ordenarumasequnciaquejestemordem,comocusto
n

2. Ordenarumasequnciatotalmenteembaralhada,quepossuicusto
n
*log
n

No pior caso, o algoritmo ser


O
(n), vemos assim, que pode ser resolvido em tempo
polinomial.

Comentrio.
Sendoo
Quicksort
umalgoritmodeordenaoemtempopolinomial
umproblemadaclasseP,queabrangeamaiorpartedosalgoritmosdeordenao.

2.ClassedeProblemasNPCompletos
2.1Coberturadevrtices
Definio.[3]
UmacoberturadeumgrafonodirigidoG=(V,E)umsubconjuntoVV
tal que (u, v)
E, ento u
V ou v
V. Ou seja, cada vrtice cobre suas arestas
incidente, e uma cobertura de vrtices para G um conjunto de vrtices que cobre todas as
arestas em E. O tamanho da cobertura de vrtices igual ao nmero de vrtices contidos
nessacobertura.
O problema da cobertura de vrtices consiste em encontrar uma cobertura de vrtices de
tamanho mnimo em um dado grafo, ou seja, desejase determinar se um grafo tem uma
coberturadevrticesdetamanhokdado.Adefinioformaldesseproblema:
VERTEXCOVER = {<G, k> : grafo G tem uma cobertura de vrtices de
tamanhok}.

Prova.
Primeiro necessrio demonstrar que
VERTEXCOVER
NP. Primeiro suposto
um grafo G =(V,E)eumvalorinteirok.O certificadoescolhidoacoberturadevrticesV
V. O algoritmodeverificaoutilizadoafirmaque|V|=k,eentoverificasetodaaresta
uev
V.
O problema provado como NPdifcil comparandoo com o problema do clique, esse
algoritmo de reduo tomando como entrada uma instncia <G, K> do problema do clique.
Em seguida tem que ser provado que o resultado datransformaousandooCLIQUEuma
reduo.
Visto que esse problemaNPcompleto,noesperadoencontrarumtempopolinomial para
aencontrarumacoberturadevrticesdetamanhomnimo.

Comentrio.
Mesmo que o problema da cobertura de vrtices seja considerado um
NPcompleto, existem algoritmos de aproximao de tempo polinomial que produzsolues
aproximadas para o problema de cobertura de vrtices. Esse fato indica que, mesmo queum
algoritmo seja consideradoNPcompletonoimpossvelprojetarumalgoritmoqueobtenha
resultadosaproximadosparaesseproblemaemtempopolinomial.

2.2CicloHamiltoniano
Definio. [3]
Um ciclo hamiltonianodeumgrafonodirigidoG=(V,E)umciclosimples
no qual est presente cada vrtice em V. Caso ografocontenhaumciclohamiltonianoele
definido como hamiltoniano, caso contrrio ele no hamiltoniano. Um exemplo de grafo
hamiltoniano um dodecaedro, enquanto um exemplo de um grafo no hamiltoniano um
grafobipartidocomumnmerompardevrtices.
O problema do ciclo hamiltoniano consiste em definir se um determinado grafo tem ciclo
hamiltoniano.Alinguagemformaldesseproblema:
HAMCYCLE
={<G>:Gumgrafohamiltoniano}
Prova. Para provar que esse problema um NPcompleto primeiro necessrio demonstrar
que
HAMCYCLE pertence a NP. No grafo G =(V, E)retiradaasequnciadevrtices|V|,
essa sequncia ento conferido por um algoritmo para checar se cada vrtice em V
percorrido pelomenosuma veznessasequnciaese,comopontodepartidasendotambmo
pontofinal,elaformaumciclonografoG.
Apsisso,necessrioprovarque
HAMCYCLE
NPcompleto,dadoumgrafonodirigido
G=(V,E)eumvalorinteirok,construdoumgrafonodirigidoG=(V,E),ques
possuiumciclohamiltonianocasoGtenhacoberturadevrticesdetamanho
k
.
Para construir esse grafo utilizadoumfragmentodegrafoparaimporalgumaspropriedades
ao grafo G', esse fragmento denominado
widget
. Para cada aresta (
u,v
)pE,ografoG'que
foi construdoconterumacpiadessewidget
.Almdaestruturainternado
widget
tambm
imposta as propriedades desejadas limitando as conexesentreowidgeteorestantedografo
G. Essalimitaofeitapradiminuironmerodecaminhosquepassempelo
widget evisite
todososvrtices.
Os nicos vrtices presentes em V1 alm dos vrtices dos widgets so os vrtices seletores
(s1, s2, , s
k
). So usadas arestasincidentes emvrticesseletoresdeGparaselecionarosk
vrticesdacoberturanografoG.
Alm das arestas em
widgets
, E contm dois outros tipos de arestas. Primeiramente para
cada vrtice u
V so adicionadas arestas para unirparesde
widgetsparaassimformarum
caminho que contm todos os
widgets que correspondem aarestasincidentesemG.criado
um caminho em G quepassaportodosos
widgets
quecorrespondemaarestasincidentesem
u e adicionando elas a E. O motivo dessa ao com as arestas que, se escolhermos um
vrtice u V na cobertura de vrtices de G, possvel construir um caminho em G que
cobre todosos
widgetsquecorrespondemaarestasincidentesemu.Ooutrotipodearestaem
E une o primeiro e ltimo vrtice de cada um dos caminhos at a cada um dos vrtices
seletores.

Aps isso, caso o tamanho de G seja polinomial no tamanho de G, mostradoqueGpode


ser construdo em tempo polinomial no tamanho de G. Os vrticesdeGsoosdos
widgets
,
maisosvrticesseletores.
Depois disso necessrio mostrar que a transformao do grafo G em Gumareduo,ou
seja, necessrio mostrar que Gtemumacoberturadevrticesdetamanhokseesomentese
G tem um ciclo hamiltoniano. So includas as arestas que ligam todos os
widgets que
correspondem a arestas incidentes em u e tambm to includas as arestas contidas nesses
widgets
, dependendo se a aresta coberta por um ou dois vrtices. Aps isso possvel
verificar se essas arestasformamumciclo.Casoesseciclo(se existir)visite cadawidgetuma
ou duas vezes,dependendodeumoudoisvrticescobrir(em)suaarestacorrespondente.Seo
ciclo visitar cada vrtice em cada
widget de G mais todovrticeseletoreledefinidocomo
hamiltoniano.
Comentrio. Para definir se um dado grafo hamiltoniano ou no (todos os vrtices so
visitados uma ou duas vezes). Para isso construdo um grafo auxiliar e, com o tamanhode
construo desse grafo e seu tempo polinomial, possvel determinar se o ciclo
hamiltoniano, e todo esse processo tambm tem como propsito provar que esse problema
NPcompleto.

2.3.ProblemadoClique
Definio. Um clique em um grafo no dirigido G = (V, E) um subconjunto V
V de
vrtices, no qual cada par est ligado por uma aresta em E. Ou seja, o clique um subgrafo
completo de G. O tamanho desse subgrafo igual ao nmero de vrtices que contm. O
problema do clique consistem em encontrar um subgrafo de tamanho mximo em um grafo.
Esse problema categorizado como um de deciso, entoaquestoperguntarseumclique
deumdadotamanhokexistenografo.Adefinioformaldesseproblema:
CLIQUE={<G,K>:Gumgrafocomumcliquedetamanhok}.

Um algoritmo direto (e ingnuo) para determinar o tamanho mximo de um clique de um


grafo G = (V, E) faria uma lista de todosossubconjuntoskdeVeconferircadaumparaver
se ele forma um clique. O tempo de execuo desse grafo at poderia ser feito em tempo
polinomial, porm se o tamanho k do clique seja prximo de |V|/2 esse tempo de execuo
seriasuperpolinomial.
Prova. Para demonstrar que CLIQUE
NP, para um dado grafo G = (V, E) utilizado o
conjunto V
V de vrtices no clique como uma lista para G. possvel verificar se V
um clique em tempo polinomial verificando se, para cada par u, v
V, a arestapertencea
E.
Aps isso provado que 3CNFSAT <=p CLIQUE, o que j demonstra que o problemado
cliqueNPdifcil.

construdoumgrafoGondeafrmulaF(queserinstanciadapor2CNFSAT)s
satisfazvel se e somente se G ter um clique de tamanho k. O grafo ento construdo da
seguinte maneira. Para cada clusula da frmula inserida uma tripla devrticesv1,v2ev3
emV.Umaarestainseridaentredoisvrtices
vr
e
vs
seambasasafirmativassovlidas:

vr
e
vs
estoemtriplasdiferentes,ouseja,rdiferentedese
seusliteraissocoerentes,
lr
noanegaode
ls
.
A partir dessa frmula F possvel construir um grafo em tempo polinomial. E
necessrioprovarqueatransformaodeFemGumareduo.
Como possvel reduzir uma instnciaqualquerde3CNFSATaumainstnciadeCLIQUE
isso sozinho j basta para afirmar que o CLIQUE um NPdifcil, j que se houvesse um
algoritmo em tempo polinomial que resolvesse CLIQUE em grafos gerais ele tambm
resolveriaCLIQUEemgrafosirrestritos.
Comentrio. O clique consiste em um subconjunto completo dentro de um grafo, e o
problema do clique pode ser resumido em encontrar o maior clique possvel.Aprovadeque
esse problema NPcompleto feita usando como auxlio o problema de satisfazibilidade
3CNF e traando um paralelo entre ambos problemas reduzindo o CLIQUE a partir da
satisfazibilidadedasfrmulas.

2.4.CaixeiroViajante
Definio.
[3] No problema do caixeiro viajante um vendedor deve visitar n cidades.
possvel modelar esse problema como um grafo, onde cada cidade que o vendedor deve
visitar representada por um vrtice, e o vendedor deve fazer um percurso onde ele visita
todas as cidades exatamenteumavez,e,paracadaviagementrecidadeeleincorreemcusto
inteiro no negativo. O mote principal desse problema encontrar o caminho no qual o
vendedorfaaessepercursocomomenorcustopossvel.Adefinioformaldoproblema:
TSP={<G,c,k>:G=(V,E)umgrafocompleto,
cumafunodeVxV>|N,
k

|Ne

G tem um percurso de caixeiroviajante comcustomenor


ouigualak}
Prova.
Primeiro mostrado que TSP pertence a NP. Com uma instncia do problema
verificado por umalgoritmoasequnciadenvrticesnopercurso,testandoseessasequncia
percorrecadavrticeapenasumavez.
Para provar que TSP NPcompleto, comparamos esse problema ao do ciclo
hamiltoniano, que, por sua vez, um problema NPcompleto. Se no grafo instanciado em
TSP houver um ciclo hamiltoniano, possvel deduzir que TSP tambm um problema
NPcompleto.
Comentrio. O problema do caixeiro viajantemuitosemelhanteaodociclohamiltoniano,
pois em ambos necessrio encontrar um caminho no grafo que percorra todososvrtices
do grafopelomenosumavez.Aprincipaldiferenaentreelesque,noproblemadocaixeiro
viajante, alm de descobrir uma rota que percorra todos os vrtices, tambm necessrio
encontrarocaminhomenoscustoso.
Como j foi provado que ociclohamiltoniano NPcompletoeporessasemelhanaentreos
dois problemas possvel provar que o problema do caixeiro viajante tambm
NPcompleto. Mesmo sendo possvel calcular o caminho de menor custo em tempo

polinomial, caso haja um ciclo hamiltoniano no grafo produzido, no ser mais possvel a
soluoemtempopolinomial,oquecomprovaofatodesseproblemaserNPcompleto.

Referncias

[1]SIPSER,MICHAEL.UmaIntroduoaTeoriadaComputao.2005
[2]AulaQuicksort.USP.Disponvel
em:<
http://www.ime.usp.br/~pf/algoritmos/aulas/quick.html
>.Acessoemnovembrode2015.
[3]ThomasH.Cormen,Algoritmos,Traduo3rded,2012

Você também pode gostar