Ten problem powstał w wyniku testowania oprogramowania. Problem jest trochę trudny do wyjaśnienia. Najpierw podam przykład, a następnie spróbuję uogólnić problem.
Do przetestowania jest 10 elementów, od A do J, oraz narzędzie testujące, które może testować 3 elementy jednocześnie. Kolejność elementów w narzędziu testowym nie ma znaczenia. Oczywiście do wyczerpujących testów potrzebujemy 10 kombinacji przedmiotów w C 3 .
Problem jest bardziej złożony. Istnieje dodatkowy warunek, że gdy para elementów zostanie przetestowana razem, ta sama para nie musi być ponownie testowana.
Na przykład po wykonaniu następujących trzech testów:
ABC
ADE
BDF
nie musimy wykonywać:
ABD
ponieważ para A, B była objęta pierwszym przypadkiem testowym, A, D była objęta drugim, a B, D była objęta trzecim.
Problem w tym, jaka jest minimalna liczba przypadków testowych, których potrzebujemy, aby zapewnić przetestowanie wszystkich par?
Aby uogólnić, jeśli mamy n elementów, s można przetestować w tym samym czasie i musimy upewnić się, że wszystkie możliwe t krotki są testowane (takie, że s> t), jaka jest minimalna liczba przypadków testowych, których potrzebujemy w warunki n, s i t?
I wreszcie, jaki byłby dobry algorytm do generowania wymaganych przypadków testowych?