Voynich

25
EL MANUSCRITO VOYNICH INTRODUCCION En la Librería Beinecke, perteneciente a la Universidad de Yale, podemos encontrar uno de los más misteriosos e interesantes desafíos que la Historia nos ha dejado. Se trata de un manuscrito, donado en 1969 por H.P Kraus, que en 1912 había sido adquirido por Wilfrid M. Voynich, librero anticuario norteamericano, en un seminario jesuita en Frascati, en Villa Mondragone, cerca de Roma. Sus orígenes y autor son inciertos, aunque junto al texto se halló una carta fechada el 19 de agosto de 1666, de Johannes Marcus Marci, rector de la Universidad de Praga, dirigida a Athanasius Kircher, un erudito jesuita. Según dicha carta el manuscrito era obra del científico Roger Bacon, uno de los personajes del S.XIII con un pensamiento científico más avanzado. El manuscrito es un libro de 15 por 23 centímetros en octavo, consta de 204 páginas, aunque se perdieron 28. Cada una de ellas tiene coloridos dibujos y anotaciones manuscritas en una clave secreta. A pesar de los esfuerzos que han llevado a cabo eruditos en la materia a lo largo de los siglos (incluso en nuestros días), no se sabe en qué idioma está escrito o cifrado, ni cuál fue la intención original del autor, constituye en sí mismo todo un enigma y hasta la fecha nadie ha logrado descifrarlo. EL MISTERIO La primera noticia fiable que se tiene de él data de principios del siglo XVII. Sabemos que el emperador Rodolfo II de Bohemia (1552-1612) lo compró por una cifra desorbitada para la época (600 ducados), y que luego pasó por varias manos hasta llegar en 1666 a las de Atanasio Kircher, un sacerdote jesuíta. Desde ese momento hasta 1912, nadie sabe a ciencia cierta qué le ocurrió al libro. Para cualquier criptógrafo y estudioso de los lenguajes este libro constituye un estimulante reto, ya que ni siquiera sabemos a ciencia cierta cuál es el tema que trata Sus numerosas ilustraciones parecen indicar que es un tratado de alquimia cuyo auténtico contenido se quiso mantener en secreto, pero esto no son más que especulaciones. Posee diferentes secciones, que parecen tratar los siguientes temas: Botánica (la mayoría de los dibujos representa plantas no identificadas), Astronomía (aparecen casi todos los símbolos zodiacales), Biología (con algunos dibujos sobre anatomía), Cosmología y Farmacia. Al final se incluye lo que parece un recetario. Además, el libro posee numeración de páginas, algunas anotaciones en alemán, otras en algún alfabeto desconocido, y una anotación en la última página en caracteres tradicionales que parece representar una clave para descifrar el texto. No obstante, ni siquiera sabemos a ciencia cierta si el texto está cifrado o no. Como puede verse, tenemos todos los ingredientes para poner a prueba nuestras habilidades. A partir de las vestimentas de los personajes dibujados, podría decirse que el manuscrito fue escrito en Europa durante el siglo XIII, aunque una de las ilustraciones se parece a un girasol, lo cual sugiere que en parte fue escrito después del descubrimiento de América. De todas formas, tampoco está descartado que el libro sea un simple engaño hecho para estafar a alguno de sus poseedores, ya que sabemos que en ocasiones se han pagado incribles sumas de dinero por él.

description

 

Transcript of Voynich

Page 1: Voynich

EL MANUSCRITO VOYNICH

INTRODUCCION

En la Librería Beinecke, perteneciente a la Universidad de Yale, podemos encontrar uno de los más

misteriosos e interesantes desafíos que la Historia nos ha dejado. Se trata de un manuscrito, donado en

1969 por H.P Kraus, que en 1912 había sido adquirido por Wilfrid M. Voynich, librero anticuario

norteamericano, en un seminario jesuita en Frascati, en Villa Mondragone, cerca de Roma. Sus orígenes

y autor son inciertos, aunque junto al texto se halló una carta fechada el 19 de agosto de 1666, de

Johannes Marcus Marci, rector de la Universidad de Praga, dirigida a Athanasius Kircher, un erudito

jesuita. Según dicha carta el manuscrito era obra del científico Roger Bacon, uno de los personajes del

S.XIII con un pensamiento científico más avanzado.

El manuscrito es un libro de 15 por 23 centímetros en octavo, consta de 204 páginas, aunque se

perdieron 28. Cada una de ellas tiene coloridos dibujos y anotaciones manuscritas en una clave secreta.

A pesar de los esfuerzos que han llevado a cabo eruditos en la materia a lo largo de los siglos (incluso en

nuestros días), no se sabe en qué idioma está escrito o cifrado, ni cuál fue la intención original del autor,

