Tổng tích lũy tối thiểu


17

Hãy xem xét vấn đề này: Cho một danh sách các bộ hữu hạn, tìm một trật tự s1,s2,s3, giảm thiểu |s1|+|s1s2|+|s1s2s3|+ .

Có các thuật toán được biết đến cho điều này? Sự phức tạp của nó là gì? Tôi chưa thể nghĩ ra một thuật toán tối ưu hiệu quả nào, nhưng rõ ràng nó cũng không có trong NP-Hard.


1
Bạn đã thử tất cả các cách ứng cử viên rõ ràng để cố gắng giải quyết điều này bằng một thuật toán tham lam, để xem liệu chúng có hoạt động không? (Điều lạ là không ai trong số họ sẽ làm việc, nhưng nó đáng để kiểm tra. Thông thường đối với mỗi thuật toán tham lam của ứng viên mà bạn có, nếu nó không hoạt động, thường dễ dàng tìm thấy một ví dụ chứng minh điều đó.)
DW

Tôi đã chứng minh rằng thuật toán tham lam không hoạt động cho n 3. Ví dụ: A = {0, 1} B = C = {2,3,4}. Giải pháp tối ưu là B, C, A với chi phí 11, thuật toán tham lam mang lại cho A, B, C với chi phí 12. Cho đến nay, điều tốt nhất tôi nghĩ ra là một thuật toán gần đúng với tỷ lệ n + 2 , đó là khá xấu. n+23
Antimon

Có chương trình động thời gian , trong đó n là số lượng tập hợp. O(2npoly(n))n

1
Có lẽ điều này phù hợp hơn với cstheory.
Yuval Filmus

5
Bất cứ ai có thể giải quyết trường hợp đặc biệt khi tất cả ? |si|=2
domotorp

Câu trả lời:


6

Vấn đề này thực sự liên quan đến một vấn đề lập lịch được gọi là "Lập lịch hạn chế ưu tiên để giảm thiểu thời gian hoàn thành có trọng số". Vấn đề như sau: Cho một tập hợp các công việc, trong đó mỗi công việc có thời gian xử lý (p) và trọng số (w) và biểu đồ ưu tiên được xác định trên các công việc. Mục tiêu là lên lịch các công việc trong một máy duy nhất (không ưu tiên) sao cho các ràng buộc ưu tiên được thỏa mãn và tổng thời gian hoàn thành có trọng số được giảm thiểu. Vấn đề là NP-hard và đã biết xấp xỉ 2.

Giảm từ bài toán tổng tích lũy tối thiểu sang bài toán lập lịch ràng buộc ưu tiên: Đối với mỗi phần tử tạo một công việc với p = 1, w = 0. Ngoài ra, với mỗi tập hợp, hãy tạo một công việc với p = 0, w = 1. Tạo biểu đồ ưu tiên, sao cho nếu yếu tố , sau đó e phải được sắp xếp trước khi S . Tôi nghĩ trường hợp đặc biệt này của vấn đề lập kế hoạch cũng là NP-hard.eSeS

Xem các liên kết sau,

1) http://www.win.tue.nl/~gwoegi/ con / precsum.pdf

2) http://web.engr.illinois.edu/~chekuri/ con / dam_sched.ps


Tôi cũng muốn giới thiệu bài báo sau đây để cải thiện giới hạn, trường hợp đặc biệt và kết quả độ cứng cho vấn đề lập lịch. people.idsia.ch/~monaldo/ con / MA-schedprec-11.pdf . Xem thêm bài viết về độ cứng 2- \ epsilon dưới một biến thể của các trò chơi độc đáo của Bansal và Khot win.tue.nl/~nikhil/pub/focs-09-version.pdf .
Chandra Chekuri

Việc giảm có phải đi theo hướng khác để chứng minh rằng bài toán tổng tích lũy là NP Hard không?
Antimon

