Có phải mọi thuật toán tham lam đều có cấu trúc matroid?


13

Nó cũng được thành lập mà cho mỗi matroid M và bất kỳ chức năng cân w , có lối thoát hiểm một thuật toán Tham lam(M,w) trả về một cơ sở Trọng lượng tối đa của M . Vậy, hướng ngược lại cũng đúng? Đó là, nếu có một số thuật toán tham lam, thì cũng phải có một số cấu trúc matroid.


Thuật toán của Dijkstra thường được coi là một thuật toán tham lam (ví dụ: xem Phần 4.4 của "Thiết kế thuật toán" của Kleinberg và Tardos). Tôi không biết về cách giải thích matroid của các đường dẫn ngắn nhất nguồn đơn.
Neal Young

Phân vùng một tập hợp các khoảng thực tế thành một số lượng nhỏ các tập hợp tách rời theo cặp có thuật toán tham lam tự nhiên (liệt kê các khoảng thời gian bắt đầu, với mỗi lần thêm nó vào một tập hợp con hiện có nếu có thể, hãy bắt đầu một tập hợp con mới, xem Chương 4 của Kleinberg và Tardos). Vấn đề này có thể được hiểu là matroid?
Neal Young

Câu trả lời:


11

Thuật toán tham lam không phải là một khái niệm được định nghĩa chính thức. Có nhiều mô hình khác nhau cố gắng nắm bắt khái niệm trực quan này nhưng không có sự đồng thuận về thuật toán tham lam là gì. Trừ khi bạn chỉ định một định nghĩa chính thức về ý nghĩa của thuật toán tham lam, câu hỏi không thể được trả lời là có hoặc không.

Có một sự tổng quát của matroids gọi greedoid được lấy cảm hứng từ giải thuật tham lam những gì bạn có thể muốn xem xét.


Một định nghĩa chính thức là không bắt buộc nếu chúng ta đồng ý về một số thuộc tính của lớp các thuật toán tham lam. Ví dụ, nếu chúng tôi đồng ý rằng mọi thuật toán tham lam đều có thuộc tính P (được xác định chính thức) và chúng tôi đã chỉ ra rằng mọi thuật toán thỏa mãn P đều có thể được định nghĩa trên matroid, điều đó sẽ đưa ra câu trả lời tích cực cho câu hỏi của OP. Tương tự, nếu chúng tôi đồng ý rằng một thuật toán nhất định là tham lam và chúng tôi cho thấy nó không thể là thuật toán tham lam của matroid, điều đó sẽ mang lại một câu trả lời tiêu cực.
Tách rời Laconia

11

Trên thực tế, mô tả đầy đủ và chung về một vấn đề có thể được giải quyết bằng thuật toán tham lam là nhúng matroid , khái quát cả khái niệm về matroid và tham lam . Câu trả lời là không có vấn đề nào có thể giải quyết được bằng thuật toán tham lam không cần cấu trúc matroid, nhưng nó sẽ có cấu trúc nhúng matroid (nghĩa là, than ôi, phức tạp hơn nhiều).

Một mô hình tinh thần cho một số điều này có thể là tìm những cây bao trùm tối thiểu. Cấu trúc được sử dụng bởi thuật toán của Kruskal là matroid, nhưng cấu trúc được sử dụng bởi thuật toán của Prim (yêu cầu nút bắt đầu) thì không. (Tuy nhiên, đó là một kẻ tham lam và nhúng matroid.)

(S,C)SCS f:2SRS

Thuật toán tham lam, được định nghĩa theo chủ nghĩa hình thức này, khá đơn giản: Bạn bắt đầu với tập hợp trống và liên tiếp thêm một phần tử duy nhất cho đến khi bạn đạt được một cơ sở, luôn đảm bảo rằng (i) tập hợp của bạn khả thi ở mỗi bước và ( ii) phần tử bạn thêm tối đa hóa hàm mục tiêu của kết quả kết quả, wrt. tất cả các yếu tố thay thế bạn có thể đã thêm. (Đó là, về mặt khái niệm, bạn thử thêm tất cả các lựa chọn khả thi và chọn một phương án mang lại giá trị khách quan cao nhất.)

