Đối với thuật toán nào có một khoảng cách lớn giữa phân tích lý thuyết và thực tế?


52

Hai cách để phân tích hiệu quả của một thuật toán là

  1. để đặt một giới hạn trên tiệm cận trong thời gian chạy của nó và
  2. để chạy nó và thu thập dữ liệu thử nghiệm.

Tôi tự hỏi nếu có những trường hợp được biết có một khoảng cách đáng kể giữa (1) và (2). Điều này có nghĩa là (a) dữ liệu thực nghiệm cho thấy một tiệm cận chặt chẽ hơn hoặc (b) có thuật toán X và Y sao cho phân tích lý thuyết cho thấy X tốt hơn Y và dữ liệu thực nghiệm cho thấy Y tốt hơn nhiều so với Y X.

Vì các thí nghiệm thường tiết lộ hành vi trường hợp trung bình, tôi mong đợi các câu trả lời thú vị nhất đề cập đến giới hạn trường hợp trung bình. Tuy nhiên, tôi không muốn loại trừ những câu trả lời thú vị có thể nói về các giới hạn khác nhau, chẳng hạn như câu trả lời của Noam về Simplex.

Bao gồm các cấu trúc dữ liệu. Vui lòng đặt một thuật toán / DS cho mỗi câu trả lời.


Nó sẽ giúp ích nếu bạn làm rõ loại giới hạn nào bạn đang nói đến. Bạn chỉ nói về những vấn đề có một khoảng cách đáng kể giữa giới hạn trên và dưới được biết đến nhiều nhất cho sự phức tạp trong trường hợp xấu nhất? Hoặc bạn cũng bao gồm các vấn đề mà giới hạn chặt chẽ về độ phức tạp trong trường hợp xấu nhất được biết đến, nhưng thời gian chạy thông thường nhanh hơn đáng kể? Có thể thú vị hơn khi xem xét độ phức tạp được làm mịn hơn là độ phức tạp trong trường hợp xấu nhất. Kết quả thử nghiệm trên đầu vào 'điển hình' hoặc đầu vào ngẫu nhiên ít làm ảnh hưởng đến sự tồn tại của đầu vào bệnh lý.
James King

Trong trường hợp đó tôi nghĩ có hai câu hỏi nên được hỏi riêng: một về khoảng cách giữa độ phức tạp trong trường hợp xấu nhất và độ phức tạp của trường hợp trung bình / độ mịn và một về khoảng cách giữa độ phức tạp trung bình / trường hợp lý thuyết và kết quả thực nghiệm. Chỉnh sửa: bạn đã thực hiện một chỉnh sửa giải quyết vấn đề này trong khi tôi đang viết bình luận của mình :)
James King

Câu trả lời:


37

Tất nhiên, ví dụ rõ ràng nhất là phương pháp Simplex chạy nhanh trong thực tế, cho thấy tính đa thời gian, nhưng mất thời gian theo cấp số nhân trong lý thuyết. Dan Spielman vừa nhận được giải thưởng Nevanlinna ở một mức độ lớn để giải thích bí ẩn này.

Tổng quát hơn, nhiều trường hợp lập trình Integer có thể được giải quyết khá tốt bằng cách sử dụng các bộ giải IP tiêu chuẩn, ví dụ: đấu giá kết hợp cho hầu hết các bản phân phối đã thử trên các đầu vào có kích thước đáng kể có thể được giải quyết - http://www.cis.upenn.edu/~mkearns /teaching/cgt/combinatorial-auctions-survey.pdf


3
Đã có một họ rõ ràng của các chương trình tuyến tính được tìm thấy mà đơn giản mất thời gian theo cấp số nhân?
Chọn

1
Theo tôi hiểu, có nhiều gia đình rõ ràng đòi hỏi thời gian theo cấp số nhân (ví dụ, lần đầu tiên được đưa ra bởi Klee và Minty: "Thuật toán đơn giản tốt như thế nào?", 1972). Tuy nhiên, việc lựa chọn quy tắc trục có liên quan đến các kết quả này. Tôi đoán hầu hết các tài liệu tham khảo cho các kết quả này có thể được tìm thấy trong bài báo của Spielman và Teng ( arxiv.org/abs/cs/0111050 ).
MRA


