Questo problema è nato dai test del software. Il problema è un po 'difficile da spiegare. Prima farò un esempio, quindi proverò a generalizzare il problema.
Esistono 10 articoli da testare, ad esempio da A a J, e uno strumento di test in grado di testare 3 articoli contemporaneamente. L'ordine degli articoli nello strumento di test non ha importanza. Naturalmente, per test esaustivi, abbiamo bisogno di combinazioni di elementi.
Il problema è più complesso Vi è una condizione aggiuntiva che una volta che una coppia di articoli sia stata testata insieme, che la stessa coppia non debba essere testata di nuovo.
Ad esempio, una volta eseguiti i seguenti tre test:
ABC
ADE
BDF
non dobbiamo eseguire:
ABD
poiché la coppia A, B era coperta dal primo caso di test, A, D era coperta dal secondo e B, D era coperta dal terzo.
Quindi il problema è: qual è il numero minimo di casi di test di cui abbiamo bisogno per garantire che tutte le coppie siano testate?
Per generalizzare, se abbiamo n articoli, s possono essere testati contemporaneamente e dobbiamo assicurarci che tutte le possibili tuple siano testate (tale che s> t), qual è il numero minimo di casi di test di cui abbiamo bisogno termini di n, s et?
E infine, quale sarebbe un buon algoritmo per generare i casi di test richiesti?