Hướng dẫn what is the time and space complexity of slicing in python? - thời gian và không gian phức tạp của việc cắt lát trong python là gì?

QN này là từ bài kiểm tra của trường tôi.

Bối cảnh: Trong một trò chơi Hangman, người chơi cố gắng khám phá một từ ẩn bằng cách đoán các chữ cái trong từ. Giả sử tất cả các từ và chữ cái là chữ thường.

Hàm loại bỏ lấy làm đầu vào 2 chuỗi, một chữ cái và một từ và xuất ra từ với tất cả các lần xuất hiện của chữ cái được xóa.

Cung cấp một triển khai lặp lại của chức năng xóa và giải thích ngắn gọn về độ phức tạp về thời gian và không gian của hàm bạn đã viết.

Được đính kèm bên dưới là mã của tôi, giống như giải pháp được cung cấp.

Tuy nhiên, tôi đã bị vấp ngã khi tôi cố gắng giải thích độ phức tạp về thời gian và không gian như O [n] và O [1] tương ứng như câu trả lời được đưa ra là O [n^2] và O [n].

Giải thích được cung cấp bởi giám khảo là:

Độ phức tạp về thời gian: O [n^2] trong đó n là độ dài của chuỗi đầu vào. Điều này là do trong mỗi lần lặp vòng lặp, sự kết hợp chuỗi của new_word sẽ dài hơn cho đến khi nó ở mức tồi tệ nhất, độ dài n.

Độ phức tạp của không gian: O [n], mặc dù không có hoạt động bị trì hoãn hoặc các đối tượng mới được tạo ra mọi lần lặp, chuỗi mới được tạo ra tồi tệ nhất có thể có cùng độ dài với chuỗi ban đầu nếu không có chữ cái nào bị xóa.

Thực hành của tôi là khi tôi giải thích điều gì đó, tôi sẽ có thể vạch ra nó một cách toán học.

Thời gian: Tổng thời gian dành cho mỗi lần lặp hoặc tổng thời gian cho mỗi đệ quy

1] Tôi không hiểu tại sao nối chuỗi đóng góp vào độ phức tạp về thời gian. Đối với các mã đệ quy của nó cắt rõ ràng vì có sự cắt lát chuỗi liên quan [S [0] và S [1:], sự hình thành của S [1:] sẽ lấy O [N-1], O [1] từ S [0] là Không đáng kể] Trong mỗi cuộc gọi đệ quy, tổng thời gian là n+[n-1]+,+1 = o [n^2]. Đối với lời giải thích của lặp đi lặp lại, tôi chỉ cần chấp nhận nó hoặc có một lý thuyết đằng sau lý do tại sao sự kết hợp thêm vào sự phức tạp về thời gian.

Không gian: Tổng không gian được thực hiện cho mỗi đệ quy hoặc tổng không gian được thực hiện cho mỗi lần lặp

2] Ban đầu tôi nghĩ rằng không gian cho đệ quy và lặp lại được tính toán theo cùng một cách. Có đúng không khi chấp nhận rằng để lặp lại, không gian nên được tính là không gian cần thiết cho lần lặp đòi hỏi khắt khe nhất thay vì tổng không gian tích lũy cho tất cả các lần lặp. Yêu cầu nhất sau đó sẽ là khi New_word và Word tương đương.

3] Tôi thực sự chấp nhận thực tế rằng việc lặp lại thường chiếm không gian O [1] và sẽ ném bom mỗi khi tôi có thể. Điều gì thực sự là lý do đằng sau việc coi sự phức tạp không gian của lặp đi lặp lại là O [1] là gì?

Sửa lỗi cho tôi bất cứ lúc nào khi tôi thấy rằng tôi đang ghi nhớ và không hiểu nhiều điều vào thời điểm này.

def remove[letter,word]:
    new_word=""
    for i in word:
        if letter!=i:
            new_word+=i
    return new_word

Cắt lát là một hoạt động thời gian liên tục. Một tiêu đề lát cắt chứa con trỏ đến mảng, kích thước và công suất bên dưới.

Sự phức tạp về thời gian của Len trong Python là gì?

Chức năng Len [] trong Python có một đặc điểm rất đặc biệt mà người ta thường tự hỏi. Hoàn toàn không mất thời gian và thời gian bằng nhau, trong việc tính độ dài của các cấu trúc dữ liệu có thể lặp lại [chuỗi, mảng, tuple, v.v.], không phân biệt kích thước hay loại dữ liệu. Điều này rõ ràng ngụ ý độ phức tạp thời gian O [1].

Nhà điều hành cắt lát trong Python là gì?

Cắt lát là một hoạt động thời gian liên tục. Một tiêu đề lát cắt chứa con trỏ đến mảng, kích thước và công suất bên dưới.

Sự phức tạp về thời gian của Len trong Python là gì?

Cắt lát là một hoạt động thời gian liên tục. Một tiêu đề lát cắt chứa con trỏ đến mảng, kích thước và công suất bên dưới.

Sự phức tạp về thời gian của Len trong Python là gì?

Trang này ghi lại sự phức tạp về thời gian [hay còn gọi là "Big O" hoặc "Big OH"] của các hoạt động khác nhau trong Cpython hiện tại. Các triển khai Python khác [hoặc các phiên bản phát triển cũ hơn hoặc vẫn còn dưới của CPython] có thể có các đặc điểm hiệu suất hơi khác nhau. Tuy nhiên, nhìn chung là an toàn khi cho rằng chúng không chậm hơn so với hệ số O [log n].

Nói chung, 'n' là số lượng các yếu tố hiện tại trong container. 'K' là giá trị của một tham số hoặc số lượng phần tử trong tham số.

