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 .
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.
Respostas:
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 .u v u v
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=S G u<v∈S u v M G C G C M C m
"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 ".A C A n−m C P x y (x,y) ;then has
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.
fonte