Có phải lập trình động không bao giờ yếu hơn Greedy?


15

Trong độ phức tạp của mạch, chúng ta có sự phân tách giữa các quyền hạn của các mô hình mạch khác nhau.

Trong độ phức tạp của bằng chứng, chúng ta có sự phân tách giữa các quyền hạn của các hệ thống chứng minh khác nhau.

Nhưng trong thuật toán, chúng ta vẫn chỉ có một vài sự tách biệt giữa các quyền hạn của các mô hình thuật toán .

Các câu hỏi của tôi dưới đây nhằm mục đích chạm đến vấn đề sau này cho hai mô hình: Lập trình tham lam và năng động.

Chúng tôi có một tập hợp các yếu tố và một số tập hợp con của nó được tuyên bố là giải pháp khả thi. Chúng tôi giả định rằng gia đình này đã đóng cửa: tập hợp các giải pháp khả thi là khả thi. Đưa ra một trọng số không âm cho các phần tử nền, vấn đề là tính tổng trọng lượng tối đa của một giải pháp khả thi.

Thuật toán tham lam bắt đầu với một giải pháp một phần trống rỗng, và ở mỗi bước, nó bổ sung một yếu tố chưa được xử lý có trọng lượng lớn nhất nếu điều này là khả thi, tức là nếu giải pháp mở rộng vẫn khả thi. Định lý Rado-Edmonds nổi tiếng nói rằng thuật toán này sẽ tìm ra một giải pháp tối ưu cho tất cả các trọng số đầu vào nếu họ là các giải pháp khả thi là một matroid.

Nói một cách đơn giản , thuật toán DP rất đơn giản , nếu nó chỉ sử dụng các phép toán Max và Sum (hoặc Min và Sum). Để cụ thể hơn (như được đề xuất bởi Joshua), bằng thuật toán DP đơn giản, tôi sẽ có nghĩa là một mạch (max, +) với các cổng fanin-Max Max và Sum. Đầu vào là các biến, thứ tương ứng với trọng số cho phần tử thứ . Một mạch như vậy có thể giải quyết bất kỳ vấn đề nào như vậy chỉ bằng cách tính tổng trọng lượng tối đa của một giải pháp khả thi. Nhưng điều này có thể là một quá mức lớn, nếu chúng ta có nhiều giải pháp như vậy theo cấp số nhân (như hầu như luôn luôn như vậy).tôiTôiTôi

Câu hỏi 1: Có matroids, trên đó bất kỳ thuật toán DP đơn giản nào cũng sẽ cần một số lượng hoạt động siêu đa thức để giải quyết vấn đề tối đa hóa tương ứng?

BÌNH LUẬN (thêm 2015/12/24): Câu hỏi này đã được trả lời (xem dưới đây): có matroids như vậy, ngay cả trong áp đảo đa số.

Câu hỏi tiếp theo yêu cầu phân tách DP tham lam và đơn giản cho các vấn đề gần đúng . Trong bài toán Đối sánh trọng lượng tối đa , nhóm các giải pháp khả thi bao gồm tất cả các kết quả khớp trong đồ thị lưỡng cực hoàn chỉnh . Đối với một trọng số cho trước cho các cạnh của nó, mục tiêu là tính trọng lượng tối đa của một trận đấu (đây sẽ luôn là một kết hợp hoàn hảo, vì trọng số là không âm). n×n

Thuật toán tham lam đơn giản có thể tính gần đúng vấn đề này trong yếu tố 2: chỉ luôn luôn có một cạnh tách rời chưa thấy của trọng lượng tối đa. Trọng lượng thu được sẽ ít nhất bằng một nửa trọng lượng tối ưu.

Câu hỏi 2: Một thuật toán DP đơn giản có thể tính gần đúng bài toán Ghép trọng lượng tối đa trong nhân tố 2 bằng cách chỉ sử dụng nhiều phép toán Max và Sum không?

Tất nhiên, một thuật toán DP tầm thường, xuất ra lần trọng số tối đa của một cạnh, xấp xỉ vấn đề này trong hệ số . Nhưng chúng tôi muốn một yếu tố nhỏ hơn nhiều. Tôi đoán rằng thậm chí một yếu tố không thể đạt được nhưng, một lần nữa: làm thế nào để chứng minh điều này? n n / log nnnn/đăng nhậpn

LIÊN QUAN: Một người anh em họ của Kết hợp trọng lượng tối đavấn đề Bài tập : tìm trọng lượng tối thiểu của một kết hợp hoàn hảo. Vấn đề này có thể được giải quyết (thậm chí chính xác) bằng lập trình tuyến tính (được gọi là thuật toán Hungary) bằng cách chỉ sử dụng các hoạt động . Nhưng giới hạn dưới của Razborov về kích thước của các mạch boolean đơn điệu tính toán hàm vĩnh viễn ngụ ý (không hoàn toàn trực tiếp) rằng bất kỳ mạch (min, +) nào xấp xỉ vấn đề này trong bất kỳ yếu tố hữu hạn (!) Này đều phải sử dụng hoạt động. Do đó, đối với các vấn đề tối thiểu hóa , các thuật toán DP đơn giản có thể yếu hơn nhiều so với Lập trình tuyến tính. Các câu hỏi của tôi ở trên nhằm mục đích cho thấy rằng các thuật toán DP như vậy có thể còn yếu hơn cả Greedy. n Ω ( log n )Ôi(n3)nΩ(đăng nhậpn)

Có ai đó đã thấy những câu hỏi tương tự đang được ai đó xem xét?


