¿Qué es un algoritmo? El - Trabajo de algoritmos con ejemplos

Tabla de contenido:

Anonim

¿Qué es un algoritmo?

Es una secuencia de reglas / instrucciones que se describen antes de hacer un enfoque para resolver cualquier problema específico, una garantía para resolver el problema. Por ejemplo, tome un ejemplo de un punto de puerta de ferrocarril.
Un algoritmo debe:

  • Estar bien definido y bien ordenado: las instrucciones proporcionadas en un algoritmo deben ser comprensibles y estar bien definidas.
  • Tener operaciones inequívocas, es decir, cada uno de los pasos de un algoritmo debe ser lo suficientemente simple como para que no requiera ninguna simplificación adicional.
  • Tener una operación efectivamente computable.

Fuente de la imagen: d262ilb51hltx0.cloudfront.net/

Algoritmo de comprensión

Fuente de la imagen : goo.gl/images/u76bFe

Hay un sensor que detecta la llegada de un tren, cuya salida podría ser 2 resultados

  • El tren esta llegando
  • El tren no llega

El resultado del primer resultado se pasa a una acción en la que se aconseja cerrar las puertas, mientras que el resultado del segundo resultado se pone nuevamente a prueba enviándolo a la declaración inicial. Además, el resultado de la acción que fue el resultado de la primera condición se somete a una prueba para verificar si el tren se ha partido por completo. Si la respuesta es sí, las puertas se abren, mientras que si es negativo, las puertas permanecen cerradas. Discutiremos más sobre esto y trabajaremos con los siguientes temas (Los subconjuntos / bloques de construcción y el funcionamiento de un algoritmo)

¿Cómo facilita el algoritmo el trabajo?

Como sabemos, este es un plan para resolver un problema. Bueno, si no tenemos un plan, nuestro enfoque para resolver un problema complejo posiblemente fracasará en el primer intento e incluso si resuelve el problema, es muy probable que sea una solución óptima para ese problema.

Mientras que, por otro lado, si creamos un algoritmo antes de resolver cualquier problema, digamos que creamos algunos algoritmos y los resolvemos en función de la solución óptima que proporcionan, garantizaría resolver el problema dado. Esta es la razón por la cual, en todas partes, antes de resolver cualquier problema, primero se crea un algoritmo.

Principales empresas de desarrollo de algoritmos

La construcción de un gran producto requiere un diseño realmente bueno, aunque no podemos comparar un algoritmo para dos problemas diferentes, lo que podemos hacer es enumerar los nombres de las empresas que han entregado algunos productos excelentes a este mundo a lo largo del siglo XXI:

  • Mente profunda
  • Baidu
  • Nvidia
  • CloudWalk
  • SenseTime
  • Google
  • Facebook
  • Darktrace
  • cambriano
  • IBM
  • OpenAI
  • ByteDance
  • CrowdStrike
  • Visión médica de cebra
  • Babilonia
  • Intel
  • Flatiron Health
  • Afirmar
  • Advenedizo
  • Elemento AI
  • CloudMinds
  • DataRobot
  • Anki
  • Zymergen
  • UBTECH

Fuente: algoritmxlab.com/

Los subconjuntos / bloques de construcción y el funcionamiento de un algoritmo

Todos estos años, se ha demostrado que se puede diseñar un algoritmo a partir de solo tres componentes básicos:

  • Secuencia
  • Selección
  • Iteración


Fuente de la imagen : https://goo.gl/

Una secuencia es una serie de instrucciones que deben seguirse para resolver un problema y las instrucciones deben ejecutarse en orden.

Ejemplos

1. Suma de dos números

Paso 1: Comience
Paso 2: Obtenga dos números como entrada y almacene en una variable como a y b
Paso 3: Agregue el número a & b y guárdelo en la variable c
Paso 4: imprimir c
Paso 5: detente.

Una selección es un programa que nos permite elegir la salida de diferentes acciones. Como hemos visto anteriormente en el ejemplo de la puerta del ferrocarril, teníamos una casilla condicional donde comprobaba si el tren estaba llegando.

2. Encuentra el número más grande entre 2

Paso 1: Comience
Paso 2: Obtenga dos números como entrada y almacene en una variable como a y b
Paso 3: si a es mayor que b, entonces
Paso 4: Imprimir a es grande
Paso 5: más
Paso 6: Imprimir b es grande
Paso 7: Detener

