Vấn đề này khó hơn tưởng tượng.
Như những người khác đã ám chỉ, đây là một bài toán NP-đầy đủ, nhưng hãy phân tích điều đó có nghĩa là gì.
Về cơ bản, nó có nghĩa là bạn phải xem xét tất cả các kết hợp có thể có.
Nhưng "nhìn vào" không cho bạn biết nhiều điều bạn cần làm.
Dễ dàng tạo ra tất cả các kết hợp có thể. Nó có thể tạo ra một lượng lớn dữ liệu, nhưng bạn sẽ không gặp nhiều khó khăn khi hiểu các khái niệm của phần này của vấn đề.
Vấn đề thứ hai là đánh giá xem một kết hợp có thể đưa ra là tốt, xấu, hay tốt hơn so với giải pháp "tốt" trước đó.
Đối với điều này, bạn không chỉ cần "nó là một giải pháp khả thi".
Ví dụ, cùng một giáo viên làm việc 5 ngày một tuần trong X tuần liên tục? Ngay cả khi đó là một giải pháp làm việc, nó có thể không phải là một giải pháp tốt hơn là luân phiên giữa hai người để mỗi giáo viên làm một tuần một lần. Ồ, bạn không nghĩ về điều đó? Hãy nhớ rằng, đây là những người bạn đang đối phó, không chỉ là vấn đề phân bổ nguồn lực.
Ngay cả khi một giáo viên có thể làm việc toàn thời gian trong 16 tuần liên tục, đó có thể là giải pháp dưới mức tối ưu so với giải pháp mà bạn cố gắng luân phiên giữa các giáo viên và loại cân bằng này rất khó để xây dựng thành phần mềm.
Tóm lại, việc đưa ra một giải pháp tốt cho vấn đề này sẽ có giá trị rất nhiều đối với nhiều người. Do đó, nó không phải là một vấn đề dễ dàng để chia nhỏ và giải quyết. Hãy chuẩn bị đưa ra một số mục tiêu không đạt 100% và gọi chúng là "đủ tốt".