この問題は、ソフトウェアのテストから発生しました。問題を説明するのは少し難しいです。最初に例を示し、次に問題を一般化してみます。
AからJまでの10項目のテストがあり、同時に3項目をテストできるテストツールがあります。テストツール内のアイテムの順序は関係ありません。もちろん、徹底的なテストを行うには、アイテムの組み合わせが必要です。
問題はより複雑です。追加の条件として、1組のアイテムを一緒にテストすると、同じペアを再度テストする必要がなくなるという条件があります。
たとえば、次の3つのテストを実行するとします。
ABC
ADE
BDF
実行する必要はありません:
ABD
ペアA、Bは最初のテストケースでカバーされ、A、Dは2番目のテストケースでカバーされ、B、Dは3番目のテストケースでカバーされたためです。
それで問題は、すべてのペアがテストされることを保証するために必要なテストケースの最小数は何ですか?
一般化するために、n個のアイテムがある場合、sを同時にテストでき、可能なすべてのtタプル(s> tなど)をテストする必要があります。これは、必要なテストケースの最小数です。 n、s、tの項?
そして最後に、必要なテストケースを生成するための良いアルゴリズムは何でしょうか?