¿Qué es exactamente un algoritmo, como en qué significa Algoritmo? Lo poco que entiendo es que no es específico de un lenguaje en particular o patrón de diseño, sino que es uno de los principios más básicos (así que supongo que esta pregunta me hace ver estúpido).
Una de las "opciones" que tengo para entenderlo es que significa el método para hacer algo, que podría escribirse como una lista en pseudocódigo.
Cuando escribo un código más complicado, creo lo que hay que hacer, con qué y cómo llegaría allí (no en un lenguaje de programación), luego lo escribo en el código. ¿Es esa una buena manera de hacerlo, y tiene algo que ver con algoritmos?
(Quería preguntar aquí más bien sobre Stackoverflow, porque no se trata de un problema / idioma específico, además tengo la sensación de que la mayoría de las personas aquí saben el 'por qué', o al menos las respuestas aquí son más detalladas, en lugar de Stackoverflow donde es diferente, lo siento si debería haber preguntado allí)
fuente
Respuestas:
Un algoritmo es una secuencia finita de instrucciones bien definidas para calcular una función (o ejecutar un procedimiento) que termina en un estado final bien definido.
fuente
Esta es en realidad una pregunta bastante interesante, y de hecho sigue siendo una pregunta de investigación abierta.
Yuri Gurevich, uno de los gigantes de la teoría de algoritmos, actualmente está dando una serie de video conferencias en el sitio web de la comunidad de Microsoft Channel9:
Como puede ver, su pregunta es en realidad el título de la segunda conferencia. Sin embargo, te sugiero que los veas a los tres.
El primero, en particular, contiene un par de ejemplos de algoritmos que invalidan prácticamente todas las definiciones dadas en la mayoría de las otras respuestas aquí.
fuente
Un algoritmo es como una buena receta de cocina . Tiene algunas entradas, algunos pasos intermedios bien definidos y obtiene un resultado final.
Aplicado a la programación, es una descripción inequívoca de los pasos que necesita para resolver un problema en particular. Cualquier cosa que pueda escribir en el lenguaje de programación de su elección podría verse como un algoritmo, pero generalmente el término solo se usa para tareas lógicas o matemáticas comunes, como ordenar o buscar.
fuente
Un algoritmo es un conjunto de reglas o proceso (en un cálculo) utilizado para resolver problemas. Básicamente, hay un problema, quieres una solución, y el proceso para esta solución es un algoritmo. Un algoritmo tiene un conjunto finito de reglas / procesos para llegar a una solución.
Si eres como Edsger W. Dijkstra , escribirás tu algoritmo en una hoja de papel y trabajarás / perfeccionarás el algoritmo en papel hasta que estés satisfecho con tus algoritmos. De lo contrario (especialmente al escribir documentaciones), se usa un diagrama de flujo para representar esquemáticamente el flujo de un algoritmo / proceso. Esto permite que otros critiquen el diagrama de flujo y mejoren si es necesario (sin preocuparse por el lenguaje de programación que se necesita).
No sé si eso responde a tu pregunta.
fuente
Algoritmo: un conjunto de operaciones bien ordenadas que son 1) inequívocas y 2) efectivamente computables, de modo que la ejecución de las operaciones a partir de la primera produce un resultado después de un número finito de operaciones.
fuente
Algoritmo Es la combinación de pasos secuenciales (estos pasos pueden ser cálculos, procesamiento de datos y tareas de razonamiento) utilizados para resolver un problema de una manera muy simple y eficiente.
Está diseñado de manera más eficiente para que pueda expresarse en una cantidad finita de espacio y tiempo. podemos implementarlo en cualquier lenguaje de programación.
Propiedades de un algoritmo: las siguientes son las principales propiedades de un algoritmo: -
Un algoritmo debe tener un nombre único. Debería haber definido explícitamente conjuntos de entradas y salidas. Un algoritmo debe estar en orden secuencial con operaciones inequívocas. Debe tener algún punto final, es decir, se detiene en un tiempo finito. Haga clic aquí para aprender sobre Diseño y Análisis de Algoritmo
fuente
Utilizo el término para describir una fórmula para resolver un problema específico. La fórmula no necesariamente debe escribirse en matemáticas o tener una relación 1: 1 con un método. En la escuela, los algoritmos y las estructuras de datos están estrechamente relacionados y pueden escribirse como fórmulas matemáticas o probarse utilizando pruebas.
fuente
Un algoritmo es una abstracción de un programa de computadora y consta de un conjunto de instrucciones para lograr una tarea bien definida en un número finito de pasos, aunque el límite en el recuento de pasos puede ser muy grande y los pasos individuales pueden ser complejos ( finito) tareas por derecho propio. Si bien hay programas (correctos) que en general se conocen sin algoritmos, todos funcionan repitiendo piezas algorítmicas en algún patrón. (Más interesantes son los programas cuyo estado de terminación no se conoce, pero la mayoría de los programadores en realidad no se ocupan de esas cosas intencionalmente; ¡sé que no!)
fuente
En mi opinión, nadie lo sabe :) He visto el término aplicado solo a funciones de cálculo matemático, a cualquier función que recibe entrada y produce salida, y a todo lo que toma entrada y realiza algún tipo de operación en ella.
¿Considerarías que todo / lo siguiente es un algoritmo?
finder
función que consulta una base de datos para un objeto Clientefuente
Un algoritmo es una idea, un método, una técnica, "inteligencia" para el cálculo o la ejecución de una tarea de naturaleza abstracta, pero como se ejecuta en computadoras en el mundo real, aspiramos a que use la menor cantidad de recursos posible , que son, en el mundo informático, Tiempo y memoria.
fuente
Un algoritmo es una secuencia de pasos bien definidos que producen un resultado en un tiempo finito.
Paso bien definido: eso es algo que puede hacer, o calcular, que está definido con precisión. Simplemente leyendo el paso ya sabes lo que tienes que hacer y cómo hacerlo. Específicamente, puede escribirlo en un lenguaje de programación que conozca y asegurarse de que el fragmento del programa coincida exactamente con el paso.
Secuencia: los pasos se ejecutan en un orden especificado. Los pasos pueden ejecutarse más de una vez dependiendo de los datos (bucles) o no ejecutarse en absoluto según los datos (si las declaraciones). Los algoritmos paralelos imponen solo un orden parcial en los pasos, por lo que estoy simplificando demasiado aquí. Sería más correcto describirlo como un conjunto parcialmente ordenado que como una secuencia, pero quería mantener las palabras un poco más simples. Además, es posible integrar fácilmente un conjunto parcialmente ordenado en un pedido completo.
Resultado: un estado o valor final. No tiene que ser predecible de antemano, pero sí tiene que ser un final definitivo que satisfaga alguna condición. Esto significa que un sistema operativo no es un algoritmo, aunque utiliza muchos de ellos.
Finito: se garantiza que un algoritmo se detendrá en algún momento, al menos en una máquina que pueda funcionar el tiempo suficiente. No se garantiza necesariamente que se detenga en un tiempo predecible, y no se garantiza que se detendrá antes de que el sol se expanda y se ponga rojo en cualquier máquina existente. Esto también significa que un sistema operativo no es un algoritmo, ya que idealmente se ejecutará para siempre. He visto la palabra "procedimiento" utilizada para describir algo que sería un algoritmo si estuviéramos seguros de que se detendría en algún momento. (Es posible tener un algoritmo que se detendrá en una cantidad de tiempo desconocida. Supongamos, digamos que la conjetura de Goldbach se demostró matemáticamente falsa, en una prueba no constructiva, por lo que hubo un número par> 2 que no era la suma de dos números primos Un algoritmo que simplemente probaba números pares eventualmente terminaría,
El algoritmo es un tipo de cosa intencionalmente abstracta, por lo que no consideramos preguntas como "¿Es físicamente posible ejecutar esto antes de la muerte por calor del Universo?". Serían demasiado difíciles de responder. Si se relaciona con las operaciones de la computadora, es fácil implementarlo en un lenguaje de programación.
fuente
Si tuviera que dar una definición general, diría que un algoritmo es una fórmula para resolver un problema informático que es más complejo y termina siendo más eficiente que la solución de fuerza bruta / obvia.
Además, es importante tener en cuenta que un algoritmo no es un código fuente específico; Es la computación misma. Entre otras cosas, esto significa que cualquier lenguaje completo de Turing puede implementar cualquier algoritmo que cualquier otro lenguaje completo de Turing pueda implementar.
fuente