Lý lịch
Tôi đã chơi PC-Game "Darkest Dungeon" gần đây. Trong trò chơi, bạn phải khám phá các hầm ngục, bao gồm các phòng được kết nối như trong hình dưới đây.
Đây là các quy tắc:
- Bạn bắt đầu trong phòng cố định (Lối vào). Bạn không thể chọn nơi bắt đầu.
- Mục tiêu là đến thăm mỗi phòng ít nhất một lần
- Khoảng cách giữa các phòng liền kề là giống nhau cho tất cả các phòng.
- Bạn có thể ghé thăm phòng và đi bộ thường xuyên như bạn muốn
Câu hỏi
Con đường ngắn nhất từ lối vào thăm mỗi phòng ít nhất một lần là gì?
Câu hỏi phụ:
- Thuật toán nào có thể được sử dụng để giải quyết vấn đề này?
- Có triển khai miễn phí (và khá đơn giản) để sử dụng cho người như tôi không?
Những gì tôi đã cố gắng
Tôi đã tìm thấy những câu hỏi khác như thế này hay thế này mà không tìm được câu trả lời. Tôi quen thuộc với TSP (cơ bản) và có thể viết mã và giải các TSP đơn giản. Đường dẫn Hamilton không giải quyết được vấn đề của tôi, vì nó không cho phép nhiều lượt truy cập. Các vấn đề đưa thư Trung Quốc không cũng không áp dụng ở đây trong hình thức cơ bản của nó bởi vì tôi không phải đến thăm mỗi cạnh.
Cập nhật
Như tôi đã nêu trong các bình luận, tôi không phải là nhà khoa học máy tính và không quan tâm đến việc chứng minh một báo cáo toán học (có thể tôi sẽ đăng câu hỏi này lên stackoverflow ở giai đoạn sau). Ngoài ra, tôi không phải là lập trình viên và cơ hội để tôi có thể tự viết mã cho một giải pháp là khá mong manh. Nhưng tôi nghi ngờ tôi không phải là người đầu tiên xử lý một vấn đề thuộc về bản chất đó.
Theo @Shreesh và @Dib, quy trình sau đây có thể được áp dụng:
- Tạo một ma trận khoảng cách cặp với tất cả các phòng, do đó thêm các cạnh giữa tất cả các phòng.
- Giải quyết TSP bằng cách sử dụng một bộ giải tiêu chuẩn (ví dụ: concorde)
- Bắt đầu từ Lối vào, tham quan tất cả các phòng theo giải pháp. Đối với các phòng không liền kề, thay thế khoảng cách ngắn nhất giữa các phòng đó.
Thủ tục này sẽ cung cấp câu trả lời cho vấn đề?