¿Las personas descubren o inventan algoritmos? ¿Cómo?

Revisando los conceptos básicos de los Algoritmos y luego cayendo a través de las perlas de programación, lo que entiendo es que los Algoritmos generalmente se descubren. Siempre hay un problema en forma de Escribir un programa . Luego, un grupo de personas o alguien solo comienza a pensar en el problema. El primer paso es resolverlo usando la fuerza bruta. Esto es lo que generalmente le da una mejor comprensión del problema. Entonces, generalmente, durante el mejor proceso de comprensión, te encuentras con un momento eureka. Y tada lo has resuelto.

Otro punto sobre por qué se descubren los algoritmos es que el algoritmo para resolver su problema siempre estuvo presente, pero somos nosotros cuando lo buscamos (para cumplir nuestra tarea de escribir un programa) es cuando DESCUBRIMOS el algoritmo.

Un ejemplo muy distinto que recuerdo desde la parte superior de mi cabeza (hay una cosa llamada prueba de primalidad AKS) es una prueba “determinista” para probar la primalidad (prueba de primalidad). Esto se descubrió hace unos 10 años. Es uno de esos algoritmos donde la comprensión del problema tomó mucho tiempo. Siempre tuvimos un algoritmo de fuerza bruta. Después de este descubrimiento, un matemático muy conocido habló sobre ello y expresó que, al ver la simplicidad de este algoritmo, realmente tengo miedo de lo que todos podríamos haber pasado por alto a lo largo de nuestra vida.

No puedo presentar una referencia para el comentario final, pero la prueba de primalidad de AKS se puede leer aquí – Prueba de primalidad de AKS

Esto, de alguna manera, es una pregunta difícil de responder dependiendo de lo que quiere decir con “invención”. Yo diría que no es diferente a discutir si Maths es una búsqueda de invención o descubrimiento. Los algoritmos son fundamentalmente matemáticos.

Hay dos lados con los que puede llegar a esto, el punto de vista del investigador de Algoritmo y el punto de vista de “Ingeniería”. Creo que puede ser a la vez , pero depende de cómo lo abordes y la forma en que las personas aborden su trabajo (sin mencionar tus definiciones). Como argumentaré, estoy mucho más del lado del descubrimiento que de la invención.

Los investigadores de algoritmos diseñan / descubren algoritmos, pero en última instancia tendemos a estudiar problemas y estos algoritmos nos permiten descubrir una nueva comprensión de un problema. A veces esto se obtiene a través del genio matemático bruto, otras veces es un trabajo incremental, pero otras veces puede ser una suerte tonta. Se trata tanto de un descubrimiento como de probar un teorema (ya que así es como se verifica si un algoritmo es correcto normalmente). Personalmente, considero esto como un descubrimiento , ya que descubres algo que nunca antes se había conocido en la comprensión científica / matemática de la computación.

Ahora hay otro lado de esto que es mucho más utilitario. Las personas necesitan resolver problemas, por lo que no se trata tanto de entender por qué las cosas funcionan como lo hacen, solo de que “necesitan algo que funcione” . Se podría argumentar que si este es el tipo de búsqueda en la que el rigor intelectual no se incluye por completo, se puede percibir como inventar y no descubrir, ya que no se trata realmente de la búsqueda de la Verdad, que puede venir o no. Como en mi declaración anterior, no digo que no se puedan hacer ambas cosas, pero el énfasis está mucho más en idear una solución que en su valor matemático / científico. Creo que la forma en que las personas usan “inventar” aquí es definitivamente un poco engañosa a veces, y estoy de acuerdo con la respuesta de Anton Carver a ¿La gente descubre o inventa algoritmos? ¿Cómo? ya que tiene razón sobre la incapacidad de patentar algoritmos; debes vincular técnicamente ese algoritmo a algo que pueda ser patentado. En este sentido, podría ser un ingeniero que trabaja en un sistema y el algoritmo que necesita para que todo funcione es parte de la invención.

En resumen, estoy mucho más en el descubrimiento. campamento que el campamento de “invención”. Los algoritmos deben estudiarse cuidadosamente y, como mínimo, deben abordarse con el rigor y la paciencia como cualquier otro trabajo matemático. Cuando hago mi trabajo, no estoy inventando nuevos algoritmos, en realidad estoy ideando algoritmos para comprender mejor la naturaleza matemática de la computación y descubrir soluciones a problemas matemáticos (estos resultan en teoremas). Tenga en cuenta que no necesariamente tiene que tomar el enfoque estrictamente riguroso con esto, también podría estar hablando de la evaluación empírica de un algoritmo heurístico de manera similar.

¡Espero que esto ayude!

Según la USPTO y la mayoría de las autoridades de patentes, los algoritmos no son patentables y, por lo tanto, no son invenciones . Sin embargo, es posible incorporar un algoritmo como parte intrínseca de una invención patentable. La fina línea legal avanza y retrocede cada pocos años, pero los algoritmos como tales nunca han sido invenciones.

¿Cómo descubren las personas los algoritmos?

A través del trabajo duro en su mayoría. El examen y el análisis de detalles de muchas posibilidades. Las técnicas de visualización pueden ser productivas. Algunas ideas simplemente aparecen en tu cabeza, a menudo cuando estás haciendo algo no relacionado.

Un algoritmo es una cosa hecha por el hombre. Por lo tanto, no se puede descubrir a menos que otra persona descubra un algo hecho por alguien (como en “Mira este algo, encontré que alguien escribió”).