Roger Ricardo Flores de Araujo Orientador: José Coelho de Pina

Propaganda
MAC0499 Trabalho de Formatura Supervisionado
Algoritmos para emparelhamentos
Aluno: Roger Ricardo Flores de Araujo
Orientador: José Coelho de Pina
Brincando com ligações quı́micas
No meio do caminho havia um caminho de aumento
Emparelhamentos aparecem em quı́mica quando precisamos determinar as possı́veis estruturas
de várias moléculas. A figura abaixo mostra a estrutura quı́mica parcial de uma molécula de hidrocarbonetos. A molécula contém átomos de carbono (representados por vértices com a letra ’C’) e átomos
de hidrogênio (representados por vértices com a letra ’H’). Arestas representam ligações quı́micas entre
átomos. Estas ligações quı́micas (que podem ser simples ou duplas), precisam satisfazer a valência
correta para todos os vértices (a valência de um átomo é a soma de suas ligações quı́micas). Átomos
de carbono têm valência 4 e átomos de hidrogênio têm valência 1.
Um caminho P num grafo (V, E) é alternante em relação a um emparelhamento M , se
as arestas de P estão alternadamente em M e E − M .
Um caminho alternante é de aumento se suas extremidades não estão emparelhadas. Caminhos de aumento nos possibilitam encontrar emparelhamentos com maior quantidade de arestas, como
mostra a figura a seguir.
Contração: Seja G um grafo e O uma flor de G. Crie um novo grafo, no qual todos os vértices
e arestas de O serão substituı́dos por um único novo pseudo-vértice S. Na figura seguinte temos o
grafo resultante da contração de O.
H
H
S
M’:=P M
H
C
C
C
C
C
H
C
C
C
C
C
C
C
C
H
H
H
H
C
C
H
C
C
C
C
C
C
C
C
C
C
C
C
H
C
H
C
C
C
H
H
C
H
H
C
C
H
H
C
C
C
C
C
H
H
C
C
C
C
C
H
Na parte esquerda da figura, temos um caminho aumentador P , no qual as arestas gordas são do
emparelhamento M . Nas parte direita temos um emparelhamento de cardinalidade |M | + 1, obtido
através da diferença simétrica entre P e M .
O Método Húngaro encontra um emparelhamento máximo através de uma seqüência de
caminhos de aumento.
Cada caminho de aumento no grafo contraı́do pode ser convertido num caminho de aumento no
grafo original. Aplicando alternadamente o método húngaro e contração, encontramos caminhos de
aumento, se existirem.
A próxima figura simula como o algoritmo da flor faria para encontrar um emparelhamento
máximo no grafo ilustrado anteriormente.
S
Nem tudo são flores
H
H
H
H
Na figura, cada aresta determina um ligação quı́mica simples e, conseqüentemente, cada átomo
de hidrogênio possui valência 1, mas cada átomo de carbono possui somente valência 3. Gostarı́amos
de determinar quais pares de átomos de carbono são ligados por uma ligação dupla para que cada
átomo de carbono tenha valência 4. Poderı́amos formular este problema para determinar alguma
provável estrutura de ligações duplas como um problema de emparelhamento. Na parte direita da
figura acima, mostramos uma provável estrutura de componentes, na qual as arestas destacadas do
grafo mostram as ligações duplas entre os átomos
Aplicado a grafos não bipartidos, o método húngaro sofre uma ”certa dificuldade”
quando encontra um circuito ı́mpar no grafo. Na figura abaixo, O é um circuito ı́mpar.
S=V(O)
S
u
Quaisquer duas arestas em M não têm vértice em comum.
O problema no qual estamos interessados é o chamado problema do emparelhamento
máximo:
Dado um grafo (V, E), encontrar um emparelhamento de cardinalidade máxima.
Vamos resolvê-lo inicialmente no caso mais simples (grafos bipartidos) e posteriormente no caso
mais complexo (grafos não bipartidos).
S’
Contrai S’
S
Expande S’
S’’
Mas afinal, o que é um emparelhamento?
Tipicamente, num emparelhamento, estamos interessados em dividir uma coleção em pares a
fim de maximizar algum lucro ou minimizar um certo custo, sendo que tanto o lucro quanto o custo
de cada par é conhecido previamente.
Formalmente, podemos pensar da seguinte forma. Seja (V, E) um grafo não-orientado com conjunto V de vértices e conjunto E de arestas. Um emparelhamento (matching) em (V, E) é uma
parte M de E dotada da seguinte propriedade:
Expande S
Contrai S
b
v
S
O
P
S
S’
Contrai S’’
S’’
S’
Expande S’’
Aumente
S’’
Quer saber mais?
Um circuito O é alternante em relação a um emparelhamento M se M ∩ E(O) é um emparelhamento máximo em O. Quando O é um circuito alternante ı́mpar, é chamado de flor. O vértice
de uma flor que não está emparelhado é chamado de botão da flor. Finalmente, se o botão b de uma
flor é ligado a um vértice não emparelhado por um caminho alternante P com V (P ) ∩ V (O) = {b},
então P é chamado de haste da flor.
Para superar a dificuldade sofrida pelo método húngaro, Jack Edmonds propôs o algoritmo
das flores, no qual flores são ”contraı́das” assim que são encontradas.
Caso haja interesse em saber mais detalhes, todo o material relacionado à iniciação cientı́fica
está disponı́vel na Internet. A monografia contendo toda a teoria estudada, as implementações dos
algoritmos e outras referências relacionadas podem ser encontradas nos sı́tios do projeto:
http://www.ime.usp.br/~coelho/oticomb/
http://www.linux.ime.usp.br/~raraujo/mac499/
Download