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<v∈SuvMGCGCMCm
"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 ".ACAn−mCPxy(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.