Ce problème est né des tests de logiciels. Le problème est un peu difficile à expliquer. Je vais d'abord donner un exemple, puis essayer de généraliser le problème.
Il y a 10 éléments à tester, disons de A à J, et un outil de test qui peut tester 3 éléments en même temps. L'ordre des éléments dans l'outil de test n'a pas d'importance. Bien sûr, pour des tests exhaustifs, nous avons besoin de combinaisons d'éléments.
Le problème est plus complexe. Il y a une condition supplémentaire qu'une fois qu'une paire d'articles a été testée ensemble, la même paire n'a pas besoin d'être testée à nouveau.
Par exemple, une fois que nous avons exécuté les trois tests suivants:
abc
ADE
BDF
nous n'avons pas à exécuter:
ABD
parce que la paire A, B était couverte par le premier cas de test, A, D était couverte par le second, et B, D était couverte par le troisième.
Donc, le problème est, quel est le nombre minimum de cas de test dont nous avons besoin pour nous assurer que toutes les paires sont testées?
Pour généraliser, si nous avons n éléments, s peut être testé en même temps, et nous devons nous assurer que tous les tuples possibles sont testés (tels que s> t), quel est le nombre minimum de cas de test dont nous avons besoin dans termes de n, s et t?
Et enfin, quel serait un bon algorithme pour générer les cas de test requis?