Các hằng số ẩn trong độ phức tạp của thuật toán


9

Đối với nhiều vấn đề, thuật toán có độ phức tạp tiệm cận tốt nhất có một yếu tố hằng số rất lớn được ẩn bởi ký hiệu O lớn. Điều này xảy ra trong phép nhân ma trận, phép nhân số nguyên (cụ thể là thuật toán nhân số nguyên O (n log n) gần đây của Harvey và van der Hoeven), các mạng sắp xếp độ sâu thấp và tìm các công cụ tìm đồ thị, để tạo ra một số ít. Các thuật toán như vậy đôi khi được gọi là thuật toán thiên hà.

Lưu ý rằng đối với các thuật toán khác, chẳng hạn như sắp xếp chung và cộng số nguyên, các thuật toán được biết đến với độ phức tạp tiệm cận tối ưu và các yếu tố hằng số nhỏ.

Nghiên cứu nào đã được thực hiện trong việc tách các thuật toán cũ khỏi các thuật toán sau, từ góc độ lý thuyết?

Tôi biết rằng các hằng số ẩn thường bị bỏ qua để che giấu sự khác biệt giữa các mô hình tính toán khác nhau. Tuy nhiên, tôi tin tưởng rằng dưới nhiều loại mô hình khác nhau, các thuật toán Thiên hà này sẽ chậm hơn các thuật toán kém hơn về mặt triệu chứng đối với các đầu vào có kích thước một tỷ, chẳng hạn. Sự khác biệt là không tinh tế, trong một số trường hợp. Nó đã được thực hiện nghiêm ngặt?

Chẳng hạn, người ta có thể phát minh ra một mô hình tính toán rất đơn giản, chẳng hạn như máy von Neumann với một ISA rất đơn giản, sau đó thực hiện các thuật toán và ràng buộc thời gian chạy của chúng với các hằng số rõ ràng. Điều này đã được thực hiện cho một loạt các thuật toán?


1
Các thuật toán nhân số nguyên nhanh không phải là thiên hà. Chúng thực sự được sử dụng phổ biến trong thực tế.
Emil Jeřábek

2
@ EmilJeřábek Có thể OP đang nói về sự đột phá gần đây của David Harvey và Joris van der Hoeven, "Phép nhân số nguyên trong thời gian ", đó là thiên hà (xem mục này của blog của Lipton chẳng hạn: rjlipton .wordpress.com / 2019/03/29 / ' )O(nlogn)
Lamine

1
Khi các tác giả tự viết (và được đề cập trên blog của Lipton), bài viết cho đơn giản không cố gắng tối ưu hóa các hằng số, nhưng rất có thể chúng có thể được thực hiện.
Emil Jeřábek

@ EmilJeřábek Bài báo đó thực sự là bài tôi đang nói đến. Bài viết mô tả các cải tiến có thể được thực hiện, nhưng điều cực kỳ nghi ngờ là thuật toán sẽ trở thành một cải tiến thực tế so với các thuật toán O (n log n log log n) hiện tại được sử dụng trong thực tế, với mức độ log log n nhỏ là cho đầu vào thực tế.
isaacg

4
@ EmilJeřábek Cụ thể, thuật toán được trình bày trong giấy trì hoãn thuật toán đơn giản hơn cho trường hợp cơ sở bất cứ khi nào số đó có ít hơn bit, trong đó chúng hiện lấy . Các tối ưu hóa mà họ mô tả có thể cho phép họ sử dụng thay vào đó, nhưng các bit vẫn vượt quá số lượng hạt trong vũ trụ, vì vậy tính thực tế vẫn chưa được giải quyết. Xem Phần 5.4 của bài báo của họ. d = 1729 d = 9 2 9 122d12d=1729d=92912
isaacg

Câu trả lời:


2

Một nơi mà điều này được tiếp cận một cách thú vị cho một loại thuật toán và các vấn đề tổ hợp nhất định là trong tổ hợp phân tích . Cách tiếp cận chính được mô tả tương tự như những gì bạn đề xuất: bạn bắt đầu với một số triển khai cụ thể của thuật toán và xác định một số thao tác lặp lại (thường là thao tác nặng nhất) mà bạn sẽ sử dụng để liên kết độ phức tạp có thể đếm được rõ ràng để thực hiện đầu vào của một đầu vào cụ thể kích thước dưới dạng số mà thao tác đã chọn được thực hiện.NCN

Phương pháp này không yêu cầu sửa bất kỳ mô hình tính toán cụ thể nào, mặc dù điều đó có thể hữu ích trong khóa học. Cũng lưu ý rằng bạn có thể cố gắng tính toán hành vi xấu nhất hoặc hành vi dự kiến ​​hoặc vẫn còn một cái gì đó khác.

Thành phần quan trọng nhất trong phương pháp này là phân tích các hàm tạo của các giá trị này. Đôi khi bạn có thể có được các xấp xỉ tiệm cận rất chính xác bằng các phương pháp từ phân tích phức tạp.

O(nlogn)

Trong thực tế, trong quicksort, bạn sắp xếp một danh sách bằng cách sắp xếp đệ quy các danh sách con, để bạn sẽ có được sự cải thiện cho tất cả các kích cỡ nếu bạn sử dụng sáp nhập vào các danh sách nhỏ hơn kích thước 10. Một lưu ý thú vị trong cuốn sách đề cập rằng trong một thư viện Microsoft có nguồn gốc mở, thuật toán sắp xếp chung được triển khai dưới dạng quicksort cho đến khi bạn giảm xuống kích thước 10, sau đó sử dụng phép hợp nhất. Trong các nhận xét mã được đề cập rằng các thử nghiệm hiệu suất cho thấy giá trị này là tối ưu.

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.