constituye en sí mismo todo un enigma y hasta la fecha nadie ha logrado descifrarlo.

EL MISTERIO

La primera noticia fiable que se tiene de él data de principios del siglo XVII. Sabemos que el emperador

Rodolfo II de Bohemia (1552-1612) lo compró por una cifra desorbitada para la época (600 ducados), y

que luego pasó por varias manos hasta llegar en 1666 a las de Atanasio Kircher, un sacerdote jesuíta.

Desde ese momento hasta 1912, nadie sabe a ciencia cierta qué le ocurrió al libro.

Para cualquier criptógrafo y estudioso de los lenguajes este libro constituye un estimulante reto, ya que ni

siquiera sabemos a ciencia cierta cuál es el tema que trata Sus numerosas ilustraciones parecen indicar

que es un tratado de alquimia cuyo auténtico contenido se quiso mantener en secreto, pero esto no son

más que especulaciones. Posee diferentes secciones, que parecen tratar los siguientes temas: Botánica

(la mayoría de los dibujos representa plantas no identificadas), Astronomía (aparecen casi todos los

símbolos zodiacales), Biología (con algunos dibujos sobre anatomía), Cosmología y Farmacia. Al final se

incluye lo que parece un recetario.

Además, el libro posee numeración de páginas, algunas anotaciones en alemán, otras en algún alfabeto

desconocido, y una anotación en la última página en caracteres tradicionales que parece representar una

clave para descifrar el texto. No obstante, ni siquiera sabemos a ciencia cierta si el texto está cifrado o no.

Como puede verse, tenemos todos los ingredientes para poner a prueba nuestras habilidades.

A partir de las vestimentas de los personajes dibujados, podría decirse que el manuscrito fue escrito en

Europa durante el siglo XIII, aunque una de las ilustraciones se parece a un girasol, lo cual sugiere que en

parte fue escrito después del descubrimiento de América. De todas formas, tampoco está descartado que

el libro sea un simple engaño hecho para estafar a alguno de sus poseedores, ya que sabemos que en

ocasiones se han pagado incribles sumas de dinero por él.

Page 2: Voynich

ESTUDIOS REALIZADOS

Hasta la fecha se han llevado a cabo multitud de estudios sobre el Manuscrito Voynich, e incluso en más

de una ocasión ha habido personas que aseguran haberlo traducido, pero todavía ninguna de las

traducciones ha sido reconocida por la comunidad.

El problema principal es que no sabemos apenas nada sobre el posible significado real del libro (aunque a

estas alturas casi nadie niega que cuando se descifre, sólo contenga un compendio de los conocimientos

de la época). De hecho, ¡ni siquiera sabemos si está cifrado!, por lo que decidir cómo dar por válida una

posible solución constituye un problema en sí mismo. Parece evidente que la traducción debería cumplir

una serie de condiciones mínimas: ser criptológicamente coherente, no permitir soluciones alternativas,

cubrir todo el manuscrito, ser factible con los medios de la época, dar un significado coherente al libro,

etc.

A pesar de este complicado entramado de dificultades, hay una serie de hechos cuando menos

estimulantes: - Existen dos grandes bloques con tipos de escritura claramente diferenciados en el libro. Esto se ha

logrado analizando estadísticamente el contenido. La causa de esto puede ser múltiple: diferentes

autores, mismo autor pero diferente estilo, o simplemente temas diferentes. - El texto del manuscrito cumple con las propiedades estadísticas principales de los lenguajes

naturales, aunque presenta alguna peculiaridad, que puede deberse a la presencia de abreviaturas.- Apenas hay correcciones en el texto.

PERSPECTIVAS

Todavía quedan muchas cuestiones abiertas, pero sin duda el Manuscrito Voynich ha de constituir un

perfecto banco de pruebas para nuestras teorías sobre el lenguaje y los códigos criptográficos. Cuando

muchos algoritmos de cifrado son abandonados por presentar fisuras en su estructura matemática,

seguimos teniendo un texto codificado a mano que se resiste a nuestras poderosas técnicas de

criptoanálisis. ¿Quién sabe? tal vez sólo sea una cuestión de (des)interés económico...

Page 3: Voynich

PRESENTACIÓN DEL TRABAJO

Como se ha podido comprobar en las líneas anteriores, todavía hoy en día se esta trabajando en intentar

descifrar este documento y mi trabajo va a basarse en eso.

Voy a diseñar una red neuronal capaz de reconocer varios caracteres de dicho manuscrito, teniendo en

cuenta que están escritos a mano y pueden albergar errores; voy a traducirlos a un alfabeto conocido

mediante el cual se pueda descifrar... o como mínimo leer tan enigmático manuscrito.

