¿Qué es un algoritmo?

12

¿Qué es exactamente un algoritmo, como en el significado de algoritmo? Lo poco que entiendo de esta palabra es que no es específico de un idioma o patrón de diseño en particular, sino que es uno de los principios más básicos (por lo que supongo que esta pregunta me hace parecer 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 que hay que hacer, con qué y cómo llegaría allí (no en un lenguaje de programación), luego escribirlo en código. ¿Es esa una buena manera de hacerlo, y eso tiene algo que ver con los 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 la gente aquí sabe el 'por qué', o al menos las respuestas aquí son más detalladas, más bien que en Stackoverflow donde es diferente, lo siento si debería haber preguntado por allí)

    
pregunta Jonathan. 17.04.2011 - 22:08

11 respuestas

18

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.

    
respondido por el John Bode 18.04.2011 - 01:01
14

En realidad, esta es 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, ofrece actualmente una serie de conferencias en video en el sitio web de la comunidad de Microsoft Channel9:

Como puede ver, su pregunta en realidad es el título de la segunda conferencia. Sin embargo, te sugiero que los mires 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í.

    
respondido por el Jörg W Mittag 18.04.2011 - 04:38
3

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 normalmente el término solo se usa para tareas lógicas o matemáticas comunes, como la clasificación o la búsqueda.

    
respondido por el Alexander Gessler 17.04.2011 - 22:21
2

Un algoritmo es un conjunto de reglas o procesos (en un cálculo) que se utiliza para resolver problemas. Básicamente, hay un problema, usted quiere 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 un papel y resuelva / refine el algoritmo en papel hasta que esté satisfecho con sus algoritmos. De lo contrario (especialmente cuando se escriben documentaciones), se utiliza un flowchart para representar diagramáticamente el flujo de un algoritmo / proceso. Esto permite a otros criticar el diagrama de flujo y mejorar si es necesario (sin preocuparse de qué lenguaje de programación se necesita).

No sé si eso responde a tu pregunta.

    
respondido por el Buhake Sindi 17.04.2011 - 22:17
0

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 que, y termina siendo más eficiente que la solución de fuerza obvia / bruta.

Además, es importante tener en cuenta que un algoritmo no es un código fuente específico; Es el cálculo en sí. Entre otras cosas, esto significa que cualquier lenguaje completo de Turing puede implementar cualquier algoritmo que cualquier otro lenguaje completo de Turing puede implementar.

    
respondido por el Mason Wheeler 17.04.2011 - 22:18
0

Utilizo el término para describir una fórmula para resolver un problema específico. La fórmula no necesariamente tiene que estar escrita 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.

    
respondido por el P.Brian.Mackey 17.04.2011 - 22:23
0

Un algoritmo es una abstracción de un programa de computadora, y consiste en 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 tareas complejas (finitas) por derecho propio. Si bien hay programas (correctos) que son conocidos en general, no algorítmicos, 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 tratan estas cosas intencionalmente, ¡sé que no!)

    
respondido por el Donal Fellows 18.04.2011 - 02:37
0

Algoritmo: un conjunto bien ordenado de operaciones que son 1) no ambiguas y 2) computables de manera tal que la ejecución de las operaciones a partir de la primera produce un resultado después de un número finito de operaciones.

    
respondido por el ThomasMcLeod 18.04.2011 - 05:25
0

OMI, nadie lo sabe completamente :) He visto el término aplicado solo a las funciones de cálculo matemático, a cualquier función que toma entrada y produce salida, y a cualquier cosa que toma entrada y realiza algún tipo de operación en él.

¿Considerarías que alguno de los siguientes son un algoritmo?

  1. Una función que calcula la tasa de interés de un préstamo en un período de 20 años
  2. Lógica de negocios que comprueba si toda la información se ha ingresado en una solicitud de préstamo
  3. Una función finder que consulta una base de datos en busca de un objeto Cliente
  4. Una función "auxiliar" que limpia y formatea la entrada de datos
  5. Una función que analiza un archivo XML y asigna datos a objetos comerciales
  6. Una clase que toma entradas y las escribe en un archivo de texto
respondido por el Wayne Molina 22.04.2011 - 14:34
0

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 para que use los menos recursos posibles , que se encuentran, en el mundo de la computadora, el tiempo y la memoria.

    
respondido por el JasonGenX 22.04.2011 - 17:44
0

Un algoritmo es una secuencia de pasos bien definidos que producen un resultado en un tiempo finito.

Paso bien definido: eso es algo que puedes hacer, o calcular, que está definido con precisión. Solo leyendo el paso, 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 que se especifica. Los pasos pueden ejecutarse más de una vez según los datos (bucles) o no ejecutarse en absoluto según los datos (si las declaraciones). Los algoritmos paralelos imponen solo una orden parcial en los pasos, por lo que estoy simplificando en exceso 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 fácilmente posible incrustar un conjunto parcialmente ordenado en un orden completo.

Resultado: un estado o valor final. No tiene que ser predecible de antemano, pero tiene que ser un final definitivo que satisfaga alguna condición. Esto significa que un sistema operativo no es un algoritmo, aunque utiliza una gran cantidad de ellos.

Finito: se garantiza que un algoritmo se detendrá en algún momento, al menos en una máquina que puede funcionar el tiempo suficiente. No se garantiza necesariamente que se detenga en un tiempo predecible, y no se garantiza que se detenga antes de que el sol se expanda y se vuelva 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 detenga en una cantidad de tiempo desconocida. Supongamos que, digamos que la conjetura de Goldbach se probó matemáticamente falsa, en una prueba no constructiva, por lo que había un número par > 2 que no era la suma de dos primos. Un algoritmo que simplemente probó los números pares terminaría finalmente, aunque nadie sabría cuándo.

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 térmica del Universo?". Serían demasiado difíciles de responder. Si se relaciona con operaciones de computadora, es fácil implementarlo en un lenguaje de programación.

    
respondido por el David Thornley 22.04.2011 - 17:36

Lea otras preguntas en las etiquetas

Comentarios Recientes

Un algoritmo de aprendizaje automático es un modelo de datos que organiza las cosas para predecir el futuro modelando el comportamiento de las cosas. Es probable que un algoritmo general use un conjunto de suposiciones al tratar de resolver un problema, pero en general podría extraer observaciones de información de un tipo más general. Por ejemplo, puede implementar una IA en un sistema como Google. Hay muchos usos para una computadora como esta: planificación, desarrollo, algoritmos de capacitación, etc. Los... Lee mas