Những vấn đề có thể giải quyết bằng trực giác trong thực tế?


21

Gần đây, tôi đã trải qua trải nghiệm thú vị đau đớn khi giải thích một cách không chính thức khái niệm về độ phức tạp tính toán cho một lập trình viên tự học trẻ tài năng, người chưa bao giờ tham gia một khóa học chính thức về thuật toán hoặc độ phức tạp trước đây. Không có gì đáng ngạc nhiên, ban đầu rất nhiều khái niệm có vẻ lạ nhưng có ý nghĩa với một số ví dụ (PTIME, độ hấp dẫn, không tính toán) , trong khi những khái niệm khác có vẻ tự nhiên hơn (phân loại vấn đề thông qua giảm, thời gian và không gian như tài nguyên, phân tích tiệm cận) . Mọi thứ đều diễn ra tuyệt vời cho đến khi tôi vô tình thừa nhận rằng SATcó thể được giải quyết một cách hiệu quả * trong thực tế ... Và cứ như thế, tôi mất chúng. Nó không quan trọng như thế nào thuyết phục tôi đã cố gắng để tranh luận cho lý thuyết, những đứa trẻ đã bị thuyết phục rằng đó là tất cả nhân tạo tào lao toán rằng ông không nên chăm sóc cho. Tốt...

¯ \ _ (ツ) _ /

Không, tôi không đau lòng, tôi cũng không thực sự quan tâm đến những gì anh ấy nghĩ, đó không phải là vấn đề của câu hỏi này. Cuộc trò chuyện của chúng tôi đã khiến tôi nghĩ về một câu hỏi khác,

Tôi thực sự biết bao nhiêu về các vấn đề khó hiểu về mặt lý thuyết (độ phức tạp thời gian siêu đa thức) nhưng thực tế có thể giải quyết được (thông qua phương pháp phỏng đoán, xấp xỉ, giải SAT, v.v.)?

Tôi nhận ra, không nhiều. Tôi biết rằng có một số bộ giải SAT rất hiệu quả giúp giải quyết các trường hợp to lớn một cách hiệu quả, Simplex hoạt động rất tốt trong thực tế và có thể thêm một vài vấn đề hoặc thuật toán. Bạn có thể giúp tôi vẽ một bức tranh hoàn chỉnh hơn? Những vấn đề nổi tiếng hoặc thậm chí các lớp vấn đề nằm trong danh mục này?

TL; DR: là gì vấn đề mà là phản trực giác có thể giải quyết trong thực tế? Có tài nguyên (cập nhật) để đọc thêm không? Chúng ta có một đặc tính cho họ? Và cuối cùng, như một câu hỏi thảo luận chung, chúng ta có nên không?

EDIT # 1: Khi cố gắng trả lời câu hỏi thảo luận cuối cùng của tôi về một đặc tính như vậy , tôi được giới thiệu để phân tích trơn tru các thuật toán, một khái niệm được giới thiệu bởi Daniel Spielman và Shang-Hua Teng trong [1] liên tục nội suy giữa trường hợp xấu nhất và phân tích trường hợp trung bình của các thuật toán. Nó không chính xác là đặc tính được thảo luận ở trên, nhưng nó nắm bắt cùng một khái niệm và tôi thấy nó thú vị.

[1] Spielman, Daniel A. và Shang-Hua Teng. "Phân tích trơn tru các thuật toán: Tại sao thuật toán đơn giản thường mất thời gian đa thức." Tạp chí của ACM (JACM) 51, số 3 (2004): 385-463.


6
Ý của bạn là gì khi nói rằng SAT có thể được giải quyết một cách hiệu quả trong thực tế? Tại sao bạn của bạn dựa vào bảo mật trên Internet? Có lẽ không có vấn đề khó khăn trong thực tế? Mạnh mẽ là một trong những lợi thế chính của khả năng thanh toán đa thời gian / hiệu quả.
Chandra Chekuri

6
Đồ thị đẳng cấu là một ứng cử viên tự nhiên.
DW

2
Xin chào, @ChandraChekuri, ý tôi là những người giải SAT thực tế có thể trả lời các trường hợp SAT với hàng triệu biến và mệnh đề. Hoặc ít nhất, đó là những gì tôi nghĩ là trường hợp. Tôi không chắc tôi hiểu ý của bạn về "bảo mật trên Internet"? Tôi không tranh luận về chủ nghĩa hình thức, tôi quan tâm đến các vấn đề trong lý thuyết khó hiểu, nhưng vì tất cả các mục đích thực tế (có thể do một xấp xỉ hợp lý, có thể do cấu trúc đặc biệt của các trường hợp trong thế giới thực, v.v.) được xem xét " dễ kéo ".
Konstantinos Ko lạis

