Você está na página 1de 8

Digrafos

Definições Básicas: Digrafos

Digrafos Um digrafo é um par D(V,E).


V é um conjunto de vértices.
Notas de aula da disciplina IME 04-10829 E é um conjunto de pares ordenados de vértices.
(Algoritmos em Grafos)
2 4
Paulo Eustáquio Duarte Pinto
(pauloedp at ime.uerj.br) 1 6

3 5

V = {1, 2, 3, 4, 5, 6}
dezembro/2009 E = { (1, 2), (1, 3), (2, 5), (3, 5), (4, 2), (5, 4), (5, 6) }
1 2

Digrafos Digrafos

Buscas em Digrafos Buscas em Digrafos


2 4 2 4

Buscas em Profundidade/Largura Busca em Profundidade

1 6 1 6

3 5 3 5
Florestas de Profundidade do digrafo
Usam-se os mesmos algoritmos mostrados para grafos
simples. Aresta de avanço
1
Analogamente às buscas em grafos simples, também temos
2 1
árvores (florestas) de Profundidade e de Largura.
Aresta de retorno
Mas novos tipos de arestas surgem, as arestas de avanço
e de cruzamento. As arestas são, então: 2
-arestas de árvore 5
-arestas de retorno
-arestas de avanço 5 Aresta de
-arestas de cruzamento 3 4 cruzamento
6
3
3 4 6 4

Digrafos Digrafos

Grafos - Componentes fortemente conexos Grafos - Componentes fortemente conexos


2 4 2 4
Conectividade em digrafos:
Algoritmo de Kosaraju:
Faz BP no digrafo e no digrafo
A conectividade em digrafos muda,
1 6 transposto.O digrafo transposto é 1 6
em relação a grafo simples, porque
o digrafo original com todas as a-
não temos simetria. No exemplo
restas invertidas. Daí obtem-se os
mostrado, o vértice 1 alcança todos 3 5 3 5
componentes fortemente
os demais e não é alcançado por
conexos(cfc).
nenhum deles.
Esboço do algoritmo de Kosaraju:
Componentes fortemente conexos (cfc):
Subdigrafos maximais tal que todos os vértices de cada componente
1. BP e geração do vetor Pv, que indica a ordem de saída dos
alcançam os demais vértices desse componente.
vértices na BP.
No digrafo do exemplo, os 4 componentes fortemente conexos são:
2. Geração do digrafo DT .
{1}, {3}, {2, 4, 5}, {6}.
3. BP em DT, obedecendo a ordem inversa do vetor Pv.
Há vários algoritmos lineares para se determinar os cfc.
Apresentaremos o algoritmo de Kosaraju. 5 6
4. Cada árvore de profundidade obtida é um cfc.

1
Digrafos Digrafos

Grafos – Componentes fortemente Grafos - Componentes fortemente


2 4
conexos conexos 2 4

1ª etapa: BP no digrafo. 6 2ª etapa: BP no digrafo


1 6
transposto. 1

3 5
3 5
1 v Ps(Saída) Saída Pv Saída Pv
1 6 1 4 1 3 2 6 1 4
3 2 4 2 6
2 2 6
3 5 3 5 4 3 5
4 1 4 2 4 2
5 5 3 5 3 5 5 3
6 2 6 1
4 6 6 1
Obs: Ps não é necessário no algoritmo. O vetor Pv, que Componentes: {1}, {3}, {2, 4, 5} , {6}
representa a função inversa a Ps, é preenchido ao final Obs: O digrafo transposto não precisa ser criado quando a representa-
7 8
da busca e processado do final para o início. ção é por matriz de adjacência. Basta percorrer a coluna da matriz.

Digrafos Digrafos

Grafos - Componentes fortemente Grafos - Componentes fortemente


2 4 2 4
conexos conexos

1ª etapa: BP no digrafo. 6 2ª etapa: BP no digrafo 6


1 1
transposto.

3 5 3 5

os ← 0; Desmarcar vértices; comp ← 0; Desmarcar vértices;


Para i de 1 a n: Para i descendo de n a 1:
Se ( i não marcado) Então BP(i,i); Se ( Pv[i] não marcado) Então
Fp; comp ← comp+1; BPT(0,Pv[i]);
Fp;
BP(u,v);
Marcar v; BPT(u,v);
Para vizinhos w de v: Marcar v; Co[v] ← comp;
Se (w não marcado) Então BP(v,w); Para w vizinho de v no digrafo transposto:
Fp; Se (w não marcado) Então BPT(v,w);
os ← os+1; Pv[os] ← v; Fp;
Fim; 9 Fim; Complexidade: O(n+m) ou O(n2) 10