La repetición, la iteración o el bucle son los programas más pequeños que se ejecutan varias veces hasta que se cumple la condición.

3. Si quisiéramos calcular el factorial de un número

Paso 1 : Comience
Paso 2 : declara las variables n, factorial e i
Paso 3 : Inicialice las variables, es decir, factorialß1 e iß1
Paso 4: lee los valores de n
Paso 5: repita los pasos hasta n iteraciones
factorial <- factorial * i
i <- i + 1
Paso 6: mostrar factorial
Paso 7: detente

¿Qué se puede hacer con un algoritmo?

Es una función o serie de funciones que resuelve un problema. Podemos usar un algoritmo para resolver el problema más simple y algunos de los problemas más difíciles del mundo. Decidimos que es óptimo con la ayuda de la "complejidad del tiempo". En términos simples, la complejidad del tiempo es una forma de describir el tiempo de ejecución de cualquier algoritmo dado. Hay un tiempo de ejecución mínimo (llamado pequeña 'O'), tiempo de ejecución promedio y peor tiempo de ejecución O (N) (también conocido como 'O' grande). A los científicos informáticos y a los ingenieros de software les gusta pensar en algoritmos porque están interesados ​​en evaluar y crear colecciones de mejores prácticas para que no tengan que comenzar desde cero en cada caso de una clase similar de problemas. A continuación se muestra un ejemplo de diferentes complejidades de tiempo que uno podría obtener al resolver un problema específico. Eso también significa que podría haber múltiples soluciones para un solo problema, pero debemos elegir la más óptima calculando las complejidades temporales de los algoritmos. En las entrevistas, se le pedirá que resuelva un problema y, además, se le pedirá que lo optimice, es decir, que reduzca el tiempo de ejecución de su algoritmo. Por ejemplo, puede haber escrito código con 2 bucles "for" (iteración), pero puede ser posible que el trabajo se pueda lograr simplemente usando un solo bucle "for" (iteración) pero no ha estado preparado para esta solución todavía y necesitas descubrir más!

Fuente de la imagen: https://goo.gl/

Ventajas del algoritmo

  1. Es una representación paso a paso de una solución a cualquier problema dado, lo que facilita su comprensión.
  2. Utiliza un procedimiento definido.
  3. Es independiente de cualquier lenguaje de programación, por lo que es fácil de entender para cualquier persona, incluso sin conocimientos de programación.
  4. Cada paso tiene su propia secuencia lógica, por lo tanto, es fácil de depurar.
  5. Al usar el algoritmo, el problema se divide en partes o pasos más pequeños, por lo tanto, es más fácil para un programador convertirlo en un programa real

Habilidades requeridas

Para diseñar un algoritmo de complejidad de tiempo robusto y mejor, uno debe tener un buen pensamiento lógico, y debe ser bueno en matemáticas y debe conocer al menos un lenguaje de programación orientado a objetos. También se necesita conocimiento de la estructura de datos.

  1. Computadoras : aprenda sobre matrices, listas vinculadas, árboles binarios, tablas hash, gráficos, pilas, colas, montones y otras estructuras de datos fundamentales.
  2. Matemáticas : aprenda sobre teoría de conjuntos, máquinas de estado finito, expresiones regulares, multiplicación de matrices, operaciones bit a bit, resolución de ecuaciones lineales y otros conceptos importantes como permutaciones, combinaciones, principio de casillero.
  3. Big-O & Runtime: aprenda qué es Big-O y cómo analizar los tiempos de ejecución de los algoritmos.

¿Por qué deberíamos usar y por qué necesitamos un algoritmo?

Uno debería usar el algoritmo ya que facilita nuestro trabajo y nos brinda la solución más óptima. Si no aplicamos un algoritmo antes de resolver cualquier problema complejo, hay muchas posibilidades de que nos quedemos sin rumbo en términos de una solución. Con el algoritmo, ahorramos nuestro tiempo en la resolución de problemas y nos aseguramos de que la optimización del algoritmo de solución, como se dijo anteriormente, sea independiente de cualquier lenguaje de programación, por lo que cualquiera puede diseñar un algoritmo, pero para diseñar un algoritmo realmente bueno, uno debería Ser bueno en lógica y matemáticas. Sirve como prototipo de una solución.