La red ideal para el reconocimiento de todos estos caracteres sería una red del tipo Back-Propagation

pero la ‘red’ elegida por mi para diseñar este sistema será simplemente una unica neurona, exactamente

perceptrón, el cual aprenderá a distinguir entre 2 caracteres.

Necesitare, como es lógico, un alfabeto de transcripción, para que, una vez identificado el carácter, este

pueda ser asignado a una letra concreta del alfabeto conocido.

Para ello he optado por el alfabeto de transcripción diseñado por la FSG (First Voynich Manuscript Study

Group), los cuales obtuvieron dicho alfabeto siguiendo las siguientes pautas:

La obtención de dicho alfabeto implicaba dos elecciones: Tenían que saber cuales eran exactamente los

caracteres que formaban el texto individualmente y después establecer una letra o número equivalentes

en “nuestro” alfabeto para cada uno de esos caracteres.

La parte más crítica a la hora de determinar el alfabeto de transcripción era la primera, para ello debían

determinar el nivel de detalle y el tipo de detalle con el cual el manuscrito pudiese ser transcrito, ya que

eligiendo solamente mal un caracter podía variar el texto por completo.

Por ejemplo, si erróneamente se asume que “m” y “n” son la misma letra (porque se supone que el

numero de ‘montañitas’ no es importante) o “h” y “n” son la misma letra porque solo difieren en la longitud

de un trazo, o que “n” y “u” son la misma letra pero invertidas, el análisis sería realmente difícil. Por otro

lado, si se cree que “m” y “m” son diferentes letras, o que “A” es totalmente diferente de “a”, entonces el

análisis también sería un desastre.

Para la segunda elección, se tomaron interesantes marcas a mano encima y al lado de algunos

caracteres, que se podían ver en el manuscrito, como también de una especie de alfabeto de

equivalencias incompleto, encontrado en las últimas páginas del libro y con todo tipo de anotaciones. A

pesar de todo ello, la elección de las equivalencias no fue tarea fácil, ya que muchas de las anotaciones

estaban medio borradas o renombradas varias veces.

Tras “decodificar” todo esto como buenamente se pudo, se comparo con otra decodificación realizada por

Mark Rhoads, un importante criptógrafo del ejercito, pudiéndose observar gran similitud entre ambos

alfabetos de transcripción, razón por la cual yo he optado por tomar este alfabeto como base para la

realización de mi trabajo.

Page 4: Voynich

El alfabeto elegido es el siguiente:

Page 5: Voynich

Voy a pasar a comentar como será la red, en que consistirá, que hará y como funcionará exactamente el

sistema de interpretación de caracteres.

Como ya he dicho, se tratará de un único perceptrón (“una neurona”) que se encargara de aprender los

patrones de cada carácter y asignarle una letra en concreto.

Un perceptrón es capaz de diferenciar dos tipos de patrones diferentes... o no saber diferenciarlos. El mio

aprenderá a diferenciar entre la letra (P) y la (R).

Los patrones equivalentes a las letras P, R que podemos ver a continuación se encuentran a tamaño real

de 25x35 píxeles.

(P) (R)

El proceso a seguir es el siguiente:

Dividimos cada una de las imágenes de cada carácter tomadas por algún dispositivo externo, como

podría ser un escáner, en ‘cuadraditos’, o sea, en forma de matriz, como se vera en la próxima página.

Cada letra se divide en una matriza de 25x35 puntos. Se ha escogido esta medida porque con ella se

asegura una medianamente buena representación del carácter y de todos sus trazos.

Una vez tenemos dichos patrones se le enseñan a la red y se la entrena para que aprenda a

diferenciarlos. Tras el duro entrenamiento (2 epochs en nuestro caso), se la ‘suelta’ al mundo real donde

tiene que valerse de sus propios medios (lo aprendido) y convivir con miles de errores....

Debemos darle una velocidad de aprendizaje, tras comprobar varias velocidades y analizar los diferentes

resultados, he optado por una velocidad de 0.1.

Page 6: Voynich

Aquí podemos observar los diferentes patrones y sus ‘matrices’ bipolares (-1,1) correspondientes.

-1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1-1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1-1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1-1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1-1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1-1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1-1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1-1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1-1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1-1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1-1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1-1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1-1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1-1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1

Page 7: Voynich

CONCLUSIONES

A pesar de la aparente simplicidad de esta red, como ya he mencionado, los resultados han sido

sorprendentes, creía que debido al gigantesco tamaño de los patrones (tamaño real), la red no sería

capaz de funcionar correctamente y se equivocaría mucho. Tras pasarle hasta 12 patrones modificados

