¿Por qué tamaños de entrada más grandes implican instancias más difíciles?

12

A continuación, supongamos que estamos trabajando con una máquina Turing de cinta infinita.

Al explicar la noción de la complejidad del tiempo a alguien, y por qué se mide en relación con el tamaño de entrada de una instancia, me topé con la siguiente afirmación:

[..] Por ejemplo, es natural que necesite más pasos para multiplicar dos enteros con 100000 bits que, por ejemplo, multiplicar dos enteros con 3 bits.

El reclamo es convincente, pero de alguna manera saluda con la mano. En todos los algoritmos que encontré, cuanto mayor es el tamaño de entrada, más pasos necesita. En palabras más precisas, la complejidad del tiempo es una función monótonamente creciente del tamaño de entrada.

¿Es el caso que la complejidad del tiempo es siempre una función creciente en el tamaño de entrada? Si es así, ¿por qué es así? ¿Hay alguna prueba de eso más allá de agitar las manos?

Kaveh
fuente
"Directamente proporcional" tiene un significado matemático específico que significa, esencialmente tiempo lineal. En otras palabras, si su entrada tiene un tamaño , si el tiempo es directamente proporcional, el algoritmo se ejecuta en el tiempo c n . Me imagino que eso no es lo que quiere decir, ya que muchos algoritmos no se ejecutan en tiempo lineal, es decir, la clasificación. ¿Puedes explicar más? ncn
SamM
Entonces, ¿estás preguntando acerca de un algoritmo que se ejecuta en tiempo? O ( 1 ) significa que el algoritmo se ejecuta al mismo tiempo, independientemente del tamaño de entrada, o ( 1 ) significa que se ejecuta más rápido a medida que la entrada se hace más grande. No puedo pensar en uno que se ejecute en ese momento fuera de mi cabeza, pero la notación es bastante común porque un algoritmo a menudo se ejecutará en algo como O ( n 2 ) + o ( 1 ) tiempo, en otras palabras. , se necesita O ( n 2 )o(1)O(1)o(1)O(n2)+o(1)O(n2)tiempo, y hay otros términos que se hacen más pequeños a medida que la entrada se hace más grande.
SamM
Buena pregunta. ¿Qué pasa con el contraejemplo de calcular los factores primos de para alguna c grande (esta es solo una función creciente para n c )? @Sam Tenga en cuenta que una función creciente dice que el tiempo debe estar disminuyendo en algún punto a lo largo de la línea real (es decir, f ( b ) < f ( a ) , a < b ). c/ncncf(b)<f(a),a<b
Casey Kuball
@Darthfett me temo que no te sigo. No todas las funciones crecientes están disminuyendo en algún punto a lo largo de la línea real.
SamM
@ Jennifer Sí, entiendo, eso tiene sentido. Recomiendo usar el término ya que tiene el significado que está buscando. Y me gustaría enfatizar que la proporcionalidad directa implica linealidad; Veo a qué te refieres, pero puede ser confuso para quienes leen la pregunta por primera vez. o(1)
SamM

Respuestas:

12

¿Es el caso que la complejidad del tiempo es siempre una función creciente en el tamaño de entrada? Si es así, ¿por qué es así?

No. Considere una máquina de Turing que se detiene después de pasos cuando el tamaño de entrada n es par, y se detiene después de n 2 pasos cuando n es impar.nnn2n

Si te refieres a la complejidad de un problema , la respuesta sigue siendo no. La complejidad de la prueba de primalidad es mucho menor para números pares que para números impares.

JeffE
fuente
4

¿Es el caso que la complejidad del tiempo es siempre una función creciente en el tamaño de entrada? Si es así, ¿por qué es así? ¿Hay alguna prueba de eso más allá de agitar las manos?

nnn/cc


n=1n>1


Probablemente los algoritmos sublineales sean de su interés, que no leen toda la entrada. Ver por ejemplo http://www.dcs.warwick.ac.uk/~czumaj/PUBLICATIONS/DRAFTS/Sublinear-time-Survey-BEATCS.pdf .

Christopher
fuente
O(logn)o(1)
@Sam: Lo siento, no vi tu comentario antes de mi edición (agregando algoritmos sublineales).
Christopher
todo lo contrario; No vi tu edición antes de agregar mi comentario. Lo eliminaría, pero la segunda mitad todavía se aplica y un enlace adicional no puede dañar el OP
SamM
1
f(x)=0
1

(N,)Ω(1)

Dicho esto, los tiempos de ejecución promedio pueden contener componentes oscilantes, por ejemplo Mergesort .

Rafael
fuente
No veo cómo esta respuesta está relacionada con la pregunta.
A.Schulz
@ A.Schulz Da una prueba de la pregunta principal "¿Es el caso de que la complejidad del tiempo es siempre una función creciente en el tamaño de entrada?", Leyendo "creciente" como "no decreciente", es decir, no necesariamente estrictamente creciente.
Raphael
1
@ A.Schulz: Aún así, mi interpretación parece ser lo que le interesa a Jennifer .
Raphael