Bạn có thể, có lẽ, lập luận rằng có thể có các hình thức khác của thuật toán tham lam, nhưng có một số sách giáo khoa về các thuật toán và tối ưu hóa tổ hợp mô tả này thiết lập hệ thống thuật toán dựa theo các thuật toán tham lam. Điều đó không ngăn bạn mô tả một cái gì đó không phù hợp, nhưng tôi vẫn có thể được gọi là tham lam. (Tuy nhiên, điều này làm bìa bất cứ điều gì mà khả năng có thể có một cấu trúc matroid, ví dụ, mặc dù nó là nhiều hơn nói chung.)

Những gì Helman et al. làm là họ mô tả khi thuật toán này sẽ làm việc. Cụ thể hơn:

  1. Chúng chỉ ra rằng đối với các hàm mục tiêu tuyến tính (trong đó giá trị mục tiêu là tổng trọng số phần tử), thuật toán tham lam sẽ hoạt động chính xác trên cấu trúc mà chúng xác định là nhúng matroid;

  2. Chúng đưa ra một đặc tính tương tự cho các mục tiêu được gọi là nút cổ chai (trong đó giá trị mục tiêu của một tập hợp bằng mức tối thiểu trên các trọng số phần tử riêng lẻ); và

  3. Chúng đưa ra một đặc điểm chính xác trong đó các hàm mục tiêu (ngoài các hàm tuyến tính) được tối ưu hóa bằng thuật toán tham lam trên các nhúng matroid.


2
Bạn có thể giải thích định nghĩa của họ về một thuật toán tham lam là gì?
Kaveh

1
Mở rộng câu trả lời của tôi để giải thích chủ nghĩa hình thức của họ là gì.
Magnus Lie Hetland

2

Xem xét các vấn đề sau: COIN-CHAINING EURO: Cho số tiền vô hạn 1,2,5,10 euro, trả X euro bằng cách sử dụng càng ít ghi chú càng tốt. Điều này có thể được giải quyết bằng cách sử dụng thuật toán tham lam, cần lưu ý lớn nhất có thể. Nhưng không có cấu trúc matroid trong vấn đề này.

BẢO HIỂM HOLE: Có các lỗ ở các vị trí x_1, x_2, ..., x_n. Bạn có miếng vá dài 10 cm. Vá các lỗ bằng cách sử dụng càng ít miếng vá càng tốt. Một lần nữa điều này có thể được giải quyết trong thời trang tham lam (chỉ cần đặt bản vá càng đúng càng tốt), nhưng không có cấu trúc matroid.


cảm ơn, tôi đã có những nghi ngờ nhưng không chắc chắn Vì vậy, sau tất cả chúng ta phải tìm kiếm thuật toán tham lam ngay cả khi cấu trúc matroid không tồn tại.

1
@ user3373748 Tôi thường chỉ tìm kiếm một chương trình động. Tham lam là một DP thoái hóa.

1
(Không kén chọn, nhưng không có ghi chú 1- hoặc 2 euro; bạn có thể muốn thay đổi bộ giá trị của mình thành {5, 10, 20, 50, 100, 200} hoặc viết lại ;-))
Anthony Labarre

Lưu ý rằng thuật toán thay đổi đồng xu được mô tả hoạt động cho {1,2,5,10} nhưng có thể không tính kết quả tối ưu cho các giá trị khác. Ví dụ: Với {1,3,4}, giải pháp tối ưu cho 6 sẽ là [3,3] nhưng thuật toán sẽ trả về [4,1,1].
Socowi

1
Có một cấu trúc matroid cho vấn đề thay đổi tiền xu - gauss.ececs.uc.edu/Cifts/C671/html/Homework/hw5_sol.html
Tushant Găngal
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.