• Nenhum resultado encontrado

UNIVERSIDADE FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE INFORMÁTICA CURSO BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO

N/A
N/A
Protected

Academic year: 2021

Share "UNIVERSIDADE FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE INFORMÁTICA CURSO BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO"

Copied!
34
0
0

Texto

(1)

JUAN MANUEL SÁNCHEZ RUIBAL

RECONHECENDO GRAFOS BIPARTIDOS CORDAIS PROBE

CURITIBA 2014

(2)

JUAN MANUEL SÁNCHEZ RUIBAL

RECONHECENDO GRAFOS BIPARTIDOS CORDAIS PROBE

Monografia apresentada junto ao curso de Bacharelado em Ciências da Computação do Departamento de Informática, no setor de Ciências Exatas, como requisito parcial para obtenção do título de Bacharel.

Professor orientador: Dr. André Luiz Pires Guedes

CURITIBA 2014

(3)

RECONHECENDO GRAFOS BIPARTIDOS CORDAIS PROBE

Monografia apresentada junto ao curso de Bacharelado em Ciências da Computação do Departamento de Informática, no setor de Ciências Exatas, como requisito parcial para obtenção do título de Bacharel.

Banca Examinadora: Prof. Dr. André Luiz Pires Guedes Orientador

Prof. Dr. Renato José da Silva Carmo

Prof. Dr. André Luís Vignatti

CURITIBA 2014

(4)

RESUMO

RUIBAL, Juan Manuel Sánchez. Reconhecendo Grafos Bipartidos Cordais

Probe. Trabalho de Conclusão de Curso – Curso de Bacharelado em Ciências

da Computação, Universidade Federal do Paraná, Curitiba, 2014.

O presente trabalho apresenta o que é e como identificar um grafo bipartido cordal probe utilizando um algoritmo que faz uso de eliminação de arestas em tempo polinomial.

Palavras chave: Grafos Bipartidos Cordais, Grafos Cordais, Esquemas de

(5)

RUIBAL, Juan Manuel Sánchez. Recognizing Chordal-Bipartite Probe

Graphs. Trabalho de Conclusão de Curso – Curso de Bacharelado em

Ciências da Computação, Universidade Federal do Paraná, Curitiba, 2014.

This paper presents what is and how to identify a chordal bipartite probe graph, using a polynomial time edge elimination algorithm.

(6)

LISTA DE FIGURAS

Figura 1 - Grafo modelo ... 8

Figura 2 - Conjunto independente de um grafo ... 9

Figura 3 – Exemplo de Grafo Ciclo com 6 vértices ... 11

Figura 4 - Demonstração de um Grafo Bipartido. ... 12

Figura 5 - Grafo Bipartido Completo ... 12

Figura 6 - Exemplo de Grafo sem e com corda respectivamente ... 12

Figura 7 - Grafo Bipartido Cordal com 6 vértices e a corda ligando os vértices 2 e 5 ... 13

Figura 8 - Grafo Bipartido Cordal da figura 7 com os vértices em outra posições, mostrando que além de Cordal, o gráfico é Bipartido ... 13

Figura 9 - Transformação de um Grafo G em grafo Induzido G’ ... 14

Figura 10 - Um grafo G com uma aresta bi-simplicial A = xy e os vizinhos de x (v(x)) e y (v(y)), tal que os vizinhos de x e y induzem um subrafo bipartido completo G’ ... 15

Figura 11 - Um grafo Bipartido Cordal Probe G e um grafo Bipartido Cordal Completado de G, G*. Os vértices não probe são representados por quadrados ... 16

Figura 12 - Um grafo G possuindo uma aresta ab e um grafo G’ gerado a partir dos vizinhos da aresta ab de G (N(ab)), ou seja, G’ = N(a) ∪ N(b) – {a,b} ... 17

Figura 13 - Um grafo G=(A,V) com uma aresta ab ∈ A e um grafo G’ possuindo a deficiência da aresta ab, xy, tal que xy ∉ A | ay, bx ∈ A ... 18

Figura 14 - Um grafo Bipartido Cordal Probe com um e um processo de eliminação por bi-saturação de arestas. Processando a aresta e1 serão inseridas as arestas e5 e e15. Processar a aresta e2 criará as arestas e7 e e13 19 Figura 15 - Um grafo Bipartido G, com os vértices divididos em vermelho e preto para mostrar a bipartição ... 21

Figura 16 - Um grafo Bipartido G, com os vértices divididos em Probe (círculo) e Não Probe (quadrado) ... 21

Figura 17 - Um grafo Bipartido G1 com os vértices divididos em Probe (círculo) e Não Probe (quadrado), possuindo uma aresta bi-saturável a1 ... 22

(7)

Figura 19 - Um grafo Bipartido G2 obtido a partir da bi-saturação de uma aresta

do grafo G1 ... 23

Figura 20 - O grafo Bipartido G2 e a aresta a2 bi-saturável do mesmo... 23

Figura 21 - O grafo Bipartido G2 e as arestas necessárias para bi-saturar a2, indicadas em vermelho ... 24

Figura 22 - O grafo Bipartido G3, obtido a partir da bi-saturação de uma aresta no grafo G2 ... 24

Figura 23 - O grafo Bipartido G3, contendo a aresta a3 bi-saturável... 25

Figura 24 - O grafo Bipartido G3, contendo a aresta necessária, em vermelho, para bi-saturar a aresta a3 ... 25

Figura 25 - O grafo Bipartido G4, obtido ao bi-saturar uma aresta de G3 ... 26

Figura 26 - Grafo bipartido cordal completado de G, G+O ... 26

Figura 27 - Aresta {z,v} inserida quando a aresta {x,y} é bi-saturada ... 28