Digrafos Digrafos

Grafos - Componentes fortemente 2 4 Digrafos - Componentes Fortemente Conexos


conexos

Porque o algoritmo de 1 6
Kosaraju funciona? Exercício: Aplicar o algoritmo de Kosaraju ao digrafo
3 5 abaixo:
Para provar que o algoritmo é correto, temos que provar que, se os vértices
r e s pertencem ao mesmo cfc em D então vão estar na mesma árv.
profund. de DT. Temos tb que provar o inverso, ou seja, se r e s estão
na mesma árv. profund de DT, então pertencem ao mesmo cfc de D. 1 2 3 4
a) Suponhamos r e s pertencentes a um mesmo cfc, em D. Suponhamos r o
vértice com menor ordem de entrada na busca em DT. Como existe o
caminho de s a r em D, então s será descendente de r nessa árvore.
7
b) Suponhamos s e r na mesma árv. prof. de DT. Seja t a raiz dessa
árvore. Então existe caminho de s para t, em D. Mas também tem que
ter caminho de t para s, pois t tem ordem de saida maior que s na
5 6
busca em D. Então s tem que ser descendente de t nessa árvore. Logo,
existe caminho de t para s em D. Portanto, t e s estão no mesmo cfc
em D. De forma análoga, t e r estão no mesmo cfc em D. Logo s e r
estão no mesmo cfc em D. 11 12

2
Digrafos Digrafos

Grafos – Componentes Fortemente conexos Grafos – Componentes Fortemente conexos

Problema DOMINÓS: Problema MÃO DUPLA (I):


Dado um grupo de dominós, com a indicação de qual dominó é Dado o mapa do trânsito de uma cidade, representado como
derrubado por um outro (essas relações estão em um digrafo), um digrafo, onde os vértices são as esquinas e as arestas
determinar o número mínimo de dominós que têm que ser orientadas são os trechos de rua entre esquinas, indicar se é
“empurrados” à mão, para que todo o conjunto caia. possível atribuir mão dupla a alguns dos trechos de ruas de mão
única, tal que toda esquina seja atingível a partir de qualquer
outra.

Solução MÃO DUPLA (I):


2 4 2 4
Solução DOMINÓS:
Basta verificar se o grafo
subjacente é conexo.
-Determinar cfc.
1 6 -Criar DAG relativo aos cfc. 1 6
-Determinar fontes no DAG.
3 5 13
3 5 14

Digrafos Digrafos

Grafos – Componentes Fortemente conexos

Problema MÃO DUPLA (II):


Dado o mapa do trânsito de uma cidade, representado como
um digrafo, onde os vértices são as esquinas e as arestas Problemas - CFC
orientadas são os trechos de rua entre esquinas, indicar se é
possível atribuir mão dupla a alguns dos trechos de ruas de mão
única, tal que toda esquina seja atingível a partir de qualquer Calling Circle
outra. Quando for, indicar o número mínimo de trechos que
devem ser colocados em mão dupla para conseguir isso. Indicar, http://acm.uva.es/p/v2/247.html
também, quais são esses trechos. Cactus
http://acm.uva.es/p/v105/10510.html
2 4
Test
http://acm.uva.es/p/v107/10731.html
6
1 Rota Crítica
3 5
Etapa regional da Maratona ACM/SBC-2006
15 16

Digrafos Digrafos

Digrafos - Ordenação Digrafos - Ordenação


2 4 2 4
Topológica num DAG Topológica num DAG

1 6 O algoritmo é destrutivo. 1 6
Uma ordenação topológica é
uma ordenação dos vértices Coloca numa fila os vértices
tal que se vi vem antes de com grau de entrada 0 e
3 5 3 5
vj, então não existe aresta retira os vértices do digrafo,
de vj para vi. usando a fila.

Ordenação Topológica:
A ordenação topológica pode ser visualizada como uma forma Esvaziar Q;
de redesenhar o DAG, com os vértices em linha, tal que as Enfilar vértices com grau de entrada 0;
arestas sempre estejam da esquerda para a direita. Enquanto (Q não vazia) efetuar:
v ← vértice da frente de Q; Colocar v na ordenação;
Para vizinhos w de v:
Diminuir 1 do grau de entrada(w);
1 3 5 4 2 6
Se (grau de entrada(w) = 0) Então Enfilar (w);
Fp;
Desenfilar v;
17 18
Fe; Complexidade: O(n+m)

