Эта проблема возникла в результате тестирования программного обеспечения. Проблему немного сложно объяснить. Сначала я приведу пример, а затем постараюсь обобщить проблему.
Есть 10 предметов для тестирования, скажем, от A до J, и инструмент для тестирования, который может проверять 3 предмета одновременно. Порядок пунктов в инструменте тестирования не имеет значения. Конечно, для исчерпывающего тестирования нам понадобится комбинаций предметов.
Проблема более сложная. Существует дополнительное условие, что после того, как пара предметов была протестирована вместе, чем та же пара не нуждается в повторном тестировании.
Например, однажды мы выполнили следующие три теста:
азбука
ADE
BDF
нам не нужно выполнять:
ABD
поскольку пара A, B была охвачена первым контрольным примером, A, D была покрыта вторым, а B, D - третьим.
Итак, проблема в том, какое минимальное количество тестовых случаев нам нужно, чтобы убедиться, что все пары протестированы?
В целом, если у нас есть n элементов, s можно тестировать одновременно, и нам нужно убедиться, что тестируются все возможные t-кортежи (такие, что s> t), какое минимальное количество тестовых случаев нам нужно в условия п, с и т?
И, наконец, какой будет хороший алгоритм для генерации необходимых тестовых случаев?