Año Nuevo… Nuevo Comienzo…!!!
Cual es tu plan para este año??? (Ser programador)
Por supuesto, si eres programador, este año también escribirás el código, construirás los proyectos y resolverás muchas preguntas de codificación.
Hablemos de Estructuras de Datos y Algoritmos …
El corazón de la informática y el aliento del programador para vivir en el mundo de la codificación…
Muchos principiantes comienzan a aprender a programar al aprender estas dos importantes herramientas de la informática. Es posible que haya practicado mucho, pero ¿alguna vez ha tratado de saber cómo estos algoritmos son útiles en la aplicación del mundo real? Seguramente hay algunas razones para aprenderlos. La mayoría de los programadores novatos lo aprenden por el bien de un trabajo, pero ¿no es interesante si llegamos a conocer la implementación práctica de estos algoritmos en el mundo real?
Se acerca el nuevo año y este nuevo año lo alentamos a que consulte los escenarios prácticos de algoritmos famosos en lugar de aprenderlos solo por el hecho de trabajar. En este blog, discutiremos algunas implementaciones prácticas de estos algoritmos en el mundo real.
No importa si eres una persona nueva o experimentada, te resultará interesante leerlo. Este artículo refrescará la memoria de los programadores experimentados.
1. Secuencia de Fibonacci
Seguramente habrás pasado por implementar el programa de la serie de Fibonacci alguna vez en tu vida. Como estudiante, es posible que haya pedido implementar el programa para la serie de Fibonacci o puede que haya hecho esta pregunta durante sus entrevistas en empresas XYZ.
¡¡¡Sí!!! Estamos hablando de la misma serie donde aplicamos la fórmula matemáticaa n = a n −2+a n −1 para obtener la serie en nuestro programa. Implementamos el código para obtener las series 0, 1, 1, 2, 3, 5, 8, 13 y 21 hasta el infinito. En esta serie, obtenemos el siguiente número más alto sumando la serie consecutiva.
Usted escribe el programa, borra sus exámenes o borra sus entrevistas, pero ¿alguna vez ha tratado de buscar dónde se usa esta serie en la aplicación del mundo real? ¿Cuál podría ser el escenario posible para utilizar este algoritmo en el mundo real ?
La belleza de esta secuencia se puede utilizar para calcular millas a kilómetros y viceversa . Obtendrá un resultado casi exacto (no exacto pero lo suficientemente exacto). En una sucesión de Fibonacci, puedes considerar cualquier número como millas y el siguiente número estaría en kilómetros.
Considere la secuencia 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
En el ejemplo anterior, puede tomar dos números consecutivos 8 y 13. El número más pequeño está en millas, es decir, 8, y el más grande está en kilómetros, es decir, 13.
8 en millas = 13 en kilómetros.
2. Algoritmos palíndromos
Este es otro algoritmo popular entre los programadores. El número palíndromo o la string se lee igual en orden inverso. Por ejemplo… nivel, señora, 12021. La implementación de este algoritmo también es una pregunta común del proceso de entrevista en muchas empresas.
Pones a prueba tu habilidad lógica mientras implementas el programa para números palíndromos, pero ¿puedes pensar en el escenario práctico de este famoso algoritmo? ¿Dónde se puede usar?
Los palíndromos se utilizan en el procesamiento de secuencias de ADN . Pero, ¿cómo se utiliza en este procesamiento?
Muchas secuencias de ADN están disponibles. Para almacenar la información sobre estas secuencias de ADN, utilizamos una base de datos de biología molecular. La capacidad de estas bases de datos será mayor en el futuro, por lo que es importante comunicar y almacenar los datos de manera eficiente en la base de datos.
Es importante comprimir estas secuencias de ADN para un mejor rendimiento. Para comprimir estas secuencias se puede utilizar CTW (método de ponderación del árbol de contexto). Este método comprime las secuencias de ADN en menos de dos bits por símbolo.
Se conocen principalmente dos estructuras características de las secuencias de ADN. Uno es palíndromo o cumplidos inversos y el otro es repeticiones aproximadas. Usando el hash y la programación dinámica, el algoritmo busca la repetición aproximada y el palíndromo antes de codificar el siguiente símbolo. Si encuentra un palíndromo o una repetición aproximada con suficiente longitud, el algoritmo lo representa con longitud y distancia.
3. array
La primera estructura de datos para aprender en programación…
La estructura de datos más común y ampliamente utilizada en muchas aplicaciones…
El viaje de programación de cada principiante comienza con la resolución de las preguntas de Array. Siendo un programador seguramente habrás usado mucho esta estructura de datos en tu aplicación. Esta estructura de datos se utiliza en todas las situaciones posibles en las que necesita recopilar el objeto en un solo lugar. Desde el software simple hasta el complejo o la array de aplicaciones web se utiliza principalmente para almacenar y mostrar los datos de forma dinámica en las páginas web. Tomemos uno de los buenos ejemplos del uso de una array en una aplicación del mundo real…
Todos debemos haber utilizado el sistema de reserva de boletos en línea al menos una vez. Puede ser para reservar billetes de tren, autobús, vuelos, películas o cualquier otro espectáculo. Si queremos reservar cualquier asiento, solo es cuestión de hacer clic en un cuadrado y estará reservado.
¿Alguna vez te has preguntado si el asiento que reservas en línea en cualquier sistema es una array bidimensional?
Cuando reserva un asiento, se encuentra en algún lugar de una fila y columna específicas. Esto se puede representar mediante una array bidimensional como un asiento[4][5]. Entonces, una array es aplicable en todo tipo de sistemas de reserva en línea. Espero que haya entendido el punto y haya entendido la aplicación de Array en el mundo real.
4. Pilas
Como principiante, es posible que haya leído sobre el ejemplo común de estructura de datos de pila… una pila de platos o libros en un armario, pero ¿puede pensar en otro ejemplo de pila aparte de este básico?
¿Hay alguna aplicación del mundo real construida y que funcione con el concepto de una estructura de datos Stack?
¡¡¡Sí!!! Hay…
Un editor de texto como el bloc de notas o Microsoft Word utiliza una estructura de datos de pila para realizar tareas de deshacer en su editor. Otro buen ejemplo de una pila es el navegador que funciona en su computadora portátil o sistema.
Cada vez que realiza una actividad en un editor de texto, se crea una pila. Al usar la operación push, almacena la acción, sus metadatos como el tipo de acción, la naturaleza de la acción, sus datos, etc. Al usar la acción pop, realiza una operación de deshacer y la última acción (almacenada en la parte superior de la pila) se elimina o se deshace de la pila.
Otro buen ejemplo de una estructura de datos de pila es el navegador que funciona en su computadora portátil o sistema. Suponga que está visitando www.google.com y luego visita www.geeksforgeeks.org . Después de eso, visita www.youtube.com . Esta información se almacena en la estructura de datos de la pila mediante la operación de inserción. Cuando hace clic en el botón Atrás en su navegador, va a la página anterior, que es la operación emergente realizada en la pila.
Entonces, si está en la página www.youtube.com y está presionando el botón Atrás, entonces visita la página anterior www.geeksforgeeks.org. Al presionar el botón Atrás nuevamente, se realiza la operación emergente y regresa a la página www.google.com.
5. Lista vinculada
Otra estructura de datos popular y común entre los programadores es la Lista enlazada. Ahora piense en el propósito de esta estructura de datos en una aplicación del mundo real.
Todos tenemos un reproductor de música en nuestros teléfonos y tenemos canciones en él. Suponga que tiene 5-6 canciones en su lista. Cuando crea una lista de reproducción para estas canciones, funciona según el concepto de la lista vinculada. Estas canciones se reproducen una por una y este es uno de los mejores ejemplos de la lista de enlaces individuales. Las canciones están conectadas y puede pasar de la canción tres a la canción cuatro pero no puede volver atrás (comportamiento de una lista enlazada individualmente).
Cuando implementa la funcionalidad para reproducir la canción en ambas direcciones, sigue el comportamiento de una lista doblemente enlazada. En una lista doblemente enlazada, los Nodes están conectados en ambas direcciones. Entonces, en una lista de reproducción, puede pasar de la canción 3 a la canción 4, así como de la canción 3 a la canción 2. Tendrá los botones anterior y siguiente. Así que la navegación bidireccional es posible.
Cuando reproduce las canciones en modo de repetición, sigue el comportamiento de una lista enlazada circular. En una lista enlazada circular, el último Node está conectado con el primer Node. Entonces, una vez que se completa la última canción, la primera canción se reproducirá nuevamente y se reproducirá en el modo cíclico y nunca se detendrá.
6. Algoritmo de búsqueda binaria
Como programador, es posible que conozca el algoritmo de búsqueda binaria. Este algoritmo también se conoce como búsqueda de medio intervalo, búsqueda logarítmica o corte binario. En este algoritmo, buscamos el valor objetivo dentro de una array ordenada.
Este algoritmo facilita el proceso de búsqueda porque no necesita comparar cada elemento en la lista de números. La búsqueda binaria es la forma rápida de buscar el valor objetivo en la lista ordenada de datos. Le da el poder de hacer este proceso de manera eficiente. Puede encontrar muchos ejemplos de algoritmos de búsqueda binaria, como buscar el significado de la palabra en un diccionario, pero ¿conoce a alguien de una aplicación del mundo real que use el método de búsqueda binaria?
Uno de los escenarios del mundo real de este algoritmo es validar las credenciales de usuario en una aplicación . Con la búsqueda binaria, puede validar millones de credenciales de usuario en una fracción de segundos.
Este algoritmo también se utiliza en muchas bibliotecas de lenguajes de programación como Java, .NET, C++ STL, etc. El método list.sort() de Python usa Timsort que (AFAIK) usa la búsqueda binaria para ubicar las posiciones de los elementos. La búsqueda binaria también se usa en el 99% de los juegos y aplicaciones 3D.
7. Algoritmo de clasificación por fusión
Merge sort trabaja sobre el concepto de la técnica divide y vencerás. Dividimos la lista en varias sublistas hasta que la sublista no contenga un solo elemento. Después de eso, fusionamos estas sublistas para obtener la lista ordenada de elementos. Esta es una introducción simple y breve a este algoritmo, pero ¿sabe dónde se usa en aplicaciones del mundo real?
A mucha gente le encanta hacer compras en línea a través de cualquier sitio web de comercio electrónico . ¿Sabes que estos sitios web de comercio electrónico utilizan este algoritmo? La mayoría de los sitios de comercio electrónico tienen la sección » Te puede gustar». Esta sección mantiene la array de todas las cuentas de usuario y luego, cualquiera que tenga la menor cantidad de inversión con su array de opciones, comienza a recomendar lo que han comprado o les gusta. (La próxima vez, esta sección le recordará los usos de la búsqueda binaria mientras compra en estos sitios web)
8. Números de Armstrong
Otro programa popular entre los programadores es verificar el número si es Armstrong o no. En los números de Armstrong, la suma de los cubos de los dígitos de un número es igual al número mismo. Por ejemplo, 153 y 371 es un número de Armstrong. Los números de Armstrong se utilizan principalmente en aplicaciones de seguridad de datos para el cifrado y descifrado de datos.
Visita el enlace de IJITEE . Se menciona el número de Armstrong para redes de sensores inalámbricos . Han utilizado algoritmos de seguridad basados en Armstrong en los que se genera una clave de 128 bits utilizando el número de Armstrong. Se utiliza en el algoritmo AES para el cifrado y descifrado de datos.
9. Codificación de Huffman
La codificación Huffman se utiliza junto con la criptografía y la compresión de datos. Se utiliza para la compresión de datos sin pérdidas. Basado en la probabilidad, se implementa de manera que no es necesario conservar varias copias de lo mismo.
La codificación Huffman se utiliza en formatos de compresión como GZIP, PKZIP (winzip , etc.) y BZIP2 . Toda la comunicación con y desde Internet utiliza la codificación Huffman. La mayoría de los archivos de imagen, como JPEG y PNG, están codificados por Huffman. Además, los archivos de música, como los MP3, están codificados por Huffman.
El código de Huffman convierte los códigos de longitud fija en códigos de longitud variable. Esto se comprime aún más utilizando técnicas JPEG y MPEG que generan la relación de compresión deseada.
10. Programación dinámica
Otro tema favorito de los estudiantes de informática y de los programadores es la programación dinámica. 0-1 Problema de mochila , Problemas de ruptura de palabras , Subsecuencia común más larga Todos estos problemas son los problemas más populares y comunes de la programación dinámica. Lo resuelves, usas tu habilidad lógica pero donde en realidad en el mundo real se usa este concepto…
La programación dinámica se usa ampliamente en bioinformática, matemáticas y economía . En tareas bioinformáticas como la alineación de secuencias, el plegamiento de proteínas, la predicción de la estructura del ARN y la unión proteína-ADN, se utiliza la programación dinámica.
En matemáticas, DP se usa en la multiplicación de arrays, que se usa ampliamente en la tecnología Rocket. La trayectoria de los cohetes se decide resolviendo muchos parámetros. Todos los problemas de toma de decisiones se pueden resolver de forma óptima mediante programación dinámica.
11. Gráfico
Ya sea que viaje a algún lugar, salga o intente encontrar la ruta a su destino específico. Usas a tu mejor amigo en tu teléfono Google Map. ¿Sabes que Google Map utiliza la estructura de datos Graph?
La estructura de datos del gráfico es una estructura de datos muy poderosa. No solo la tierra sino todo el universo puede ser representado por el gráfico. Desde diminutas partículas subatómicas hasta el gigantesco universo, puedes representarlo todo con la ayuda de Graph.
Cuando usa un mapa de Google, todas las ciudades y estados están conectados como un gráfico con información de distancia. Hay muchas formas de llegar de una ciudad a otra, pero para encontrar el camino más corto entre las dos ciudades necesitas usar algunos algoritmos. Los algoritmos de Dijkstra, que es un algoritmo muy poderoso, se pueden implementar para encontrar el camino más corto entre las dos ciudades.
Para decidir el camino más corto a su destino, el algoritmo de Dijkstra habilita su sistema de navegación/GPS en su teléfono. Uber usa el algoritmo húngaro para asignar cada automóvil a las personas que buscan un viaje.
Facebook también utiliza la estructura de datos del gráfico para implementar las noticias o los seguidores . Utiliza Graph API para implementar la mayoría de las cosas en su aplicación. Todo se puede representar mediante los vértices o Nodes, como páginas, lugares, grupos, comentarios, fotos, álbumes de fotos, historias, videos, notas, etc. Cada conexión o relación es una ventaja en Facebook. Graph API almacena los datos en forma de vértices y bordes.
12. Estructura de datos de prueba
Este es un tema de estructura de datos avanzada para programadores. Aprende que puede ser por el bien del trabajo, también disfruta resolviendo preguntas basadas en él, pero ¿cuál es el uso de este tema avanzado en la aplicación del mundo real? ¿Dónde se implementa en nuestro día a día? Vayamos a esa interesante respuesta…
Usas tu teléfono móvil todos los días, también usas las funciones de deslizar en él. Esta función de deslizamiento en el teclado de su dispositivo móvil y la corrección automática mientras escribe un documento utiliza una estructura de datos Trie. Trie estructura de datos contiene los valores de los caracteres en su teléfono.
El historial del navegador de red también utiliza una estructura de datos Trie. Las URL del sitio que ha visitado están organizadas por la estructura de datos de Trie. Cuando un usuario escribe el prefijo de la URL utilizada anteriormente, el navegador completa la URL utilizando esta poderosa estructura de datos.
Pensamiento final
Ahora conoce los casos prácticos de uso de las famosas estructuras de datos y algoritmos. ¿No es interesante saber cómo se implementan estos famosos algoritmos en nuestro día a día?
Muchos de nosotros no conocíamos los interesantes casos de uso de estas estructuras de datos y algoritmos. Lo estábamos usando en alguna parte, pero no éramos conscientes de ello.Siempre es bueno saber los beneficios de algo antes de retomar para aprender algo. Estos fueron solo un montón de estructuras de datos y algoritmos que hemos introducido, pero hay varios algoritmos que usamos en nuestra vida cotidiana.
Ahora, este nuevo año piensa en los casos prácticos de uso de los demás algoritmos…
Además, este nuevo año no solo aprenda estos algoritmos por aprenderlos, sino también aprenda estos algoritmos para implementar alguna aplicación interesante del mundo real por su cuenta.
Publicación traducida automáticamente
Artículo escrito por anuupadhyay y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA