Tôi có định nghĩa về thuật toán tại chỗ từ giáo sư, nhưng tôi không hiểu nó.
Các thuật toán tại chỗ đề cập đến các thuật toán hoạt động với bộ nhớ Θ (1).
Điều đó nghĩa là gì?
Tôi có định nghĩa về thuật toán tại chỗ từ giáo sư, nhưng tôi không hiểu nó.
Các thuật toán tại chỗ đề cập đến các thuật toán hoạt động với bộ nhớ Θ (1).
Điều đó nghĩa là gì?
Câu trả lời:
Đầu tiên, hãy giải nén ý nghĩa của .
Big và big , là các lớp hàm. Có một định nghĩa chính thức ở đây , nhưng đối với mục đích của câu hỏi này, chúng ta nói rằng một hàm là nếu có một hằng số ở đâu, cho tất cả , . Đó là, phát triển nhanh nhất là một hàm hằng.Θ f O ( 1 ) c x f ( x ) ≤ C f
Big- không có ý nghĩa nhiều đối với các hàm hằng, bởi vì khi mô tả thời gian sử dụng thuật toán hoặc sử dụng không gian, không có nhiều dưới hằng số. Nhưng để giải thích ý nghĩa của nó, nếu có một số hằng số sao cho tất cả , . Đó là, phát triển ít nhất là nhanh, và nhiều nhất là nhanh, như một hàm không đổi.f ∈ Θ ( 1 ) c , d x d ≤ f ( x ) ≤ c f
Bây giờ điều này có liên quan gì đến việc sử dụng bộ nhớ? Xem xét một số thuật toán . Có một số hàm (toán học), với đầu vào , cung cấp mức sử dụng bộ nhớ tối đa cho thuật toán của bạn trên bất kỳ đầu vào nào có kích thước . Hãy gọi hàm này là .n A n m e m
Vì vậy, bây giờ chúng tôi kết hợp hai khái niệm của chúng tôi. Nếu một thuật toán sử dụng bộ nhớ , thì chức năng sử dụng bộ nhớ của nó nằm trong , nghĩa là tồn tại một số sao cho, đối với mọi đầu vào, bộ nhớ được sử dụng nằm giữa và .Θ ( 1 ) d , c d c
Nói tóm lại, điều này có nghĩa là việc sử dụng bộ nhớ của thuật toán nằm trong một phạm vi không đổi, bất kể đầu vào.
Thông thường, hàm bộ nhớ không chiếm bộ nhớ được sử dụng để lưu trữ đầu vào cho thuật toán, vì nếu không, việc sử dụng bộ nhớ sẽ luôn luôn ít nhất là .
Độ phức tạp không gian liên tục của thuật toán
Lượng bộ nhớ mà thuật toán của bạn sử dụng không phụ thuộc vào đầu vào.
Một thuật toán được cho là có độ phức tạp không gian không đổi nếu nó sử dụng lượng không gian cố định. Nó có thể là biến hoặc một mảng gồm phần tử chính xác .10
Tuy nhiên, các thuật toán tại chỗ thực hiện chức năng dự định của chúng trên chính đầu vào và do đó đòi hỏi rất ít hoặc không có thêm không gian. Đầu vào thường được ghi đè bởi đầu ra khi thuật toán thực thi. (tham khảo )
Các thuật toán tại chỗ không xem xét không gian bị chiếm bởi đầu vào và chỉ tính đến không gian thừa, trong khi tính toán độ phức tạp của không gian.