Cơ sở lý thuyết của sự phân chia và chinh phục


22

Khi nói đến việc thiết kế các thuật toán, người ta thường sử dụng các kỹ thuật sau:

  • Lập trình năng động
  • Chiến lược tham lam
  • Phân chia và chinh phục

Trong khi đối với hai phương pháp đầu tiên, có những nền tảng lý thuyết nổi tiếng, đó là Nguyên lý tối ưu Bellman và lý thuyết matroid (resp. Greedoid), tôi không thể tìm thấy một khuôn khổ chung như vậy cho các thuật toán dựa trên D & C.

Đầu tiên, tôi nhận thức được một thứ mà chúng tôi (hay đúng hơn là prof) đã giới thiệu trong một lớp lập trình chức năng, được gọi là "bộ xương thuật toán", phát sinh trong bối cảnh của các tổ hợp. Lấy ví dụ ở đây, chúng tôi đã đưa ra một bộ xương như vậy cho các thuật toán D & C như sau:

Định nghĩa : Đặt là các tập hợp không rỗng. Chúng tôi gọi các phần tử của các giải pháp và các phần tử của (nghĩa là các tập con của ) được gọi là các vấn đề . Sau đó, bộ xương D & C là 4-tuple , trong đó:S P : = P ( A ) Một ( P β , β , D , C )A,SS P:=P(A)A(Pβ,β,D,C)

  • p P β ( p )Pβ là một vị ngữ trong tập hợp các vấn đề và chúng tôi nói rằng một vấn đề là iff cơ bản .pPβ(p)
  • P βSβ là ánh xạ chỉ định một giải pháp cho từng vấn đề cơ bản.PβS
  • P P ( P )D là ánh xạ chia mỗi vấn đề thành một tập hợp các bài toán con.PP(P)
  • C là ánh xạ tham gia các giải pháp (tùy thuộc vào loại "vấn đề trục") của các bài toán con để tạo ra giải pháp.P×P(S)S

Sau đó, với một bộ xương đã cho và một vấn đề , hàm chung sau đây tính toán một giải pháp (chính thức ý nghĩa) cho :p f s : P S ps=(Pβ,β,D,C)pfs:PSp

fs(p)={β(p)if p is basicC(p,f(D(p)))otherwise

trong đó trong dòng thứ hai, chúng tôi sử dụng ký hiệu cho các tập con của tên miền của ánh xạ .X ff(X):={f(x):xX}Xf

Tuy nhiên, chúng tôi đã không kiểm tra thêm các thuộc tính "cấu trúc" cơ bản của các vấn đề có thể được xây dựng theo cách này (như tôi đã nói, đó là một lớp lập trình chức năng và đây chỉ là một ví dụ nhỏ). Thật không may, tôi không thể tìm thấy tài liệu tham khảo thêm về chính phương pháp này. Do đó tôi không nghĩ các định nghĩa trên là khá chuẩn. Nếu ai đó nhận ra những gì tôi đã nêu ở trên, tôi sẽ vui mừng về các bài viết liên quan.

Thứ hai, đối với chiến lược tham lam, chúng ta có một kết quả nổi tiếng là một vấn đề được giải quyết chính xác bằng thuật toán tham lam chung nếu và chỉ khi các giải pháp của nó tạo thành một matroid có trọng số. Có kết quả tương tự cho các thuật toán D & C (không nhất thiết phải dựa trên phương pháp được nêu ở trên)?

Câu trả lời:


5

Một cách xử lý chính thức (hơi giống với mô hình được đề xuất trong câu hỏi) của đối tượng sử dụng cái được gọi là hình thái giả (nghĩa là các chức năng gần như là hình thái, với một số tính toán trước và sau khi tính toán), cũng như các cân nhắc về độ phức tạp phân tích và thực hiện song song các thuật toán như vậy được đưa ra trong:

Một mô hình đại số cho sự phân chia và chinh phục và sự song song của nó bởi Zhijing G. Mou và Paul Hudak (trong Tạp chí siêu máy tính , Tập 2, Số 3, trang 257-278, tháng 11 năm 1988)


1

Tôi không nhận thức được thứ gì đó cụ thể như Nguyên tắc Tối ưu của Bellman cho các thuật toán Phân chia và Chinh phục. Tuy nhiên, nền tảng cơ bản của phân chia và chinh phục đối với tôi dường như là một định nghĩa đệ quy (hoặc quy nạp) của đầu vào của vấn đề và sau đó là một phương thức kết hợp các giải pháp cho vấn đề với các giải pháp lớn hơn. Cái nhìn sâu sắc quan trọng ở đây là suy nghĩ về các vấn đề đầu vào theo cách đệ quy và tận dụng điều đó trong các thuật toán D & C đệ quy.

Lấy sự hợp nhất làm ví dụ. Hãy bắt đầu với đầu vào, một mảng gồm phần tử. Người ta có thể định nghĩa đệ quy cấu trúc của mảng như sau:n

  • Với , mảng trống.n=0
  • Với , mảng là một phần tử đơnn=1
  • Đối với , mảng là sự kết hợp của một mảng có kích thước ( trái ) và kích thước ( phải )nn>1nn2n2

Sau đó, chúng tôi tiếp cận thuật toán sáp nhập bằng cách sắp xếp ánh xạ sắp xếp theo cấu trúc này. Các trường hợp cơ sở, trong đó được sắp xếp một cách tầm thường. Trường hợp đệ quy bắt đầu bằng cách sắp xếp đệ quy trong đó dữ liệu được đệ quy , cụ thể là tráiphải . Sau đó, chúng tôi về cơ bản tìm thấy một sự thay thế cho concatenate , mà cuối cùng là hợp nhất . Vì vậy, lưu ý rằng về cơ bản chúng tôi chỉ lấy cấu trúc đệ quy của dữ liệu và ánh xạ nó thành một giải pháp đệ quy. n1

Điều quan trọng cần lưu ý là điều này không nhất thiết dẫn đến những gì bạn mong đợi từ các thuật toán D & C. Chúng ta có thể định nghĩa cấu trúc mảng như sau:

  • Với , mảng trống.n=0
  • Với , mảng là một phần tử được nối với một mảng có kích thước . n - 1n>0n1

Theo cùng một chiến lược mà chúng tôi đã sử dụng để sáp nhập ở đây dẫn đến sắp xếp chèn đệ quy. Vì vậy, thông thường chúng tôi phát triển các định nghĩa đệ quy liên quan đến nhiều yếu tố đệ quy, tức là cắt tập dữ liệu xuống một nửa hoặc thứ ba.

Bây giờ, đã có Định lý tổng thể để phân tích các thuật toán D & C và điều này làm sáng tỏ những kỳ vọng về hiệu quả đối với các thành phần phụ của thuật toán D & C với hiệu quả thời gian chạy cụ thể.


Các ví dụ bạn đưa ra phù hợp với bối cảnh chung mà tôi đưa ra trong câu hỏi của mình (và trên thực tế, có thể hữu ích khi bạn cung cấp một ứng dụng cụ thể). Tuy nhiên, câu hỏi của tôi là liệu có một tiêu chí (như cấu trúc BOP hoặc matroid) để các vấn đề có thể giải quyết được bằng các thuật toán phù hợp với mô hình này hay không.
Thương hiệu Cornelius
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.