có các giới hạn cho một số quy tắc xoay vòng cụ thể trong bài viết này cs.au.dk/~tdh/ con / brand_edge.pdf
Igor Shinkar

26

Căn cứ Groebner . Thời gian chạy trường hợp xấu nhất là theo cấp số nhân (theo số lượng biến). Tuy nhiên, trong thực tế, đặc biệt đối với các vấn đề có cấu trúc tốt, thuật toán F4 và F5 có hiệu quả (tức là chấm dứt khá nhanh). Đây vẫn là một lĩnh vực nghiên cứu tích cực để tìm ra những phỏng đoán phù hợp thậm chí nên liên quan đến thời gian chạy trung bình hoặc dự kiến. Người ta phỏng đoán rằng nó có liên quan, bằng cách nào đó, với khối lượng đa giác Newton của lý tưởng cơ bản.


Trung bình / dự kiến ​​theo phân phối gì? Tôi nghĩ thậm chí xác định thời gian chạy dự kiến ​​là khó khăn cho các vấn đề đại số ...
Joshua Grochow

1
Tôi không biết các trường hợp được giải quyết nhanh chóng bằng phương pháp F4 và F5, nhưng khá dễ dàng để xây dựng một hệ thống đa thức với nhiều biến số và mức độ thấp mã hóa một thể hiện SAT. Trong trường hợp như vậy, tôi không biết rằng thuật toán này vượt trội hơn DPLL / DPLL +. Tôi thực sự muốn biết thêm về kết quả thử nghiệm về những điều này!
MassimoLauria

@Joshua: tại thời điểm này, bất kỳ phân phối nào cho phép kết quả ... @Massimo: vấn đề mã hóa X như một ví dụ của Y gần như không bao giờ đánh bại các thuật toán chuyên dụng cho X! Nhưng GB và DPLL về cơ bản là tương đương nhau, vì vậy tôi sẽ rất ngạc nhiên khi thấy sự khác biệt hiệu quả.
Jacques Carette

1
@Massimo: Có, tính toán GB là NP-Hard. Tùy thuộc vào công thức. Trong thực tế, hầu hết các câu hỏi (hoàn thành, thành viên lý tưởng, trường đóng đại số so với booleans) là PSPACE hoàn thành hoặc tệ hơn (hoàn tất EXPSPACE). Điều đó có nghĩa là việc tính toán GB được dự kiến ​​sẽ khó hơn nhiều so với các vấn đề hoàn thành NP (và ngay cả trường hợp avg, bất kỳ thuật toán nào cho chúng như F5 rất có thể sẽ không vượt trội hơn DPLL).
Mitch

22

O(2((nlogn)))

Tôi không biết liệu có một kết quả chính thức về mức độ phức tạp trung bình / đã được giải quyết của vấn đề hay không, nhưng tôi nhớ đã đọc rằng có một kết quả tồn tại - có lẽ ai đó có thể kêu gọi kết quả chính thức. Chắc chắn, có rất nhiều bằng chứng thực nghiệm và rất nhiều người giải quyết nhanh. Tôi cũng tò mò nếu tài sản này mở rộng cho các thành viên khác trong gia đình GI hoàn chỉnh.


1
O(2nlogn)

2
Oh! Có thể bạn đang nghĩ về Babai-Kucera, đưa ra thuật toán trường hợp trung bình theo thời gian tuyến tính cho GI: doi.ieeecomputersociety.org/10.1109/SFCS.1979.8
Joshua Grochow

Vâng, Babai-Kucera là một! Cảm ơn đã tham khảo.
Anand Kulkarni

20

