İki boyutlu zirve bulma karmaşıklığı (MIT OCW 6.006)


9

MIT OCW 6.006 için 43 : 30'da bir videoda,

sütunları ve satırları olan bir matrisi verildiğinde, bir zirvenin bitişik komşularından daha büyük veya ona eşit herhangi bir değer olduğu 2-D tepe bulma algoritması şu şekilde tanımlandı:m×nAmn

Not: Sütunları aracılığıyla tanımlamakta karışıklık varsa , özür dilerim, ancak bu videoda anlatılan video bu şekilde açıklanır ve videoyla tutarlı olmaya çalıştım. Beni çok karıştırdı.n

  1. Orta sütunu seçin // Karmaşıklığı varn/2Θ(1)

  2. sütununun maksimum değerini bulun // Bir sütunda satır bulunduğundan karmaşıklık vardırn/2Θ(m)m

  3. Yatay kontrolü yapın. maksimum değere sahip sıra komşuları, eğer daha büyükse bir zirve bulunursa, aksi takdirde ile tekrarlama // KarmaşıklıkT(n/2,m)T(n/2,m)

Daha sonra özyinelemeyi değerlendirmek için, okuma öğretmeni diyor

T(1,m)=Θ(m) çünkü maksimum değeri bulur

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

Bir sonraki bölümü anlıyorum, videoda 52: 09'da, sabit gibi davrandığını söylüyor , çünkü satır sayısı asla değişmiyor. Ancak bunun aşağıdaki ürüne nasıl yol açtığını anlamıyorum:m

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

Bence bir sabit gibi muamele edildiğinden, gibi muamele görür ve yukarıdaki ortadan kaldırılır . Ama ye zorlanıyorum . Bu m şimdi sabit ile durumunu düşündüğümüz için mi?mΘ(1)(E1)(E2)T(n/2)m

Genel fikir "görebiliyorum" bir işlemi, m satır sayısı için, en kötü şekilde gerçekleştirilir olduğunu düşünüyorum. Anlamaya çalıştığım şey den ye bir başkasına atlamayı nasıl tanımlayacağımız , yani gerçek bir anlayış kazanmak.Θ(logn)(E1)(E2)

Yanıtlar:


1

Anladığım kadarıyla (m) verilen sütundaki tüm öğeleri değerlendirmek ve bu öğelerin hangilerinin küresel maksimum olduğunu belirlemek zaman alır. Burada gelir en kötü durum senaryosunda, algoritma değerlendirmelidir olmasıdır bir tepe bulmadan önce matris içinde sütunlar. Toplam çalışmaΘΘ(lg(n))lg(n)Θ(mlg(n))

Diyelim ki matrisinizde 32 sütun ve 8 satır var.

  1. Orta sütunu alırsınız, sütun 16 deyin. Bunu değerlendirirsiniz ve sütunun küresel zirvesinin sağ taraftaki bir öğenin yerini aldığını görürsünüz. 1-16. Sütunları bırakın ve 17-32. Sütunlara odaklanın
  2. Sütun 24 olan kalan matrisin orta sütununu bulun ve global bir tepe noktası için değerlendirin (bu ikinci sütun değerlendirmenizdir). Sağa gitmen gerektiğini buluyorsun. Sütunları 17-24 bırakın, 25-32'ye odaklanın.
  3. Ortayı bulun (sütun 28) - değerlendirirsiniz (üçüncü sütun değerlendirmesi) ve sağa gitmeniz gerektiğini görürsünüz. 25 - 28 arasındaki sütunları bırakın ve 29 - 32'ye odaklanın.
  4. Sütun 30'u (dördüncü değerlendirme) değerlendirin, sağa gitmeniz gerektiğini bulun, 29-30 arasındaki sütunları bırakın.
  5. Kalan sütunlardan birini değerlendirin (beşinci sütun değerlendirmesi) ve işiniz bitti.

Toplamda beş sütun değerlendirmesi tamamladınız. 5 = = burada n matristeki sütun sayısı ve lg günlük tabanı 2'dir.lg(32)lg(n)


2

ana hatlarıyla yaptığınız analiz yanlış görünüyor. doğru karmaşıklık ' , burada matrisin daha büyük boyutudur (satırlar veya sütunlar). daha fazla / daha iyi ayrıntı için bu diğer doğru analize bakın. hatanın bir kısmı nüks ilişkisini sadece cinsinden tanımlamamaktadır (bu kağıtta doğru bir şekilde ele alınır). makalede sonsuz bir dizi gösteriliyor / kullanılıyor:O(m)mT(n,m)T(n,m)

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


1
Bu cevap aslında söz konusu değil! OP, MIT OCW 6.006 okuma videosundaki algoritmadan bahsederken , bu cevap farklı bir algoritmadan bahsediyor . Özellikle, OP tarafından özetlenen analiz, o videodaki algoritmaya göre doğrudur.
John L.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.