Figura 28 - Arestas {x,u} e {u,v} inseridas quando a aresta {z,t} é bi-saturada. 28 Figura 29 - Um grafo bipartido G e um grafo bipartido cordal completado de G, G+O. As arestas a1 e a2 representam um esquema de eliminação bi-saturável O, em G, e ao mesmo tempo um esquema de eliminação bi-simplicial em G+O ... 29

Figura 30 - Um grafo bipartido cordal G e um grafo bipartido cordal completado de G, G*. A aresta a1 representa um esquema de eliminação bi-simplicial O, em G*, e ao mesmo tempo uma sub-ordenação de um esquema de eliminação bi-saturável O’, em G, visto que O’ é composto por a1 e a2 ... 29

Figura 31 - Um grafo bipartido cordal G e um grafo bipartido cordal completado de G, G*. As arestas a1 e a2 representam um esquema de eliminação bi-saturável em G, e ao mesmo tempo somente a1 faz parte de um esquema de eliminação bi-simplicial em G*, portanto a2 pode ser bi-saturada para gerar outro grafo bipartido cordal probe completado de G ... 30

(8)

SUMÁRIO 1. INTRODUÇÃO ... 8 2. CLASSES DE GRAFOS ... 11 2.1 GRAFO CICLO ... 11 2.2 GRAFO BIPARTIDO ... 11 2.3 GRAFO CORDAL ... 12

2.4 GRAFO BIPARTIDO CORDAL ... 13

2.5 SUBGRAFO INDUZIDO ... 14

3. GRAFO BIPARTIDO CORDAL PROBE ... 15

4. UMA CARACTERIZAÇÃO DE UM PROCESSO DE ELIMINAÇÃO ... 17

5. ALGORITMO EDGE-RECOGNITION ... 20

6. EXECUÇÃO DO ALGORITMO EDGE-RECOGNITION ... 21

7.PROVADAEXECUÇÃODO ALGORITMOEDGE-RECOGNITION ... 27

8.CONCLUSÃO... 32

(9)

1 INTRODUÇÃO

A área da informática é intimamente ligada à matemática. Podemos citar diversos assuntos nos quais as duas áreas trabalham em conjunto, como por exemplo: lógica em algoritmos, probabilidade na análise de dados, geometria analítica em computação gráfica, entre outros. Um assunto bem interessante que vemos em estrutura de dados e que possui suas raízes em matemática é a área dos modelos de dados. Computação trata de modelos, e uma parte trata de estudos teóricos sobre estes modelos. Um dos mais extensos modelos de dados, que possui diversas aplicabilidades práticas e também diversos estudos teóricos, são os grafos.

MARIANI (2013) diz que um grafo G é definido por um conjunto de vértices V e arestas A, onde V é um conjunto não vazio e A é um conjunto de pares ordenados ou não de V.

Por exemplo:

Temos o grafo G=(V,A) dado por:

V = { p | p é uma pessoa } A = { (v,w) | v e w V }

Esta definição representa toda uma família de grafos e um exemplo desta família pode ser o seguinte:

V = {Maria, Pedro, Joana, Luiz}

A = {Maria, Pedro}, {Joana, Maria}, {Pedro, Luiz}, {Pedro, Joana}

A figura 1 representa o exemplo citado acima.

Figura 1 – Grafo modelo Fonte: Wikipédia

Dentro de um grafo, podemos ter um conjunto de vértices denominado de conjunto independente. Como comentado por FIGUEIREDO (2013), um conjunto independente é um conjunto de vértices de um grafo não ligados entre si por arestas. Em outras palavras, um conjunto independente de G é um

subconjunto de V no qual não existe nenhuma aresta entre quaisquer pares de elementos de V.

(10)

9

No caso do nosso exemplo anterior, um conjunto independente do nosso grafo G formado por pessoas poderia ser {Luiz, Maria}, conforme figura 2.

Figura 2 – Conjunto independente de um grafo Fonte: Wikipédia

Existem diversos tipos de grafos, cada um deles possuindo suas características. Visto que a gama de opções é muito grande, acabaram definindo certas propriedades, as quais resultaram em classes de grafos.

Para cada classe de grafos X, existe uma classe chamada X Probe. Um grafo G é da classe X Probe se os seus vértices podem ser divididos em dois subconjuntos P (Probe) e N (Não Probe) onde N é um conjunto independente, e G pode ser estendido a um grafo da classe X adicionando algumas arestas entre os Não Probes (N). Por exemplo, se temos um grafo, que seja dividido entre P e N e ao inserir arestas entre os vértices do conjunto N, o grafo

resultante é um grafo cordal, então o grafo inicial é cordal probe. A restrição de N ser um conjunto independente pode ser relaxada em alguns casos. Este tipo de problema possui duas dimensões, a versão já com vértices já particionados ou não e N sendo um conjunto independente ou não. Em outras palavras, temos quatro versões diferentes: 1) X probe particionado com N independente; 2) X probe particionado com N qualquer; 3) X probe não particionado com N independente; 4) X probe não particionado com N qualquer.

Os grafos X probe surgiram inicialmente para a classe de grafos de intervalos, modelando as relações entre cadeias de DNA [Zhang,

1994]. Neste contexto, partes de sequências de DNA são os vértices, e destas, as que se supõe saber todas as sobreposições, são as que formam o conjunto P (probe). Para as demais, podemos induzir sobreposições novas. O grafo resultante deve ser um grafo de intervalos (já que a sequência toda é linear). Assim, se o grafo conhecido, com alguns vértices escolhidos como probe, e algumas arestas inseridas entre os não probe, for um grafo de intervalos, pode ser que o conjunto de partes de sequências pode ser ordenado e gerada a sequência completa.

A partir desta definição, outras classes de grafos foram estudadas com este novo conceito, embora ainda não se tenha aplicações para elas.

Golumbic e Lipshetyn introduziram os grafos cordais probe [GOLUMBIC M. C, LIPSHETYN, M, 2004] e o mesmo Golumbic, agora com Berry e outros,