(simulando deterioro) la red los ha acertado todos. (Debido al gran tamaño de dichos patrones no se han

incluido en estas hojas).

Cuando he terminado de construir la red, he decidido empezar con patrones relativamente fáciles, por el

miedo a que se equivocase... pero poco a poco he ido viendo que no se equivocaba de ninguna manera,

llegando a un punto que le entraba unos patrones tan deformados que ni siquiera yo reconocía y, aún así

no ha fallado. Realmente impresionante.

Solo encuentro un posible error a la red y ese es que tal vez sea “demasiado lista”, pudiendo llegar a

reconocer algunas veces cosas que no son.

Una de las ventajas de esta red es que todas las matrices, tanto las de entrenamiento como las de prueba

se pueden modificar fácilmente a voluntad con lo cual el programa puede ser altamente reutilizable.

MEJORAS

Desde que se inició el diseño de esta red neuronal, se pretendía que fuese capaz de diferenciar entre 4

patrones de caracteres diferentes y no solo dos. La siguiente mejora del programa (ANEXO 2) consigue

ese objetivo mediante el uso de tres perceptrones en varias capas.

Esta nueva red presentada a continuación es capaz de diferenciar entre 4 patrones distintos. Se basa

principalmente en la anterior red pero es más “lista”. Simplemente consiste en tres redes (perceptrones)

paralelas, la primera distingue si se trata de un patrón PL (P+L) o RY (R+Y). Según lo que reconozca,

pasa a otras redes secundarias que distinguen la P de la L en el caso PL o la R de la Y en el caso RY.

Page 8: Voynich
Page 9: Voynich

ANEXO

ENTRENADOR DE LA RED

PROGRAM Trainer;

CONST alpha=0.1; tet1=0.3; tet2=-0.3;TYPE tM=ARRAY [1..2,1..876] OF REAL; tW=ARRAY [1..875] OF REAL;

VAR M:tM; W:tW; i:integer; epoch:LONGINT; t, b:real; OBJ1, OBJ2:boolean; F1, F2, F3: Text; Ch: STRING [2];

PROCEDURE Resetejar; BEGIN OBJ1:=false; OBJ2:=false; b:=1; t:=0; epoch:=0; FOR i:=1 TO 875 DO W[i]:=0; END;

PROCEDURE Patrons; BEGIN Assign(F1,'a:\txt\p.txt'); Reset(F1); FOR i:=1 TO 875 DO BEGIN Read(F1,Ch); IF Ch='-1' THEN M[1,i]:=-1 ELSE M[1,i]:=1; END; Close (F1); M[1,876]:=-1;

Assign(F2,'a:\txt\r.txt'); Reset(F2); FOR i:=1 TO 875 DO BEGIN Read(F2,Ch); IF Ch='-1' THEN M[2,i]:=-1 ELSE M[2,i]:=1; END; Close (F2); M[2,876]:=1;

END;

Page 10: Voynich

BEGIN Resetejar; Writeln; Writeln ('********************************************'); Writeln ('****** PERCEPTRON v.0.2 ******'); Writeln ('****** by ******'); Writeln ('****** Ray San ******'); Writeln ('********************************************'); Writeln; Writeln ('Algoritme dïaprenentatge de la Xarxa'); Writeln; Patrons;

Writeln ('Quant vulguis prem una tecla per comen‡ar.'); Readln;

REPEAT BEGIN epoch:=epoch+1; FOR i:=1 TO 875 DO t:=W[i]*M[1,i]+t; t:=t+b; IF t<tet2 THEN t:=-1; IF t>tet1 THEN t:=1; IF t<>M[1,876] THEN BEGIN OBJ1:=false; b:=b+alpha*M[1,876]; FOR i:=1 TO 875 DO W[i]:=W[i]+alpha*M[1,876]*M[1,i]; END ELSE OBJ1:=true;

FOR i:=1 TO 875 DO t:=W[i]*M[2,i]+t; t:=t+b; IF t<tet2 THEN t:=-1; IF t>tet1 THEN t:=1; IF t<>M[2,876] THEN BEGIN OBJ2:=false; b:=b+alpha*M[2,876]; FOR i:=1 TO 875 DO W[i]:=W[i]+alpha*M[2,876]*M[2,i]; END ELSE OBJ2:=true;

Writeln ('Han pasat: ',epoch,' epochs. Prem una tecla per continuar.'); Readln; END; UNTIL (((OBJ1=true) AND (OBJ2=true)) OR (epoch=100));

Writeln ('La xarxa ha convergit a lïepoch:',epoch); Writeln; Writeln ('El valor de b final es:',b:2:2); Writeln; Writeln ('Prem una tecla per veure el vector de pesos obtingut.'); Readln;