1
@KonstantinosKoiliaris Tôi nghĩ rằng điểm là sự an toàn của tất cả các loại giao thức mã hóa dựa trên (thường thậm chí một cái gì đó mạnh hơn nhiều), và như vậy cung cấp ví dụ phong phú của các vấn đề từ thực tiễn thông thường mà là cực kỳ khó khăn cho SAT-giải quyết ( hoặc chúng tôi rất hy vọng như vậy, dù sao). PNP
Emil Jeřábek hỗ trợ Monica

2
Theo hướng này, có thể tốt để kiểm tra độ phức tạp chung. Trên thực tế, hóa ra vấn đề tạm dừng hầu như luôn có thể giải quyết được trong thời gian đa thức, ví dụ như SAT (trên thực tế, SAT có sự bảo đảm mạnh mẽ hơn). Điều này có nghĩa là gì bởi hầu như mọi lúc, vì vấn đề này thừa nhận một thuật toán sao cho tỷ lệ đầu vào mà thuật toán tạm dừng (dĩ nhiên là trả lời đúng) trong thời gian đa thức tăng lên 1 khi độ dài của đầu vào tăng lên.
Guillermo Angeris

Câu trả lời:


17
  • Các trường hợp SAT có cấu trúc cao (thậm chí trên hàng triệu biến) thường có thể được giải quyết trong thực tế. Tuy nhiên, các trường hợp SAT ngẫu nhiên gần ngưỡng thỏa mãn với thậm chí vài trăm biến vẫn mở (có nghĩa là, ngay cả trong thực tế, nếu bạn tạo ra một thứ như vậy bạn có thể không bao giờ biết trong vòng đời của vũ trụ liệu thứ bạn tạo ra có thỏa đáng hay không sử dụng bộ giải SAT hiện tại). Bạn có thể quan tâm đến câu hỏi liên quan này và câu trả lời của nó.

  • Công cụ tìm Clique cũng rất tốt "trong thực tế"

  • Lập trình số nguyên và lập trình số nguyên tuyến tính hỗn hợp (với một số biến số hữu tỷ và một số nguyên) là trọng tâm của toàn bộ bộ phận Nghiên cứu hoạt động và thường có thể (nhưng không phải luôn luôn) được giải quyết trong thực tế

  • Theo những gì tôi hiểu, nhiều vấn đề hoàn chỉnh của có thể được giải quyết trong thực tế, nhưng "trong thực tế" thường bao hàm "trong các trường hợp có cấu trúc cao". (Ngược lại, chúng tôi vẫn không biết ai là người chiến thắng trong các trường hợp khá nhỏ của trò chơi , đó là một vấn đề khác của .P S P A C EPSPACEPSPACE

  • Nhiều vấn đề trong hình học đại số tính toán có thể được giải quyết trong thực tế trên các trường hợp nhỏ bằng cách sử dụng các cơ sở Grobner, nhưng những vấn đề này thất bại thảm hại trong các trường hợp lớn hơn, hoặc thậm chí các trường hợp nhỏ có "độ phức tạp" cao (được đo bằng mức độ đều đặn của Castelnuovo-Mumford). Và những vấn đề này thậm chí là - hoàn thành!EXPSPACE

  • Như đã chỉ ra trong các nhận xét của DW, đồ thị đẳng hình có thể được giải quyết khá nhiều trong thực tế. Rất khó để bỏ qua các phần mềm GI hiện đại như nauty, bliss, saucy, v.v.


Cảm ơn Joshua, tôi đang đưa nó cho bạn cho những vấn đề thú vị / rộng lớn nhất được đề xuất.
Konstantinos Ko lạis

1
Công cụ tìm Clique không phải lúc nào cũng tốt trong thực tế. Nó thực sự phụ thuộc vào biểu đồ. Và liên kết của bạn dường như chỉ nói về biểu đồ ngẫu nhiên.
Peter Shor

Mở rộng một chút về GI: AFAIK hầu hết các bộ giải GI hiện đại nhất như các bộ giải được đề cập đều sử dụng phương pháp sàng lọc cá nhân hóa được tối ưu hóa (trong đó tinh chỉnh là tinh chỉnh màu, đã hoạt động như một phép thử GI chuẩn cho hầu hết tất cả các đồ thị) , nhưng Neuen và Schweitzer gần đây đã cho thấy giới hạn dưới theo cấp số nhân của phương pháp này và các trường hợp cứng được xây dựng (thực tế).
Watercstall

1
@JoshuaGrochow: Vâng, tôi đồng ý với bạn về điều này. Tôi chỉ muốn mở rộng phần "phản trực giác" của câu hỏi vì OP đã đề cập cụ thể rằng Simplex thực hiện rất tốt trong thực tế mặc dù đã biết các giới hạn thấp hơn theo cấp số nhân và chúng ta có tình huống tương tự ở đây.
Watercstall

1
Tôi chỉ có kinh nghiệm với phỏng đoán của Keller , trong đó các biểu đồ (lớn được thừa nhận) đã vượt qua nhiều thuật toán tìm kiếm cụm.
Peter Shor

14

Các Hindley-Milner hệ thống kiểu được sử dụng trong ngôn ngữ lập trình chức năng (Haskell, SML, OCaml). Thuật toán suy luận kiểu gần như tuyến tính trong thực tế và hoạt động tốt đến mức đáng kinh ngạc, nhưng được biết là hoàn thành DEXPTIME!

Một nhận xét chung: không có gì ngạc nhiên khi độ phức tạp trong thời gian tồi tệ nhất không nhất thiết là một thước đo rất tốt về hiệu suất thực tế trên một thuật toán. Tuy nhiên, để nói rằng sự khác biệt giữa lý thuyết và thực tiễn làm cho lý thuyết phức tạp trở nên vô dụng cũng giống như nói rằng số tự nhiên là một sự lãng phí vì chúng ta chỉ sử dụng một lượng rất nhỏ của tất cả các số có sẵn. Một triết gia nổi tiếng đã từng nói rằng "Kinh nghiệm không có lý thuyết là mù quáng, nhưng lý thuyết không có kinh nghiệm chỉ là trò chơi trí tuệ".


FPL

6

Ví dụ khác, chủ yếu từ các ngôn ngữ lập trình:

  1. k-CFA (Phân tích lưu lượng kiểm soát k) là hoàn thành EXPTIME (Van Horn & Mairson 2008), nhưng các trình biên dịch tối ưu hóa toàn bộ chương trình như MLton vẫn thực hiện nó. Thời gian biên dịch dài, nhưng hiếm khi thảm họa.
  2. Quá tải giải quyết (động) nói chung là NP-Complete (Palsberg 2012). Nhưng sau đó nó hiếm khi là một vấn đề trong thế giới thực.
  3. k
  4. Việc giải quyết SMT nói chung là hoàn thành NP, nhưng các bộ giải thương mại SMT (như Z3 và CVC4) thường có hiệu suất khá cao. Tôi không làm việc trực tiếp với người giải quyết SMT, nhưng tôi đã sử dụng Z3 gián tiếp từ Liquid Haskell và Dafny, và thời gian kiểm tra có vẻ ổn.
  5. Vấn đề quyết định cho số học Presburger thực sự phức tạp (Fischer & Rabin 1974), nhưng thuật toán quyết định của Bill Pugh, bài kiểm tra Omega (Pugh 1991), thường chạy trong thời gian đa thức bậc thấp.

Onn


Tài liệu tham khảo:

[1] David Van Horn và Harry G. Mairson. 2008. Quyết định kCFA hoàn tất cho EXPTIME. Trong Kỷ yếu của Hội nghị quốc tế ACM SIGPLAN lần thứ 13 về lập trình chức năng (ICFP '08). ACM, New York, NY, Hoa Kỳ, 275-282.

[2] http://web.cs.ucla.edu/~palsberg/apers/dclus-to-kozen12.pdf

[3] MJ Fischer và MO Rabin. 1974. HỢP CHẤT TUYỆT VỜI CỦA ARITHMETIC PRESBURGER. Tường trình kỹ thuật. Viện Công nghệ Massachusetts, Cambridge, MA, Hoa Kỳ.

[4] William Pugh. 1991. Thử nghiệm Omega: một thuật toán lập trình số nguyên nhanh và thực tế để phân tích sự phụ thuộc. Trong Kỷ yếu của Hội nghị ACM / IEEE về siêu máy tính năm 1991 (Siêu máy tính '91). ACM, New York, NY, Hoa Kỳ, 4-13.


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.