(11)

definiu os grafos bipartidos cordais probe [Golumbic M. C, Berry A., et al, 2007].

Neste trabalho, iremos apresentar como identificar quando um grafo pertence à classe ‘Bipartido Cordal Probe’. Para poder estudar estes casos utilizamos uma partição fixa de vértices dividida em Probe e Não-Probe. Os resultados serão obtidos resolvendo primeiramente o caso mais genérico, sem assumir que N é um conjunto independente, e depois isto pode ser utilizado para resolver os casos mais específicos. Utilizamos um método de eliminação ordenada que também implica em um algoritmo de reconhecimento executado em tempo polinomial, o qual foi criado e apresentado por Golumbic et al. (2007)

(12)

11

2 CLASSES DE GRAFOS

Existem alguns tipos de grafos que possuem características estruturais em comum. Devido a isto, foram definidas diferentes classes para agrupar estes grafos. Algumas classes serão importantes para este trabalho, e as

apresentaremos a seguir. 2.1 GRAFO CICLO

MOREIRA (2012) nos diz que um grafo ciclo ou grafo circular é um grafo que consiste de um único ciclo, ou em outras palavras, um número de vértices conectados em uma rede fechada. O grafo ciclo com n vértices é chamado Cn.

O número de vértices em um Cn se iguala ao número de arestas, e cada vértice

tem grau 2; isto é, cada vértice tem exatamente duas arestas incidentes a ele. Um exemplo pode ser observado na figura 3.

Figura 3 – Exemplo de Grafo Ciclo com 6 vértices Fonte: Wikipédia

2.2 GRAFO BIPARTIDO

Um grafo G=(V,A) é dito ser bipartido quando seu conjunto de vértices V pode ser particionado em dois subconjuntos V1 e V2, tais que toda aresta A de

G une um vértice de V1 a outro de V2. Uma caracterização de esta classe pode

ser vista no teorema a seguir.

Teorema 2.1: Qualquer grafo que não possui ciclos de tamanho ímpar, é considerado bipartido.

Para exemplificar um grafo bipartido, vamos definir um grafo G no qual o conjunto de vértices V possui dois subconjuntos H e M, representando Homens e Mulheres respectivamente, ou seja:

V = H U M

A = {{v,w} | v ∈ H e w ∈ M }

(13)

Figura 4 – Demonstração de um Grafo Bipartido Fonte: Wikipédia

Uma especificação de um grafo bipartido é um grafo bipartido completo (Figura 5), o qual possui as mesmas propriedades do bipartido, com a

diferença de ter todos os vértices de uma parte ligados a todos os vértices da outra.

Figura 5 – Grafo Bipartido Completo Fonte: Wikipédia

2.3 GRAFO CORDAL

Conforme MACHADO (2009) nos informa, um grafo cordal é um grafo no qual todo subciclo de 4 ou mais vértices contido nesse grafo possui uma corda, ou seja, uma aresta não pertencente ao ciclo ligando dois vértices não

(14)

13

Figura 6 – Exemplo de Grafo sem e com corda respectivamente Fonte: Wikipédia

2.4 GRAFO BIPARTIDO CORDAL

Segundo CERIOLI e POSNER (2008), um grafo G é considerado bipartido cordal se G é bipartido e todo ciclo de tamanho maior que 5 possui uma corda. Observe que isto não quer dizer que um grafo bipartido cordal é

necessariamente cordal, tanto que a interseção das classes bipartido e cordal é somente os grafos sem ciclo. Checar se um grafo é bipartido cordal não é checar se é cordal e bipartido, e sim se é bipartido e todo ciclo maior que 5 tem corda. Na figura 7, temos um grafo G que possui um ciclo maior que 5, e uma aresta ligando dois vértices não adjacentes, portanto ele é bipartido cordal:

Figura 7 – Grafo Bipartido Cordal com 6 vértices e a corda ligando os vértices 2 e 5 Fonte: O Autor

Além disso, podemos ver que G é bipartido na figura 8:

Figura 8 – Grafo Bipartido Cordal da figura 7 com os vértices em outra posições, mostrando que além de Cordal, o gráfico é Bipartido

(15)

Concluindo, visto que G é bipartido e não possui um ciclo maior que 5 sem corda, ele é bipartido cordal.

2.5 SUBGRAFO INDUZIDO

Um subgrafo induzido é obtido pela remoção de vértices e consequentes arestas relacionadas com ele de outro grafo. Em outras palavras, um subgrafo

G’ é considerado um subgrafo induzido de G se ele possuir, após a retirada de

algum vértice, todas as arestas que aparecem em G sobre o mesmo conjunto de vértices. Isto pode ser visto na figura 9.

Figura 9 – Transformação de um Grafo G em grafo Induzido G’, efetuando a remoção do vértice vermelho do grafo G

(16)

15

3 GRAFO BIPARTIDO CORDAL PROBE

Um grafo bipartido é chamado de bipartido cordal se não possui ciclos induzidos maiores que 4, sem corda, como já vimos anteriormente.

Uma caracterização de grafos bipartidos cordais baseada em uma forma de eliminação de arestas será mostrada a seguir.

Uma aresta a1 = {x,y} de um grafo bipartido G é chamada de

bi-simplicial se o subgrafo induzido pelos vizinhos de x e y é um subgrafo bipartido completo, exemplificado na figura 10.

x

y

a

1

u

v

w

G

x

y

u

v

w

G’

Figura 10 – Um grafo G com uma aresta bi-simplicial a1 = xy e os vizinhos de x

(u,w) e y (v), tal que os vizinhos de x e y induzem um subrafo bipartido completo G’.

Fonte: O Autor.