Nevermind, tôi nghĩ rằng tôi thấy làm thế nào giảm cả hai cách.
Antimon

1

Shalmoli Gupta đã giải thích rằng vấn đề chung là NP-Hard, vì vậy tôi quyết định điều tra xem có trường hợp đặc biệt nào có thể giải quyết được đa thức hay không. Cuối cùng, tôi đã tìm thấy một giải pháp cho trường hợp đặc biệt của các tập hợp đại diện cho một cây, hay nói chung hơn là một chuỗi song song theo thứ tự tập hợp con với tất cả các tập hợp không khớp nhau.

Một thuộc tính làm cho mọi thứ dễ dàng hơn là nếu danh sách các bộ được đóng dưới giao lộ. Nếu , thì có một thứ tự tối ưu trong đó s 1 xuất hiện trước s 2s1s2s1s2 . Chúng ta có thể giả sử WLOG rằng thứ tự tối ưu là một phần mở rộng tuyến tính của thứ tự từng phần được đưa ra bởi sự bao gồm tập hợp con.

Vì tất cả các tập hợp con của một tập hợp xuất hiện trước nó theo thứ tự, điều này có nghĩa là số tiền được thêm vào tổng chạy bởi một tập đã cho là cố định, bất kể nó xuất hiện ở đâu. Nếu là danh sách các bộ, sau đó các chi phí gia tăng của một bộ là số phần tử trong s không có trong bất kỳ tập hợp con của s xuất hiện trong S . Nếu cùng một bộ xuất hiện nhiều lần trong SSSS , chúng ta có thể tùy ý chọn một để đi trước và để cho các bộ khác có giá 0.

Điều này có nghĩa là vấn đề này tương đương với vấn đề thời gian hoàn thành có trọng số tối thiểu trong lập lịch máy đơn với các ràng buộc ưu tiên. Trong vấn đề này, với một tập hợp các công việc có trọng số và lần t j , và một đơn hàng một phần cho các công việc P , chúng tôi muốn tìm một thứ tự các công việc giảm thiểu tổng thời gian hoàn thành có trọng số, nghĩa làwjtjP

i=1nwji(k=1itjk)

chịu sự ràng buộc ưu tiên . Có thể biến vấn đề tập hợp tích lũy tối thiểu với các tập đóng giao nhau bằng cách tạo một công việc cho mỗi tập hợp, trong đó mọi công việc có trọng số 1, thời gian bằng với chi phí gia tăng được xác định ở trên và P là thứ tự được đưa ra bởi sự bao gồm tập hợp con.PP

Hóa ra, vấn đề này cũng là NP-Hard cho nói chung . Tuy nhiên, một số dạng P đặc biệt có thể được giải trong thời gian đa thức.PP

Bài viết này đưa ra thuật toán cho trường hợp các đơn hàng song song chuỗi P (bao gồm cả trường hợp quan trọng của cây). Thật không may, tôi không thể truy cập vào bài báo đó, vì vậy tôi quyết định thử phát minh lại nó một cách độc lập. Đây là những gì tôi nghĩ ra.O(nlogn)P

Để giải quyết vấn đề này, một số quan sát được yêu cầu.

Trước hết, trong trường hợp không có bất kỳ ràng buộc ưu tiên nào, giải pháp tối ưu là chỉ cần sắp xếp các công việc theo thứ tự tăng . Để đơn giản, tôi sẽ coi đây là giá trị của công việc, viết tắt làv(j). Lưu ý rằng vì sắp xếp làO(nlogn), không thể làm tốt hơn sự phức tạp này.tjwjv(j)O(nlogn)

Quy tắc 1 Đặt b là các công việc sao cho a < b P và b bao gồm a. Nếu v ( a ) < v ( b ) , thì chúng ta có thể bỏ ràng buộc a < b mà không ảnh hưởng đến thứ tự tối ưu hoặc giá trị khách quan.aba<bPv(a)<v(b)a<b