3
Digrafos Digrafos

Grafos - Ordenação Topológica num DAG Grafos - Ordenação Topológica num DAG
2 4

Situação da Fila da Exercício: Mostrar uma ordenação topológica para o


Ordenação topológica: 1 6
1 3 5 6 4 2
grafo abaixo:

3 5

Demonstração da sequência de entrada na Fila: 2 4 6 9


v GE
1 0
2 3 → 2 → 2 → 1 → 1 → 0 1 10
3 1 → 0
4 1 → 1 → 1 → 0
5 1 → 1 → 0 3 5 7 8
6 1 → 1 → 1 → 0

GE = grau de entrada 19 20

Digrafos Digrafos

Digrafos - Ordenação Topológica num DAG Grafos - Ordenação Topológica num DAG
Caminho máximo em um DAG

A partir da ordenação topológica pode-se obter o maior


caminho em um digrafo, determinando gulosamente, na ordem Exercício: Escrever um algoritmo para determinar o
inversa da ordenação, qual a distância máxima de cada vértice
a um sumidouro do digrafo.
maior caminho em um DAG e aplicar ao digrafo:

1 3 5 4 2 6 2 4 6 9

1 10

No digrafo acima, da esquerda para a direita, determinamos, gulo-


3 5 7 8
samente, as distâncias máximas de cada vértice a um sumidouro.
v 1 3 5 4 2 6
dm 4 3 2 1 0 0 21 22

Digrafos Digrafos

Grafos - Ordenação Topológica num DAG Grafos - Ordenação Topológica num DAG

Aplicação: Dado um conjunto de caixotes, todos de mesma Aplicação: Dado um conjunto de caixotes, todos de mesma
altura e dimensões l x c, determinar a pilha de maior altu- altura e dimensões l x c, determinar a pilha de maior altu-
ra, colocando um caixote totalmente sobre o outro: ra, colocando um caixote totalmente sobre o outro:
l c 3 4
l c 1 5 4 5
1 5 4 2 8 3 2
2 8 3 Solução:
3 9 5
3 9 5 Criar um DAG representando as
4 7 1 1
6
4 7 1 relações de sobreposição, determi-
5 10 5
5 10 4 nar uma ordenação topológica e en-
6 12 5 8
6 12 5 contrar o maior caminho no DAG, a 7
7 6 6
7 6 6 partir da ordenação, de trás para
8 4 3 Orden.Top. 6 7 5 3 2 1 4 8
8 4 3 frente.
teste 28 Maior cam. 5 3 4 3 2 2 1 1
23 24

4
Digrafos Digrafos

PROBLEMA SATISFATIBILIDADE PROBLEMAS 2(3)-SAT


Satisfatibilidade ∈ NP.
NP
Problema Satisfatibilidade:
2-SAT(3-SAT) ∈ NP.
NP
Dada uma expressão booleana E, na forma normal conjuntiva, E é
satisfatível? Problema 2-SAT(3-SAT):
Dada uma expressão booleana E, na forma normal conjuntiva, onde
Expressão na forma normal conjuntiva: cada cláusula tem exatamente 2(3) literais, E é satisfatível?

Sejam e1,...en variávies booleanas. Cada ei é denominado literal.


Uma cláusula é uma disjunção, isto é, uma expressão da forma Certificado: Uma atribuição de valores para os literais.
e1 | e2 | ... ek (só usa | (OU), literais ei ou sua negação ¬ei).
Uma expressão na forma normal conjuntiva é um conjunto de
cláusulas ligadas por & (AND). (Os problemas são um caso particular de Satisfatibilidade.).

Ex: E = (e1 | ¬e3) & (¬


¬e1 | e2 | e3).

Uma expressão E é satisfatível, quando existe uma atribuição aos


literais que torna a expressão verdadeira. No exemplo dado, E é
25 26
satisfatível, bastando fazer: e1 = V; e2 = V; e3 = F.

Digrafos Digrafos

SUBCLASSES DE Satisfatibilidade TRATÁVEIS


Algumas subclasses de Satisfatibilidade têm algoritmo
Exercício: polinomial:

Escrever uma fórmula na FNC com 2 variáveis -2-SAT (a expressão só contém cláusulas Krom,
booleanas que não seja satisfatível. i.e., com no máximo 2 literais)

-Horn-SAT (a expressão só contém cláusulas Horn,


i.e., com no máximo um literal positivo)