BEGIN FOR i:=1 TO 100 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=101 TO 200 DO Write ('// W-',i,': ',W[i]:1:1);

Page 11: Voynich

Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=201 TO 300 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=301 TO 400 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=401 TO 500 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=501 TO 600 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=601 TO 700 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=701 TO 800 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=801 TO 875 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; END;

Writeln; Writeln; Writeln ('La Xarxa ha estat entrenada amb Šxit.'); Writeln ('Les dades obtingudes es grabaran a disc.'); Writeln ('Prem una tecla.'); Readln; Assign(F3,'a:\txt\valors.txt'); Rewrite(F3); FOR i:=1 TO 875 DO Writeln (F3,W[i]:2:2); Writeln (F3,b:2:2); Close (F3); Writeln ('Gravacio finalitzada amb exit. Prem una tecla per acabar.'); Readln;END.

Page 12: Voynich

XNA

PROGRAM Neurona;

CONST tet1=0.3; tet2=-0.3;

TYPE tV=ARRAY [1..875] OF real;

VAR V, Wn:tV; Y, NI, b, peso:real; i:INTEGER; Fn, F3: Text; Ch: STRING [2];

PROCEDURE Entrapatern; BEGIN Writeln; Writeln ('Per entrar un nou patro segueix les seguents instruccions:'); Writeln ('(1) - Escriu el patro bipolar complert en format txt'); Writeln ('(2) - Asegurat de escriure [-1] o [ 1], tot seguit.'); Writeln ('(3) - Renombra lïarchiu a nouP.txt i fical al diskette.'); Writeln ('Prem una tecla.'); Readln; Assign(Fn,'a:\nouP.txt'); Reset(Fn); FOR i:=1 TO 875 DO BEGIN Read(Fn,Ch); IF Ch='-1' THEN V[i]:=-1 ELSE V[i]:=1; END; Close(Fn); END;

PROCEDURE valorstrain; BEGIN Assign(F3,'a:\txt\valors.txt'); Reset(F3); FOR i:=1 TO 875 DO BEGIN Readln (F3,peso); Wn[i]:=peso; END; Readln (F3,peso); b:=peso; NI:=0; Close (F3); END;

Page 13: Voynich

BEGIN Writeln ('Inicialitzan programa...'); Writeln ('Prem una tecla.'); Readln; Writeln; Writeln ('********************************************'); Writeln ('****** PERCEPTRON v.0.2 ******'); Writeln ('****** by ******'); Writeln ('****** Ray San ******'); Writeln ('********************************************'); Writeln; valorstrain; Entrapatern;

FOR i:=1 TO 875 DO NI:=NI+(V[i]*Wn[i]); NI:=NI+b;

IF NI < tet2 THEN BEGIN Y:=-1; Writeln ('Es tracta de la lletra P'); END ELSE IF NI > tet1 THEN BEGIN Y:=1; Writeln ('Es tracta de la lletra R'); END ELSE BEGIN Y:=0; Writeln ('No puc reconŠixer la lletra.'); END;

Writeln ('El Net Input es: ',NI:2:2); Writeln; Writeln ('Gr…cies per utilitzar aquest software.'); Writeln; Writeln ('Premi qualsevol tecla per acabar.'); Readln;

END.

Page 14: Voynich

ANEXO 2

ENTRENADOR DE LA RED

PROGRAM Trainer;

CONST alpha=0.1; tet1=0.3; tet2=-0.3;TYPE tM=ARRAY [1..2,1..876] OF REAL; tW=ARRAY [1..875] OF REAL;

VAR M:tM; W:tW; i:integer; epoch:LONGINT; t, b:real; OBJ1, OBJ2:boolean; F1, F2, F3: Text; Ch: STRING [2];

PROCEDURE Resetejar; BEGIN OBJ1:=false; OBJ2:=false; b:=1; t:=0; epoch:=0; FOR i:=1 TO 875 DO W[i]:=0; END;

PROCEDURE Patrons; BEGIN Assign(F1,'a:\txt\pl.txt'); Reset(F1); FOR i:=1 TO 875 DO BEGIN Read(F1,Ch); IF Ch='-1' THEN M[1,i]:=-1 ELSE M[1,i]:=1; END; Close (F1); M[1,876]:=-1;

Assign(F2,'a:\txt\ry.txt'); Reset(F2); FOR i:=1 TO 875 DO BEGIN Read(F2,Ch); IF Ch='-1' THEN M[2,i]:=-1 ELSE M[2,i]:=1; END; Close (F2); M[2,876]:=1;

END;

Page 15: Voynich