Berry et al. Caracterizam grafos bipartidos cordais da seguinte forma: G é bipartido cordal se e somente se G possui uma ordem bi-simplicial de

eliminação de arestas. (Berry et al. 2007)

Definimos então uma ordem de eliminação das arestas bi-simpliciais. Digamos que G=(V,A) é um grafo bipartido e A = (a1, a2, ., am) é uma

ordenação das arestas. Definimos Gi = (V,Ai) onde Ai = (ai,.,am), ou seja, Gi é

obtido ao eliminar as arestas a1, a2, ,,,, ai-1 mas não os vértices. Chamamos A

de uma ordem bi-simplicial de eliminação se Ai é bi-simplicial em Gi para todo i.

Sabendo disto, podemos definir que o grafo bipartido G será um grafo bipartido cordal probe se podem ser adicionadas arestas a G entre Não-probes tal que resulte em um grafo bipartido cordal. Vamos nos referir a este tipo de grafo bipartido cordal como grafo bipartido cordal completado de G, denotado

G*, e as arestas adicionadas serão chamadas de arestas completadas de G*.

A figura 11 abaixo mostra um grafo bipartido cordal probe G e o respectivo grafo bipartido cordal completado de G, G*.

(17)

Figura 11 – Um grafo Bipartido Cordal Probe G e um grafo Bipartido Cordal Completado de G, G*. Os vértices não probe são representados por quadrados. Fonte: Golumbic M. C, Berry A., et al. Recognizing Chordal-Bipartite Probe Graphs, 2007.

(18)

17

4 UMA CARACTERIZAÇÃO DE UM PROCESSO DE ELIMINAÇÃO

Berry et al. (2007) provaram que podemos efetuar o reconhecimento de grafos bipartidos cordais probe em tempo polinomial, e nós vamos apresentar esta demonstração. Para isto, construiremos uma ordem de eliminação bi-simplicial para inserir arestas quando necessário, gerando um grafo bipartido cordal que é supergrafo do primeiro, considerando que a entrada do algoritmo seja um grafo bipartido cordal probe.

Antes de iniciar, para simplificar, vamos considerar que os vizinhos (Neighborhood) de um vértice v, serão definidos como N(v). Também

consideremos que uma aresta que ligue os vértices a e b será definida como {a,b}, e G+ab para denotar o grafo (V,A∪{ab}). Sabendo isto, vamos definir também que os vizinhos de uma aresta ab, será denotado como N(ab), e isto significa N(a) ∪ N(b) – {a,b}, como pode ser visto na figura 12.

a

b

ab

d

c

e

G

a

b

d

c

e

G’

Figura 12 – Um grafo G possuindo uma aresta ab e um grafo G’ gerado a partir dos vizinhos da aresta ab de G (N(ab)), ou seja, G’ = N(a) ∪ N(b) – {a,b} .

Fonte: O Autor.

Caracterização 4.1: Como pode ser visto em A. Br¨andstadt, V. Le, J.P. Spinrad (1999), um grafo bipartido G é bipartido cordal se e somente se G possui uma ordem bi-simplicial de eliminação (Eliminando arestas mas não vértices).

Além disso, grafos bipartidos cordais são também caracterizados pelos seus cortes minimais, como pode ser visto em M.C. Golumbic and C.F. Goss (1978).

Caracterização 4.2: Um grafo bipartido G será bipartido cordal se e somente se todo corte minimal de G induz um subgrafo bipartido completo.

Definição 4.3: Considere G = (V,A) um grafo bipartido. Uma deficiência de uma aresta ab ∈ A é o conjunto de não-arestas em N(ab), denotado por DG(ab), ou

(19)

b

a

a

b

y

x

x

y

ab

xy

G

G’

Figura 13 – Um grafo G=(A,V) com uma aresta {a,b} ∈ A e um grafo G’ possuindo a deficiência da aresta {a,b} de G, {x,y}, tal que {x,y} ∉ A | {a,y}, {b,x} ∈ A.

Fonte: O Autor.

Claramente podemos dizer que a deficiência de uma aresta bi-simplicial é um conjunto vazio. Além disso, para qualquer aresta ab, inserindo todas as

não-arestas de N(ab) (processo que chamaremos como bi-saturar N(ab)), vai

acabar transformando a aresta ab em bi-simplicial.

Se N(ab) pode ser bi-saturada em um grafo bipartido cordal vai depender de diversas condições, dadas abaixo.

Vejamos isto como um processo interativo que pode ser executado em um grafo bipartido G, e será chamado de Processo de Eliminação por

Bi-Saturação de arestas. A execução deste processo será demonstrado no

capítulo 6.

1) Considere G1 = H1 = G,

2) Selecione repetidamente arestas ai em Gi para transformá-las em

bi-simpliciais (ou selecione uma aresta que já é bi-simplicial),

3) Defina as arestas que serão inseridas Fi = DGi(ai) e crie os próximos grafos

transitórios Gi+1 = Gi + Fi - ai e Hi+1 = Hi + Fi,

4) Continue até que nenhuma aresta sobre.

O Processo de Eliminação por Bi-Saturação de arestas define uma ordem O em A + F, onde F define as arestas que foram inseridas no grafo durante o processo de bi-saturação.

O grafo (V, A+F) associado com O será definido como G+O.

Como resultado disto podemos dizer que ai é bi-saturável em Gi se sua

deficiência DGi(ai) consiste somente em não-arestas cujas extremidades são

vértices non-probes e se nenhuma aresta aL (L < i) já processada pertence à

deficiência de ai. Note que ai pode ser uma aresta de F, adicionada em algum

passo anterior.

A figura 14 mostra um grafo bipartido cordal probe com uma ordenação (e1, ., e15) e as não-arestas colocadas.

(20)

19

a um algoritmo de reconhecimento, que daremos abaixo e efetuaremos a prova da execução do mesmo logo depois.

