Kompleksitas penemuan puncak 2-D (MIT OCW 6.006)

9

Dalam video pembacaan untuk MIT OCW 6.006 pukul 43:30,

Diberikan matriks dengan kolom dan baris, algoritma penemuan 2-D, di mana puncak adalah nilai lebih besar dari atau sama dengan tetangganya yang berdekatan, digambarkan sebagai:m×nAmn

Catatan: Jika ada kebingungan dalam mendeskripsikan kolom melalui , saya minta maaf, tetapi ini adalah bagaimana video pembacaan menggambarkannya dan saya mencoba untuk konsisten dengan video. Itu sangat membingungkan saya.n

  1. Pilih kolom tengah // Memiliki kompleksitasn/2Θ(1)

  2. Temukan nilai maksimal kolom // Memiliki kompleksitas karena ada baris dalam kolomn/2Θ(m)m

  3. Periksa horiz. baris tetangga dari nilai maks, jika lebih besar maka puncak telah ditemukan, jika tidak muncul kembali dengan // Memiliki kompleksitasT(n/2,m)T(n/2,m)

Kemudian untuk mengevaluasi rekursi, kata instruktur pembacaan

T(1,m)=Θ(m) karena ia menemukan nilai maks

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

Saya memahami bagian berikutnya, di 52:09 di video, di mana ia mengatakan untuk memperlakukan seperti konstan, karena jumlah baris tidak pernah berubah. Tapi saya tidak mengerti bagaimana itu mengarah ke produk berikut:m

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

Saya pikir, karena diperlakukan seperti konstanta, maka diperlakukan seperti dan dihilangkan dalam atas. Tapi saya mengalami kesulitan melakukan lompatan ke . Apakah ini karena kita sekarang mempertimbangkan kasus dengan konstanta ?Θ ( 1 ) ( E 1 ) ( E 2 ) T ( n / 2 ) mmΘ(1)(E1)(E2)T(n/2)m

Saya pikir dapat "melihat" ide keseluruhannya adalah bahwa operasi dilakukan, paling buruk, untuk m jumlah baris. Apa yang saya coba cari tahu adalah bagaimana menggambarkan lompatan dari ke ke orang lain, yaitu memperoleh pemahaman nyata.( E 1 ) ( E 2 )Θ(logn)(E1)(E2)

pengguna52207
sumber

Jawaban:

1

Seperti yang saya pahami, dibutuhkan (m) waktu untuk mengevaluasi semua elemen dalam kolom yang diberikan dan mengidentifikasi elemen mana yang merupakan maksimum global. Di mana muncul adalah bahwa dalam skenario kasus terburuk, algoritma harus mengevaluasi kolom dalam matriks sebelum menemukan puncak. Total pekerjaan akan menjadiΘ ( lg ( n ) ) lg ( n ) Θ ( m lg ( n ) )ΘΘ(lg(n))lg(n)Θ(mlg(n))

Misalnya, katakanlah matriks Anda memiliki 32 kolom dan 8 baris.

  1. Anda mengambil kolom tengah, katakan kolom 16. Anda mengevaluasinya dan menemukan bahwa puncak global kolom digantikan oleh elemen di sebelah kanan. Anda menjatuhkan kolom 1-16, dan fokus pada kolom 17-32
  2. Temukan kolom tengah dari matriks yang tersisa, yaitu kolom 24, dan Anda mengevaluasi puncak global (ini adalah evaluasi kolom kedua Anda). Anda merasa perlu bergerak ke kanan. Jatuhkan kolom 17-24, fokus pada 25-32.
  3. Temukan tengah (kolom 28) - Anda mengevaluasi (evaluasi kolom ketiga), dan Anda perlu pindah ke kanan. Letakkan kolom 25 - 28, dan fokus pada 29 - 32.
  4. Evaluasi kolom 30 (evaluasi keempat), temukan Anda harus pindah ke kanan, letakkan kolom 29-30.
  5. Evaluasi salah satu kolom yang tersisa (evaluasi kolom kelima), dan Anda selesai.

Secara total, Anda menyelesaikan lima evaluasi kolom. 5 = = n adalah jumlah kolom dalam matriks dan lg adalah basis log 2.lg ( n )lg(32)lg(n)

ManGI1
sumber
2

analisis yang Anda uraikan tampaknya salah. kompleksitas yang benar adalah mana adalah dimensi yang lebih besar dari matriks (baik baris atau kolom). lihat analisis lain yang benar ini untuk perincian yang lebih / lebih baik. bagian dari kesalahan adalah tidak mendefinisikan hubungan perulangan dalam hal saja (yang ditangani dengan benar di kertas). makalah ini menunjukkan / menggunakan seri tak terbatas:m T ( n , m )O(m)mT(n,m)T(n,m)

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

vzn
sumber
1
Jawaban ini sebenarnya bukan pertanyaan! OP berbicara tentang algoritma dalam video pembacaan MIT OCW 6.006 sementara jawaban ini berbicara tentang algoritma yang berbeda . Khususnya, analisis yang diuraikan oleh OP adalah benar sehubungan dengan algoritma dalam video itu.
John L.