Như đã trình bày trong câu trả lời trước, vấn đề này có thể được mô hình hóa như một vấn đề lập lịch với ngày phát hành và ngày đáo hạn. Tuy nhiên, heuristic chỉ hoạt động cho trường hợppj=1 (tất cả thời gian xử lý là 1) hoặc khi phát hành và ngày đáo hạn đồng ý (nghĩa là có một đơn đặt hàng sao cho r1≤⋯≤rn và d1≤⋯≤dn).
Đối với trường hợp pj=pCác thuật toán đa thức đã được tìm thấy bởi Simons (1978) , Carlier (1981) và Garey et al. (1981) , chạy đúng giờO(n2logn), O(n2logn)và O(nlogn), tương ứng.
Thuật toán của Garey et al. lên lịch các nhiệm vụ thời gian đơn vị, nhưng cho phép phát hành tùy ý và ngày đáo hạn. Vấn đề trên có thể được giảm xuống cho cài đặt này bằng cách chia tất cả các ngày và thời gian xử lý chop. Ý tưởng chính của thuật toán là tìm một tập hợp các vùng cấm trong đó không có nhiệm vụ nào được phép bắt đầu. Chúng cho thấy rằng heuristic khi tôn trọng các khu vực cấm tìm thấy một lịch trình khả thi của makepan tối thiểu. Khi xây dựng các khu vực cấm, thuật toán của họ cũng có thể phát hiện ra tính không khả thi.
Để xem thuật toán hoạt động như thế nào, trước tiên hãy xem xét một vấn đề đơn giản hơn: lịch trình n nhiệm vụ thời gian giữa một ngày phát hành r và thời hạn d tôn trọng các khu vực cấm F=⋃i(ai,bi), nơi mỗi vùng (ai,bi)là một khoảng thời gian mở. (Lưu ý ở đây chúng tôi không quan tâm đến việc phát hành và ngày đáo hạn của các nhiệm vụ riêng lẻ.)
Vấn đề này có thể được giải quyết bằng Backschedending : xác định thời gian bắt đầu canh gácsn+1=d, va cho i=n,n−1,…,1 đặt thời gian bắt đầu si đến lần gần nhất không muộn hơn si+1−1 điều đó không bị cấm
Viết B(r,d,n,F) cho một ứng dụng Backschedending cho các đầu vào trên và xác định giá trị trả về là s1, ngày bắt đầu mới nhất có thể để lên lịch nnhiệm vụ. Bây giờ nếuB(r,d,n,F)<r không có lịch trình khả thi cho nnhiệm vụ. Hơn nữa, nếur≤B(r,d,n,F)<r+1 không có nhiệm vụ nào khác có thể bắt đầu (B(r,d,n,F)−1,r) vì nếu không thì lại không có lịch trình khả thi cho n nhiệm vụ, và do đó (B(r,d,n,F)−1,r) có thể được tuyên bố là một khu vực cấm.
Nó chỉ ra rằng logic này là đủ để tìm thấy tất cả các khu vực bị cấm được yêu cầu để làm cho công việc heuristic của Schrage. Giả sử rằng các nhiệm vụ được ra lệnh sao chor1≤r2≤⋯≤rn và viết n(r,d) cho số lượng tác vụ được phát hành và do trong khoảng thời gian đóng [r,d].
- bộ F=∅
- cho các nhiệm vụ i=n,n−1,…,1:
- c=min{B(ri,dj,n(ri,dj),F)∣∀j:dj≥di}
- nếu c<ri: trả lại "không có lịch trình khả thi"
- khác nếu ri≤c<ri+1: bộ F=F∪{(c−1,ri)}
Việc thực hiện đơn giản như trên sẽ mất thời gian O(n4). Garey et al. cho thấy (bên cạnh tính chính xác) rằng bằng cách cập nhật thời gian thu được từ Backschedending, tham gia các vùng cấm chồng chéo và thực hiện các truy vấn "bị cấm"O(1) thời gian có thể được đưa xuống O(n2)và bằng cách sử dụng các cơ sở dữ liệu tốt hơn để O(nlogn).