Độ phức tạp giới hạn dưới: khoảng cách giữa các cây quyết định và RAM


15

Gần đây tôi đã phát hiện ra một bậc hai ràng buộc về mức độ phức tạp của một vấn đề trong mô hình cây quyết định và tôi tự hỏi liệu kết quả này có thể được khái quát hóa một phần cho mô hình máy truy cập ngẫu nhiên hay không. Theo một phần , tôi có nghĩa là khái quát hóa các chương trình RAM với sự đánh đổi không gian / thời gian nhất định. Chẳng hạn, tôi muốn chứng minh rằng vấn đề của tôi không thể giải quyết được bằng chương trình RAM không gian và thời gian tuyến tính.

AM Ben-Amram và Z. Galil đã chứng minh trong bài báo này rằng chương trình RAM chạy trong thời gian và không gian có thể được mô phỏng theo thời gian trên máy con trỏ. Chúng ta có biết kết quả tương tự có thể được áp dụng cho cây quyết định không?tsO(tlogs)

Ngoài ra, có thể mô phỏng chương trình RAM chạy trong không gian với cây quyết định độ không? (theo trực giác, địa chỉ gián tiếp có thể được mô phỏng bằng các nút độ )s ssss


Tôi không biết quá nhiều về độ phức tạp của truy vấn cổ điển (độ phức tạp của cây quyết định) nhưng khi làm việc trong mô hình tương tự trong cài đặt lượng tử (độ phức tạp truy vấn lượng tử) đôi khi bạn gặp các giới hạn thấp hơn cho mô hình mạch. Ví dụ, đối với HSP, bạn có thể chỉ ra rằng độ phức tạp của truy vấn là đa thức, nhưng tính không đồng nhất giữa các truy vấn có số cổng theo cấp số nhân ... và theo như chúng tôi nghi ngờ HSP chung không thể thực hiện được trong thời gian đa thức, vì vậy độ phức tạp của truy vấn chỉ mang lại giới hạn dưới rất lỏng lẻo. Hay bạn ổn với một giới hạn dưới rất lỏng lẻo?
Artem Kaznatcheev

Trên thực tế, tôi thực sự muốn có một siêu tuyến giới hạn thấp hơn cho (một số) chương trình chạy trên RAM. Đó là lý do tại sao tôi hy vọng rằng việc hạn chế sự phức tạp của không gian có thể giúp ích.
Totoro

1
Tôi không hiểu câu hỏi của bạn. Làm thế nào bạn có thể có một bậc hai ràng buộc thấp hơn về độ phức tạp truy vấn? Ngoài ra, sự đánh đổi không gian thời gian thường sử dụng các định lý sản phẩm trực tiếp, vì vậy bạn có thể phải làm việc chăm chỉ hơn để có được kết quả như vậy.
Hartmut Klauck

1
Độ phức tạp thấp hơn trong mô hình cây quyết định xuất phát từ giới hạn thấp hơn về số lượng đầu ra có thể có của vấn đề (logarit cung cấp giới hạn thấp hơn về chiều cao trên cây).
Totoro

Câu trả lời:


10

Mô hình tự nhiên liên quan đến cây quyết định có thể mô phỏng RAM là chương trình phân nhánh. Về cơ bản, nó là một cây quyết định với các cây con chung kết hợp lại mang lại một DAG. Thời gian T và không gian S trên RAM có thể được mô phỏng theo chiều cao T và kích thước 2 ^ S trên chương trình phân nhánh. (Bạn có thể cần sử dụng phân nhánh nhiều chiều.)

Đối với các vấn đề quyết định, rõ ràng là bất kỳ cây quyết định nào cũng chỉ cần chiều cao = # đầu vào và khoảng trắng = tổng số bit trong đầu vào. Lưu ý rằng với phân nhánh nhiều chiều, người ta có thể có các bit # trong đầu vào lớn hơn số đo thông thường của # đầu vào (ví dụ: n con trỏ mỗi bit lấy log n.) Đối với các vấn đề như vậy với tổng số bit đầu vào nlog n, người ta có thể chứng minh rằng một số vấn đề nhất định không thể được giải quyết trong các bit O (n) và space = O (n). Đó có phải là hình thức của bạn vấn đề?

Dường như bạn đề xuất rằng bạn đang sử dụng # đầu ra để cố gắng đạt được giới hạn dưới lớn hơn. Thông thường, các vấn đề đa đầu ra cho phép nhiều đầu ra dọc theo một cạnh thay vì tại các nút lá (ví dụ, xem bài viết năm 1982 của Borodin-Cook về cách sắp xếp các giới hạn thấp hơn). Tuy nhiên, ngay cả khi không có giả định này, người ta cũng có thể tính toán bất kỳ hàm nào với height = # input và space = # bit đầu vào. (Đọc và ghi nhớ đầu vào và xuất tất cả các giá trị tại mỗi nút lá.)


Cảm ơn về câu trả lời của bạn. Đầu vào của vấn đề là một tập hợp các số nguyên, do đó có thể cho rằng chúng được đưa ra dưới dạng danh sách. Dù sao, cảm ơn bạn đã chỉ ra kỹ thuật của Borodin và Cook (tôi hoàn toàn không biết). Tôi hy vọng loại phương pháp đó có thể được áp dụng cho vấn đề của tôi.
Totoro

1

Mô hình tự nhiên liên quan đến cây quyết định mô phỏng RAM mà không bị mất là chương trình phân nhánh. Về cơ bản, nó là một cây quyết định với các cây con chung kết hợp lại mang lại một DAG. Thời gian T và không gian S trên RAM có thể được mô phỏng theo chiều cao T và kích thước 2 ^ S trên chương trình phân nhánh. (Bạn có thể cần sử dụng phân nhánh nhiều chiều.)

Đối với các vấn đề quyết định, rõ ràng là bất kỳ cây quyết định nào cũng chỉ cần chiều cao = # đầu vào và khoảng trắng = tổng số bit trong đầu vào. Lưu ý rằng với phân nhánh nhiều chiều, người ta có thể có các bit # trong đầu vào lớn hơn số đo thông thường của # đầu vào (ví dụ: n con trỏ mỗi bit lấy n bit.) một số vấn đề nhất định không thể được giải quyết trong các bit O (n) và khoảng trống = O (n) trên RAM.) Đó có phải là dạng của vấn đề của bạn không?

Dường như bạn đề xuất rằng bạn đang sử dụng # đầu ra để cố gắng đạt được giới hạn dưới lớn hơn. Tuy nhiên, ngay cả với điều này, bạn cũng có thể tính toán bất kỳ hàm nào có height = # input và space = # bit đầu vào. (Đọc và ghi nhớ đầu vào và đầu ra tất cả các giá trị được yêu cầu tại mỗi nút lá. Thông thường cho phép nhiều đầu ra tại một nút.)


Có lẽ tốt hơn là tác giả nên hợp nhất câu trả lời này với câu trả lời trước vì chúng gần giống nhau.
Oleksandr Bondarenko
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.