Tôi có một tập hợp các mục, ví dụ: {1,1,1,2,2,3,3,3} và tập hợp các bộ giới hạn, ví dụ: {{3}, { 1,2}, {1,2,3}, {1,2,3}, {1,2,3}, {1,2,3}, {2,3}, {2,3}. Tôi đang tìm kiếm hoán vị các mặt hàng, nhưng các yếu tố đầu tiên phải là 3, và thứ hai phải có 1 hoặc 2, vvCác phép có các giới hạn bổ sung
Một hoán vị như vậy phù hợp là: {3,1,1,1,2, 2,3}
Có một thuật toán để đếm tất cả các hoán vị cho vấn đề này nói chung không? Có tên cho loại vấn đề này không?
Để minh hoạ, tôi biết cách giải quyết vấn đề này đối với một số loại "bộ hạn chế" nhất định. Đặt các mục: {1,1,2,2,3}, Hạn chế {{1,2}, {1,2,3}, {1,2,3}, {1,2}, {1, 2}}. Điều này bằng 2!/(2-1)!/1! * 4!/2!/2 !. Hiệu quả permuting 3 đầu tiên, vì nó là hạn chế nhất và sau đó permuting các mục còn lại, nơi có phòng.
Ngoài ra ... thời gian đa thức. Điều đó có thể không?
CẬP NHẬT: Điều này được thảo luận thêm tại các liên kết bên dưới. Vấn đề ở trên được gọi là "tính đối sánh hoàn hảo" và mỗi giới hạn hoán vị ở trên được biểu thị bằng {0,1} trên ma trận khe cho người cư ngụ.
- https://math.stackexchange.com/questions/519056/does-a-matrix-represent-a-bijection
- https://math.stackexchange.com/questions/509563/counting-permutations-with-additional-restrictions
- https://math.stackexchange.com/questions/800977/parking-cars-and-vans-into-car-van-and-car-van-parking-spots
Bạn đang tìm kiếm chỉ để đếm, hoặc bạn quan tâm đến một thuật toán cũng có khả năng in hoán vị? Trong mọi trường hợp, phải hiệu quả như thế nào? – IVlad
Câu hỏi của bạn trông rất thú vị đối với tôi nhưng tôi không hiểu hết. – Amichai
Số đếm sẽ ổn. Bởi vì tôi có thể đệ quy áp dụng thuật toán đếm để đi bộ hoặc truy cập ngẫu nhiên hoán vị n nếu cần. Thuật toán/phương pháp phân tích sẽ phải ở trong thời gian đa thức, không rõ ràng "đi bộ tất cả các hoán vị và tấn công các thuật toán không khớp với thuật toán" quy tắc. Câu hỏi hay. Phương trình chỉ tốt bằng thuật toán cho tôi. Tài liệu tham khảo cho các phương pháp phân tích tương tự hoặc các ấn phẩm học thuật cũng sẽ giúp tôi. –