tổng số chỉ số thích trong danh sách tròn


8

Hãy xem xét vấn đề sau:

Đặt một -wheel được định nghĩa là một danh sách các số nguyên được liên kết theo chỉ mục . Ví dụ…kk

{3, 4, 9, -1, 6}

Khoan là một bánh xe 5 bánh với 3 ở vị trí 0, 4 ở vị trí 1, v.v. Một bánh xe hỗ trợ hoạt động của vòng quay, do đó vòng quay một bước sẽ biến bánh xe trên thành trục

{6, 3, 4, 9, -1}

Bây giờ với 6 ở vị trí 0, 3 ở vị trí 1, v.v. Đặt là một tập hợp có của các khác nhau . Cho một số và một số nguyên , tìm một chuỗi các phép quay sao choWNkNkWNkt

 0Tôi<k,ΣNWNTôi= =t

Nói cách khác, nếu bạn đặt các bánh xe dưới dạng ma trận, tổng của mỗi cột sẽ là . Giả sử rằng được xây dựng sao cho giải pháp là duy nhất cho phép quay của mọi phần tử (nghĩa là có chính xác giải pháp duy nhất bao gồm lấy một giải pháp, sau đó xoay mọi bánh xe trong theo cùng một số bước).tWNkkW

Giải pháp tầm thường cho vấn đề này chỉ đơn giản là kiểm tra mọi vòng quay có thể. Đây là một số mã giả cho điều đó:

function solve(wheels, index)
    if wheels are solved:
        return true
    if index >= wheels.num_wheels:
        return false
    for each position 1..k:
        if solve(index + 1) is true:
            return true
        else:
            rotate wheels[index] by 1

solve(wheels, 0)

Đây là một giải pháp khá chậm (một cái gì đó như ). Tôi tự hỏi liệu có thể làm vấn đề này nhanh hơn không, và nếu có một cái tên cho nó.Ôi(kn)


Tôi nghi ngờ đây có thể là NP-hoàn chỉnh, vì có vẻ như chúng ta thực sự không thể biết liệu một giải pháp một phần sẽ dẫn đến một giải pháp chính xác cho đến khi chúng ta đặt bánh xe cuối cùng ... Mặc dù vậy tôi vẫn chưa có bằng chứng . Tôi sẽ thêm một câu trả lời nếu tôi nghĩ về nó.
Matt Lewis

Câu trả lời:


3

Đối với hầu hết câu trả lời này, tôi thảo luận về phiên bản quyết định của vấn đề, trong đó một trường hợp có nhiều nhất một giải pháp được đưa ra ("lời hứa") và bạn phải quyết định xem nó có giải pháp nào hay không.

Bạn có thể giảm THAM GIA cho vấn đề của bạn (tập thể dục). (PHẦN THAM GIA là vấn đề xác định xem một tập hợp số nguyên có thể được phân chia thành hai phần với tổng bằng nhau hay không.) Phải thừa nhận rằng điều này không nhất thiết phải thỏa mãn điều kiện là giải pháp là duy nhất.

Với một số công việc khác, bạn có thể (trực tiếp) giảm SAT xuống (phiên bản quyết định) của vấn đề của bạn và có lẽ điều đó có thể được thực hiện theo cách để nếu trường hợp SAT có một giải pháp duy nhất, thì trường hợp kết quả của vấn đề của bạn. Trong trường hợp đó, chúng tôi nhận thấy rằng phiên bản quyết định không thể giải quyết được trong đa thời gian trừ khi NP = RP, được coi là không thể.

Lưu ý rằng nếu phiên bản quyết định (chính xác hơn là phiên bản hứa) của vấn đề không thể giải quyết được trong đa thời gian, thì không thuật toán nào có thể giải quyết tất cả các trường hợp CÓ trong polytime: nếu có, bạn có thể chạy nó theo thời gian chạy được phân bổ và kiểm tra giải pháp (nếu thuật toán dừng kịp thời).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.