/ / Algoritmo per dividere un insieme di simboli con vincoli in un numero minimo di sottoinsiemi - algoritmo, combinazioni

Algoritmo per dividere un insieme di simboli con vincoli in un numero minimo di sottoinsiemi - algoritmo, combinazioni

Ho un set S={a,c,d,e,f,j,m,q,s,t} con un vincolo C={am,cm,de,df,dm,ds,ef,em,eq,es,et,fj,fm,fs,jm,js}. xy in C significa che xey non possono essere nello stesso sottoinsieme. Vorrei un algoritmo per dividere il set S in sottoinsiemi Sj in modo tale che:

1. Il numero di Sj è ridotto al minimo

2. La differenza tra le dimensioni di ciascun sottoinsieme è la più ampia possibile

Per esempio in questo caso, entrambi {{q,a,c,d,j,t},{m,s},{f},{e}} e {{a,c,e,j},{m,s,q,t},{d},{f}} sono soddisfacenti 1, ma il primo è ottimale.

Venendo da un background di informatica, mi chiedo se i matematici abbiano escogitato un algoritmo per questo problema.

risposte:

1 per risposta № 1

Come ho capito, il tuo compito può essere riscritto come: trovare il più grande sottoinsieme indipendente di vertici S "del grafico G = (S, C), ripetere il passo per il grafico G" = GS ".

È ben noto (indicato anche da @tobias_k nel suo commento) più grande insieme indipendente del grafico è un problema NP-difficile (in quanto è equivalente al famoso clique-problem).


0 per risposta № 2

Penso che questo sia un problema molto difficile, e cioèperché. Per trovare il numero minimo di sottoinsiemi, è necessario risolvere il problema relativo al numero cromatico minimo del grafico. Questo problema è generalmente risolto dalla forza bruta.