Tôi đang tìm một thuật toán để giải quyết, hoặc ít nhất là một tên thích hợp cho các vấn đề sau đây:Minimal bitstring bộ công đoàn với sự thay đổi thuật toán
Tôi đã một tập B của bitstrings. Thuật toán nên tìm một tối thiểu (được định nghĩa là "có bit ít nhất thiết") bitstring S ví dụ rằng:
Đối với tất cả b trong B, có tồn tại một sự thay đổi N (trong ℤ) sao cho
(S << N) & b == b
.
Nếu nó giúp, mỗi b phù hợp trong một từ máy, và | B | là theo thứ tự của một vài trăm.
Tôi nghĩ chúng ta có thể giả định (mà không mất tính tổng quát) mà LSB của S và mỗi b là 1.
này vẻ với tôi như một số loại multiple sequence-alignment vấn đề.
Nếu chúng ta có thể tìm thấy nhau N i cho mỗi b i trong B (i = 1 .. | B |), nó trông giống như S chỉ là bitwise hoặc trên tất cả (b i >>N i).
trực giác của tôi là, bước đầu tiên là để loại bỏ tất cả các b từ B mà tồn tại khác bitstring c trong B và một số thay đổi M mà b & (c << M) == b
. Cái gì tiếp theo?
Số lượng thay đổi đang ở ℤ là điều thú vị, điều đó có nghĩa là ca làm việc trái âm có tác động như một sự thay đổi đúng không? – harold
Tôi nghĩ rằng điều này là tương đương với ["Vấn đề hậu quả phổ biến ngắn nhất"] (https://en.wikipedia.org/wiki/Shortest_common_supersequence_problem) cho một tập hợp các chuỗi. Đó là NP-Hard nói chung, nhưng đối với trường hợp cụ thể của bạn nó không phải là quá khó để giải quyết nó. –
@harold Có, những thay đổi trái âm sẽ hoạt động như những thay đổi đúng. – AlliedEnvy