Por ejemplo, imagine que tenemos dos cubos de Rubik frente a nosotros. Uno de ellos puede usar algoritmos (como cuántas veces o en qué dirección girar una cara), y el otro tiene que encontrar su propio camino. ¿Qué camino será más rápido? Ciertamente, será el primero.

Tomemos un ejemplo interesante:

Digamos que tenemos una serie de elementos y nos gustaría ordenarlos en orden ascendente. Ahora hay un enfoque algorítmico diferente para eso. Nos centraremos en la complejidad temporal de 2 de ellos: clasificación de inserción y clasificación de fusión

Clasificación de inserción: la clasificación de inserción es una clasificación simple.
(La complejidad del tiempo es O (N 2).)

Ordenar por fusión: en el ordenamiento por fusión, clasificamos los elementos usando el método de división y conquista.
La complejidad temporal es O (N log N).

Este podría ser el impacto que encontraría si no sigue y no realiza un análisis al respecto.

Alcance del algoritmo

Al aprender y dominar el algoritmo, conocerá el arte de la "Solución de problemas". Con buenas prácticas y aprendizaje continuo, debería ser capaz de resolver problemas complejos. Es la base del diseño de algún software o código, ya que el tiempo de ejecución del código es uno de los factores más importantes para determinar la ejecución de una tarea en particular. Los gigantes tecnológicos del mundo como Google y Facebook juzgan sus habilidades de resolución de problemas y en las entrevistas, la mayoría de las preguntas están relacionadas con el diseño de algoritmos y la resolución de problemas. Se le pedirá que diseñe un algoritmo y lo optimice al mejor tiempo de complejidad posible.

Pocos puntos:

  • Esto mejorará sus habilidades para resolver problemas, lo que lo llevará a competir mejor en entrevistas o exámenes en línea.
  • Reducirá su tiempo para resolver cualquier problema.
  • Casi todos los gigantes tecnológicos contratan candidatos en función de sus mejores habilidades para resolver problemas
  • Uno puede sacar el máximo provecho de un lenguaje de programación aprendiendo cómo construir y diseñar un algoritmo

¿Quién es el público adecuado para aprender tecnologías de algoritmos?

Desde la perspectiva de la informática, cualquiera que haga poca o más programación debería aprender algoritmos. Si escribe código que no resuelve su problema, o si resuelve el problema pero usa los recursos de manera ineficiente (por ejemplo, lleva mucho tiempo ejecutarlo o usa demasiada memoria de la computadora), entonces su código no es el óptimo . Pero las compañías querrían que su software o productos respondan o se ejecuten en el menor tiempo posible.

Cualquiera que esté desarrollando algo debe aprender a hacer un análisis sobre un algoritmo para garantizar el funcionamiento óptimo del producto final.

¿Cómo te ayudará el algoritmo en el crecimiento profesional?

El diseño y análisis de un algoritmo no es un rol (específico), sino que forma parte de su trabajo y esta parte desempeña un papel vital en el desarrollo del código. Si diseña un buen algoritmo, escribirá buenos códigos con una solución óptima y, finalmente, su producto final que se entrega a los clientes sobresale. Entonces, si diseña y / o desarrolla software, entonces el conocimiento y la experiencia con estructuras de datos y algoritmos son esenciales. Digamos que está trabajando en un producto de desarrollo de software, la respuesta del mismo debe probarse a fondo (por supuesto, le gustaría verificar el tiempo de ejecución del proceso antes de entregar el código al equipo de prueba de software) y esto no es algo que pueda adivine de forma casi precisa de antemano, pero debe usar el análisis de un algoritmo para calcular la complejidad del tiempo.

Conclusión

Entonces, como hemos visto una descripción introductoria de los algoritmos y sus diversos aspectos, y hemos visto que podría haber diferentes enfoques para resolver un problema en particular y la complejidad de Big-O y Time son los parámetros que nos ayudan a elegir la solución más óptima. Al explorar una buena cantidad de algoritmos, fundamentalmente se fortalecerá en el análisis de algoritmos y podrá diseñar y ejecutar análisis sobre algoritmos con facilidad.

Artículos recomendados

Esta ha sido una guía de Qué es un algoritmo. Aquí discutimos el funcionamiento de algoritmos con ejemplos y sus diversos aspectos. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. ¿Qué es Tableau Server?
  2. Guía de análisis de big data
  3. ¿Qué es el desarrollador SQL?
  4. ¿Qué es la informática?