Nếu bạn có một bộ đặt chỗ và một số phòng cố định thì câu hỏi không phải là cách tối đa hóa việc sử dụng nhưng để xác minh xem đặt phòng có thực sự được nhận ra hay không. Việc sử dụng rõ ràng vẫn giữ nguyên nếu tất cả các đặt phòng được thực hiện. Một trường hợp sử dụng có thể khác là bạn có một tập hợp đặt chỗ mà bạn biết có thể được nhận ra, và sau đó bạn cố gắng đặt chỗ mới, tức là khách hàng mới muốn đặt chỗ mới và bạn muốn kiểm tra xem liệu có phải đặt trước hay không. bạn có thể di chuyển một số đặt phòng để tạo phòng cho phòng mới.
Trong cả hai trường hợp, câu hỏi thực tế là cách kiểm tra xem có thể nhận được một bộ đặt trước nhất định hay không.
Đối với các đặt phòng không thể định vị lại, điều này là tầm thường, vì vậy giả sử chúng có thể được thực hiện và bạn muốn kiểm tra xem các đặt phòng có thể định vị lại có thể được nhận ra không.
Séc đầu tiên là tính toán cho mỗi đêm số lần đặt trước cho mỗi đêm đó; nếu vào bất kỳ đêm nào số lượng đặt phòng vượt quá số lượng phòng có sẵn sau khi đặt phòng cố định được tính cho bạn không thể nhận ra các đặt phòng bằng bất kỳ thủ thuật nào; khách sạn của bạn được đặt trước quá nhiều cho đêm đó.
Nếu không, bạn có thể sử dụng thuật toán tham lam để thử giải pháp: xử lý đặt trước theo thứ tự ngày bắt đầu và đặt mọi đặt phòng vào phòng đầu tiên (ví dụ: theo thứ tự số). Nếu điều này cung cấp cho bạn một giải pháp, sau đó bạn đã nhận ra các đặt phòng và bạn đã hoàn tất.
Nếu điều đó không hiệu quả, thì bạn có thể sử dụng GRAPH COLORING để giải quyết vấn đề, và đây là giải pháp phổ quát. Xây dựng một đồ thị, nơi mỗi đặt phòng là một nút và hai nút (đặt phòng) được kết nối nếu và chỉ khi chúng chồng chéo thời gian khôn ngoan. Bao gồm đặt chỗ cố định (không thể di chuyển) trong biểu đồ. Sau đó, cố gắng làm màu hoàn chỉnh của đồ thị với N màu sắc (N = tổng số phòng trong khách sạn của bạn) một khi bạn đã đổi màu các đặt phòng cố định với số phòng mà họ liên quan đến.
Bạn cũng có thể xử lý các đặt chỗ linh hoạt một phần theo cách này, thêm liên kết từ đặt trước đến nút đặc biệt n cho phòng n nếu và chỉ khi đặt phòng KHÔNG được thực hiện trong phòng n (ví dụ: phòng thấp hơn).
Thuật toán tô màu đồ thị này được sử dụng thành công, ví dụ: trong các trình biên dịch để phân bổ đăng ký.
Tất nhiên sau đó câu hỏi là làm thế nào để thực hiện màu đồ thị hiệu quả; cho rằng có sẵn sàng thực hiện.
Chúc may mắn!
Bạn có thể đặt một số đặt phòng trong một phòng để tăng mức sử dụng không? –
@Anders Tôi không nghĩ vậy :) – JohnIdol