-Subclasses triviais (p. ex. cláusulas positivas ou


negativas, onde todos os literais são
ou positivos ou negativos)

27 28

Digrafos Digrafos
ALGORITMOS POLINOMIAIS PARA 2-SAT ALGORITMO ASPVALL

Entrada: Uma expressão C na 2FNC Entrada: Uma expressão C na 2FNC

Decisão: Existe uma atribuição que satisfaz C? Decisão: Existe ma atribuição que satisfaz C?

1. Criar um digrafo D correspondente à expressão. Para cada literal,


Métodos de Solução: dois vértices (positivo e negativo). Para cada cláusula, duas arestas,
baseadas na seguinte identidade:
1. Resolução de cláusulas: reduz 2 cláusulas do tipo (a,b)
x y x ∨ y -x ⇒ y -y ⇒ x (x∨
∨y)⇔
⇔(-x⇒
⇒y)∧
∧(-y⇒
⇒x)
(-b,c) a (a,c).
1 1 1 1 1 1
1 0 1 1 1 1
2. DPLL (Backtracking): fixa-se uma variável, simplifica-se 0 1 1 1 1 1
a fórmula e resolve-se recursivamente e resolve-se o 0 0 0 0 0 0
novo problema...
2. Analisar se existe em D ciclo passando pelos 2 vértices de um
mesmo literal. Isso significa contradição entre as cláusulas. Então
3. Algoritmo “Aspvall”: gera e analisa um digrafo. basta verificar se os dois vértices de um mesmo literal estão na
29 mesma componente fortemente conexa de D. 30

5
Digrafos Digrafos
ALGORITMO ASPVALL ALGORITMO ASPVALL

Exemplo: C = (¬
¬x ∨ y) ∧ (¬
¬y ∨ z) ∧ (¬
¬z ∨ x) ∧ (a ∨ b) ∧ Exemplo: C = (¬
¬x ∨ y) ∧ (¬
¬y ∨ z) ∧ (¬
¬z ∨ x) ∧ (a ∨ b) ∧

¬a ∨ ¬b) ∧ (¬¬x ∨ a) ∧ (¬
¬y ∨ b) (¬
¬a ∨ ¬b) ∧ (¬
¬x ∨ a) ∧ (¬
¬y ∨ b)

Grafo D de Implicações: Componentes Fortemente Conexos de D:

a x y b a x y b Conclusão:

C é satisfatí-
z z vel, pois ne-
nhum literal
e sua negação
estão no
¬a ¬a mesmo cfc!!
¬b ¬y ¬x ¬b ¬y ¬x

¬z 31
¬z 32

Digrafos Digrafos
ALGORITMO ASPVALL - ATRIBUIÇÃO

Exemplo: C = (¬
¬x ∨ y) ∧ (¬
¬y ∨ z) ∧ (¬
¬z ∨ x) ∧ (a ∨ b) ∧

¬a ∨ ¬b) ∧ (¬
¬x ∨ a) ∧ (¬
¬y ∨ b)
Exercício:
Se fundirmos cada cfc, obtemos um DAG D’:

a x y b
Aplicar o algoritmo de Aspvall à seguinte fórmula: x,y,z
z
a,
C = (¬x ∨ y) ∧ (¬y ∨ z) ∧ (x ∨ ¬z) ∧ (z ∨ y) ¬b
¬a,
b
. ¬b ¬y ¬x ¬a

¬z
¬x,¬
¬y,¬
¬z

33 34

Digrafos Digrafos
ALGORITMO ASPVALL - ATRIBUIÇÃO ALGORITMO ASPVALL - ATRIBUIÇÃO

Exemplo: C = (¬
¬x ∨ y) ∧ (¬
¬y ∨ z) ∧ (¬
¬z ∨ x) ∧ (a ∨ b) ∧ Exemplo: C = (¬
¬x ∨ y) ∧ (¬
¬y ∨ z) ∧ (¬
¬z ∨ x) ∧ (a ∨ b) ∧

¬a ∨ ¬b) ∧ (¬
¬x ∨ a) ∧ (¬
¬y ∨ b) (¬
¬a ∨ ¬b) ∧ (¬
¬x ∨ a) ∧ (¬
¬y ∨ b)

