Muchos programadores jóvenes recorren la web tratando de encontrar respuestas a esta pregunta: ¿Cómo estudiar el algoritmo y la estructura de datos? Ciertamente, es un buen lugar para comenzar … Pero creo que una pregunta más relevante sería esta: ¿Qué son los algoritmos y las estructuras de datos, y por qué debería estudiarlos?
Algoritmo + Estructura de datos = Programa
La programación tiene que ver con estructuras de datos y algoritmos.
¿Qué es un algoritmo?
Wikipedia dice que “un algoritmo es un conjunto de operaciones paso a paso autónomo que deben realizarse. Los algoritmos realizan las tareas de cálculo, procesamiento de datos y / o razonamiento automatizado “.
No hay necesidad de entrar en pánico mirando estas palabras rígidas unidas. Tengo algunos ejemplos para ayudarte a entender. Y fácilmente también.
Tomemos un ejemplo simple.
Cuando estaba en segundo grado, aprendió el algoritmo para la suma de dos números. Tal vez su profesor no lo hubiera llamado algoritmo, pero aprendió reglas definidas para transformar la entrada, es decir, dos números, en la salida, que es la suma. Algunos algoritmos como la aritmética que acabas de ver son aprendidos. Algunos necesitan ser instrucciones escritas, diga una receta para cocinar una hamburguesa. Y algunos otros, puedes imaginarte como buscar una dirección en un directorio.
Echemos otro vistazo a los diferentes algoritmos.
Tiene una hoja de ruta y necesita encontrar la ruta más corta desde el origen hasta el destino. Se utiliza el algoritmo de “ruta más corta”. ( Puedes usar Google para leer más sobre el algoritmo de Dijkstra ) .
¿Qué pasa si necesita ordenar una gran cantidad de datos? Usted podría utilizar cualquiera de varios algoritmos de clasificación.
Cuando se enfrenta a un gran problema, a menudo se divide el problema en partes, es decir, se deconstruye y luego se trabaja en él. Eso es codicioso algoritmo para ti. Aquí, usted elige la opción más prometedora en ese http://moment.En estos casos, a sabiendas o sin saberlo, utilizó su sentido común para encontrar la solución más optimizada mediante un método que aprendió durante un período de tiempo. A diferencia de un programa que es un método específico, un algoritmo es un método general.
Aquí hay otro uso en la vida real de un algoritmo. (Sé que ya tienes la idea. Pero no puedo evitarlo. Simplemente lo encuentro muy emocionante).
Supongamos que sabes que Clark Kent es de hecho Superman. También sabes que estudia en tu universidad. Necesitas encontrarlo.
Puede hacer lo siguiente para hacer esto.
- Puede usar el método de fuerza bruta para ir a cada persona en el campus y preguntar si alguno de ellos es Clark Kent.
- Revisa los datos de la universidad (que alguien ha recopilado utilizando el algoritmo anterior) y mira cada nombre en el directorio hasta que encuentres el nombre y la dirección correctos.
- Encontrará una lista de datos ordenados o un directorio, la dividirá en dos partes y buscará el nombre en la parte que probablemente contenga el nombre y obtenga la información de contacto.
Mientras que el primer método le tomó un período de tiempo indefinido, el segundo estaba mejor organizado y tomó menos tiempo. El tercer método casi no lleva tiempo. Fue bastante fácil encontrar a Clark Kent y decirle que sabes que es Superman.
¿Cómo se desarrollan los algoritmos?
Entonces, cuando creas un algoritmo, a continuación están las preguntas que tu algoritmo debería responder:
- ¿Es mi algoritmo útil y resuelve el propósito?
- ¿Usará los recursos eficientemente?
La gente aprende observando, también los programadores. Aprendemos mirando la solución de otro o resolviendo el problema nosotros mismos. A través de la experiencia, encontramos un patrón definido para resolver cualquier problema en particular. La gente se da cuenta de que el proceso para resolver tareas similares es siempre el mismo. Y se acepta el que sea más eficiente y óptimo. Un conjunto de operaciones definidas por un procedimiento paso a paso para llegar a la mejor solución se denomina algoritmo.
Al estar expuestos a diversas técnicas y algoritmos de resolución de problemas, tendemos a identificar el patrón algorítmico de resolver un problema y percibir la mejor solución, o usamos un algoritmo conocido previamente para resolverlo, y de ese modo utilizar nuestros recursos de manera eficiente.
Finalmente, un algoritmo le indica cómo operar y resolver un problema.
Siempre es importante entender cómo un algoritmo resuelve un problema. De lo contrario, nunca puedes verlo desde una perspectiva más amplia. Todos los algoritmos no están destinados a todos los datos. Es decir, los datos para un “algoritmo de árbol” pueden verse diferentes a los de un “algoritmo gráfico”.
Para asegurarse de que un programador encuentre los datos correctos, debe comprender qué es la estructura de datos.
¿Qué es la estructura de datos y por qué estudiarla?
Una computadora es un conjunto de reglas lógicas. Estas reglas pueden denominarse un algoritmo, pero las reglas solas son inútiles hasta que tienen datos a los que se pueden aplicar.
La estructura de datos es una forma de almacenar y organizar los datos en la memoria para que puedan recuperarse y utilizarse de manera eficiente cuando sea necesario. Varias estructuras de datos se usan en diferentes aplicaciones y algunas están diseñadas para ser utilizadas solo para una tarea específica.
Para administrar todos los datos y lidiar con la complejidad de un problema, los científicos de computación utilizan la técnica del Tipo de datos abstractos (ADT) para ver el panorama general en lugar de solo la salida. Al crear modelos abstractos de datos, los científicos pueden usar formas mejores y más eficientes para resolver un problema en particular, en lugar de preocuparse por la información irrelevante.
ADT es un modelo matemático donde los datos se ordenan según el comportamiento del usuario. El modelo ADT no toma en consideración la implementación de esta información o la construcción final. Al proporcionar la abstracción, resumimos los datos que luego se procesan para un mejor uso.
Las estructuras de datos que tienen operaciones definidas para ser implementadas son ADT.
Elegir el conjunto correcto de estructuras de datos de cualquier base de datos para implementar un algoritmo es un componente clave para resolver un problema, sin el cual la información será incompleta o irracional.
Sin el conocimiento de la estructura de datos, no podrá organizar sus datos en un formato adecuado y eficiente. Sin el conocimiento de la estructura de datos, se sentirá confundido acerca de qué estructura de datos usar, como si usar una matriz o una lista vinculada para un problema dado. Comprender las estructuras de datos y los algoritmos a veces se siente innecesario cuando usa las funciones de la biblioteca. Pero cuando empiezas a lidiar con nuevos problemas, se vuelve imperativo.
Si revisas este increíble artículo, puedes aprender a codificar mediante programación competitiva. Le indica por qué necesita aprender conceptos de estructura de datos y algoritmo para obtener mejores resultados y comprender el problema rápidamente.
También puede leer cómo los algoritmos están dominando nuestro mundo y saber qué tan importante es entenderlos y aprenderlos.
Solo para reiterar, no puede hacer una casa simplemente colocando un ladrillo sobre otro: necesita tener un entendimiento de un problema, su solución proyectada y una percepción de cómo lo va a resolver.
Puedes leer otros blogs sobre algoritmos aquí: Archivos de algoritmos | HackerEarth Blog