Nueva idea (2) - sobre números primos

 

 

Más que una idea es una duda, tengo conocimientos superficiales de redes neuronales y sé que se pueden utilizar para encontrar patrones repetitivos en lugares insospechados. ¿Sería posible construir y entrenar a una red neuronal para que identifique qué numero es primo y qué otro número no (hasta cierto límite)? ¿Se podría aumentar así el conocimiento sobre ellos? En el mejor de los casos ¿Se podría encontrar alguna sucesión que genere números primos gracias a este método? Yo creo que todo está en probar y que puede ser un experimento realmente interesante.

Comentarios

Selecciona arriba tu forma preferida de visualizar los comentarios y pulsa el botón para guardar tu elección para próximas visitas (sólo si eres usuario registrado).
CaStarCo's picture

Bueno...


El tema está en que esas redes neuronales a las que te refieres, encuentran patrones imposibles de detectar por nosotros mismos, pero que de alguna manera ya sabemos que existen, y como funcionan. En el caso de los números primos, conocemos bien pocos patrones, y además no son del todo precisos, no creo que una red neuronal haga las investigaciones por nosotros y descubra nuevas reglas de la naturaleza. Somos nosotros los que hemos de interpretar siempre los resultados. ( Por lo menos cuando se trata de nuevos descubrimientos ).

En definitiva, dudo que una red neuronal encuentre patrones si no está diseñada ya para encontrar esos patrones, que por otro lado, de momento desconocemos...

-GPG-
email : castarco@gmail.com
id: A4C86159
server: keyserver.kjsl.com
-GPG-

Pelias's picture

seguridad..


Yo creo que ademas nos encontramos con otro problema, si conseguimos, que una red neuronal nos acierte el primer millon de numeros primos, no tenemos ninguna garantia de que el numero de secuencia 17 millones, propuesto por dicha red, sea un primo tambien y seguramente el intento de factorizacion de este numero para certificar que es primo sea inabordable.
-Pelias.

-Pelias.

Strapping's picture

Cuestión De Primos


Veamos, hay una cosa que me pareció leer por algún lado... confirmemelo alguien si lo sabe con seguridad, esque yo no estoy muy puesto en este tema, al menos, tanto como otros foreros.

¿Serían correctas las siguientes afirmaciones?

A) Los numeros pseudoprimos enormes (de varios centenares de cifras), se consiguen mediante el analisis probabilístico de "primalidad". Es decir, si mediante varios metodos, se obtiene el resultado de que hay altas probabilidades de ser primo, entonces decimos que es un pseudo primo (no confirmado, falso primo).

B) Los numeros primos enormes, se consiguen como paso posterior a la generación de pseudoprimos, sencillamente tratando de factorizar el pseudoprimo.

Yo creo que si, pero pese a mis investigaciones no estoy muy seguro... y como no soy matemático...

Gracias

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Trata A La Gente Como Quieras Que Te Traten
Exale Un Vistacillo A Mi Web Y Disfruta
www.dtodo1poco.com/~strapping/

raspa atonal's picture

No es exactamente. La definic


No es exactamente así. Si recuerdo bien la definición de pseudoprimo proviene del pequeño teorema de Fermat.

El pequeño teorema de Fermat nos dá una propiedad que cumplen todos los números primos. Por lo tanto si un número no tenia esa propiedad no podia ser primo. A los números que cumplian esa propiedad se les llama pseudoprimos. Pero hay un problema...

El problema es que se encontraron números que sin ser primos cumplian la propiedad. Esos números se denominan números de Carmichael.

Existen muchos tests y certificados para saber si un número es o no primo, los tests son normalmente probabilisticos, y los certificados no, pero que yo sepa no se una la palabra pseudoprimo en este contexto (aunque tambien puedes pensar que si cumple la propiedad del pequeño teorema de Fermat seria probable que fuera primo, pues creo recordar que no hay muchos números de Carmichael...).

Espero no haberte liado más. La verdad es que tengo todo esto un poco olvidado.Si alguien tiene alguna corrección o sugerencia...

DamyMr's picture

No se trata de eso


El primer objetivo del experimento propuesto es aumentar nuestro conocimiento acerca de los mismos, no que encuentre la fórmula mágica. Que no hayamos encontrado patrones no quiere decir que no existan y las redes neuronales pueden detectarlos, quizás si es dotada con muchas capas y es entrenada convenientemente, pueda producir algún resultado inesperado.

estebano's picture

El problema que yo le veo al


El problema que yo le veo al asunto es el entrenamiento de la red que se sugiere. Como en muchos otros campos, el entrenamiento no deja de ser una cuestión algo subjetiva y, en este caso en concreto, dicho entrenamiento supondría por parte del entrenador un grado de conocimiento adecuado. Adecuado significaría, en el caso de los números primos, suficiente como para no tener que entrenar a la red. Y si ya no necesitamos entrenar a la red es porque hemos encontrado patrones adecuados y podremos "algoritimizar" el problema.

Espero dos cosas: (1) que esto no haya quedado demasiado filosófico; y (2) que nadie se tome esto más que como una opinión personal.

Seguramente haya que recurrir a las matemáticas (me refiero a únicamente) para resolver estos problemas, o para dar con fórmulas no-mágicas que nos den pie a tratar con ellos computacionalmente. Cualquier otro intento me parece tan válido como intentar descifrar los secretos de la mente humana utilizando la mente humana, o intentar lamerse el codo propio (cosa que es manifiestamente IMPOSIBLE).

