Masalah ini muncul dari pengujian perangkat lunak. Masalahnya agak sulit dijelaskan. Pertama saya akan memberikan contoh, kemudian mencoba untuk menggeneralisasi masalah.
Ada 10 item yang akan diuji, katakan A ke J, dan alat pengujian yang dapat menguji 3 item sekaligus. Urutan item dalam alat pengujian tidak masalah. Tentu saja, untuk pengujian menyeluruh, kami membutuhkan kombinasi item.
Masalahnya lebih kompleks. Ada kondisi tambahan bahwa sekali sepasang barang telah diuji bersama, maka pasangan yang sama tidak perlu diuji lagi.
Misalnya, setelah kami melakukan tiga tes berikut:
ABC
ADE
BDF
kita tidak harus mengeksekusi:
ABD
karena pasangan A, B ditutupi oleh kasus uji pertama, A, D ditutupi oleh yang kedua, dan B, D ditutupi oleh yang ketiga.
Jadi masalahnya adalah, berapa jumlah minimum kasus uji yang perlu kita pastikan bahwa semua pasangan diuji?
Untuk menggeneralisasi, jika kita memiliki n item, s dapat diuji pada saat yang sama, dan kita perlu memastikan bahwa semua t tupel yang mungkin diuji (seperti s> t), berapa jumlah minimum kasus uji yang kita butuhkan dalam syarat n, s dan t?
Dan akhirnya, apa algoritma yang baik untuk menghasilkan kasus uji yang diperlukan?