formula proof

formula - ¿Cuál es la prueba de(N – 1)+(N – 2)+(N – 3)+…+1=N*(N – 1)/2



proof (9)

Obtuve esta fórmula de un libro de estructura de datos en el algoritmo de clasificación de burbujas.

Sé que somos (n-1) * (n veces), pero ¿por qué la división por 2?

¿Puede alguien explicarme esto o darme la prueba detallada?

Gracias


Sé que somos (n-1) * (n veces), pero ¿por qué la división por 2?

Es solo (n - 1) * n si usas una burbuja de burbujas ingenua. Puede obtener un ahorro significativo si observa lo siguiente:

  • Después de cada comparación e intercambio, el elemento más grande que haya encontrado estará en el último lugar en el que estuvo.

  • Después de la primera pasada, el elemento más grande estará en la última posición; después del paso k th , el elemento k th más grande estará en la k th última posición.

Por lo tanto, no tiene que ordenar todo el asunto cada vez: solo necesita ordenar n - 2 elementos la segunda vez, n - 3 elementos la tercera vez, y así sucesivamente. Eso significa que el número total de comparaciones / swaps que tienes que hacer es (n - 1) + (n - 2) + ... Esta es una serie aritmética , y la ecuación para el número total de veces es (n - 1) * n / 2.

Ejemplo: si el tamaño de la lista es N = 5, entonces hace 4 + 3 + 2 + 1 = 10 swaps, y observa que 10 es lo mismo que 4 * 5/2.


Aquí hay una prueba por inducción, considerando los términos de N , pero es lo mismo para N - 1 :

Para N = 0 la fórmula es obviamente verdadera.

Supongamos que 1 + 2 + 3 + ... + N = N(N + 1) / 2 es cierto para algunos N naturales.

Demostraremos que 1 + 2 + 3 + ... + N + (N + 1) = (N + 1)(N + 2) / 2 también es cierto al usar nuestro supuesto anterior:

1 + 2 + 3 + ... + N + (N + 1) = (N(N + 1) / 2) + (N + 1) = (N + 1)((N / 2) + 1) = (N + 1)(N + 2) / 2 .

Así que la fórmula se mantiene para todo N


Empieza con el triángulo ...

* ** *** ****

representando 1 + 2 + 3 + 4 hasta ahora. Cortar el triángulo por la mitad a lo largo de una dimensión ...

* ** * ** ** **

Gire la parte más pequeña 180 grados y péguela sobre la parte más grande ...

** * * ** ** **

Cerrar la brecha para obtener un rectángulo.

A primera vista, esto solo funciona si la base del rectángulo tiene una longitud uniforme, pero si tiene una longitud impar, simplemente corta la columna del medio a la mitad; todavía funciona con una media unidad de ancho dos veces más alto ( todavía área entera) tira en un lado de su rectángulo.

Cualquiera que sea la base del triángulo, el ancho de su rectángulo es (base / 2) y la altura es (base + 1) , dando ((base + 1) * base) / 2 .

Sin embargo, mi base es su n-1 , ya que la ordenación de las burbujas compara un par de elementos a la vez y, por lo tanto, itera solo en las posiciones (n-1) del primer bucle.



Intenta hacer pares de números del conjunto. Lo primero + lo último; el segundo + el anterior al último. Significa n-1 + 1; n-2 + 2. El resultado es siempre n. Y como están sumando dos números, solo se pueden hacer pares (n-1) / 2 a partir de números (n-1).

Así que es como (N-1) / 2 * N.


Suma de progresión aritmética.

(A1 + AN) / 2 * N = (1 + (N-1)) / 2 * (N-1) = N * (N-1) / 2


Supongamos que n = 2. Entonces tenemos 2-1 = 1 en el lado izquierdo y 2 * 1/2 = 1 en el lado derecho.

Denote f (n) = (n-1) + (n-2) + (n-3) + ... + 1

Ahora supongamos que hemos probado hasta n = k. Entonces tenemos que probar para n = k + 1.

en el lado izquierdo tenemos k + (k-1) + (k-2) + ... + 1, así que es f (k) + k

En el lado derecho tenemos entonces (k + 1) * k / 2 = (k ^ 2 + k) / 2 = (k ^ 2 + 2k - k) / 2 = k + (k-1) k / 2 = k f (k)

Entonces esto tiene que mantenerse para cada k, y esto concluye la prueba.



(N-1) + (N-2) +...+ 2 + 1 es una suma de N-1 elementos. Ahora reordene los elementos para que después de lo primero venga el último, luego el segundo, luego el segundo para durar, es decir (N-1) + 1 + (N-2) + 2 +.. La forma en que se ordenan los elementos ahora puede ver que cada uno de esos pares es igual a N (N-1 + 1 es N, N-2 + 2 es N). Como hay elementos N-1, hay (N-1) / 2 pares. Entonces, está agregando N (N-1) / 2 veces, por lo que el valor total es N*(N-1)/2 .