Figura 14 – Um grafo Bipartido Cordal Probe com um e um processo de eliminação por bi-saturação de arestas. Processando a aresta e1 serão inseridas

as arestas e5 e e15. Processar a aresta e2 criará as arestas e7 e e13.

Fonte: Golumbic M. C, Berry A., et al. Recognizing Chordal-Bipartite Probe Graphs, 2007.

(21)

5 ALGORITMO EDGE-RECOGNITION

O algoritmo a seguir será utilizado para definir se um grafo G é bipartido cordal probe.

Entrada: Um grafo bipartido G=(V,A) com vértices rotulados como P (Probes) ou N (Não-probes).

Saída: Uma resposta para a pergunta “G é um grafo bipartido cordal probe?” e caso sim, um grafo bipartido cordal completado de G associado a uma

ordenação O das suas arestas.

Inicialização: G1  G; F  ∅; O é uma fila vazia; i  1;

Enquanto Gi contém ao menos uma aresta faça:

Se Gi não possui aresta bi-saturável então retorna NÃO.

Escolha uma aresta bi-saturável ai de Gi;

DGi(ai)  conjunto de arestas necessárias para bi-saturar ai em Gi;

// DGi(ai) pode ser vazio

Gi+1  Gi + DGi(ai) − ai; F  F + DGi(ai); adicione ai a O; i  i + 1;

Retorne SIM, G+O = (V,A+F) é um grafo bipartido cordal completado de G, e O

é um esquema de eliminação por bi-saturação de arestas de G.

A complexidade desse algoritmo é O(m*²n²), onde m* é o número de arestas de G+O. Se para achar a próxima aresta bi-saturável, é preciso

examinar todas as O(m*) arestas do grafo transitório e gastar O(m*) para testar cada uma delas por bi-simplicidade.

(22)

21

6 EXECUÇÃO DO ALGORITMO EDGE-RECOGNITION

Mostraremos a seguir a execução do algoritmo EDGE-RECOGNITION. Na figura 20 temos um grafo bipartido.

c j i h g b a f e d

G

Figura 15 – Um grafo Bipartido G, com os vértices divididos em vermelho e preto para mostrar a bipartição.

Fonte: O Autor.

Abaixo, na figura 21, podemos encontrar o mesmo grafo, com os vértices divididos em Probe e Não Probe.

c j i h g b a f e d

G

Figura 16 – Um grafo Bipartido G, com os vértices divididos em Probe (círculo) e Não Probe (quadrado).

Fonte: O Autor.

A inicialização do algoritmo criará um grafo Gi igual a G, um conjunto de

(23)

eliminação por bi-saturação de arestas e o índice i = 1 que indicará o primeiro grafo transitório ao bi-saturar a primeira aresta.

Podemos notar que G1 possui uma aresta bi-saturável, representada na

figura 22 por a1. c j i h g b a f e d

G

1 a1

Figura 17 – Um grafo Bipartido G1 com os vértices divididos em Probe (círculo) e

Não Probe (quadrado), possuindo uma aresta bi-saturável a1.

Fonte: O Autor.

Visto que G1 possui uma aresta bi-saturável a1, DG1(a1) vai receber o

conjunto de arestas necessárias para bi-saturar a1, as quais estão sendo mostradas na figura 23, em vermelho.

c j i h g b a f e d

G

1 a1

Figura 18 – Um grafo Bipartido G1 com os vértices divididos em Probe (círculo) e

Não Probe (quadrado), possuindo uma aresta bi-saturável a1 e as arestas

necessárias para bi-saturar a1,em vermelho.

(24)

23

Além disso, será criado o grafo transitório G2  G1 + DG1(a1) – a1, F  F

+ DG1(a1), a1 será adicionada em O, e i será incrementado em 1. O grafo G2

está demonstrado na figura 24.

c j i h g b a f e d

G

2

Figura 19 – Um grafo Bipartido G2 obtido a partir da bi-saturação de uma aresta

do grafo G1.

Fonte: O Autor.

Agora é necessário verificar se G2 possui uma aresta bi-saturável e caso

possua, repetir o processo anterior. Podemos ver que G2 possui uma aresta

bi-saturável a2, mostrada na figura 25, abaixo.

c j i h g b a f e d

G

2 a2

Figura 20 – O grafo Bipartido G2 e a aresta a2 bi-saturável do mesmo.

Fonte: O Autor.

Como G2 possui uma aresta bi-saturável a2, DG2(a2) vai receber o

conjunto de arestas necessárias para bi-saturar a2. Estas arestas são mostradas na figura 26, em vermelho.

(25)

c j i h g b a f e d

G

2 a2 c j i h g b a f e d

G

2 a2

Figura 21 – O grafo Bipartido G2 e as arestas necessárias para bi-saturar a2,

indicadas em vermelho. Fonte: O Autor.

Assim como na bi-saturação de G1, será criado o grafo transitório G3 

G2 + DG2(a2) – a2, F  F + DG2(a2), a2 será adicionada em O, e i será incrementado em 1. O grafo G3 se encontra na figura 27 a seguir.

c j i h g b a f e d

G

3 c j i h g b a f e d

G

Figura 22 – O grafo Bipartido G3, obtido a partir da bi-saturação de uma aresta no

grafo G2.

Fonte: O Autor.

Assim como feito com G2, precisamos verificar se G3 possui alguma

aresta bi-saturável. Podemos ver que existe uma aresta a3 que está indicada na imagem 28 abaixo.

(26)

25 c j i h g b a f e d

G

3 c j i h g b a f e d

G

a3

Figura 23 – O grafo Bipartido G3, contendo a aresta a3 bi-saturável.

Fonte: O Autor.

Visto que G3 possui uma aresta bi-saturável a3, DG3(a3) vai receber o conjunto de arestas necessárias para bi-saturar a3. Estas arestas são mostradas em vermelho na figura 29.

