Cómo explicar la complejidad algorítmica a la abuela en términos simples

¡La abuela está haciendo Hyderabad biryani!

Todos los ingredientes están listos. Sal. Yogur. Pimienta. Masala … Ella sabe exactamente dónde están cada ingrediente. No se pierde tiempo recogiendo los ingredientes. O (1)

Mientras tanto, la abuela desea llamar a algunos de sus familiares para que vengan a almorzar. Mira a través de su guía telefónica sus contactos. Búsqueda binaria típica. O (log N)

Vienen tus parientes. Más arroz, carne, especias, aceite y otros ingredientes. Más gente, más cantidad. EN)

La abuela divide el trabajo entre usted y sus primos. Pones los ingredientes necesarios para marinar la carne. Deepak los mezcla bien. Aditi limpia y pica las verduras. Asha maneja el arroz. ¡Todo se va a la olla al final! La abuela se encarga de cocinar. Divide y vencerás típicos. O (N log N)

Todos llegan a la mesa. ¡Se sirve un delicioso biryani! Luego viene raita . Luego encurtidos . Luego ensalada . Entonces … O (N ^ 2)

La abuela se ha quedado dormida. ¡No quiero explicarte más! Déjala en paz!

Descargo de responsabilidad: no soy de Hyderabad. Entonces, si cometí algún error, ¡simplemente ignóralo!

Has mencionado algunos ejemplos generales. Me gustaría decirle a la abuela qué es la complejidad y luego explicarle lo que significan algunas de las anotaciones grandes de Oh más utilizadas.

Le diría que la complejidad es el tiempo que le toma hacer algo en su cocina cuando su nieto pequeño le pide algo (la analogía aquí es que usted necesita realizar cierta tarea y la tarea toma un tiempo en completarse). Y mientras estamos en eso, digámosle que n es simplemente una cantidad de frascos que tiene en sus muchos estantes.

Ahora cavamos más profundo. Le diremos que O (1) es algo que puede hacer al mismo tiempo cada vez, independientemente de la cantidad de frascos que tenga. Como decir, guarda un nuevo frasco que el niño ha traído al estante más bajo. O obtener las galletas para niños del frasco con la etiqueta “galletas”, que ella sabe que están en un estante en particular en una posición particular. (Las analogías aquí se están insertando en una lista vinculada, por ejemplo, en el frente y en una búsqueda de tabla hash suponiendo que no hay colisión).

O (n) ahora, depende de cuántos frascos tiene la abuela. Digamos que el niño había escondido el reloj de la abuela en uno de los frascos. Ella tiene que mirar dentro de todos ellos una vez para encontrarlo. Si solo tiene 5 frascos, puede encontrarlo rápidamente. Si tiene 500, será una larga tarde. E incluso podría entender que, en el mejor de los casos, obtiene el reloj en el primer frasco y en el peor de los casos, tiene que revisar todos los frascos y fue en el último frasco que examinó. (búsqueda secuencial).

Supongo que dependiendo de si la abuela todavía está despierta, podemos seguir dando analogías como esta y educarla sobre el maravilloso tema de la teoría de la complejidad.

Lea este artículo de Knuth, “La complejidad de las canciones”. http://fivedots.coe.psu.ac.th/So

Esto sugiere un enfoque para explicar la complejidad algorítmica sin introducir el concepto de instrucciones de máquina o problemas abstractos del tipo estudiado en cursos de informática.

More Interesting

¿Qué estoy haciendo mal al determinar el big-O de estas funciones Java?

Cómo eliminar un elemento específico y reducir el tamaño de una matriz en Java

Soy un programador promedio, me encanta codificar en Java y estoy tratando de mejorar mis habilidades de codificación algorítmica. ¿Cómo puedo mejorarlos?

¿Cuán relevantes son los fundamentos de CS (compiladores, análisis de algoritmos, estructuras de datos, etc.) en el desarrollo web profesional?

¿Cómo describirías el algoritmo de Quora usando una ecuación?

¿Qué algoritmos se pueden usar para determinar si dos preguntas (como las de Quora) son de alguna manera similares?

¿Cuál fue el algoritmo utilizado por AlphaGo para ganar el juego de Go contra el campeón europeo de Go humano?

¿Qué es una función recursiva elemental?

¿Cuáles son algunos buenos algoritmos para agrupar palabras que suenan similares?

Hago segmentación usando el algoritmo de cambio medio en MATLAB, pero obtengo mis objetos segmentados. ¿Cómo puedo fusionar partes segmentadas de mi objeto que son diferentes por color y tamaño?

¿Cuál es la mejor fuente para aprender del algoritmo y la estructura de datos para principiantes?

¿Cuál es el mejor algoritmo de cifrado real utilizado en el almacenamiento de datos basado en hardware?

¿Cuántos tipos de algoritmos SVM existen?

¿Por qué sigo olvidando cómo funciona el algoritmo djikstra?

¿Cuáles son los errores en el libro Data Structures and Algorithms Made Easy by Narsimha Karumanchi?