Se fundirmos cada cfc, obtemos um DAG D’: Possíveis ordenações: Possíveis atribuições:
Atribuição:
x,y,z x,y,z Alternativa 1:
1. Fazer a ordenação topo-
lógica de D’. 1, 1 x,y,z ← F;
a, ¬a, a,
¬b 2. Dada um literal x, seja ¬b 2, 3 3, 2 ¬a, a ← V;
b f(x) a posição de x na b b ← F;
ordenação. 4, 4
3. Se f(x) > f(¬¬x) Então Alternativa 2:
¬x,¬
¬y,¬
¬z atr(x) = V ¬x,¬
¬y,¬
¬z
Senão x,y,z ← F;
atr(x) = F; a ← F;
b ← V;

35 36

6
Digrafos Digrafos
ALGORITMO ASPVALL - CFC ALGORITMO ASPVALL – Ordenação
BP(v); Topológica
Marcar v; BPT(v);
Para vizinhos w de v em D: gCo[v] ← gcomp;
Se (w não marcado): Para vizinhos w de v em DT:
Se (gCo[w]=0): OrdTop:
BP(w);
BPT(w); Esvaziar Q;
Fp;
Fp; Para i de 1 a gn:
gos ← gos+1;
Fim; Se (DE[i] = 0) Então Enfilar(i);
gPo[gos] ← v;
Fp;
Fim;
Enquanto (Q ≠ ∅ );
CFC:
v ← Desenfilar;
gos ← 0; Desmarcar vértices;
Para w vizinho de v:
Para i de 1 a gn:
DE[w] ← DE[w]-1;
Se ( i não marcado) Então BP(i);
Se ( DE[w] = 0) Então Enfilar(w);
Fp;
Fp;
gcomp ← 0; gCo[*] ← 0;
Fe;
Para i descendo de gn a 1:
Fim;
Se ( gCo[gPo[i]]=0) Então
gcomp ← gcomp+1; BPT(gPo[i]);
Fp; 37 38
Fim;

Digrafos Digrafos
Problema 10319 - Manhattan

Descrição: Dado um grid s (ruas) x a (avenidas) e dados m pares de pontos, quer-se sa-
ber se é possível orientar as direções do trânsito em mão única, para que haja
sempre um caminho simples para os m pares de pontos dados.
Exercício:

Indicar as atribuições possíveis de satisfatibilidade da


seguinte fórmula:

C = (¬
¬x ∨ y) ∧ (¬
¬y ∨ z) ∧ (x ∨ ¬z) ∧ (z ∨ y)
. Solução: criar uma expressão 2FNC para a situação e usar o algoritmo de 2SAT para
verificar se a expressão é satisfatível. As cláusulas a serem criadas, para
cada um dos m pares (s1, a1, s2, a2) dados são as seguintes:

a) se o trajeto não é reto, criar o trajeto ci,associando a ci uma atribuição


para s e para a, de acordo com o trajeto a ser feito (1 para a direita, 0 para
a esquerda, 1 p/cima, 0 p/baixo). Para essa condição, criar a cláusula
(ci ou ci), criar 2 vértices v e w (¬
¬v) e colocar a aresta (w → v).
39 ... 40

Digrafos Digrafos
Problema 10319 - Manhattan Problema 10319 - Manhattan

Descrição: Dado um grid s (ruas) x a (avenidas) e dados m pares de pontos, quer-se sa- Descrição: Dado um grid s (ruas) x a (avenidas) e dados m pares de pontos, quer-se sa-
ber se é possível orientar as direções do trânsito em mão única, para que haja ber se é possível orientar as direções do trânsito em mão única, para que haja
sempre um caminho simples para os m pares de pontos dados. sempre um caminho simples para os m pares de pontos dados.
Solução: ...
b) caso contrário, criar duas condições (cj e ck), uma para cada percurso
Solução: ...
possível, associando a cj,k uma atribuição para s e para a, como no caso Cond. s vs a va clausulas
anterior. Criar dois vértices para cada condição (v, w (¬
¬v), p, q(¬
¬p)), e criar a c1 1 1 0 -1 (c1 ou c1)
Entrada: 7 7 4
cláusula (cj ou ck), colocando no grafo as arestas (w → v e q → p). c2 6 1 0 -1 (c2 ou c2)
1 1 1 6
6 1 6 6 c3 6 0 1 0
c) verificar, para cada condição, se há alguma incompatibilidade com condições c4 1 0 6 0 (c3 ou c4) (¬
¬c3 ou ¬c2)(¬
¬c4 ou ¬c1)
6 6 1 1
já criadas anteriormente incompatibilidade entre (ci e cj), criar a cláusula c5 4 0 1 1
4 3 5 1