Từ David Johnson, sự khác biệt về tỷ lệ xấp xỉ lý thuyết và gần đúng thực nghiệm: Vấn đề nhân viên bán hàng du lịch: Một nghiên cứu tình huống về tối ưu hóa địa phương, DS Johnson và LA McGeoch . Trong bài báo này, họ đưa ra bằng chứng thực nghiệm về tiệm cận (vì các thí nghiệm có kích thước N = 10.000.000!) Đã thách thức thuật ngữ tiệm cận lý thuyết: Thuật toán "Tham lam" hoặc "Đa mảnh" của Jon Bentley (tỷ lệ xấp xỉ trường hợp xấu nhất ít nhất là logN / loglogN) đánh bại Chèn gần nhất và Double MST, cả hai đều có tỷ lệ xấp xỉ trường hợp xấu nhất là 2.


20

Một ví dụ khác chưa được hiểu rõ cho đến gần đây là thời gian hoạt động của thuật toán k-mean của Lloyd , mà (từ quan điểm thực tế) là thuật toán phân cụm được lựa chọn trong hơn 50 năm. Chỉ gần đây, vào năm 2009, người ta đã chứng minh (bởi Vattani ) rằng trong trường hợp xấu nhất, thuật toán của Lloyd yêu cầu một số lần lặp theo cấp số nhân về số lượng điểm đầu vào. Mặt khác, đồng thời, một phân tích được làm mịn (bởi Arthur, Manthey và Röglin ) đã chứng minh rằng số lần lặp được làm mịn chỉ là đa thức, điều này giải thích hiệu suất thực nghiệm.


10

Các hệ quả truyền tải, deque và split của phỏng đoán tối ưu động cho các cây splay là ví dụ về những khoảng trống như vậy. Các thí nghiệm sao lưu yêu cầu cho thời gian tuyến tính, nhưng không có bằng chứng được biết đến.


3
Seth Pettie đã chứng minh rằng các thao tác n deque mất không quá thời gian O (n alpha * (n)), trong đó "alpha *" là hàm Ackermann nghịch đảo lặp, là một khoảng cách khá nhỏ.
jbapple

9

Có một vấn đề nhỏ với câu hỏi. Thực tế, có nhiều hơn hai cách để phân tích một thuật toán và một trong những cách lý thuyết đã bị bỏ qua là thời gian chạy dự kiến, thay vì thời gian chạy trường hợp xấu nhất. Đây thực sự là hành vi trường hợp trung bình có liên quan đến việc làm thí nghiệm. Đây là một ví dụ rất đơn giản: Hãy tưởng tượng rằng bạn có một thuật toán cho đầu vào có kích thước n, sẽ mất thời gian n cho mỗi đầu vào có thể có kích thước n ngoại trừ một đầu vào cụ thể của mỗi độ dài cần có thời gian 2 ^ n. Nghe thời gian chạy trường hợp xấu nhất là theo cấp số nhân, nhưng trường hợp trung bình là [(2 ^ n -1) n + (2 ^ n) 1] / (2 ^ n) = n - (n-1) / 2 ^ n mà giới hạn cho n. Rõ ràng hai loại phân tích đưa ra câu trả lời rất khác nhau, nhưng điều này được mong đợi vì chúng tôi đang tính toán số lượng khác nhau.

Bằng cách chạy thử nghiệm rất nhiều lần, ngay cả khi chúng tôi mất thời gian chạy lâu nhất cho mẫu, chúng tôi vẫn chỉ lấy mẫu một phần nhỏ không gian của các đầu vào có thể, và vì vậy, nếu các trường hợp khó xảy ra thì rất có thể chúng tôi sẽ bỏ lỡ chúng .

Việc xây dựng một vấn đề như vậy tương đối dễ dàng: Nếu n / 2 bit đầu tiên đều bằng 0, hơn là giải quyết trường hợp 3SAT được mã hóa với n / 2 bit cuối cùng. Nếu không thì từ chối. Khi n trở nên lớn, vấn đề có cùng thời gian chạy trong trường hợp xấu nhất là thuật toán hiệu quả nhất cho 3SAT, trong đó thời gian chạy trung bình được đảm bảo là rất thấp.


