Dieses Problem ergab sich aus Softwaretests. Das Problem ist etwas schwer zu erklären. Ich werde zuerst ein Beispiel geben und dann versuchen, das Problem zu verallgemeinern.
Es müssen 10 Elemente getestet werden, z. B. A bis J, und ein Testwerkzeug, mit dem 3 Elemente gleichzeitig getestet werden können. Die Reihenfolge der Elemente im Testwerkzeug spielt keine Rolle. Für umfassende Tests benötigen wir natürlich Kombinationen von Elementen.
Das Problem ist komplexer. Es gibt eine zusätzliche Bedingung, dass, sobald ein Paar von Elementen zusammen getestet wurde, dasselbe Paar nicht erneut getestet werden muss.
Zum Beispiel, nachdem wir die folgenden drei Tests ausgeführt haben:
ABC
ADE
BDF
wir müssen nicht ausführen:
ABD
da das Paar A, B vom ersten Testfall abgedeckt wurde, wurde A, D vom zweiten und B, D vom dritten abgedeckt.
Das Problem ist also, wie viele Testfälle müssen mindestens erforderlich sein, um sicherzustellen, dass alle Paare getestet werden?
Um zu verallgemeinern, wenn wir n Elemente haben, können s gleichzeitig getestet werden, und wir müssen sicherstellen, dass alle möglichen t-Tupel getestet werden (so dass s> t), wie viele Testfälle wir mindestens benötigen Terme von n, s und t?
Und schließlich, was wäre ein guter Algorithmus, um die erforderlichen Testfälle zu generieren?