c j i h g b a f e d

G

3 c j i h g b a f e d

G

a3

Figura 24 – O grafo Bipartido G3, contendo a aresta necessária, em vermelho, para

bi-saturar a aresta a3.

Fonte: O Autor.

Assim como nas bi-saturações anteriores, será criado o grafo transitório G4  G3 + DG3(a3) – a3, F  F + DG3(a3), a3 será adicionada em O, e i será incrementado em 1. O grafo G4 se encontra na figura 30 a seguir.

(27)

c j i h g b a f e d

G

4 c j i h g b a f e d

G

Figura 25 – O grafo Bipartido G4, obtido ao bi-saturar uma aresta de G3.

Fonte: O Autor.

Repetindo o processo, precisamos verificar se G4 possui alguma aresta

bi-saturável. Neste caso, só vão existir arestas bi-simpliciais, ou seja, cuja deficiência é nula, resultando somente na eliminação de arestas sem inserção de nenhuma aresta nova, portanto retornaremos o grafo bipartido cordal

completado de G, G+O = (V,A+F) (Figura 31) e o esquema de eliminação por

bi-saturação de arestas de G, O = (a1,a2,a3). i h g a e d

G

+O c j i h g b a f e d

Figura 26 – Grafo bipartido cordal completado de G, G+ O.

Fonte: O Autor.

O algoritmo continuará removendo mais algumas arestas bi-simpliciais, sem afetar o resultado do algoritmo G+o.

(28)

27

7 PROVA DA EXECUÇÃO DO ALGORITMO EDGE-RECOGNITION

Para provar a execução do algoritmo EDGE-RECOGNITION precisaremos dos seguintes teoremas:

Teorema 6.1: Um grafo bipartido G com os vértices rotulados de P ou N possui um esquema de eliminação bi-saturável se e somente se G é bipartido-cordal probe.

Para provar isto precisaremos de diversos resultados e da seguinte invariante, que assegura que após uma aresta ai é processada e eliminada

como bi-simplicial, mesmo que um processo posterior acabe adicionando uma aresta f que será incidente a ai no grafo resultante, isto não causará nenhum

problema. Isto se deve ao fato que assim como f, arestas serão adicionadas e isto fará com que ai continue bi-simplicial no processo de eliminação do grafo

resultante.

Invariante 6.2: Considere G = (V,A) como sendo um grafo bipartido cordal probe, considere também O como sendo a ordem de arestas correspondente ao esquema de eliminação bi-saturável, considere G+O = (V,A+F) como sendo

o grafo resultante obtido, e considere ai como sendo uma aresta de A+F.

A deficiência de ai não pode aumentar no transcorrer do processo de

eliminação em nenhum passo j após a iteração i no grafo Hj - {a1,..,ai-1} = Gi +

(Fi + . + Fj-1).

Prova: Suponha que a deficiência de ai = {x,y} incrementa após a iteração i, e

que surge uma nova não-aresta {u,v} criada em N(ai): deve então existir ao

menos uma aresta inserida incidente a ai durante o processo de eliminação em

algum passo j > i. Consideremos a primeira aresta inserida incidente a ai no

passo j > i, e chamemos ela de {x,u}. Consideremos aj = {z,t} como sendo a

aresta cuja bi-saturação criou a aresta f = {x,u} em Gj (Figura 16). Claramente, aj pertence a N(x) no grafo transitório Gj, na aresta {z,x}, que está no grafo Gj já

que não pode ser uma aresta inserida após o passo i. Considere v como sendo um vizinho de y em Gi; Quando ai = {x,y} era bi-saturada, a aresta {z,v} foi

criada (Figura 15) se não se encontrava no grafo. Portanto, aj deve pertencer a

N(v) em Gj, mas então aj pertence a ambos N(u) e N(v) em Gj, com isso, a

bi-saturação de aj insere a aresta {u,v}, que contradiz a suposição de que {u,v}

está na deficiência de ai em Hj - {a1.,ai-1}.

O mesmo argumento se aplica às outras arestas definidas incidentes a

(29)

x

y

v t

u z

Figura 27 – Aresta {z,v} inserida quando a aresta {x,y} é bi-saturada. Fonte: O Autor.

x

y

v

t

u

z

Figura 28 – Arestas {x,u} e {u,v} inseridas quando a aresta {z,t} é bi-saturada. Fonte: O Autor.

Propriedade 6.3: Considere G = (V,A) um grafo bipartido, considere também O como sendo a ordem de arestas correspondente ao esquema de eliminação bi-saturável em G. Então O é um esquema de eliminação bi-simplicial das arestas de G+O, e G+O é um grafo bipartido cordal completado de G.

(30)

29 c j i h g b a f e d

G

c j i h g b a f e d

G

+O a1 a2 a2 a1

Figura 29 – Um grafo bipartido G e um grafo bipartido cordal completado de G, G+ O. As

arestas a1 e a2 representam um esquema de eliminação bi-saturável O, em G, e ao mesmo tempo um esquema de eliminação bi-simplicial em G+O.

Fonte: O Autor.

Prova: O é um esquema de eliminação bi-simplicial de arestas de G+O pela

invariante 6.2, além disso, pela caracterização 4.1, G+O é bipartido cordal e é

um supergrafo de G obtido ao adicionar somente arestas entre dois vértices não-probes, portanto é um grafo bipartido cordal completado de G.

Lema 6.4: Considere G = (V,A) um grafo bipartido cordal, considere G* um grafo bipartido cordal completado de G, considere O um esquema de eliminação bi-simplicial de G*. Então O pode ser usado para definir um esquema de eliminação bi-saturável por arestas O' em G (Figura 18).

c j i h g b a f e d

G

c j i h g b a f e d

G*

a1 a2 a1