Saludos, y volveré por aqui, ya que habláis en general de temas muy interesantes.

P.D.: Por cierto, ¿cuántos habéis intentado chuparos el codo en después de leer esto?

DamyMr's picture

El entrenamiento es sencillo


El entrenamiento que se necesita es el de disponer de una gran cantidad de disponer de números primos, porporcionárselos y decirle cual es primo y cual no.

PD:
Strapping, cuando pueda te contesto, no disfruto de muxo tiempo ahira.

Strapping's picture

Generando Listas De Primos Por Capas


Un día me asaltó una idea de cómo poder generar listas de primos, con ese tipo de redes...

Era un sistema inverso a la división, me explico... consistía a pequeña escala en lo siguiente:

Teniendo los primos de 1 cifra, conseguir todos los multiplos de estos numeros que tengan dos cifras; es decir, todos los no primos entre 10 y 99. Por deducción, aquellos numeros no generados, también serán primos.

Ej: 10 = 2x5, 12 = 2x6, 14 = 2x7, 15 = 3x5, 16 = 2x2x2x2, 18 = 2x3x3, ... [No salieron en la lista 11, 13, 17 = numeros primos]

Conclusiones:

Con los numeros primos de hasta X cifras, podemos hallar todos los numeros no primos de X+1 cifras. Los no introducidos en la lista forzosamente son también primos.

De esta manera se podria crear algo así como un programa eliminador de numeros no primos: eliminar de la lista de numeros reales que fuesen resultado de la factorización de los numeros.

Problemas:

Creo que es más antieconomico temporalmente esta técnica que la de simplemente probar a dividir y analizar el resto.

Pero por otra parte creo que para sistemas de redes neuronales podría ser otra línea de investigación de patrones acerca de los números primos.

Según creo, ciertas reglas se han descubierto no sabiendo las reglas que se debían cumplir para los casos positivos, sino para los negativos. Puede que así se pueda encontrar la regla que diga cuando un numero NO es primo...

No soy ningún experto, y puede que a alguien se le haya ocurrido esto mucho antes que a mí, pero en fin, que se puede esperar de un aficionado como yo? :)

PD: Gracias por las respuestas DamyMr, ahora soy yo el que anda algo ocupado de tiempo... pero pronto podre poner una respuesta al Proyecto de Cifrador... :) Controlas muxo más de mates que yo, por eso esperaba que fueses algo mayor que yo, no me esperaba que tubieras un año menos :)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Trata A La Gente Como Quieras Que Te Traten
Exale Un Vistacillo A Mi Web Y Disfruta
www.dtodo1poco.com/~strapping/

DamyMr's picture

Hola Strapping, el método qu


Hola Strapping, el método que mencionas es una criba de Eratóstenes en toda regla (si es que los griegos estaban muy avanzados). Mi propuesta es la siguiente:
Los números primos deben de llevar forzosamente una cantidad de información implícita, toda sucesion debe de llevarla. Por ejemplo la serie 1, 2, 4, 8, 16... podemos resumirla en que para obtener el siguiente valor, duplicamos el anterior, y empezamos en 1. Con esto no hace falta escribir toda la serie, que es infinita.
En una serie de números totalmente aleatoria, no queda otra opción que escribirla entera. Se tiene tanta información en la serie, que no es posible comprimirla, ya que de haber fórmulas que permitiesen dar una definición comprimida, dejaría de ser aleatoria.
El experimento lo propongo por lo siguiente: debe de haber un mínimo número de neuronas para reconocer una sucesión aleatoria. Entonces, dado ese número mínimo de neuronas, intentar entrenar a la red para que con una neurona menos pueda reconocer los números primos hasta un límite fijado. Si la red esta correctamente construida y no puede reconocerlos, se podría sospechar que tienen tanta información como en una suceión aleatoria, y buscar fórmulas sería perder el tiempo. Si se consigue, entonces los primos tienen una especie de orden y quizás la red neuronal pudiera ayudar a obtenerlo.

En cualquiera de los dos casos (éxito o fracaso) aumentaría nuestro conocimiento de los números primos, por eso creo que puede ser un experimento interesante.

Strapping's picture

He Descubierto América!


Jajaja, como se solía decir de los tontines que como yo hemos reinventado la rueda... jejejeje :D

Bueno, me estoy haciendo un programa que me da los numeros primos de entre 1 y 2^31, a ver si consigo terminar de limpiar el código. Una vez tenga esa enorme base de datos de primos, creo que ahí podría servir de utilidad para gente dispuesta como tú a realizar estudios.

Puesto que el algoritmo está escrito en C; el programa está volcando los numeros primos a PRIMOS.BIN escribiendo de "unsigned int" en "unsigned int"... por ahora tengo 360.924 primos, en un fichero de Mega y medio; los numeros primos del 1 al 5.192.521, que ya son un montón, comprimido con WinRAR el fichero ocupa 227 KB.

En fin, mi pekeño aporte... a ver si logro terminar la lista de primos un rato de estos. Saludos :)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Trata A La Gente Como Quieras Que Te Traten
Exale Un Vistacillo A Mi Web Y Disfruta
www.dtodo1poco.com/~strapping/