Độ phức tạp tìm kiếm cực đại 2 chiều (MIT OCW 6,006)


9

Trong một video đọc thuộc MIT OCW 6,006 lúc 43:30,

Với một ma trận với cột và hàng, 2-D phát hiện đỉnh cao thuật toán, nơi một đỉnh bất kỳ lớn hơn giá trị hơn hoặc tương đương với nó là hàng xóm liền kề, được mô tả như sau:A m nm×nAmn

Lưu ý: Nếu có sự nhầm lẫn trong việc mô tả các cột qua , tôi xin lỗi, nhưng đây là cách video thuộc lòng mô tả nó và tôi đã cố gắng phù hợp với video. Nó làm tôi bối rối rất nhiều.n

  1. Chọn cột giữa // Có độ phức tạpΘ ( 1 )n/2Θ(1)

  2. Tìm giá trị tối đa của cột // Có độ phức tạp vì có hàng trong một cộtΘ ( m ) mn/2Θ(m)m

  3. Kiểm tra chân trời. hàng xóm có giá trị tối đa, nếu nó lớn hơn thì đã tìm thấy một đỉnh, nếu không thì lặp lại với // Có độ phức tạpT ( n / 2 , m )T(n/2,m)T(n/2,m)

Sau đó để đánh giá đệ quy, người hướng dẫn đọc thuộc lòng nói

T(1,m)=Θ(m) vì tìm thấy giá trị tối đa

(E1)T(n,m)=Θ(1)+Θ(m)+T(n/2,m)

Tôi hiểu phần tiếp theo, vào lúc 52:09 trong video, nơi anh ấy nói hãy coi như một hằng số, vì số lượng hàng không bao giờ thay đổi. Nhưng tôi không hiểu làm thế nào dẫn đến sản phẩm sau:m

(E2)T(n,m)=Θ(m)Θ(logn)

Tôi nghĩ rằng, vì được coi như một hằng số, do đó, nó được xử lý như và bị loại trong ở trên. Nhưng tôi đang gặp khó khăn khi chuyển sang . Đây có phải là vì chúng ta đang xem xét trường hợp với hằng số ?Θ ( 1 ) ( E 1 ) ( E 2 ) T ( n / 2 ) mmΘ(1)(E1)(E2)T(n/2)m

Tôi nghĩ rằng có thể "thấy" ý tưởng tổng thể là một hoạt động được thực hiện, tệ nhất là, cho m số hàng. Những gì tôi đang cố gắng tìm ra là làm thế nào để mô tả bước nhảy từ sang sang người khác, tức là đạt được sự hiểu biết thực sự.Θ(logn)(E1)(E2)

Câu trả lời:


1

Theo tôi hiểu, phải mất (m) thời gian để đánh giá tất cả các yếu tố trong cột đã cho và xác định yếu tố nào là tối đa toàn cầu. Trường hợp xuất hiện là trong trường hợp xấu nhất, thuật toán phải đánh giá các cột trong ma trận trước khi tìm thấy một đỉnh. Tổng số công việc sau đó sẽ làΘΘ(lg(n))lg(n)Θ(mlg(n))

Ví dụ: giả sử ma trận của bạn có 32 cột và 8 hàng.

  1. Bạn lấy cột giữa, giả sử cột 16. Bạn đánh giá nó và thấy rằng đỉnh toàn cầu của cột được thay thế bởi một phần tử ở bên phải. Bạn thả các cột 1-16 và tập trung vào các cột 17-32
  2. Tìm cột giữa của ma trận còn lại, đó là cột 24 và bạn đánh giá cho một đỉnh toàn cầu (đây là đánh giá cột thứ hai của bạn). Bạn thấy bạn cần phải di chuyển sang phải. Thả cột 17-24, tập trung vào 25-32.
  3. Tìm phần giữa (cột 28) - bạn đánh giá (đánh giá cột thứ ba) và bạn thấy bạn cần di chuyển sang phải. Thả cột 25 - 28 và tập trung vào 29 - 32.
  4. Đánh giá cột 30 (đánh giá thứ tư), thấy bạn cần di chuyển sang phải, thả cột 29-30.
  5. Đánh giá một trong những cột còn lại (đánh giá cột thứ năm) và bạn đã hoàn thành.

Tổng cộng, bạn đã hoàn thành năm đánh giá cột. 5 = = trong đó n là số cột trong ma trận và lg là cơ sở log 2.lg(32)lg(n)


2

các phân tích bạn phác thảo dường như là không chính xác. độ phức tạp chính xác là trong đó là kích thước lớn hơn của ma trận (hàng hoặc cột). xem phân tích chính xác khác này để biết thêm chi tiết / tốt hơn. một phần của lỗi không xác định mối quan hệ lặp lại theo (được xử lý chính xác trong bài báo). bài báo cho thấy / sử dụng một chuỗi vô hạn:O(m)mT(n,m)T(n,m)

T(n)=T(n2)+cnT(n)=T(1)+cn(1+12+14+18+)=O(n)


1
Câu trả lời này, trên thực tế, tắt câu hỏi! OP nói về thuật toán trong video đọc thuộc MIT OCW 6,006 trong khi câu trả lời này nói về một thuật toán khác . Cụ thể, phân tích được OP phác thảo là chính xác đối với thuật toán trong video đó.
John L.
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.