BEGIN Resetejar; Writeln; Writeln ('********************************************'); Writeln ('****** PERCEPTRON v.0.5 ******'); Writeln ('****** by ******'); Writeln ('****** Ray San ******'); Writeln ('********************************************'); Writeln; Writeln ('Algoritme dïaprenentatge de la Xarxa'); Writeln; Patrons;

Writeln ('Quant vulguis prem una tecla per comen‡ar.'); Readln;

REPEAT BEGIN epoch:=epoch+1; FOR i:=1 TO 875 DO t:=W[i]*M[1,i]+t; t:=t+b; IF t<tet2 THEN t:=-1; IF t>tet1 THEN t:=1; IF t<>M[1,876] THEN BEGIN OBJ1:=false; b:=b+alpha*M[1,876]; FOR i:=1 TO 875 DO W[i]:=W[i]+alpha*M[1,876]*M[1,i]; END ELSE OBJ1:=true;

FOR i:=1 TO 875 DO t:=W[i]*M[2,i]+t; t:=t+b; IF t<tet2 THEN t:=-1; IF t>tet1 THEN t:=1; IF t<>M[2,876] THEN BEGIN OBJ2:=false; b:=b+alpha*M[2,876]; FOR i:=1 TO 875 DO W[i]:=W[i]+alpha*M[2,876]*M[2,i]; END ELSE OBJ2:=true; Writeln ('Han pasat: ',epoch,' epochs. Prem una tecla per continuar.'); Readln; END; UNTIL (((OBJ1=true) AND (OBJ2=true)) OR (epoch=100));

Writeln ('La xarxa ha convergit a lïepoch:',epoch); Writeln; Writeln ('El valor de b final es:',b:2:2); Writeln; Writeln ('Prem una tecla per veure el vector de pesos obtingut.'); Readln;

Page 16: Voynich

BEGIN FOR i:=1 TO 100 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=101 TO 200 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=201 TO 300 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=301 TO 400 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=401 TO 500 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=501 TO 600 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=601 TO 700 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=701 TO 800 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=801 TO 875 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; END;

Writeln; Writeln; Writeln ('La Xarxa ha estat entrenada amb Šxit.'); Writeln ('Les dades obtingudes es grabaran a disc.'); Writeln ('Prem una tecla.'); Readln; Assign(F3,'a:\txt\valors.txt'); Rewrite(F3); FOR i:=1 TO 875 DO Writeln (F3,W[i]:2:2); Writeln (F3,b:2:2); Close (F3); Writeln ('Gravacio finalitzada amb exit. Prem una tecla per acabar.'); Readln;END.

Page 17: Voynich

PROGRAM TrainerPL;

CONST alpha=0.1; tet1=0.3; tet2=-0.3;TYPE tM=ARRAY [1..2,1..876] OF REAL; tW=ARRAY [1..875] OF REAL;

VAR M:tM; W:tW; i:integer; epoch:LONGINT; t, b:real; OBJ1, OBJ2:boolean; F1, F2, F3: Text; Ch: STRING [2];

PROCEDURE Resetejar; BEGIN OBJ1:=false; OBJ2:=false; b:=1; t:=0; epoch:=0; FOR i:=1 TO 875 DO W[i]:=0; END;

PROCEDURE Patrons; BEGIN Assign(F1,'a:\txt\p.txt'); Reset(F1); FOR i:=1 TO 875 DO BEGIN Read(F1,Ch); IF Ch='-1' THEN M[1,i]:=-1 ELSE M[1,i]:=1; END; Close (F1); M[1,876]:=-1;

Assign(F2,'a:\txt\l.txt'); Reset(F2); FOR i:=1 TO 875 DO BEGIN Read(F2,Ch); IF Ch='-1' THEN M[2,i]:=-1 ELSE M[2,i]:=1; END; Close (F2); M[2,876]:=1;

END;

Page 18: Voynich

BEGIN Resetejar; Writeln; Writeln ('********************************************'); Writeln ('****** PERCEPTRON v.0.5 ******'); Writeln ('****** by ******'); Writeln ('****** Ray San ******'); Writeln ('********************************************'); Writeln; Writeln ('Algoritme dïaprenentatge de la Xarxa'); Writeln; Patrons;

Writeln ('Quant vulguis prem una tecla per comen‡ar.'); Readln;

REPEAT BEGIN epoch:=epoch+1; FOR i:=1 TO 875 DO t:=W[i]*M[1,i]+t; t:=t+b; IF t<tet2 THEN t:=-1; IF t>tet1 THEN t:=1; IF t<>M[1,876] THEN BEGIN OBJ1:=false; b:=b+alpha*M[1,876]; FOR i:=1 TO 875 DO W[i]:=W[i]+alpha*M[1,876]*M[1,i]; END ELSE OBJ1:=true;

