Có một lý thuyết kết hợp lý thuyết thể loại / đại số trừu tượng và độ phức tạp tính toán?


18

Lý thuyết thể loại và đại số trừu tượng đối phó với cách các hàm có thể được kết hợp với các hàm khác. Lý thuyết phức tạp liên quan đến việc một hàm khó tính như thế nào. Thật kỳ lạ với tôi rằng tôi chưa thấy ai kết hợp các lĩnh vực nghiên cứu này, vì chúng có vẻ giống như những cặp tự nhiên như vậy. Có ai làm điều này trước khi?


Để làm ví dụ động lực, chúng ta hãy nhìn vào các đơn sắc. Người ta biết rằng nếu một hoạt động là một đơn thức, thì chúng ta có thể song song hoạt động.

Ví dụ: trong Haskell, chúng ta có thể định nghĩa một cách tầm thường rằng phép cộng là một đơn thức trên các số nguyên như thế này:

instance Monoid Int where
    mempty = 0
    mappend = (+)

Bây giờ nếu chúng ta muốn tính tổng từ 0 đến 999, chúng ta có thể thực hiện tuần tự như sau:

foldl1' (+) [0..999]

hoặc chúng ta có thể làm điều đó song song

mconcat [0..999] -- for simplicity of the code, I'm ignoring that this doesn't *actually* run in parallel

Nhưng song song với monoid này chỉ có ý nghĩa vì mappend chạy trong thời gian không đổi. Điều gì xảy ra nếu đây không phải là trường hợp? Danh sách, ví dụ, là các đơn sắc trong đó mappend không chạy theo thời gian (hoặc không gian!). Tôi đoán đây là lý do tại sao không có chức năng mconcat song song mặc định trong Haskell. Việc thực hiện tốt nhất phụ thuộc vào độ phức tạp của monoid.


Có vẻ như nên có một cách thuận tiện để mô tả sự khác biệt giữa hai đơn sắc này. Sau đó, chúng tôi sẽ có thể chú thích mã của chúng tôi với những khác biệt này và để các chương trình tự động chọn các thuật toán tốt nhất để sử dụng tùy thuộc vào độ phức tạp của một monoid.


1
Kiểu số nguyên trong Haskell là số nguyên đa độ chính xác và độ phức tạp thời gian của phép cộng phụ thuộc vào độ dài của số nguyên đầu vào, do đó, thật sai lầm khi nói rằng mappend trong ví dụ Monoid của bạn cho Integer chạy trong thời gian không đổi.
Tsuyoshi Ito

@TsuyoshiIto Bạn nói đúng, ý tôi là sử dụng Int. Đã sửa.
Mike Izbicki

Bạn đã thấy câu hỏi này ?
Kaveh

@Kaveh Tôi đã không, cảm ơn con trỏ. Từ việc đọc nhanh qua có vẻ như không ai thực hiện bất kỳ công việc lý thuyết nào về các lớp phức tạp (và có một số tranh luận về điều đó có thể có nghĩa gì hoặc nếu đó là một mục tiêu đáng giá). Vì vậy, tôi nghĩ rằng khá nhiều câu trả lời cho phần đầu tiên của câu hỏi của tôi và chỉ để lại bất kỳ tương tác nào giữa đại số và độ phức tạp.
Mike Izbicki

Có rất nhiều tương tác giữa đại số và lý thuyết phức tạp. Thậm chí có những cuốn sách có tiêu đề "Lý thuyết phức tạp đại số" sử dụng và áp dụng các khái niệm và kỹ thuật đại số cho sự phức tạp. Và cũng có những công trình mở rộng áp dụng lý thuyết phức tạp cho đại số. Bạn phải cụ thể hơn để có được câu trả lời.
Kaveh

Câu trả lời:


12

[Độ phức tạp tính toán và lý thuyết thể loại] có vẻ như các cặp tự nhiên như vậy.

Với sự nổi bật của sự phức tạp tính toán như một lĩnh vực nghiên cứu, nếu chúng là những chiếc giường ngủ tự nhiên như vậy, có lẽ ai đó đã đưa ra kết nối rồi?

Đầu cơ hoang dã. Hãy để tôi giải trí cho người đọc với những suy nghĩ về lý do tại sao một kết xuất phân loại của độ phức tạp tính toán là khó khăn. Có thể cho rằng, cụm khái niệm chính trong lý thuyết thể loại tập trung vào các cấu trúc / tính chất phổ quát (với bộ máy liên kết của functor, biến đổi tự nhiên, điều chỉnh, v.v.). Nếu chúng ta có thể chỉ ra rằng một công trình toán học có một tính chất phổ quát, điều đó mang lại nhiều cái nhìn sâu sắc. Vì vậy, nếu chúng ta muốn một cách tiếp cận phân loại cho độ phức tạp tính toán, chúng ta cần tìm một danh mục thuận tiện và trình bày cách các khái niệm chính của lý thuyết phức tạp (ví dụ LOGSPACE hoặc độ cứng NP) có thể được đưa ra bởi các cấu trúc phổ quát sử dụng thể loại đó. Điều này vẫn chưa được thực hiện và tôi nghĩ rằng đây là vì đây là một vấn đề thực sự khó khăn.