Tôi đã trả lời James King ở trên rằng tôi đang mong đợi những câu trả lời thú vị nhất sẽ là về thời gian chạy dự kiến. Tôi sẽ chỉnh sửa câu hỏi để làm cho điều này rõ hơn.
Radu GRIGore

9

Suy luận kiểu Damas-Milner được chứng minh là hoàn chỉnh theo thời gian theo cấp số nhân, và có những trường hợp được xây dựng dễ dàng với kết quả theo cấp số nhân trong kích thước của kết quả. Tuy nhiên, trên hầu hết các đầu vào trong thế giới thực, nó hoạt động theo kiểu tuyến tính hiệu quả.


Có một tài liệu tham khảo bạn muốn giới thiệu cho kết quả này? Tôi muốn đọc thêm về nó.
Radu GRIGore

1
Tôi đã không tự đọc nó, nhưng bài báo được trích dẫn thường xuyên nhất là Harry G. Mairson, "Tính quyết định của việc gõ ML đã hoàn tất cho thời gian theo cấp số nhân", Hội thảo lần thứ 17 về Nguyên tắc Ngôn ngữ lập trình (1990).
sclv

9

Cây PTAS cho Steiner trong đồ thị phẳng có sự phụ thuộc vô lý vào epsilon. Tuy nhiên, có một triển khai cho thấy một hiệu suất tốt đáng ngạc nhiên trong thực tế.


8

Ghép các đống, từ [1] - chúng thực hiện các đống, trong đó chèn và hợp nhất có độ phức tạp khấu hao O (log n), nhưng được phỏng đoán là O (1). Trong thực tế, chúng cực kỳ hiệu quả, đặc biệt đối với người dùng hợp nhất.

Tôi mới phát hiện ra chúng ngay hôm nay khi đọc Sec. 5.5 trong cuốn sách "Các cấu trúc dữ liệu chức năng thuần túy" của C. Okasaki, vì vậy tôi nghĩ rằng tôi nên chia sẻ thông tin về chúng.

[1] Fredman, ML, Sedgewick, R., Sleator, DD và Tarjan, RE 1986. Heap ghép nối: một hình thức mới của heap tự điều chỉnh. Thuật toán 1, 1 (tháng 1 năm 1986), 111-129. DOI = http://dx.doi.org/10.1007/BF01840439


Đã có một số tiến bộ kể từ Okasaki, và hiện có các cặp ghép (bắt buộc) với O (0) meld, O (1) insert và findMin, O (lg lg n) lessKey và O (lg n) xóaMin: arxiv. org / abs / 0903.4130 . Heap này sử dụng một cơ chế ghép nối khác với heap ghép ban đầu của Fredman et al.
jbapple

7

Liên quan đến nhận xét của ilyaraz về chi nhánh và ràng buộc, Pataki et al. cho thấy giảm chi nhánh và ràng buộc cộng với mạng cơ sở có thể giải quyết gần như tất cả các IP ngẫu nhiên trong đa thời gian.


6

Heuristic Lin-Kernighan cho TSP ("Một heuristic hiệu quả cho vấn đề nhân viên bán hàng du lịch", Research Research 21: 489 Ném516, 1973) rất thành công trong thực tế, nhưng vẫn thiếu một phân tích trung bình hoặc trơn tru để giải thích hiệu suất của nó . Ngược lại, có một phân tích trơn tru về heuristic 2-opt cho TSP của Matthias Englert, Heiko Röglin và Berthold Vöcking (Al Thuậtmica, sẽ xuất hiện).


5

Có rất nhiều rất nhanh và hiệu quả trong thực tế chi nhánh và ràng buộc các thuật toán cho các vấn đề NP-cứng khác nhau mà chúng ta không thể chặt chẽ phân tích: TSP, cây Steiner, đóng gói bin và vân vân.

Ω(nm)


Ý bạn là O (mn), hay tôi bối rối?
Radu GRIGore

O(nmlog(n2/m))
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.