Complejidad de búsqueda de picos 2D (MIT OCW 6.006)

9

En un video de recitación para MIT OCW 6.006 a las 43:30,

Dada una matriz matriz con columnas y filas, el algoritmo de búsqueda de picos 2D, donde un pico es cualquier valor mayor o igual a sus vecinos adyacentes, se describió como:A m nm×nAmn

Nota: Si hay confusión al describir las columnas a través de , me disculpo, pero así es como lo describe el video de recitación y traté de ser coherente con el video. Me confundió mucho.n

  1. Elija la columna central // Tiene complejidadΘ ( 1 )n/2Θ(1)

  2. Encuentre el valor máximo de la columna // Tiene complejidad porque hay filas en una columnaΘ ( m ) mn/2Θ(m)m

  3. Mira horiz. vecinos de fila de valor máximo, si es mayor, se ha encontrado un pico; de lo contrario, se repite con // Tiene complejidadT ( n / 2 , m )T(n/2,m)T(n/2,m)

Luego, para evaluar la recursividad, el instructor de recitación dice:

T(1,m)=Θ(m) porque encuentra el valor máximo

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

Entiendo la siguiente parte, a las 52:09 en el video, donde dice que tratar a como una constante, ya que el número de filas nunca cambia. Pero no entiendo cómo eso lleva al siguiente producto:m

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

Creo que, dado que se trata como una constante, se trata como y se elimina en anterior. Pero me está costando dar el salto a . ¿Es esto porque ahora estamos considerando el caso de con una constante ?Θ ( 1 ) ( E 1 ) ( E 2 ) T ( n / 2 ) mmΘ(1)(E1)(E2)T(n/2)m

Creo que puede "ver" la idea general es que se realiza una operación , en el peor de los casos, para m número de filas. Lo que intento descubrir es cómo describir el salto de a a otra persona, es decir, obtener una comprensión real.( E 1 ) ( E 2 )Θ(logn)(E1)(E2)

usuario52207
fuente

Respuestas:

1

Según tengo entendido, lleva (m) tiempo evaluar todos los elementos en una columna dada e identificar cuál de esos elementos es el máximo global. Donde entra el es que en el peor de los casos, el algoritmo debe evaluar las columnas en la matriz antes de encontrar un pico. El trabajo total sería entoncesΘ ( lg ( n ) ) lg ( n ) Θ ( m lg ( n ) )ΘΘ(lg(n))lg(n)Θ(mlg(n))

Por ejemplo, supongamos que su matriz tiene 32 columnas y 8 filas.

  1. Usted toma la columna del medio, digamos la columna 16. La evalúa y encuentra que el pico global de la columna es reemplazado por un elemento a la derecha. Sueltas las columnas 1-16 y te enfocas en las columnas 17-32
  2. Encuentre la columna central de la matriz restante, que es la columna 24, y evalúe para un pico global (esta es su segunda evaluación de columna). Usted encuentra que necesita moverse hacia la derecha. Suelte las columnas 17-24, concéntrese en 25-32.
  3. Encuentre el medio (columna 28): evalúa (evaluación de la tercera columna) y descubre que necesita moverse hacia la derecha. Suelte las columnas 25 a 28 y concéntrese en 29 a 32.
  4. Evalúe la columna 30 (cuarta evaluación), descubra que necesita moverse hacia la derecha, suelte las columnas 29-30.
  5. Evalúe una de las columnas restantes (evaluación de la quinta columna) y listo.

En total, completó cinco evaluaciones de columna. 5 = = donde n es el número de columnas en la matriz y lg es log base 2.lg ( n )lg(32)lg(n)

ManGI1
fuente
2

el análisis que delinea parece ser incorrecto. la complejidad correcta es dondeT ( n , m )O(m) es la dimensión más grande de la matriz (ya sea filas o columnas). vea este otroanálisis correctopara más / mejor detalle. parte del error no es definir la relación de recurrencia T ( n , m ) solo en términos de(que se maneja correctamente en el documento). El artículo muestra / utiliza una serie infinita:mT(n,m)T(n,m)

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

vzn
fuente
1
Esta respuesta es, de hecho, fuera de cuestión! El OP habla sobre el algoritmo en el video de recitación MIT OCW 6.006, mientras que esta respuesta habla sobre un algoritmo diferente . En particular, el análisis descrito por OP es correcto con respecto al algoritmo en ese video.
John L.