Giả sử xuất hiện trước aba thứ tự tối ưu của bài toán thư giãn. Vì b bao phủ một ban đầu, điều đó có nghĩa là tất cả các công việc giữa b và a theo thứ tự mới là không thể so sánh với a và b. Nhưng vì b có giá trị cao hơn a, chúng ta có thể giảm giá trị khách quan bằng cách hoán đổi b và a, mâu thuẫn.

Tương tự như vậy, chúng ta có thể loại bỏ các ràng buộc trong trường hợp miễn là chúng ta đảm bảo rằng sau khi sắp xếp theo giá trị, chúng ta phá vỡ các mối quan hệ bằng cách tham khảo các quan hệ ưu tiên của vấn đề ban đầu (đơn giản hóa). Điều này đảm bảo rằng giải pháp tối ưu được tìm thấy cho vấn đề thư giãn cũng là một giải pháp tối ưu cho vấn đề ban đầu.v(a)=v(b)

Do đó, bất cứ khi nào b bao gồm a và , chúng ta có thể đơn giản hóa vấn đề bằng cách thả các hạn chế một < bv(a)v(b)a<b .

Quy tắc 2 Giả sử rằng chúng ta biết rằng b tuân theo ngay sau một giải pháp tối ưu. Chúng ta có thể hợp nhất a và b vào một nút c mới với t c = t a + t b , trong khi ký hợp đồng với vị trí P một cách thích hợp.wc=wa+wbtc=ta+tbP

Giá trị mục tiêu tối ưu của vấn đề mới khác với hằng số so với giá trị mục tiêu ban đầu (cụ thể là ), tuy nhiên hằng số này không phụ thuộc vào thứ tự và do đó thứ tự tối ưu không bị ảnh hưởng. Chúng ta có thể phục hồi một giải pháp tối ưu cho vấn đề cũ bằng cách lấy một giải pháp tối ưu cho vấn đề mới và thay thế c bằng một b .watbcab

Quy tắc 3 Giả sử rằng trong một giải pháp tối ưu cho một trường hợp vấn đề, xuất hiện ngay trước bv ( a ) > v ( b ) . Bây giờ, giả sử chúng ta tạo một trường hợp vấn đề lớn hơn bằng cách thêm các công việc mới với vị trí mới được hình thành từ chuỗi hoặc thành phần song song với bản gốc. Sẽ luôn có một giải pháp tối ưu cho vấn đề lớn hơn, trong đó a xuất hiện ngay trước babv(a)>v(b)ab .

Giả sử khác đi. Hãy giải pháp tối ưu chứa . Vì P được hình thành bởi thành phần song song nối tiếp, chúng ta biết rằng tất cả các x i đều không thể so sánh được với ab . Hợp nhất tất cả các nút x i vào một nút mới x bằng quy tắc 2. Bây giờ hãy xem xét v ( x ) . Nếu v ( x ) v ( a ) thì chúng ta có thể trao đổia,x1,x2,,bPxiabxixv(x)v(x)v(a) a mà không tăng giá trị khách quan. Tương tự như vậy, nếu v ( x ) v ( b ) , chúng ta có thể hoán đổi x b . Do đó, v ( a ) < v ( x ) < v ( b ) . Nhưng v ( a ) > v ( b ) , một mâu thuẫn.xav(x)v(b)xbv(a)<v(x)<v(b)v(a)>v(b)

Sử dụng quy tắc 2 và quy tắc 3, chúng ta đã có thể có được thuật toán đơn giản nhưng không tối ưu . Vì P là một thứ tự song song sê-ri, giả sử đầu vào chứa một biểu diễn cây của P trong đó mỗi nút đại diện cho thành phần chuỗi hoặc thành phần song song và các lá là các công việc riêng lẻ. Chúng ta có thể tìm ra một giải pháp tối ưu với việc sắp xếp trước của cây bằng cách duy trì bất biến rằng giải pháp tối ưu cho mỗi bài toán con là một chuỗi theo thứ tự giá trị tăng dần.O(n2)PP

