Vấn đề chọn pizza của Winkler:
- Một miếng bánh pizza hình tròn gồm các
n
lát, trong đó láti
có diện tíchS_i
, tức là diện tích khác nhau cho mỗi miếng bánh. - Người ăn Alice và Bob thay phiên nhau chọn những lát, nhưng thật thô lỗ khi tạo ra nhiều khoảng trống trong chiếc bánh (xem xét nó không được phép).
- Do đó, mỗi người ăn bị hạn chế lấy một trong hai lát liền kề với vùng mở. Alice đi trước, và cả hai người ăn đều tìm kiếm càng nhiều bánh càng tốt.
Làm thế nào một thuật toán lập trình động xác định Alice ăn bao nhiêu bánh, nếu cả Alice và Bob chơi hoàn hảo để tối đa hóa mức tiêu thụ pizza của họ?
Sự hiểu biết của tôi:
Trong một vấn đề DP chung, chúng tôi tiếp tục tìm kiếm các vấn đề phụ có thể được hình dung bằng cách sử dụng cây đệ quy hoặc, chặt chẽ hơn, bằng cách sử dụng DAG. Ở đây, tôi không tìm thấy bất kỳ sự dẫn dắt nào để tìm ra các vấn đề phụ ở đây.
Ở đây, đối với một tập hợp S_i nhất định, chúng ta cần tối đa hóa diện tích lát cắt mà Alice ăn. Điều này sẽ phụ thuộc vào việc chọn hoán vị các lát Pizza trong số các hoán vị (n-1). Chọn một lát cắt diện tích tối đa trong số hai tùy chọn có sẵn trong mỗi n \ 2 lượt Alice nhận được, sẽ cho chúng ta tổng diện tích lát cắt cho một hoán vị. Chúng ta cần tìm diện tích lát cho tất cả các hoán vị như vậy. Và sau đó tối đa trong số này.
Ai đó có thể giúp tôi về cách đi tiếp?