¿Cuándo sería el algoritmo A más lento que el algoritmo B? Demuestre su respuesta con la ayuda de un ejemplo.

[Si eres un principiante o un intermedio, entonces mi respuesta puede ayudarte, pero si eres un profesional, considerarás mi respuesta como una falacia científica, solo estoy tratando de hacerlo de la manera más fácil para que lo domines suavemente]

En general, la teoría de la complejidad tiene que ver con el número de iteraciones y los comandos. La mayoría de las veces, por mi corta experiencia, consideramos que los comandos son de una complejidad constante, es decir, cuando agregas dos números o multiplicas dos números, esto en realidad no sucede en ningún momento, lleva algo de tiempo, pero la teoría de complejidad en su mayoría lo consideran un O (1) o un número constante de operaciones.


En su Algoritmo A y Algoritmo B, solo varían en la tercera y cuarta línea. Pero como dijimos antes, los comandos tienen un número constante de operaciones, por lo que la cuarta línea es la misma en los pensamientos de complejidad, porque no hará una diferencia si hiciéramos “X = X + 10000” o “X = X +1 “(considéralo como esto por ahora).
De acuerdo con la tercera línea:

Algoritmo A
.
.
PARA j = 1 a 10000
.
.
================================================== ===
Algoritmo B:
.
.
PARA j = 1 a medida
.
.

En el algoritmo A, la j va a 10000, irá a 10000 incluso si el tamaño es 1 o millón.

En el algoritmo B, j va al tamaño, por lo que variará en función del tamaño, si el tamaño es 1, si se repetirá una sola vez, si el tamaño es millón, se repetirá millones.

Usted está preguntando sobre el punto en el que el algoritmo A será más lento de lo que es, por lo tanto, en otras palabras, desea saber cuándo las iteraciones en A serán más que las iteraciones en B, así que calculemos el número de dos iteraciones, y entonces resolveremos la desigualdad:

El primer bucle del algoritmo A va al tamaño , y el segundo bucle va a 10000, por lo que el número total de iteraciones aquí es “10000 * Tamaño” para cualquier valor del tamaño .

El primer bucle del algoritmo B va al tamaño , y el segundo bucle también va al tamaño , por lo que el número total de iteraciones aquí es “Tamaño * Tamaño” para cualquier valor del tamaño .

Queremos saber cuándo será el Tamaño 10000 * mayor que el Tamaño * Tamaño, así que resuelva esto para la variable aquí que es el Tamaño.

10000 * Tamaño> Tamaño * Tamaño → (Dividir por tamaño)
10000> tamaño
Entonces, la respuesta es simple, cuando el tamaño es inferior a 10000 , y esto parece lógicamente.

Pero, por otro lado, no se trata de la complejidad, sino de calcular la cantidad de iteraciones y comandos (llamarlo trabajo por simplicidad) en los límites o tamaños grandes: notación Big O – Wikipedia

Por supuesto, este no es el único método, pero este es el común.

En primer lugar, espero que te des cuenta de que los algoritmos no ejecutan los mismos comandos +, lo que da lugar a fluctuaciones en la velocidad en el mundo físico. Por lo tanto, como un lema popular en CS (o en cualquier otro lugar):

Depende.

La parte más importante en esto es la perspectiva física versus la teórica.

En teoría, puede analizar estos enunciados para que dependan del tamaño. El primer algoritmo ejecuta comandos de bucle [math] c * size [/ math] para cierta [math] c. [/ math] el segundo ejecuta los comandos [math] d * size ^ 2 [/ math]. En notación big-oh: O (n) y O (n ^ 2) respectivamente. Podemos ver que c y d se resuelven a 10000 y 1 respectivamente. Como tal, podríamos concluir que existe una igualdad cuando [math] size == 10000. [/ Math] En teoría, al menos.

En la práctica, las cosas pueden ser más complicadas. Por ejemplo, un compilador (muy) inteligente podría detectar que el algoritmo b equivale a [math] SET sum TO size ^ 2 [/ math]. Además, dependiendo del hardware, [math] sum = sum + 1 [/ math] puede ejecutarse más rápido que [math] sum = sum + i [/ math], dando al algoritmo B una ventaja.

More Interesting

¿Cuáles son los algoritmos que se pueden usar en R para la predicción de datos categóricos?

¿Cuál es la diferencia entre el algoritmo que venció a los humanos en el ajedrez y el algo que venció a los humanos en Go?

¿Cuáles son los ejemplos del mundo real que puedo usar para ilustrar la recursividad de mi clase de introducción CS?

¿Puedes pensar en dos situaciones en las que usarías listas vinculadas?

¿Cuáles son las mejores estructuras de datos para un índice espacial utilizado para averiguar en qué región de un espacio delimitado cae un nuevo punto dado?

Quiero usar una cola prioritaria en un problema. Creo que implementar una cola prioritaria usando una matriz es más fácil que usar un montón. ¿Qué piensas y por qué?

Cómo transmitir de manera segura el cifrado de clave para ejecutar con éxito el algoritmo criptográfico de pad único

¿Qué es el algoritmo de sincronización YAWNS?

¿Cuántas permutaciones se pueden generar a partir de '10011111111'? Cual es la formula?

Cómo resolver el problema de los módems (SPOJ.com - Problema EC_MODE) en SPOJ

Dado un gráfico bipartito, ¿cómo puedo encontrar su subgrafo que es un gráfico bipartito completo y tiene la mayor cantidad de vértices?

¿Qué es un algoritmo eficiente para encontrar un número mágico?

Cómo encontrar un elemento en un árbol de búsqueda binario

¿Cuáles son los algoritmos de búsqueda paralelos más importantes? ¿Qué ventajas tienen sobre los algoritmos de búsqueda clásicos?

Cómo convertir una cadena en una matriz de caracteres