Ця проблема виникла при тестуванні програмного забезпечення. Проблему трохи важко пояснити. Спершу наведу приклад, потім спробую узагальнити проблему.
Є 10 предметів, які підлягають тестуванню, наприклад, від A до J, і інструмент для тестування, який може протестувати 3 предмети одночасно. Порядок елементів у інструменті тестування не має значення. Звичайно, для вичерпного тестування нам потрібні комбінації елементів.
Проблема складніша. Існує додаткова умова, що після того, як пара предметів була протестована разом, то ж цю пару не потрібно перевіряти знову.
Наприклад, щойно ми виконали наступні три тести:
ABC
ADE
BDF
нам не потрібно виконувати:
ABD
оскільки пара A, B була охоплена першим випробувальним випадком, A, D була охоплена другою, а B, D була охоплена третьою.
Отже, проблема полягає в тому, яка мінімальна кількість тестових випадків нам потрібна для того, щоб перевірити всі пари?
Для узагальнення, якщо у нас є n елементів, s можна перевірити одночасно, і нам потрібно забезпечити тестування всіх можливих t кортежів (таких, що s> t), яка мінімальна кількість тестових випадків, які нам потрібні умови n, s і t?
І нарешті, який би був хороший алгоритм для створення необхідних тестових випадків?