T= =T1T2T3TTôi,1 . Thay vào đó, chúng tôi xây dựng các TM bằng cách chỉ định riêng hai thành phần của chúng: điều khiển (một FSM) và băng. Cả kiểm soát lẫn băng đều không có đại số tốt.

Trước tiên hãy xem băng. Có một số cách tự nhiên để soạn băng, không cách nào có vẻ phù hợp với mô tả thành phần của TM.

  • Dán chúng lại với nhau như bổ sung thông thường. Đây không phải là quan niệm đúng đắn, bởi vì băng là vô hạn và bằng cách gắn chúng lại với nhau như phép cộng, chúng ta có được một đối tượng vô hạn gấp đôi vượt quá khả năng tính toán hữu hạn, dẫn đến tính toán / siêu tính toán vô hạn, thú vị như toán học nhưng không tương ứng với toán học tính toán khả thi.

  • Dán chúng song song , ví dụ hai máy 3 đầu biến thành máy 6 đầu. Điều này không cho chúng ta biết làm thế nào các máy thành phần tương tác với nhau.

  • Băng xen kẽ. Một vấn đề với cách tiếp cận này là không rõ sự xen kẽ chính tắc có thể là gì, nếu có. Hơn nữa, xen kẽ sẽ 'nhầm lẫn' điều khiển hiện có, có xu hướng được tinh chỉnh theo hướng bố trí băng cụ thể. Vì vậy, chúng tôi không thể tái sử dụng kiểm soát trực tiếp.

π

Nói chung, chúng ta ở khá xa tạo thành một phương pháp xử lý đại số / phân loại đáng kể về độ phức tạp tính toán và chúng ta cần một số tiến bộ về mặt khái niệm để đạt được điều đó.


λπλπαλπ


Tôi muốn nói rằng thành phần của máy Turing khá rõ ràng khi bạn nghĩ về chúng như các chương trình máy tính trừu tượng. Cách tự nhiên để soạn chương trình là gọi chương trình này là chương trình con của chương trình khác. Tổng quát hơn, mỗi chương trình là một tính toán trong hàm thời gian và không gian hữu hạn chấp nhận đầu vào được định dạng nhất định và đầu ra một chuỗi được định dạng khác, có thể được đưa vào một chức năng khác. Có thể một số đầu vào rác sẽ dẫn đến đầu ra rác hoặc một số chức năng không thực thi trong thời gian và không gian được phân bổ, trong trường hợp toàn bộ chương trình gặp sự cố.
Anton Fetisov

Rõ ràng không có tất cả các chương trình có thể kết hợp theo cách này, điều này tự nhiên dẫn chúng ta đến một loại TM. Cũng có khả năng người ta nên từ bỏ khái niệm về một TM không giới hạn không gian thời gian, dù thực tế không khả thi. Có một số khái niệm được công bố nắm bắt cấu trúc này?
Anton Fetisov

@AntonFetisov Bạn đã thử viết chi tiết chưa? Nó không đẹp.
Martin Berger

2

Câu trả lời này về sự đồng hình giữa các ngôn ngữ chính thức kết hợp các kết quả đại số từ lý thuyết mã với các khái niệm từ lý thuyết thể loại để nghiên cứu các khái niệm có thể có về sự tương đương và đẳng cấu giữa các ngôn ngữ chính thức và các lớp phức tạp.

Giải thích riêng của tôi về những kết quả này là các điểm đồng bộ hóa trong các từ khác nhau đối với các bộ chuyển đổi không xác định và không xác định rõ ràng, và thậm chí khác nhau giữa các bộ chuyển đổi ngược xác định và chuyển tiếp xác định. Theo quan điểm này về các điểm đồng bộ hóa cho phép kết nối các kết quả này với các ngôn ngữ đẩy xuống rõ ràng và đặt ra câu hỏi liệu những điều đó cũng nên xem xét các dấu tách đơn giản (như dấu cách hoặc dấu phẩy) ngoài các lệnh gọi và trả về. (Tôi đoán là một dấu phân cách có thể được mô phỏng bằng một cuộc gọi + trả lại kết hợp, nhưng vì chúng yêu cầu hai ký hiệu thay vì một ký hiệu, nên tôi không rõ liệu điều này có đủ hay không. Cũng có thể có các ngôn ngữ chỉ có dấu phân cách, nhưng không gọi hoặc trả lại ký hiệu.)


Tôi đã biến nó thành một wiki cộng đồng, bởi vì nó liên kết đến câu trả lời của riêng tôi cho câu hỏi của riêng tôi, điều này chắc chắn không tuyệt vời. Tôi đã "dọn dẹp" các mục yêu thích của mình và chỉ cần viết câu trả lời ngắn gọn này là cách dễ nhất để tiến hành.
Thomas Klimpel
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.