Suponga que se nos da una matriz contiene enteros no negativos (no necesariamente distintos).
La solución obvia es ordenar y luego calcular . Esto proporciona un algoritmo que se ejecuta en el tiempo en el peor de los casos.
¿Es posible hacerlo mejor? ¿Podemos calcular en tiempo lineal?
Mi pregunta principal es la de arriba. Pero sería interesante saber acerca de la siguiente generalización del problema.
Deje que sea ordenados según alguna comparación Oracle y una función dada por un oráculo. Dados y oráculos para y , ¿qué podemos decir sobre el tiempo necesario para calcular ?
Todavía podemos calcular en tiempo . Pero, ¿podemos demostrar un límite inferior superlineal para este caso generalizado?
Si la respuesta es sí, ¿se mantiene el límite inferior si suponemos que es el orden habitual en los enteros es una función "agradable" (monótono, polinomial, lineal, etc.)?f
Si la matriz consta de enteros distintos, entonces , ya que la distancia entre las entradas adyacentes en es al menos ; la situación es más interesante cuando no necesitan ser distintos.A m=max(A)+1 B 1
Para su pregunta más general, imagine una situación en la que solo es "interesante" cuando . Parece posible construir un argumento adverso que lo obligue a consultar para todo antes de que pueda saber , por lo tanto, necesita ordenar para encuentre la respuesta, que toma comparaciones de . (Hay algunas complicaciones ya que podría ser el caso de que podamos probar si en tiempo constante en lugar de lineal al consultar .) Este es el caso incluso si es un polinomio (de alto grado).f(B[i],j) i=j f(B[i],i) i maxif(B[i],i) A Ω(nlogn) A[i]=B[j] f(A[i],j) f
fuente