FOR i:=1 TO 875 DO t:=W[i]*M[2,i]+t; t:=t+b; IF t<tet2 THEN t:=-1; IF t>tet1 THEN t:=1; IF t<>M[2,876] THEN BEGIN OBJ2:=false; b:=b+alpha*M[2,876]; FOR i:=1 TO 875 DO W[i]:=W[i]+alpha*M[2,876]*M[2,i]; END ELSE OBJ2:=true;

Writeln ('Han pasat: ',epoch,' epochs. Prem una tecla per continuar.'); Readln; END; UNTIL (((OBJ1=true) AND (OBJ2=true)) OR (epoch=100));

Writeln ('La xarxa ha convergit a lïepoch:',epoch); Writeln; Writeln ('El valor de b final es:',b:2:2); Writeln; Writeln ('Prem una tecla per veure el vector de pesos obtingut.'); Readln;

Page 19: Voynich

BEGIN FOR i:=1 TO 100 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=101 TO 200 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=201 TO 300 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=301 TO 400 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=401 TO 500 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=501 TO 600 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=601 TO 700 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=701 TO 800 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=801 TO 875 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; END;

Writeln; Writeln; Writeln ('La Xarxa ha estat entrenada amb Šxit.'); Writeln ('Les dades obtingudes es grabaran a disc.'); Writeln ('Prem una tecla.'); Readln; Assign(F3,'a:\txt\valorspl.txt'); Rewrite(F3); FOR i:=1 TO 875 DO Writeln (F3,W[i]:2:2); Writeln (F3,b:2:2); Close (F3); Writeln ('Gravacio finalitzada amb exit. Prem una tecla per acabar.'); Readln;END.

Page 20: Voynich

PROGRAM TrainerRY;

CONST alpha=0.1; tet1=0.3; tet2=-0.3;TYPE tM=ARRAY [1..2,1..876] OF REAL; tW=ARRAY [1..875] OF REAL;

VAR M:tM; W:tW; i:integer; epoch:LONGINT; t, b:real; OBJ1, OBJ2:boolean; F1, F2, F3: Text; Ch: STRING [2];

PROCEDURE Resetejar; BEGIN OBJ1:=false; OBJ2:=false; b:=1; t:=0; epoch:=0; FOR i:=1 TO 875 DO W[i]:=0; END;

PROCEDURE Patrons; BEGIN Assign(F1,'a:\txt\r.txt'); Reset(F1); FOR i:=1 TO 875 DO BEGIN Read(F1,Ch); IF Ch='-1' THEN M[1,i]:=-1 ELSE M[1,i]:=1; END; Close (F1); M[1,876]:=-1;

Assign(F2,'a:\txt\y.txt'); Reset(F2); FOR i:=1 TO 875 DO BEGIN Read(F2,Ch); IF Ch='-1' THEN M[2,i]:=-1 ELSE M[2,i]:=1; END; Close (F2); M[2,876]:=1;

END;

Page 21: Voynich

BEGIN Resetejar; Writeln; Writeln ('********************************************'); Writeln ('****** PERCEPTRON v.0.5 ******'); Writeln ('****** by ******'); Writeln ('****** Ray San ******'); Writeln ('********************************************'); Writeln; Writeln ('Algoritme dïaprenentatge de la Xarxa'); Writeln; Patrons;

Writeln ('Quant vulguis prem una tecla per comen‡ar.'); Readln;

REPEAT BEGIN epoch:=epoch+1; FOR i:=1 TO 875 DO t:=W[i]*M[1,i]+t; t:=t+b; IF t<tet2 THEN t:=-1; IF t>tet1 THEN t:=1; IF t<>M[1,876] THEN BEGIN OBJ1:=false; b:=b+alpha*M[1,876]; FOR i:=1 TO 875 DO W[i]:=W[i]+alpha*M[1,876]*M[1,i]; END ELSE OBJ1:=true;

FOR i:=1 TO 875 DO t:=W[i]*M[2,i]+t; t:=t+b; IF t<tet2 THEN t:=-1; IF t>tet1 THEN t:=1; IF t<>M[2,876] THEN BEGIN OBJ2:=false; b:=b+alpha*M[2,876]; FOR i:=1 TO 875 DO W[i]:=W[i]+alpha*M[2,876]*M[2,i]; END ELSE OBJ2:=true;

Writeln ('Han pasat: ',epoch,' epochs. Prem una tecla per continuar.'); Readln; END; UNTIL (((OBJ1=true) AND (OBJ2=true)) OR (epoch=100));

Writeln ('La xarxa ha convergit a lïepoch:',epoch); Writeln; Writeln ('El valor de b final es:',b:2:2); Writeln; Writeln ('Prem una tecla per veure el vector de pesos obtingut.'); Readln;