THÊM (vào ngày 24.12.2015): Câu hỏi 2 nhằm mục đích chỉ ra rằng một vấn đề tối đa hóa cụ thể (vấn đề Kết hợp trọng lượng tối đa), có thể được xấp xỉ bằng thuật toán tham lam với hệ số , không thể xấp xỉ bằng đơn giản đa kích thước DP có cùng hệ số . Trong khi đó, tôi đã thu được một sự tách biệt yếu hơn giữa DP tham lam và DP đơn giản: với mỗi , có một vấn đề tối đa hóa rõ ràng có thể được xấp xỉ bằng thuật toán tham lam với yếu tố , nhưng không đơn giản kích thước đa Thuật toán DP có thể tính gần đúng vấn đề này với hệ số nhỏ hơn (xem tại đâyr= =2r = o ( n / log n ) rrr= =o(n/đăng nhậpn)r<r/3cho một bản phác thảo). Tuy nhiên, bản thân Câu hỏi 2 (không nhất thiết cho vấn đề Trọng lượng tối đa cụ thể này) vẫn còn thực tế: sẽ rất thú vị khi nhắm mục tiêu cùng một yếu tố theo cả hai thuật toán.


2
Bạn có nghĩa là định nghĩa "thuật toán DP đơn giản" là "bất kỳ mạch (tối đa, +) nào có cổng của quạt trong 2" không?
Joshua Grochow

@Juaua: vâng. Giả sử, Bellman-Ford cho đường dẫn ngắn nhất có biến đầu vào cho mỗi cạnh của . Các cổng trên lớp 1 là . Trên lớp thứ l, chúng ta có . Cổng đầu ra là . Có tổng số cổng . Trên thực tế, restitction trên faninis không quá quan trọng trong câu hỏi của tôi. K n D ( j , 1 ) = x s , j D ( j , l ) = min { D ( j , l - 1 ) , m i n i { D ( i , l - 1 ) + x i , j } } D ( t , n -xTôi,jKnD(j,1)= =xS,jD(j,l)=min{D(j,l1),mini{D(i,l1)+xi,j}}D(t,n1)O(n3)
Stasys

Câu trả lời:


6

Tôi nghĩ rằng câu trả lời cho Câu hỏi 1 của tôi là khẳng định : có những matroid mà DP đơn giản thất bại nặng nề! Đó là, DP đơn giản có thể tồi tệ hơn nhiều so với Greedy khi cố gắng giải quyết vấn đề tối ưu hóa chính xác .

Đặt bộ mặt đất bao gồm tất cả các cạnh của . Như gia đình của chúng ta về các giải pháp khả thi lấy gia đình của tất cả các khu rừng trong . Đây là một motroid, và các cơ sở của nó là cây bao quanh. Vì vậy, tương ứng với đa thức matroid này là một đa thức đa tuyến có đơn thức tương ứng với các cây bao trùm. Jerrum và Snir đã chứng minh (trong Phần 4.5) rằng yêu cầu các mạch số học đơn điệu có kích thước theo cấp số nhân. Điều này đã ngụ ý rằng mọi mạch và do đó, cũng như mọi thuật toán DP đơn giản, phải sử dụng số lượng hoạt động Max và Sum theo cấp số nhân để giải quyết vấn đề cây kéo dài tối đa. KnKnff(tối đa,+)

Như Igor Sergeev đã nói với tôi, một câu trả lời khẳng định cho Câu hỏi 1 cũng đi theo bằng cách đếm: Knuth đã chỉ ra rằng có matroid trên điểm. 22n/n3/2n

PS Tôi sẽ không "chấp nhận" câu trả lời nửa vời này của mình (chỉ xuất hiện ngay sau khi suy nghĩ lại về kết nối với các mạch số học đơn điệu), bởi vì Câu hỏi 2 thú vị hơn vẫn còn mở: DP đơn giản tệ hơn bao nhiêu so với Tham lam khi tối ưu hóa gần đúng các vấn đề? Câu hỏi này thú vị hơn, bởi vì Greedy thường có một yếu tố gần đúng khá tốt. Yếu tố này được biết là trùng khớp với (!) Với cái gọi là "thương số xếp hạng" của họ các giải pháp khả thi tiềm ẩn (xem, ví dụ như bài viết này . Trong trường hợp vấn đề Đối sánh trọng lượng tối đa, thương số này là và hầu hết cho bất kỳ giao điểm của2kk


1
Một nhận xét hơi tiếp tuyến: DP cũng được sử dụng trong các thuật toán kiểu Arora cho các vấn đề Euclide có kích thước cố định khác nhau, ví dụ TSP Euclid. Nhưng điều này vẫn còn trong tinh thần làm tròn đầu vào.
Sasho Nikolov

@Sasho: Vâng, đây thực sự là những thuật toán dựa trên DP dễ thương. Woeginger thậm chí đã thực hiện một nỗ lực để nắm bắt các vấn đề mà DP có thể giúp ước tính chúng. Nhưng tôi chưa thấy bất kỳ xấp xỉ DP tốt nào là thuần túy (chỉ có Max và Sum hoặc Min và Sum, không làm tròn / chia tỷ lệ, không có ArgMax, v.v.) Tất nhiên, đây có thể chỉ là lỗi của tôi: thuật toán xấp xỉ là một cái gì đó mới đối với tôi .
Stasys

Tôi không biết về bất kỳ ví dụ nào về xấp xỉ DP "thuần túy", theo nghĩa thuần túy của bạn: tất cả các ví dụ tôi biết về việc sử dụng một số hình thức làm tròn.
Sasho Nikolov
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.