Masalah ini lebih sulit dari yang terlihat.
Seperti yang telah disinggung orang lain, ini adalah masalah NP-complete, tapi mari kita analisis apa artinya.
Pada dasarnya, ini berarti Anda harus melihat semua kemungkinan kombinasi.
Tetapi "melihat" tidak memberi tahu Anda banyak hal yang perlu Anda lakukan.
Menghasilkan semua kemungkinan kombinasi itu mudah. Ini mungkin menghasilkan sejumlah besar data, tetapi Anda seharusnya tidak memiliki banyak masalah dalam memahami konsep bagian masalah ini.
Masalah kedua adalah menilai apakah kombinasi yang mungkin diberikan baik, buruk, atau lebih baik daripada solusi "baik" sebelumnya.
Untuk ini, Anda memerlukan lebih dari sekadar "apakah ini solusi yang mungkin".
Misalnya, apakah guru yang sama bekerja 5 hari seminggu selama X minggu berturut-turut? Sekalipun itu adalah solusi yang berhasil, itu mungkin bukan solusi yang lebih baik daripada bergantian antara dua orang sehingga masing-masing guru melakukannya satu minggu. Oh, kamu tidak memikirkan itu? Ingat, ini adalah orang yang Anda hadapi, bukan hanya masalah alokasi sumber daya.
Bahkan jika seorang guru dapat bekerja penuh waktu selama 16 minggu berturut-turut, itu mungkin merupakan solusi yang kurang optimal dibandingkan dengan solusi di mana Anda mencoba untuk bergantian di antara guru, dan jenis penyeimbangan ini sangat sulit untuk dibangun ke dalam perangkat lunak.
Ringkasnya, menghasilkan solusi yang baik untuk masalah ini akan sangat bermanfaat bagi banyak orang. Oleh karena itu, bukanlah masalah yang mudah untuk dipecah dan dipecahkan. Bersiaplah untuk melihat beberapa tujuan yang tidak 100% dan menyebutnya "cukup baik".