Sono parecchio in difficoltà nel riuscire a trovare l'algoritmo che mi permetta di trovare tutte le combinazioni di n elementi, che però possono essere tra loro esclusivi, nel senso che la presenza dell'i-esimo elemento esclude la presenza del j-esimo elemento sulla base di una matrice detta di contemporaneità, simmetrica.
Faccio un esempio, potrebbero essere gli elementi V1, W1, T1, V2, W2, T2, e la matrice di contemporaneità sia
V1 W1 T1 V2 W2 T2 V1 - 1 1 0 1 1 W1 1 - 1 1 0 1 T1 1 1 - 1 1 0 V2 0 1 1 - 1 1 W2 1 0 1 1 - 1 T2 1 1 0 1 1 -
L'elemento mij della matrice sta quindi a dire se l'elemento della colonna j puo' essere presente contemporaneamente all'elemento della riga i.
Dalla prima riga, si ricava che le combinazioni possibili sono le seguenti quattro:
V1 W1 T1 V2 W2 T2 01 1 1 1 0 0 0 02 1 1 0 0 0 1 03 1 0 1 0 1 0 04 1 0 0 0 1 1
e così via...
Il tentativo è stato:
- fisso presente un elemento, (a turno nell'ordine uno ciascuno degli elementi)
- poi fisso presente un secondo elemento, a turno uno ciascuno degli elementi della riga diversi da zero
- poi scorro tutti gli elementi della riga e verifico se ciascuno può essere presente o meno con gli elementi già considerati presenti nella combinazione.
Con questo modo di operare, con l'esempio qui riportato, perdo per strada la combinazione 04, quindi questo modo di procedere non e' corretto, ma non riesco a vedere altre strade.
Non ci sono limiti a quanti elementi un elemento puo' contemporaneamente escludere.
Suggerimenti?