Goldbach y su conjetura

 

Conjetura:
Del latín coniectūra
Juicio que se forma de algo por indicios u observaciones.

Desde principios de curso (Septiembre) estoy cursando el máster “Técnicas para la Investigación, Desarrollo e Innovación en Ciencias e Ingeniería“, un máster que actualmente se encuentra en su último año de vida con el fin de ceder el puesto a otros máster más especializados para cada rama. Particularmente es una titulación que no se centra en sólo una rama, de modo que tiene cabida en él casi cualquier ingeniería (biología, náutica, química, informática, etc). Me introduje en él con el fin de empezar una carrera como investigador y posteriormente realizar un doctorado. Aún sabiendo que la carga matemática -algo en lo que mermo mucho- sería de un nivel superior al que había tenido hasta la fecha empecé a cursarla con pocas expectativas aunque poco a poco se han ido superando con no poco esfuerzo.

Entre las asignaturas cursadas hay una llamada “Programación Científica” donde partiendo desde una base nula de programación se ha ido introduciendo a ritmo algo forzado (por el poco tiempo del que se dispone) el lenguaje de programación Python.

Centrándome un poco más en la temática del título “La conjetura de Goldbach”, ésta dice que todo número mayor a dos (2) y que sea par, puede ser representado como la suma de dos números primos.

Por ejemplo, tomemos el número 38:
– Es mayor a 2 y es par
– Los números primos de 0 a 38 son [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]
– Puede ser representado como 3 + 35, 7 + 31, 13 + 25 y como 19 + 19 (4 sumas en total)
– Por tanto podemos decir que la conjetura de Goldbach para 38 es cierta.

Si representáramos el número a comprobar y las posibles combinaciones sobre él para comprobar la conjetura quedaría una gráfica de puntos dispersos sobre el plano x, y como la que se puede apreciar a continuación:

goldbach50 goldbach100 goldbach500 goldbach1200 goldbach10000

Pues bien, ya habiendo hecho un resumen de la entrada, una de las últimas prácticas de esta asignatura fue realizar en Python, con ayuda de matplotlib, un programa que dada una entrada M, compruebe en un rango de [2, M] todo los números pares tales que cumplan la conjetura y representarlos. En principio puede parecer un problema sin mucho coste computacional y realmente lo es -para números pequeños-. Cuando jugamos con números del calibre de 100.000 el tiempo de cómputo para representar la gráfica se puede disparar a horas e incluso días dependiendo del número de procesadores que disponga el ordenador donde sea ejecutado. A modo de curiosidad para M = 50.000 tardó aproximadamente 16 horas en un i5 de tercera generación con dedicación total de la máquina en sus 4 cpus. También comentar que, a pesar de que el consumo de memoria se pueda creer excesivo, no llegó a superar un 1% del total (6gb).

Para valores mayores el cómputo se hace tan grande que me tomé la libertad (siempre tratada desde un punto de vista humorístico) de tomar una foto de Q.Tarantino donde tiene una pistola apuntada a su cabeza para representar lo que vendría siendo un error de cálculo después de 16 horas de cómputo.

 

Conjetura de Goldbach

Sin más,
M.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.