Giả sử là thành phần chuỗi của các bài toán con với các tập hợp P 1P 2 . Hãy để các giải pháp tối ưu được đặt hàng C 1C 2 . Giải pháp tối ưu cho P rõ ràng là nối các chuỗi này. Tuy nhiên, có thể công việc đầu tiên trong C 2 có giá trị thấp hơn công việc cuối cùng trong C 1PP1P2C1C2PC2C1 . Để duy trì bất biến rằng giải pháp là một chuỗi được sắp xếp, chúng tôi sử dụng quy tắc 3 + quy tắc 2 để hợp nhất các điểm cuối miễn là chúng không theo thứ tự được sắp xếp.

Nếu thay vào đó là một thành phần song song, chúng ta chỉ cần lấy các chuỗi được sắp xếp S 1S 2 và hợp nhất chúng thành một chuỗi được sắp xếp mới. Nhờ sự bất biến, điều này là hợp lệ.PS1S2

Thật không may, thuật toán này là . Để có được thuật toán O ( n l o g n ) , chúng ta cần tính toán các chuỗi một cách lười biếng bằng cách sử dụng quy tắc 1.O(n2)O(nlogn)

Cụ thể, nếu một bài toán con chỉ chứa các nút trong đó các ràng buộc ưu tiên giống như thứ tự của các giá trị, thì chúng ta có thể quên hoàn toàn các ràng buộc ưu tiên và chỉ nhìn vào các giá trị. Điều này được đảm bảo bởi cùng một bất biến đảm bảo các giải pháp được sắp xếp chuỗi trong thuật toán trước.

Thay vì tính toán một chuỗi được sắp xếp cho mỗi bài toán con, chúng tôi trình bày giải pháp tối ưu cho một bài toán con dưới dạng một cặp đống Fibonacci, một đống tối thiểu và một đống tối đa, cả hai đều chứa tất cả các công việc trong bài toán con. Điều này có nghĩa là chúng ta có thể bật ra phần tử tối thiểu hoặc tối đa của giải pháp trong thời gian logarit.

Như trước đây, chúng tôi thực hiện một giao dịch đặt hàng trước. Trong đó là một thành phần chuỗi, chúng tôi kiểm tra công việc tối đa của cặp heap đầu tiên và công việc tối thiểu của cặp heap thứ hai. Nếu các giá trị của chúng không theo thứ tự, chúng tôi sẽ tắt chúng và hợp nhất chúng bằng quy tắc 2 và 3. Sau đó, chúng tôi so sánh công việc mới được tạo với các điểm cuối mới và tiếp tục bật và hợp nhất miễn là chúng không theo thứ tự. Khi các điểm cuối không còn có giá trị thứ tự, chúng ta có thể quên một cách an toàn các hạn chế ưu tiên chuỗi nhờ quy tắc 1. Sau đó, chúng ta chỉ cần đẩy các công việc mới được tạo nếu có vào một đống, sau đó hợp nhất các đống để tạo cặp heap đại diện cho giải pháp để P chính nó.PP

Đối với một thành phần song song, chúng ta chỉ cần hợp nhất các cặp heap. Heap min mới là sự hợp nhất của heap min từ mỗi bài toán con và tương tự như vậy với heap tối đa. Lưu ý rằng các đống Fibonacci có thể được hợp nhất trong thời gian không đổi.

Khi chúng ta có một cặp heap đại diện cho giải pháp cho toàn bộ vấn đề, chúng ta có thể tìm thấy thứ tự giải pháp thực tế bằng cách bật ra heap min cho đến khi nó trống. Sau đó, chúng tôi hoàn tác tất cả các thay thế quy tắc 2 để có được giải pháp cho vấn đề ban đầu.

O(nlogn)

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.