danh sách

Trường hợp trung bình giả định các tham số được tạo ra đồng đều một cách ngẫu nhiên.

Trong nội bộ, một danh sách được biểu diễn dưới dạng một mảng; Các chi phí lớn nhất đến từ việc tăng vượt quá quy mô phân bổ hiện tại [vì mọi thứ phải di chuyển] hoặc từ việc chèn hoặc xóa ở đâu đó gần đầu [vì mọi thứ sau đó phải di chuyển]. Nếu bạn cần thêm/xóa ở cả hai đầu, hãy xem xét sử dụng một bộ sưu tập.Deque thay thế.

Hoạt động

Trường hợp trung bình

Đã khấu hao trường hợp xấu nhất

Sao chép

Trên]

Trên]

Nối [1]

O [1]

O [1]

Pop cuối cùng

O [1]

O [1]

Pop cuối cùng

Trên]

Trên]

Nối [1]

Trên]

Trên]

Nối [1]

O [1]

O [1]

Pop cuối cùng

O [1]

O [1]

Pop cuối cùng

Trên]

Trên]

Nối [1]

Trên]

Trên]

Nối [1]

O [1]

O [1]

Pop cuối cùng

Trên]

Trên]

Nối [1]

O [1]

O [1]

Pop cuối cùng

O [1]

O [1]

Pop cuối cùng

Trung cấp pop [2]

Trung cấp pop [2]

Chèn

Nhận mục

Nhận mục

Thiết lập các mục

Trên]

Nối [1]

Trên]

Nối [1]

O [1]

O [1]

collections.deque

Pop cuối cùng

Hoạt động

Trường hợp trung bình

Đã khấu hao trường hợp xấu nhất

Sao chép

Trên]

Trên]

Nối [1]

O [1]

O [1]

Pop cuối cùng

O [1]

O [1]

Pop cuối cùng

O [1]

O [1]

Pop cuối cùng

O [1]

O [1]

Pop cuối cùng

O [1]

O [1]

Pop cuối cùng

O [1]

O [1]

Pop cuối cùng

O [1]

O [1]

Pop cuối cùng

Trên]

Trên]

Nối [1]

O [1]

Hoạt động

Trường hợp trung bình

Đã khấu hao trường hợp xấu nhất

Sao chép

Thiết lập các mục

O [1]

Trên]

Nối [1]

O[len[s]+len[t]]

O [1]

Pop cuối cùng

Trung cấp pop [2]

Chèn

Nhận mục

Thiết lập các mục

Xóa mục

Lặp đi lặp lại

Nhận lát

Được]

Del lát

Lặp đi lặp lại

Trung cấp pop [2]

Chèn

Được]

Del lát

  • Đặt lát

  • O [k+n]

Mở rộng [1]

Loại

O [n log n]

Hoạt động

Trường hợp trung bình

Đã khấu hao trường hợp xấu nhất

Sao chép

O [1]

Trên]

Nối [1]

Trên]

Trên]

Nối [1]

O [1]

Trên]

Đặt mục [1]

O [1]

Trên]

Xóa mục

O [1]

Trên]

Xóa mục

Trên]

Trên]

Xóa mục

Lặp lại [3]

Ghi chúk from a list of size n shifts all elements after k by one slot to the left using memmove. n - k elements have to be moved, so the operation is O[n - k]. The best case is popping the second to last element, which necessitates one move, the worst case is popping the first element, which involves n - 1 moves. The average case for an average value of k is popping the element the middle of the list, which takes O[n/2] = O[n] operations.

[1] = Các hoạt động này dựa vào phần "khấu hao" của "trường hợp xấu nhất được khấu hao". Các hành động cá nhân có thể mất nhiều thời gian đáng ngạc nhiên, tùy thuộc vào lịch sử của container.

Sự phức tạp về thời gian của việc cắt trong Python là gì?

Ngoài ra độ phức tạp về thời gian của việc cắt là O [n] nếu k%len [nums]! = 0: nums [:] = nums [len [nums] -k%[len [nums]]:]+nums [: len [nums] -K%[LEN [NUMS]]]]O[N] if k%len[nums]!= 0: nums[:]=nums[len[nums]-k%[len[nums]]:]+nums[:len[nums]-k%[len[nums]]]

Là cắt không đổi thời gian?

Cắt lát là một hoạt động thời gian liên tục.Một tiêu đề lát cắt chứa con trỏ đến mảng, kích thước và công suất bên dưới.. A slice header contains the pointer to the underlying array, size, and capacity.

Sự phức tạp về thời gian của Len trong Python là gì?

Chức năng Len [] trong Python có một đặc điểm rất đặc biệt mà người ta thường tự hỏi.Hoàn toàn không mất thời gian và thời gian bằng nhau, trong việc tính độ dài của các cấu trúc dữ liệu có thể lặp lại [chuỗi, mảng, tuple, v.v.], không phân biệt kích thước hay loại dữ liệu.Điều này rõ ràng ngụ ý độ phức tạp thời gian O [1].O[1] time complexity.

Nhà điều hành cắt lát trong Python là gì?

Chức năng Python Slice [] Một đối tượng lát được sử dụng để chỉ định cách cắt một chuỗi.Bạn có thể chỉ định nơi bắt đầu cắt lát và nơi kết thúc.Bạn cũng có thể chỉ định bước, cho phép bạn ví dụ:Chỉ cắt mọi mặt hàng khác.A slice object is used to specify how to slice a sequence. You can specify where to start the slicing, and where to end. You can also specify the step, which allows you to e.g. slice only every other item.

Bài Viết Liên Quan

Chủ Đề