Figura 30 – Um grafo bipartido cordal G e um grafo bipartido cordal completado de G, G*.

A aresta a1 representa um esquema de eliminação bi-simplicial O, em G*, e ao mesmo tempo uma sub-ordenação de um esquema de eliminação bi-saturável O’, em G, visto que O’ é composto por a1 e a2.

(31)

Prova: No passo i da construção de Gi, processando a aresta ai, todas as

arestas de Gi são arestas de G*i, com uma quantidade superior a i por O: Isto

quer dizer que nenhuma aresta inserida em algum Gi já vai ter sido processada

e eliminada em um processo de eliminação correspondente em G*. Isto se deve ao fato que quando ai é processada em G*i, precisa ser bi-simplicial. G*

não é necessariamente igual a G+O’, (podemos ter G+O’ ⊂ G*), portanto O' é

uma sub-ordenação de O. Obtendo O' de O pode ser feito repetidamente processando a próxima aresta em O que está no grafo transitório Gi.

Prova do teorema 6.1: Pela propriedade 6.3, se um grafo bipartido G contém um esquema de eliminação bi-saturável por arestas, então é um grafo bipartido cordal probe. Reciprocamente, pelo lema 6.4, qualquer grafo bipartido cordal probe contém um esquema de eliminação bi-saturável por arestas.

Como resultado disto, G contém um grafo bipartido cordal completado G+O, e a primeira aresta a1 em O' é claramente uma aresta bi-saturável em G,

portanto se G é bipartido cordal probe, contém ao menos uma aresta

bi-saturável. Agora vamos mostrar que dado um grafo bipartido cordal probe G e um grafo bipartido cordal completado de G, G*, se escolhemos uma aresta bi-saturável a em G que não é uma aresta bi-simplicial no grafo bipartido cordal completado G*, então podemos estender G* a outro grafo bipartido cordal probe que também é completado de G, com isso garantindo que a abordagem gulosa do algoritmo EDGE-RECOGNIZION vai funcionar. Ambos os grafos podem ser vistos na figura 19.

c j i h g b a f e d

G

c j i h g b a f e d

G*

a1 a2 a1 a2

Figura 31 – Um grafo bipartido cordal G e um grafo bipartido cordal completado de G, G*. As arestas a1 e a2 representam um esquema de eliminação bi-saturável em G, e ao

mesmo tempo somente a1 faz parte de um esquema de eliminação bi-simplicial em G*, portanto a2 pode ser bi-saturada para gerar outro grafo bipartido cordal probe completado de G.

Fonte: O Autor.

A base disso é a seguinte propriedade que funciona para qualquer grafo: Propriedade 6.5: Considere G um grafo bipartido cordal, Considere {a,b} uma

(32)

31

aresta de G, considere G' como sendo o grafo obtido a partir de G ao adicionar arestas para fazer N(ab) um subgrafo bipartido completo; Então G' também é bipartido cordal.

Prova: Suponha que a inserção de arestas para fazer N(ab) um subgrafo bipartido completo tenha criado um ciclo sem corda C = {x,y,u,z1,z2,z3} de tamanho ≥ 6, com x,y ∉ N(ab). Claramente nem a nem b podem pertencer a C. C pode conter no máximo três vértices consecutivos que pertençam a N(ab). Se C contêm três vértices consecutivos x,y,u de N(ab), com x e u pertencendo a N(a) e y pertencendo a N(b), então em G existia um ciclo sem corda

{x,a,u,z1,z2,z3}. Mas se só x e y estão em C ∩ N(ab), então x e y pertencem a um corte minimal comum, separando a, b de u,z1,z2,z3. Mas pela

caracterização 4.2, x e y já eram adjacentes em G, que é bipartido cordal. Propriedade 6.6: Considere G um grafo bipartido cordal probe, considere a uma aresta bi-saturável de G. Então G + DG(a) e G + DG(a) - a continuam bipartido

cordal probes.

Prova: Considere G* um grafo cordal bipartido completado de G, considere O' a ordenação correspondente a um esquema de eliminação bi-satural de arestas de G como no lema 6.4, considere i o número de a em O'. Pela propriedade 6.3, G+O’ é um grafo bipartido cordal completado de G. Dizemos anteriormente

que a é bi-saturável em G+O’. Suponha que não é. Então, como na prova da

invariante 6.2, existe uma não-aresta {u,v} em N(a) em G+O’, com v sendo

probe. Uma aresta {x,u} precisa ser inserida incidente a a no curso do processo de computar G+O’.

Caso 1: {x,u} é inserida após o passo i: pela invariante 3.4, nenhuma

não-aresta {u,v} pode aparecer.

Caso 2: {x,u} é inserida antes do passo i: consideremos a primeira aresta {x,u} adicionada incidente a a antes do passo i. Considere ak = {t,z}, k<i, como sendo

a aresta cuja bi-saturação criou a aresta {x,u} durante a construção de G+O’: ak

deve pertencer a N(a) na aresta {z,x}. Mas sendo que {z,x} não pode ser uma aresta inserida, porque {x,u} foi a primeira aresta inserida incidente a a e {z,x} está presente quando ak é processada. Então {z,x} está em G, e como a é

bi-saturável em G, e como a pertence tanto a N(z) quanto N(v), com v sendo probe, então {v,z} deve também ser uma aresta de G. Mas no passo k, ak,

pertence tanto a N(z) quanto N(v), e é bi-saturável no grafo transitório, portanto a aresta {u,v} também está em G, o que contradiz a suposição de que {u,v} é uma não-aresta.

Com isso, a é bi-saturável em G+O’. Pela propriedade 6.5, o grafo G''

obtido de G+O’ ao bi-saturar a é bipartido cordal, e é claramente um grafo

bipartido cordal completado de G + DG(a). Em G' = G+DG(a) e em G'', a é

