Hôm nay tôi đã học được rằng phân tích thuật toán khác nhau dựa trên mô hình tính toán. Đó là điều mà tôi chưa bao giờ nghĩ tới hoặc nghe nói đến.
Một ví dụ được đưa ra cho tôi, được minh họa thêm bởi Người dùng @chi là:
Ví dụ: hãy xem xét nhiệm vụ: đã cho return . Trong RAM, điều này có thể được giải quyết trong vì truy cập mảng là thời gian không đổi. Sử dụng TM, chúng ta cần quét toàn bộ đầu vào, vì vậy đó làx i O ( 1 ) O ( n )
Điều này làm cho tôi tự hỏi về các ngôn ngữ chức năng; Theo hiểu biết của tôi, "Ngôn ngữ chức năng có liên quan mật thiết đến phép tính lambda" (từ một bình luận của Yuval Filmus ở đây ). Vì vậy, nếu các ngôn ngữ chức năng dựa trên tính toán lambda, nhưng chúng chạy trên các máy dựa trên RAM, thì cách phù hợp để thực hiện phân tích phức tạp trên các thuật toán được thực hiện bằng cách sử dụng các cấu trúc dữ liệu và ngôn ngữ thuần túy là gì?
Tôi chưa có cơ hội đọc Cấu trúc dữ liệu chức năng thuần túy nhưng tôi đã xem trang Wikipedia cho chủ đề này và dường như một số cấu trúc dữ liệu thay thế các mảng truyền thống bằng:
"Mảng có thể được thay thế bằng bản đồ hoặc danh sách truy cập ngẫu nhiên, thừa nhận thực hiện chức năng hoàn toàn, nhưng thời gian truy cập và cập nhật là logarit."
Trong trường hợp đó, mô hình tính toán sẽ khác, đúng không?