Como encontrar o conjunto independente máximo de um gráfico direcionado?

7

Estou tentando resolver esse problema .

Problema : Dados números inteiros positivos, sua tarefa é selecionar um número máximo de números inteiros para que não haja dois números nos quais seja divisível por .na,bab

Eu tenho que encontrar o conjunto independente máximo e o tamanho desse conjunto. O tamanho pode ser encontrado pelo teorema de König . Mas como posso encontrar o Conjunto Independente Máximo (ou seja, qual vértice faz parte do conjunto).

Também fiz algumas pesquisas e encontrei algo aqui :

If removing a vertex does not change minimum path cover then I can get the desired result without that vertex.

Mas eu não entendo o teorema subjacente. Qualquer ajuda será muito útil.

palatok
fonte
Por que você acha que é um gráfico bipartido?
Joe
não é, mas é possível aplicar a cobertura mínima do caminho em um gráfico direcionado.
palatok
2
Publicado em: stackoverflow.com/questions/15211918/… . Não faça postagens cruzadas em vários sites SE ao mesmo tempo. Se você não receber uma resposta satisfatória na postagem original por alguns dias, poderá postar em outro site da rede. Nesse caso, adicione um link para a outra postagem em cada uma das suas postagens, para que as pessoas saibam onde você está e evite trabalhos duplicados.
Par Par

Respostas:

6

Você está tentando encontrar a largura do poset definido pelo subconjunto especificado de números inteiros e a relação de divisibilidade. A largura é o número máximo de anti-cadeias, que é o mesmo que o conjunto máximo de elementos incomparáveis ​​no poset.

Isso corresponde exatamente ao conjunto independente máximo no Gráfico de Comparabilidade , onde cada número inteiro é um vértice e há uma aresta de até se e somente se divide .uvuv

Encontrar o conjunto independente máximo em geral é um problema difícil, mas os gráficos de comparabilidade são um caso especial para o qual existem algoritmos eficientes.

O Teorema de Dilworth caracteriza a largura de qualquer poset como uma partição do poset em cadeias (fonte para afundar caminhos no gráfico de comparabilidade direcionada). O Teorema de Dilworth é equivalente ao teorema de König sobre Correspondência Bipartida , que, como você sugeriu, leva a um algoritmo. O gráfico bipartido que você constrói para usar o teorema de Konig e encontrar o conjunto independente máximo por meio de uma correspondência bipartida é descrito simplesmente no link da Wikipedia acima. Para completar, incluímos aqui (em forma anotada):

"Defina um gráfico bipartido onde [o conjunto de números inteiros] e onde (u, v) é uma aresta em quando [número inteiro divide o número inteiro ]. Pelo teorema de König, existe um correspondente em e um conjunto de vértices em , de modo que cada aresta no gráfico contenha pelo menos um vértice em e de modo que e tenham a mesma cardinalidade .G=(U,V,E)U=V=SGu<vSuvMGCGCMCm

"Seja o conjunto de elementos de S que não correspondem a nenhum vértice em ; então possui pelo menos elementos (possivelmente mais se contiver vértices correspondentes ao mesmo elemento nos dois lados da bipartição). ser uma família de cadeias formadas pela inclusão de e na mesma cadeia, sempre que existe uma aresta em m P n - m $ cadeias Portanto, nós construímos um antichain e uma partição em cadeias. com a mesma cardinalidade ".ACAnmCPxy(x,y);thenhas

O conjunto de rótulos de vértice distintos (números inteiros) em é a resposta para sua pergunta.A

A Seção 3 do artigo Algoritmos Online para Partição em Cadeia de Dilworth, de Ikiz e Garg, descreve dois algoritmos offline diferentes para calcular a partição em cadeia e, portanto, o conjunto independente que você está procurando. Um dos algoritmos é baseado no método de correspondência bipartida.

Joe
fonte
11
No caso especial em que o conjunto de entrada é composto por todos os números inteiros em algum intervalo , você pode usar o arquivo en.wikipedia.org/wiki/Abouabdillah%27s_theorem#Number_theory #[1,N]
Joe