bi-simplicial, então quando a é removida de G', G''-a é um grafo bipartido cordal completado de G', portanto G' continua sendo bipartido cordal probe.

Resumindo, qualquer aresta bi-saturável pode ser escolhida em cada passo do algoritmo EDGE-RECOGNITION, e o algoritmo responderá "SIM" se e somente se o grafo inicial era de fato um bipartido cordal probe

(33)

8 CONCLUSÃO

No presente trabalho apresentamos o que são grafos, algumas classes de grafos e mostramos uma classe de grafo diferenciada, o grafo bipartido cordal probe. Para isto, utilizamos um método de eliminação ordenada que também implicou em um algoritmo de reconhecimento executado em tempo polinomial (Golumbic M. C, Berry A., et al. 2007), o qual teve a sua execução provada no decorrer do trabalho fazendo uso de diferentes teoremas e

definições.

No decorrer do desenvolvimento deste trabalho foram encontradas algumas dificuldades, tais como, dificuldade na compreensão do tema para uma mais acertada explicação do mesmo. Essa dificuldade foi sanada graças à leitura de diferentes artigos internacionais sobre o tema, e uma pesquisa

profunda a respeito dos termos e definições utilizadas. Outra dificuldade foi conseguir encontrar uma aplicação prática para este tipo de grafo. Foi feita uma pesquisa para tentar identificar a origem desta família de grafos com a finalidade de compreender melhor como e onde esta definição pode ser aplicada, entretanto não foi encontrada uma origem definida, porém foi

encontrado outro grafo pertencente a esta família, o grafo interval probe, o qual teve algumas aplicações nas cadeias de DNA, o que leva a crer que

inicialmente o grafo tratado neste trabalho, surgiu na tentativa de levar o conceito probe para outras classes, conforme GOLUMBIC M. C, LIPSHETYN, M. (2004).

Com a conclusão deste trabalho observamos a possibilidade de efetuar uma pesquisa mais profunda nas diversas áreas da ciência, com o fim de encontrar uma aplicação prática relevante para o grafo em questão. Além disso, é possível fazer uso deste artigo para implementar o algoritmo

apresentado anteriormente, com o objetivo de conseguir uma execução rápida, dependente do tamanho do grafo inicial.

(34)

33

REFERÊNCIAS

[1] MARIANI, Antônio C. Conceitos Básicos da Teoria de Grafos. Disponível em: <http://www.inf.ufsc.br/grafos/definicoes/definicao.html> acessado em 10 de Novembro de 2013.

[2] FIGUEIREDO, Jorge C. A. Conjunto independente de vértices, Cliques e

Cobertura de Vértices. Disponível em:

<http://www.dsc.ufcg.edu.br/~abrantes/CursosAnteriores/TG051/clique.pdf> acessado em 20 de Novembro de 2013.

[3] MOREIRA, Leonardo Oliveira. Grafos (2012). Disponível em:

<http://www.passeidireto.com/arquivo/1003576/revista_programar_assembly/6> acessado em 12 de Dezembro de 2013.

[4] A. Br¨andstadt, V. Le, J.P. Spinrad. Graph classes: A Survey. SIAM Monographs on Discrete Math. and Applications, Philadelphia, 1999.

[5] MACHADO, Péricles Lopes. LEX-BFS e grafos cordais (2009). Disponível em: <http://falapericles.blogspot.com.br/2009/09/lex-bfs-e-grafos-cordais.html> acessado em 14 de Janeiro de 2014.

[6] M.C. Golumbic and C.F. Goss. Perfect elimination and chordal-bipartite graphs. Journal of Graph Theory, 2:155-163, 1978.

[7] CERIOLI, Marcia Rosana, POSNER, Daniel F. Domingues. Limite Superior

para L(2,1)-coloração de grafos bipartidos cordais (2008). Disponível em:

<http://www.din.uem.br/sbpo/sbpo2008/pdf/arq0311.pdf> acessado em 20 de Fevereiro de 2014.

[8] GOLUMBIC M. C, LIPSHETYN, M. Chordal Probe Graphs (2004). Disponível em:

<http://www.sciencedirect.com/science/article/pii/S0166218X04001374> acessado em 20 de Abril de 2014.

[9] Golumbic M. C, Berry A., et al. Recognizing Chordal-Bipartite Probe Graphs, 2007.

[10] P. Zhang, Probe interval graph and its application to physical mapping of DNA, Manuscript, 1994

Referências

Documentos relacionados

Még jó ideig érezte, hogy Kinnard látogatása sen hatott rá, aztán egyszer csak azon kapta magát, hogy már Edward viselkedésén töpreng. Ezért volt olyan meglepő, hogy

Em 1935, Philip Hall apresenta um teorema (conhecido como o teorema de Hall ou dos casamentos) onde estabelece uma condição necessária e suficiente para a existência de um

Procédure formelle Procédure informelle S’adresser directement à l’agent en cause « Incident » est clos Demander assistance et conseil Recours à la Médiation

Entrada (contacto NC) de fotocélula activa na fase de abertura e fecho.. PHC Fotocélula Entrada (contacto NC) de fotocélula activa na fase

The sample size and the number of tablets per test depends on the total hardness of water required:.. Water Hardness Required Sample Size Number of Tablets Less than

Um grafo (ou um grafo não orientado) G consiste de um conjunto V de vértices (ou nós) e um conjunto E de arestas (ou arcos) tal que cada aresta e ∈ ∈ E é associada com um par

(која треба да износи око 50%) 2)Други корак, је резервација; 3)Трећи корак, је писање налога за припрему и реализацију који се електронски

Cauê Aves, Alexandre Delijaicov, Guilherme Wisnik, Regina Meyer, Otavio Leonidio, Ana Luisa Nobre, Tiago Mesquita, Andres Hernandez, Carla Zacagnini, Fernanda Pitta, Thais