¬cj ou ¬ck), e duas arestas no grafo correspondentes. c6 5 0 4 1 (c5 ou c6)
Finalmente, rodar CFC do digrafo e verificar se há vértice e sua negação c5 ¬c5
no mesmo CFC ¬c1 x ¬c3 c2

Cond. s vs a va clausulas
c1 1 1 0 -1 (c1 ou c1)
Entrada: 7 7 4 c2 6 1 0 -1 (c2 ou c2)
1 1 1 6 c3 6 0 1 0
6 1 6 6 c4 1 0 6 0 (c3 ou c4) (¬
¬c3 ou ¬c2)(¬
¬c4 ou ¬c1) c1 ¬c4 c3 ¬c2
c6 ¬c6
6 6 1 1 c5 4 0 1 1
4 3 5 1 c6 5 0 4 1 (c5 ou c6)
41 Saída: No (c1 e ¬c1 estão nomesmo CFC) 42

7
Digrafos Digrafos
Problema Banquete = (11294 – Wedding) Problema Banquete - Exemplo
Descrição: Quer-se arrumar n casais em uma mesa de banquete, com o casal anfitrião na
Exemplo: 3 2
posição 1, os casais sentados um em frente ao outro. São dados m pares de
1h 2w
inimigos (diferentes sexos ou não). Do lado da mesa onde está o anfitrião não
1h 2h
pode haver nenhum par de inimigos. Indicar como a distribuição deve ser feita.
a) o anfitrião senta-se na posição 1 e as expressões referem-se q quem senta do seu
Solução: ....
lado na mesa.
Entrada: 10 6 (dez casais, 6 pares de inimigos, anfitrião = 0)
b) Variáveis: a = homem do casal 1 senta-se do mesmo lado do anfitrião
3h 7h
b = mulher do casal 1 senta-se do mesmo lado do anfitrião
5w 3w
c = homem do casal 2 senta-se do mesmo lado do anfitrião
7h 6w
d = mulher do casal 2 senta-se do mesmo lado do anfitrião
8w 3w
7h 3w
c) Éxpressão que obriga cada componente do casal sentar-se em lados opostos:
2w 5h
(a ∨ b)∧
∧(¬
¬a ∨ ¬b)∧
∧(c ∨ d)∧
∧(¬
¬c ∨ ¬d)
Saída: 1h 2h 3w 4h 5h 6h 7h 8h 9h
d) Expressão que proibe dois inimigos sentarem-se do lado do anfitrião:

¬a ∨ ¬c)∧
∧(¬
¬ a ∨ ¬d)

e) Expres.final:(a ∨ b)∧
∧(¬
¬a ∨ ¬b)∧
∧(c ∨ d)∧
∧(¬
¬c ∨ ¬d)∧
∧(¬
¬a ∨ ¬c)∧
∧(¬
¬a ∨ ¬d)

43 44

Digrafos Digrafos

Problema Banquete - Exemplo Problema Banquete - Exemplo


e) Expres.final:(a ∨ b)∧
∧(¬
¬a ∨ ¬b)∧
∧(c ∨ d)∧
∧(¬
¬c ∨ ¬d)∧
∧(¬
¬a ∨ ¬c)∧
∧(¬
¬a ∨ ¬d)
Expres.final:(a ∨ b)∧
∧(¬
¬ a ∨ ¬b)∧
∧(c ∨ d)∧
∧(¬
¬c ∨ ¬d)∧
∧(¬¬a ∨ ¬c)∧∧(¬¬a ∨ ¬d)
Possíveis atribuições:
Possíveis ordenações:
a c b Alternativa 1:
d
a,¬
¬b a ← F;
1, 1 b ← V;
c, c ← F;
¬d 2, 3 3, 2 ¬c, d ← V;
d
4, 4 Alternativa 2:
¬b ¬c ¬d ¬a
¬a,b
a ← F;
b ← V
c ← V;
Componentes: u={a, ¬b} v={d,¬
¬c} w={c, ¬d} x={b, ¬a} d ← F;

45 46

Digrafos Digrafos

Problema 2886 – X-mart

Descrição: Um supermercado quer reduzir os produtos através de uma pesquisa junto aos
clientes. Eles indicam 2 produtos para ficarem e dois para sairem. Dados os
votos, quer-se saber se é possível satisfazer a todos os clientes (um produto
escolhido para ficar fica e um para sair, sai).

FIM

Solução: ...

Entrada: 4 4 (clientes e produtos)


1 2 3 4
3 4 1 0
1 3 2 4
2 4 0 3
Saída: n
47 48

Você também pode gostar