Page 22: Voynich

BEGIN FOR i:=1 TO 100 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=101 TO 200 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=201 TO 300 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=301 TO 400 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=401 TO 500 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=501 TO 600 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=601 TO 700 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=701 TO 800 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; FOR i:=801 TO 875 DO Write ('// W-',i,': ',W[i]:1:1); Writeln; Writeln ('Prem una tecla per seguir...'); Readln; END;

Writeln; Writeln; Writeln ('La Xarxa ha estat entrenada amb Šxit.'); Writeln ('Les dades obtingudes es grabaran a disc.'); Writeln ('Prem una tecla.'); Readln; Assign(F3,'a:\txt\valorsry.txt'); Rewrite(F3); FOR i:=1 TO 875 DO Writeln (F3,W[i]:2:2); Writeln (F3,b:2:2); Close (F3); Writeln ('Gravacio finalitzada amb exit. Prem una tecla per acabar.'); Readln;END.

Page 23: Voynich

PROGRAM Neurona;

CONST tet1=0.3; tet2=-0.3;

TYPE tV=ARRAY [1..875] OF real;

VAR V, Wn:tV; Y, NI, b, peso:real; i:INTEGER; Fn, F3: Text; Ch: STRING [2];

PROCEDURE Entrapatern; BEGIN Writeln; Writeln ('Per entrar un nou patro segueix les seguents instruccions:'); Writeln ('(1) - Escriu el patro bipolar complert en format txt'); Writeln ('(2) - Asegurat de escriure [-1] o [ 1], tot seguit.'); Writeln ('(3) - Renombra lïarchiu a nouP.txt i fical al diskette.'); Writeln ('Prem una tecla.'); Readln; Assign(Fn,'a:\nouP.txt'); Reset(Fn); FOR i:=1 TO 875 DO BEGIN Read(Fn,Ch); IF Ch='-1' THEN V[i]:=-1 ELSE V[i]:=1; END; Close(Fn); END;

PROCEDURE valorstrain; BEGIN Assign(F3,'a:\txt\valors.txt'); Reset(F3); FOR i:=1 TO 875 DO BEGIN Readln (F3,peso); Wn[i]:=peso; END; Readln (F3,peso); b:=peso; NI:=0; Close (F3); END;

BEGIN Writeln ('Inicialitzan programa...'); Writeln ('Prem una tecla.'); Readln; Writeln; Writeln ('********************************************'); Writeln ('****** PERCEPTRON v.0.5 ******'); Writeln ('****** by ******'); Writeln ('****** Ray San ******'); Writeln ('********************************************'); Writeln; valorstrain;

Page 24: Voynich

Entrapatern;

FOR i:=1 TO 875 DO NI:=NI+(V[i]*Wn[i]); NI:=NI+b;

IF NI < tet2 THEN BEGIN Assign(F3,'a:\txt\valorspl.txt'); Reset(F3);

FOR i:=1 TO 875 DO BEGIN Readln (F3,peso); Wn[i]:=peso; END; Readln (F3,peso); b:=peso; NI:=0; Close (F3);

FOR i:=1 TO 875 DO NI:=NI+(V[i]*Wn[i]);

NI:=NI+b; IF NI < tet2 THEN

BEGIN Y:=-1; Writeln ('Es tracta de la lletra P');END

ELSE IF NI > tet1 THEN

BEGIN Y:=1; Writeln ('Es tracta de la lletra L');

ENDELSE BEGIN

Y:=0; Writeln ('No puc reconŠixer la lletra.'); END;

END ELSE IF NI > tet1 THEN BEGIN Assign(F3,'a:\txt\valorsry.txt'); Reset(F3); FOR i:=1 TO 875 DO BEGIN Readln (F3,peso); Wn[i]:=peso; END; Readln (F3,peso); b:=peso; NI:=0; Close (F3);

FOR i:=1 TO 875 DO NI:=NI+(V[i]*Wn[i]);

NI:=NI+b; IF NI < tet2 THEN

BEGIN Y:=-1; Writeln ('Es tracta de la lletra R');END

ELSE IF NI > tet1 THEN

BEGIN Y:=1; Writeln ('Es tracta de la lletra Y');

Page 25: Voynich

ENDELSE BEGIN

Y:=0; Writeln ('No puc reconŠixer la lletra.'); END; END ELSE BEGIN Y:=0; Writeln ('No puc reconŠixer la lletra.'); END;

Writeln ('El Net Input es: ',NI:2:2); Writeln; Writeln ('Gr...cies per utilitzar aquest software.'); Writeln; Writeln ('Premi qualsevol tecla per acabar.'); Readln;

END.