Abbiamo una raccolta di set A_1, .., A_n. L'obiettivo è trovare nuovi set per ciascuno dei vecchi set.Ricerca di sottoinsiemi che possono essere completati per tuple senza duplicati
newA_i = {a_i in A_i such that there exist (a_1,..,a_n) in (A1,..,An) with no a_k = a_j for all k and j}
Quindi, in parole questo dice di rimuovere tutti gli elementi da A_i che non possono essere usati per formare una tupla (a_1, .. a_n) dai set (A_1, .., a_n) tale che la tupla non contiene duplicati.
La mia domanda è come calcolare rapidamente questi nuovi set. Se implementi questa definizione generando tutte le possibili v, ciò richiederà un tempo esponenziale. Conosci un algoritmo migliore?
Modifica: ecco un esempio. Prendere
A_1 = {1,2,3,4}
A_2 = {2}.
Ora i nuovi set di simile a questa:
newA_1 = {1,3,4}
newA_2 = {2}
Il 2 è stato rimosso dal A_1 perché se si sceglie la tupla sarà sempre (2,2), che non è valido perché contiene duplicati. D'altra parte 1,3,4 sono validi perché (1,2), (3,2) e (4,2) sono tuple valide.
Un altro esempio:
A_1 = {1,2,3}
A_2 = {1,4,5}
A_3 = {2,4,5}
A_4 = {1,2,3}
A_5 = {1,2,3}
Ora i nuovi set sono:
newA_1 = {1,2,3}
newA_2 = {4,5}
newA_3 = {4,5}
newA_4 = {1,2,3}
newA_5 = {1,2,3}
Il 1 e 2 vengono rimossi dal set di 2 e 3 perché se si sceglie l'1 o 2 da questi set si Avrai solo 2 valori per i set 1, 4 e 5, quindi avrai sempre duplicati in tuple che assomigliano a (_,1,_,_,_)
o simili a (_,_,2,_,_)
.
Questo problema sembra difficile, ma sarebbe bello se esistesse un algoritmo del tempo polinomiale.
Un altro modo per osservare questo è di visualizzare i set A_i a sinistra ei valori a destra, con una linea che collega un set e un valore se il valore è nell'insieme.
stai scrivendo un risolutore kakuro/sudoku?Se è così, hai dei limiti sui possibili valori, come ad esempio 1 - 9, ci sono sempre al massimo 9 set, quel genere di cose? – clahey
Buona ipotesi :) Non è per sukodu ma è * per * un tipo di risolutore/generatore di puzzle logico (per verificare se esiste una soluzione unica). Non esiste un limite fisso per il numero di serie o quanti elementi ci sono nei set, ma questi numeri saranno in pratica piccoli (diciamo meno di 20). Ma ancora 20^20 è un gran numero di tuple da controllare! – Jules
Suppongo che potrebbero esserci diverse soluzioni valide? In questo caso, stai cercando una soluzione ottimale in un certo senso? – aioobe