<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>2227-1899</journal-id>
<journal-title><![CDATA[Revista Cubana de Ciencias Informáticas]]></journal-title>
<abbrev-journal-title><![CDATA[Rev cuba cienc informat]]></abbrev-journal-title>
<issn>2227-1899</issn>
<publisher>
<publisher-name><![CDATA[Editorial Ediciones Futuro]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S2227-18992015000400009</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Red de Procesadores Evolutivos para solucionar el Problema de los Tres Colores. Implementación en Hardware]]></article-title>
<article-title xml:lang="en"><![CDATA[Network of Evolutionary Processors to solve the Problem of the Three Colors. Hardware Implementation]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Castaño]]></surname>
<given-names><![CDATA[José A.]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Moreno]]></surname>
<given-names><![CDATA[Valery]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Cabrera]]></surname>
<given-names><![CDATA[Alejandro]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Gutiérrez]]></surname>
<given-names><![CDATA[Abraham]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Martínez]]></surname>
<given-names><![CDATA[Víctor]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad de las Ciencias Informáticas  ]]></institution>
<addr-line><![CDATA[Boyeros La Habana]]></addr-line>
<country>Cuba</country>
</aff>
<aff id="A02">
<institution><![CDATA[,Instituto Superior Politécnico José Antonio Echeverría  ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
<country>Cuba</country>
</aff>
<aff id="A03">
<institution><![CDATA[,Universidad Politécnica de Madrid  ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
<country>España</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>12</month>
<year>2015</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>12</month>
<year>2015</year>
</pub-date>
<volume>9</volume>
<numero>4</numero>
<fpage>155</fpage>
<lpage>170</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_arttext&amp;pid=S2227-18992015000400009&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_abstract&amp;pid=S2227-18992015000400009&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.sld.cu/scielo.php?script=sci_pdf&amp;pid=S2227-18992015000400009&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[En este trabajo se diseña una Red de Procesadores Evolutivos (NEP) para solucionar el Problema de los Tres Colores. Para obtener el resultado, se utilizó como recurso de Hardware un FPGA. El objetivo principal de este trabajo, es demostrar la factibilidad de la implementación física de algoritmos paralelos para solucionar problemas NP - Completos. Con esta implementación se logra que la ejecución de la solución al problema se haga de forma fiable, rápida y eficaz. El proyecto fue desarrollado usando la herramienta ISE 12.1 de Xilinx, utilizando como lenguaje de descripción de hardware al VHDL. Para la simulación se utilizó la herramienta ISim 12.1, también de Xilinx. Los resultados fueron probados utilizando la plataforma Atlys Board de la compañía Digilent la cual contiene un FPGA Spartan-6 LX45, también de Xilinx. Se muestran imágenes de la herramienta empleada, del Kit de Pruebas, así como de la simulación realizada y una tabla con los datos que demuestran que la implementación de este algoritmo complejo utilizó muy pocos recursos del FPGA empleado.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[In this paper, a Network of Evolutionary Processors (NEP) is implemented, to solve the problem of the three colors. To achieve implementation, it was used as an FPGA hardware resource. The main objective of this work is to demonstrate the feasibility of the physical implementation of parallel algorithms to solve problems NP - complete. With this implementation is achieved that the implementation of the solution to be made reliably, quickly and efficiently. The project was developed using the Xilinx ISE 12.1 tool, using hardware description language to VHDL. For the simulation tool was used ISim 12.1, also from Xilinx. The results were tested using the platform Atlys Board Company which contains a Digilent Spartan-6 LX45 FPGA, Xilinx also. Images of the tool used, the Test Kit and simulation performed and a table of data showing that the implementation of this complex algorithm used very few FPGA resources used are shown.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[NEP]]></kwd>
<kwd lng="es"><![CDATA[FPGA]]></kwd>
<kwd lng="es"><![CDATA[VHDL]]></kwd>
<kwd lng="es"><![CDATA[Algoritmos Paralelos]]></kwd>
<kwd lng="es"><![CDATA[Problemas NP Completos]]></kwd>
<kwd lng="en"><![CDATA[NEP]]></kwd>
<kwd lng="en"><![CDATA[FPGA]]></kwd>
<kwd lng="en"><![CDATA[VHDL]]></kwd>
<kwd lng="en"><![CDATA[Complex Problem]]></kwd>
<kwd lng="en"><![CDATA[Parallel Procesi]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><B>ART&Iacute;CULO  ORIGINAL</B></font></p>     <p>&nbsp;</p>     <p><font size="4"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Red  de Procesadores Evolutivos para solucionar el Problema de los Tres Colores.  Implementaci&oacute;n en Hardware</font></strong></font></p>     <p>&nbsp;</p>     <p><font size="3"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Network of Evolutionary  Processors to solve the Problem of the Three Colors. Hardware Implementation</font></strong></font></p>     <p>&nbsp;</p>     <p>&nbsp;</p>     <P><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="2">Jos&eacute; A. Casta&ntilde;o<strong><strong><sup>1*</sup></strong></strong>, Valery Moreno<strong><strong><sup>2</sup></strong></strong>,  Alejandro Cabrera<strong><strong><sup>2</sup></strong></strong>, Abraham Guti&eacute;rrez<strong><strong><sup>3</sup></strong></strong> y V&iacute;ctor Mart&iacute;nez<strong><strong><sup>3</sup></strong></strong></font></strong><font size="2">    <br>       <br>   <sup>1</sup> Universidad  de las Ciencias Inform&aacute;ticas. Carretera a San Antonio de los Ba&ntilde;os, km 2 &frac12;,  Torrens, Boyeros, La Habana, Cuba. CP.: 19370.    ]]></body>
<body><![CDATA[<br>   <font face="Verdana, Arial, Helvetica, sans-serif"><sup>2</sup></font>&nbsp; Instituto Superior Polit&eacute;cnico  Jos&eacute; Antonio Echeverr&iacute;a. Cuba.    <br>   <font face="Verdana, Arial, Helvetica, sans-serif"><sup>3</sup></font>&nbsp; Universidad Polit&eacute;cnica de  Madrid, Espa&ntilde;a.</font></font></p>     <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif">* Autor  para correspondencia: <a href="mailto:joseantonio@uci.cu">joseantonio@uci.cu</a> </font>     <p>&nbsp;</p>     <p>&nbsp;</p> <hr>     <P><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>RESUMEN</b> </font>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En  este trabajo se dise&ntilde;a una Red de Procesadores Evolutivos (NEP) para solucionar  el Problema de los Tres Colores. Para obtener el resultado, se utiliz&oacute; como  recurso de Hardware un FPGA. El objetivo principal de este trabajo, es  demostrar la factibilidad de la implementaci&oacute;n f&iacute;sica de algoritmos paralelos  para solucionar problemas NP &ndash; Completos. Con esta implementaci&oacute;n se logra que  la ejecuci&oacute;n de la soluci&oacute;n al problema se haga de forma fiable, r&aacute;pida y  eficaz. El proyecto fue desarrollado usando la herramienta ISE 12.1 de Xilinx,  utilizando como lenguaje de descripci&oacute;n de hardware al VHDL. Para la simulaci&oacute;n  se utiliz&oacute; la herramienta ISim 12.1, tambi&eacute;n de Xilinx. Los resultados fueron  probados utilizando la plataforma Atlys Board de la compa&ntilde;&iacute;a Digilent la cual  contiene un FPGA Spartan-6 LX45, tambi&eacute;n de Xilinx. Se muestran im&aacute;genes de la  herramienta empleada, del Kit de Pruebas, as&iacute; como de la simulaci&oacute;n realizada y  una tabla con los datos que demuestran que la implementaci&oacute;n de este algoritmo  complejo utiliz&oacute; muy pocos recursos del FPGA empleado.    <br>       <br>   <strong>Palabras clave:</strong> NEP, FPGA, VHDL, Algoritmos Paralelos, Problemas  NP Completos. </font></p> <hr>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b><span lang=EN-GB>ABSTRACT</span></b> </font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">In this paper, a Network of Evolutionary Processors  (NEP) is implemented, to solve the problem of the three colors. To achieve  implementation, it was used as an FPGA hardware resource. The main objective of  this work is to demonstrate the feasibility of the physical implementation of  parallel algorithms to solve problems NP - complete. With this implementation  is achieved that the implementation of the solution to be made reliably,  quickly and efficiently. The project was developed using the Xilinx ISE 12.1  tool, using hardware description language to VHDL. For the simulation tool was  used ISim 12.1, also from Xilinx. The results were tested using the platform  Atlys Board Company which contains a Digilent Spartan-6 LX45 FPGA, Xilinx also.  Images of the tool used, the Test Kit and simulation performed and a table of  data showing that the implementation of this complex algorithm used very few  FPGA resources used are shown.    <br>       <br> <strong>Keywords:</strong> NEP, FPGA, VHDL, Complex Problem, Parallel  Procesing.</font></p> <hr>     <p>&nbsp;</p>     <p>&nbsp;</p>     <p><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><b>INTRODUCCI&Oacute;N</b></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La implementaci&oacute;n de algoritmos complejos en hardware, ha sido una de las  tareas m&aacute;s desarrolladas por los investigadores del campo de los Sistemas  Digitales. (Mart&iacute;nez, 2008)&nbsp; La necesidad  de ejecutar algoritmos con rapidez, fiabilidad y bajos costos ha sido un factor  determinante en el desarrollo de implementaciones en hardware. La aparici&oacute;n de  circuitos integrados reconfigurables, que permiten la ejecuci&oacute;n paralela de  se&ntilde;ales, ha permitido la implementaci&oacute;n f&iacute;sica de los mencionados algoritmos (Casta&ntilde;o,  2014), como son los FPGA (<em>Field  Programable Gate Array</em> &ndash; Campo Programable de Arreglos de Compuertas).     <br>       <br>   El desarrollo de aplicaciones sobre los FPGA se realiza a partir de  diversas t&eacute;cnicas, siendo la m&aacute;s utilizada, la descripci&oacute;n del hardware  mediante alg&uacute;n lenguaje. En este proyecto se utiliz&oacute; el lenguaje VHDL (Ashenden,  1990), por su sencillez y por la rapidez con se pueden desarrollar los  proyectos, en particular el dise&ntilde;o de las Redes de Procesadores Evolutivos (NEP  &ndash; <em>Network Evolutionary Processors</em>).     <br>       ]]></body>
<body><![CDATA[<br>   La NEP  dise&ntilde;ada tiene como fin brindar soluci&oacute;n al conocido Problema de los Tres  Colores [D&iacute;az, 2008], pues permite dividir el problema complejo en varios de  menor complejidad y solucionarlos de forma paralela. Este problema consiste en  decidir c&oacute;mo colorear cada uno de los v&eacute;rtices de un grafo, empleando tres  colores de tal manera que despu&eacute;s de colorearlos no existan dos v&eacute;rtices  conectados por una arista con el mismo color.    <br>       <br> El problema a  resolver es clasificado como NP &ndash; Completo y su complejidad radica en que la  soluci&oacute;n presenta un tiempo exponencial, debido a que el algoritmo de soluci&oacute;n  se realiza de forma secuencial. Una forma de solucionarlo es procurar su  soluci&oacute;n en tiempo polinomial, de ah&iacute; la necesidad de implementarlo de forma  paralela, para lo cual los FPGA son ideales.</font></p>     <p>&nbsp;</p>     <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="3">MATERIALES Y M&Eacute;TODOS </font></strong></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En este apartado, se exponen los elementos caracter&iacute;sticos de los FPGA, el  Lenguaje VHDL y el Problema de los Tres Colores. Adem&aacute;s, se documenta toda la  teor&iacute;a asociada con las Redes de Procesadores Evolutivos, con el objetivo de  facilitar la compresnsi&oacute;n de la soluci&oacute;n final.     <br>       <br>   <strong>Hardware reconfigurable: FPGA</strong>    <br>       <br>   Los FPGA son  circuitos integrados que tienen una estructura interna que permite ser  configurada por los usuarios, con la intenci&oacute;n de implementar funciones  digitales de complejidad diversa. Son reconfigurables, lo que permite que sean  programados siempre que sea necesario, sin tener que cambiar la arquitectura  del sistema en el que se encuentren. [Ram&iacute;rez, 2011]    ]]></body>
<body><![CDATA[<br>       <br> Est&aacute;n formados  b&aacute;sicamente por Bloques de Entrada/Salida (IOB), Bloques L&oacute;gicos Configurables (CLB)  y Recursos de Interconexi&oacute;n (IR). Los IOB (Input/Output Block), se encargan de  la comunicaci&oacute;n de los componentes internos del dispositivo con el exterior, a  trav&eacute;s de los terminales (pines). En los CLB (Configurable Logic Block) es  donde se implementa la l&oacute;gica del dise&ntilde;o realizado. Los IR (Interconection  Resources) son los elementos que permiten conectar a los IOBs y a los CLBs. ( Ver <a href="#f01">figura 1</a>) </font></p>     <p align="center"><img src="/img/revistas/rcci/v9n4/f0109415.jpg" alt="f01" width="517" height="272"><a name="f01"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La utilizaci&oacute;n  de los FPGA en lugar de otra arquitectura, se basa en cinco factores: la  velocidad de trabajo del sistema dise&ntilde;ado, la flexibilidad del hardware  reconfigurable, la reducci&oacute;n de costos, el bajo consumo de energ&iacute;a y la  fiabilidad del producto final.    <br>       <br>   Para  implementar un sistema digital sobre un FPGA, el mismo se programa a partir de  la descripci&oacute;n de sus componentes en un HDL. Se debe utilizar el Entorno de  Desarrollo que provea el fabricante de la FPGA a utilizar y este se encargar&aacute;  de la s&iacute;ntesis del dise&ntilde;o, implementaci&oacute;n y generaci&oacute;n del fichero de  programaci&oacute;n del dispositivo. </font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Lenguaje de descripci&oacute;n de hardware  VHDL</strong>     <br>       <br>   El Lenguaje de Descripci&oacute;n de Hardware que se utiliza para la implementaci&oacute;n  de la NEP sobre un FPGA es el VHDL. Proviene de VHSIC &ndash; HDL (<em>Very High Speed Integrated Circuit &ndash;  Hardware Description Language</em>). Est&aacute; dise&ntilde;ado  para describir la funcionalidad y la organizaci&oacute;n de sistemas digitales utilizando  un lenguaje formal. (Freire, 2011)    <br> Se redacta  como texto y posee una sintaxis amplia y flexible. No es pr&aacute;ctico tratar de  conocerlo completo antes de usarlo, conoci&eacute;ndolo s&oacute;lo parcialmente se resuelven  muchos problemas. Sus principales caracter&iacute;sticas son (Casta&ntilde;o, 2014):</font></p> <ul>       ]]></body>
<body><![CDATA[<li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Descripci&oacute;n textual normalizada:  puede usarse para la descripci&oacute;n de sistemas, sin ambig&uuml;edades al expresar el  comportamiento o representar la estructura de un circuito, minimizando errores  y problemas de compatibilidad. </font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Es un lenguaje ejecutable,  adaptable a distintas metodolog&iacute;as de dise&ntilde;o, lo que permite que la descripci&oacute;n  del hardware se materialice en una representaci&oacute;n del mismo, utilizable por las  diferentes herramientas existentes cubriendo las necesidades de todo tipo de  usuarios.</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Amplio rango de capacidad  descriptiva: posibilita la descripci&oacute;n, modelado y comprobaci&oacute;n de sistemas  desde un alto nivel de abstracci&oacute;n, bajando hasta el nivel de definici&oacute;n  estructural de compuertas. </font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Es independiente de la  tecnolog&iacute;a, lo cual facilita la actualizaci&oacute;n y adaptaci&oacute;n de los dise&ntilde;os a los  avances tecnol&oacute;gicos en cada momento y utilizarlos en las sucesivas fases  propias del desarrollo de sistemas.</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Tiene una gran capacidad para el  manejo de proyectos de grandes dimensiones. Permite descomponer un dise&ntilde;o y su  descripci&oacute;n en unidades m&aacute;s peque&ntilde;as (modularidad). </font></li>     </ul>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Problema de los tres colores</strong>    <br>       <br>   El Problema de  los Tres Colores [D&iacute;az, 2008], tiene como principal aplicaci&oacute;n la coloraci&oacute;n de  pa&iacute;ses en un mapa. Es un caso t&iacute;pico en el etiquetado de grafos, que consiste  en la asignaci&oacute;n de etiquetas (colores) a los elementos del grafo. El objetivo  de esta asignaci&oacute;n, es que los v&eacute;rtices adyacentes de un grafo no compartan el  mismo color, principio que se extiende a las aristas y caras del grafo en  cuesti&oacute;n.     <br>       ]]></body>
<body><![CDATA[<br> Este problema,  se logra representar matem&aacute;ticamente empleando enteros no negativos, que  codifican la presencia de cada color en un determinado v&eacute;rtice. De forma  general se puede emplear un conjunto finito como conjunto de colores. La  naturaleza del problema depende del n&uacute;mero de colores, y no de cuales sean  estos. (Ver <a href="#f02">figura 2</a>)</font></p>     <p align="center"><img src="/img/revistas/rcci/v9n4/f0209415.jpg" alt="f02" width="280" height="192"><a name="f02"></a></p>     <p><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Redes de procesadores evolutivos</font></strong><font face="Verdana, Arial, Helvetica, sans-serif">    <br>       <br>   Las NEP, son  modelos computacionales de optimizaci&oacute;n y b&uacute;squeda de soluciones inspirados en  la biolog&iacute;a celular. Estos modelos, son no deterministas y masivamente  paralelos y pueden abordar la soluci&oacute;n de problemas NP - Completos en tiempo  polinomial y se enmarcan dentro de lo que se denomina Computaci&oacute;n Natural. (Mart&iacute;nez,  2008) Se considera a la Computaci&oacute;n Natural como una rama de la Inteligencia  Artificial. En las NEP, las c&eacute;lulas son descritas por un conjunto de palabras,  evolucionando producto de mutaciones, las cuales son representadas como  operaciones sobre estas palabras, asemej&aacute;ndose a la manera en que este proceso  es llevado a cabo en las cadenas de ADN. (P&#259;un, 1998)    <br>       <br>   Al terminar el  proceso de mutaci&oacute;n, solo las c&eacute;lulas con cadenas correctas sobrevivir&aacute;n. Estas  cadenas ser&aacute;n las soluciones a los problemas. La principal fortaleza de estos  modelos radica en la simultaneidad en la ejecuci&oacute;n del proceso, para lo cual es  necesaria una arquitectura en paralelo y distribuida que consiste de una serie  de procesadores simples.     <br>       <br> Los  procesadores se ubican en los nodos de un grafo completo, los cuales son  capaces de manipular datos asociados con el nodo correspondiente. Cada nodo  opera sobre los datos locales con la posibilidad de realizar alg&uacute;n tipo de  mutaci&oacute;n puntual (inserci&oacute;n, borrado o sustituci&oacute;n de un s&iacute;mbolo), similar a la  capacidad de las c&eacute;lulas para dividirse. Estos nodos act&uacute;an como un filtro,  cuyo funcionamiento est&aacute; definido por alguna regla, conocidas como Reglas de  Evoluci&oacute;n. Los datos locales son entonces enviados a trav&eacute;s la red siguiendo  los protocolos definidos. Solamente los datos que sean capaces de pasar el  proceso de filtrado podr&aacute;n ser comunicados. Adicionalmente, los datos en los  nodos son organizados en forma de largos multiconjuntos de palabras donde cada  una puede aparecer en un n&uacute;mero arbitrariamente largo de copias y donde todas  las copias son procesadas en paralelo para que cada posible acci&oacute;n se realice.(  Batard, 2012)</font></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Conceptos b&aacute;sicos sobre NEP</strong></font><font size="2"><strong></strong></font></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Una Red de  Procesadores Evolutivos de dimensi&oacute;n <em>n</em> se define como: &sum; = {<em>V, N0, N1,&hellip;,  Nn</em>}. Donde <em>V</em> es un  alfabeto y los procesadores <em>Ni </em>est&aacute;n  conectados a grafo. Unacadena &chi;, de longitud <em>m</em> que pertenece al  alfabeto <em>V</em>, es una secuencia de  s&iacute;mbolos <em>a1a2&hellip;am</em> donde el s&iacute;mbolo <em>ai</em> &#1028; <em>V </em>para todo 1&le; i &le; <em>m. </em>El conjunto de todas las cadenas pertenecientes a<em> V </em>se denota por<em> V* </em>y la cadena vac&iacute;a por &#603;. [D&iacute;az, 2008]     <br>       <br>   Un procesador  se define por <em>Ni </em>= {<em>Mi, Ai, PIi,  POi</em>}, donde <em>Ni </em>es  eli &ndash; &eacute;simo procesador evolutivo de  la red. Los par&aacute;metros para cada procesador son: </font></p> <ul>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><em>Mi : </em>es un conjunto  finito de reglas de evoluci&oacute;n de una de las siguientes maneras (reglas  b&aacute;sicas):</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><em>a</em> <strong>&rarr;</strong> <em>b</em>, <em>(a, b &#1028; V)</em> [Reglas de sustituci&oacute;n]</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><em>a </em><strong>&rarr; </strong>&#603;, <em>(a &#1028; V) </em>[Reglas de borrado]</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">&#603; <strong>&rarr;</strong> <em>a</em>, <em>(a &#1028; V) </em>[Reglas de  inserci&oacute;n]</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">A<em>i</em> es un conjunto  finito de cadenas sobre <em>V,</em> el cu&aacute;l es  el conjunto de cadenas iniciales sobre el nodo i. Se considera que cada cadena  que aparece en un nodo, lo hace es con un n&uacute;mero arbitrario grande de copias. </font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><em>PIi </em>y<em> POi</em> son subconjuntos de <em>V </em>que representan los filtros de entrada y salida respetivamente.  Estos filtros se definen por condiciones de pertenencia, es decir, una cadena  puede atravesar los filtros si pertenecen a estos.</font></li>     </ul>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La  configuraci&oacute;n o estado de una NEP se define como una n-tupla <em>C = (L1, L2,&hellip;, Ln)</em>,  para todo 1 &le; i &le; <em>n</em>. Una  configuraci&oacute;n representa el conjunto de cadenas que est&aacute;n presentes en cada  nodo en un momento determinado. La configuraci&oacute;n inicial de la red es <em>C0= (A1, A2,&hellip;,  An). </em>Una configuraci&oacute;n puede cambiar lo mismo por un paso  evolutivo que por uno de comunicaci&oacute;n. Cuando el cambio es por un paso  evolutivo, cada componente de la configuraci&oacute;n es modificado en consecuencia a  las reglas de evoluci&oacute;n asociadas con el nodo i.    <br>       <br>   Formalmente se  plantea que la configuraci&oacute;n <em>C1  = (L1, L2,&hellip;, Ln)</em>, cambia directamente a la  configuraci&oacute;n <em>C2 = (L&rsquo;1,  L&rsquo;2,&hellip;, L&rsquo;n)</em> por un paso evolutivo, escrito de la  forma <em>C1 &#0; C2</em>, si <em>L&rsquo;i</em> es el conjunto de cadenas obtenidas al  aplicar las reglas de <em>Mi </em>a  las cadenas en <em>Li </em>de la  siguiente forma:</font></p>     <p> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Si la misma regla de sustituci&oacute;n  o eliminaci&oacute;n puede reemplazar diferentes ocurrencias del mismo s&iacute;mbolo dentro  de una cadena, todas estas ocurrencias deben ser reemplazadas dentro de las  diferentes copias de esa cadena. El resultado es un multiconjunto en el cual  cada cadena que puede ser obtenida aparezca en un n&uacute;mero arbitrariamente largo  de copias.   <ul>   </font>   <ul>       <br>       <br>   Una regla de inserci&oacute;n se aplica  en cualquier posici&oacute;n de una cadena. Nuevamente, el resultado es un  multiconjunto similar al descrito en el punto anterior.    <br>       <br>   Si m&aacute;s de una regla, es aplicable  a una cadena, todas deben ser usadas para las diferentes copias de esa cadena.    <br>       <br>   <font size="2" face="Verdana, Arial, Helvetica, sans-serif">Cuando el cambio se realiza por un paso de comunicaci&oacute;n, cada nodo <em>Ni </em>env&iacute;a todas las copias de  las cadenas que posee que sean capaces de pasar su filtro de salida hacia todos  los nodos conectados con <em>Ni </em>y  recibe todas las copias de cadenas enviadas por cualquier nodo conectado con <em>Ni </em>que sean capaces de pasar  su filtro de entrada.    ]]></body>
<body><![CDATA[<br>       <br> <strong>Definic&oacute;n del problema de los tres colores</strong></font></p> <font size="2" face="Verdana, Arial, Helvetica, sans-serif">La soluci&oacute;n al Problema de los  Tres Colores estar&aacute; basada en el <a href="#f03">siguiente grafo</a>: </font>     <p align="center"><img src="/img/revistas/rcci/v9n4/f0309415.jpg" alt="f03" width="280" height="176"><a name="f03"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Para tal  efecto, se define que el grafo es: <em>G =  ({1,2,&hellip;, n}, {e1, e2,&hellip;, em})</em> con <em>et = {kt, lt},  1</em>&le;<em> kt </em>&le;<em> lt </em>&le;<em> n, 1 </em>&le;<em> t </em>&le;<em> m. </em>Se considera el alfabeto <em>U = V </em>U <em>V&rsquo; </em>U <em>T </em>U <em>A</em>, donde <em>V = {b, r, g}, T= {a1, a2,&hellip;, an}</em> y <em>A= {A1, A2,&hellip;, An</em>}.    <br>   Se construyen  los siguientes procesadores de un NEP:</font></p> <ul>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Un procesador generador,  encargado de generar todas las posibles combinaciones de colores, soluciones o  no al problema y enviarlas a los siguientes procesadores. Se  define como: </font></li>     </ul>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><em>N0  = {{ a1, a2, &hellip;, an }, {ai <strong>&rarr;</strong> bAi,, ai <strong>&rarr;</strong> rAi , ai <strong>&rarr;</strong> gAi | 1 &le; i &le; n}, &#0;<a></a><a> 0</a>, {Ai| 1 &le; i &le; n }}</em></font></p> <ul>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Cuatro procesadores de filtrado  para cada arista del grafo <em>et  = {kt, lt}</em> (donde i = <em>{kt, lt}</em>)<em>:</em></font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><em>Net1</em> = <em>{0, {gAi <strong>&rarr; </strong>g&rsquo;ai , rAi <strong>&rarr;</strong> r&rsquo;ai }, { Ai }, { g&rsquo;, r&rsquo;}}</em></font></li>       ]]></body>
<body><![CDATA[<li><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><em>Net2</em> = <em>{0, {gAi <strong>&rarr; </strong>g&rsquo;ai , bAi <strong>&rarr;</strong> b&rsquo;ai }, { Ai }, { g&rsquo;, b}}</em></font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><em>Net3 = {0, {bAi <strong>&rarr; </strong>b&rsquo;ai,, rAi <strong>&rarr; </strong>r&rsquo;ai }, { Ai }, { b&rsquo;, r&rsquo;}}</em></font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><em>Net4</em> = <em>{0, { r&rsquo;ai <strong>&rarr; </strong>rAi , g&rsquo;ai <strong>&rarr;</strong> gAi , b&rsquo;ai<strong> &rarr; </strong>bAi }, { ai }, { Ai }} </em></font></li>     </ul>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En resumen, el  procesador <em>N0 </em>genera todas  las cadenas que codifican posibles combinaciones de color y posteriormente los  procesadores <em>Net1</em>, <em>Net2</em>, <em>Net3, Net4 </em>filtran dichas cadenas en la arista <em>et</em>. La repetici&oacute;n de dicho proceso de filtrado para el  resto de las aristas provoca la obtenci&oacute;n de la soluci&oacute;n al problema. Es decir,  en cada paso evolutivo (filtro) se obtienen combinaciones de colores posibles  soluciones al problema y al terminar todo el proceso evolutivo (paso por todos  los filtros) es que se obtiene la soluci&oacute;n final. (Casta&ntilde;o, 2014)    <br>       <br>   La  <a href="#f04">arquitectura de la NEP</a> que se define para el Problema de los Tres Colores, a  partir del grafo <em>G</em>, es la siguiente:</font></p>     <p align="center"><img src="/img/revistas/rcci/v9n4/f0409415.jpg" alt="f04" width="409" height="164"><a name="f04"></a></p>     <p><font size="2"><strong><font face="Verdana, Arial, Helvetica, sans-serif">Implementaci&oacute;n    <br> </font></strong><font face="Verdana, Arial, Helvetica, sans-serif">     ]]></body>
<body><![CDATA[<br> Para  la implementaci&oacute;n en Hardware (FPGA) de la Red de Procesadores Evolutivos para  solucionar el problema antes mencionado, se deben tener en cuenta los  siguientes elementos:</font></font></p> <ul>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">No se dise&ntilde;a el Procesador <em>N0</em>, encargado de generar las  posibles combinaciones de colores para el grafo utilizado. Se parte de tener  las 256 combinaciones de colores posibles para este problema en una memoria, la  cu&aacute;l debe ser implementada.</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Dise&ntilde;ar el bloque de  filtrado a partir de la arquitectura de la NEP propuesta.</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Al terminar el proceso de  filtrado, almacenar en otra memoria los datos que son soluciones para el  problema planteado. Esta memoria tambi&eacute;n se debe implementar.</font></li>     </ul>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">A partir  de lo anterior, se propone el siguiente <a href="/img/revistas/rcci/v9n4/f0509415.jpg" target="_blank">diagrama en bloques del sistema</a>:</font></p>     <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="2">Bloque RAM_IN</font></strong><font size="2">    <br>       <br> A la memoria  donde se guardan las combinaciones de colores generadas por <em>N0 </em>se le llama RAM_IN. El  formato de estas combinaciones de colores, es el siguiente:    <br> &lt;color&gt;&lt;NODO  A&gt; &lt;color&gt;&lt;NODO C&gt; &lt;color&gt;&lt;NODO D&gt;  &lt;color&gt;&lt;NODO E&gt;    ]]></body>
<body><![CDATA[<br>     <br> Por tanto, una  combinaci&oacute;n de colores es: bAgCrDbE. En este caso el nodo A est&aacute; coloreado en  azul, el nodo C en verde, el D en rojo y el E en azul.    <br> Para procesar  estos datos en el FPGA, se codificaron los colores y los nodos con 2 bits cada  uno. Esto provoca que las cadenas que codifican combinaciones de colores tengan  16 bits, 4 bits por cada combinaci&oacute;n de &lt;color&gt;&lt;NODO&gt;.    <br>     <br> Los nodos fueron codificados de la siguiente manera:     <br> 00 - Nodo A,  01 - Nodo C, 10 - Nodo D y 11 - Nodo D.&nbsp;     <br> Los colores se  codificaron de la siguiente forma:     <br> 00 &ndash; Rojo, 01 &ndash; Verde, 10 - Azul y 11 - Sin color.     <br>     <br> La combinaci&oacute;n 11 representa el caso en que un nodo no est&aacute; coloreado. Esto  debe ser tenido en cuenta pues en muchas de las combinaciones de colores  generadas por el procesador N0 no se le asignan colores a los nodos, sobre todo  en las primeras, que es cuando empieza la asignaci&oacute;n. (Casta&ntilde;o, 2014)    ]]></body>
<body><![CDATA[<br>     <br> Estas combinaciones de colores que se ubican en la memoria pueden ser  soluciones o no al problema. La NEP que se dise&ntilde;a, se encargar&aacute; de filtrar cada  una de ellas y determinar cu&aacute;les son soluciones al problema planteado. La  memoria se implementa a partir de la descripci&oacute;n de su comportamiento en VHDL y  tiene un tama&ntilde;o de 8 Kb. Se ubica dentro del FPGA en uno de los bloques  predefinidos para memorias de este tipo.    <br>     <br> <strong>&nbsp;Bloque NEP</strong>    <br>     <br> Para el  proceso de filtrado se dise&ntilde;a el bloque macro &ldquo;NEP&rdquo;, que cuenta con 4 bloques  internos. Cada uno de estos bloques est&aacute; en funci&oacute;n de una arista (<em>et</em>) del grafo del problema.  En estos, es donde se implementan las reglas de evoluci&oacute;n y se nombran NEP e1 (<em>Net1</em>), NEP e2 (<em>Net2</em>), NEP e3 (<em>Net3</em>) y NEP e4 (<em>Net4</em>).  Internamente cada bloque de filtrado est&aacute; formado por 4 procesadores  evolutivos. Es decir, las combinaciones de colores deben ser analizadas por 16  procesadores evolutivos para determinar si son soluci&oacute;n o no al problema.    <br>      <br> La <a href="#f06">arquitectura de cada bloque de procesamiento (filtrado)</a>, implementados  en VHDL a partir de la descripci&oacute;n de su estructura, se muestra a continuaci&oacute;n.</font></font></p>     <p align="center"><img src="/img/revistas/rcci/v9n4/f0609415.jpg" alt="f06" width="503" height="382"><a name="f06"></a></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">En la figura anterior se puede apreciar la implementaci&oacute;n de las reglas de  evoluci&oacute;n, donde A1 es la arista en an&aacute;lisis (et) y C1i y C1j son los colores  de los nodos en los extremos de la arista.    ]]></body>
<body><![CDATA[<br>       <br>   El bloque de filtrado NEP e1 (Net1), es el encargado de recibir el dato  procedente de la memoria RAM_IN. En este se valida la pertinencia de los datos  asociados a los colores y los nodos de toda la combinaci&oacute;n de colores. Si los  datos anteriores son v&aacute;lidos y se cumplen las reglas de evoluci&oacute;n para la  arista et1, el dato pasa al bloque siguiente en su formato original. De lo  contrario, lo que se transfiere es el valor &ldquo;0000&rdquo; hexadecimal, lo cual indica  que la cadena recibida no es soluci&oacute;n al problema. Lo anterior significa, que  la c&eacute;lula no sobrevivi&oacute; al proceso de mutaci&oacute;n.    <br>       <br>   Los bloques NEP e2 (Net2) y NEP e3 (Net3) trabajan de igual forma, actuando  sobre sus aristas et2 y et3 respectivamente. En ambos casos se recibe la  combinaci&oacute;n de colores procedente del bloque anterior, si se cumplen las reglas  de evoluci&oacute;n, el dato se transmite al siguiente. De lo contrario, tambi&eacute;n se  transmite el dato &ldquo;0000&rdquo; hexadecimal.    <br>   Al final, el bloque NEP e4 (Net4) recibe la cadena procedente de NEP e3  (Net3) para filtrar la arista et4. Si se cumplen las reglas de evoluci&oacute;n,  entonces la combinaci&oacute;n de colores recibida es soluci&oacute;n al problema, por ser  este el &uacute;ltimo paso evolutivo. Se procede entonces a enviar el dato para su  almacenamiento en la memoria RAM_OUT y se habilita la escritura (WE) en dicha  memoria. Si el dato no cumpliera con las reglas, no se guarda nada en RAM_OUT.    <br>       <br>   En este dise&ntilde;o, la secuencia del procesamiento de las combinaciones de  colores entre los bloques de filtrado se realiza de forma serie. Esto se debe a  que cada bloque solo puede comprobar el cumplimiento de las reglas de evoluci&oacute;n  de su arista (et) cuando le llega el dato desde el bloque anterior. Sin  embargo, el procesamiento interno de cada bloque de filtrado es en paralelo,  pues la salida toma valores seg&uacute;n la concurrencia con que cambie la entrada.  Esto &uacute;ltimo es producto de las ventajas que ofrecen los FPGA.    <br>       <br>   <strong>Bloque RAM_OUT</strong>    <br>       ]]></body>
<body><![CDATA[<br>   Este bloque  corresponde a la memoria donde se guardan las combinaciones de colores  generadas por el procesador <em>N0 </em>que  cumplen con todas las reglas de evoluci&oacute;n, es decir, las soluciones al  problema. Esta memoria es igual a RAM_IN, la cual se implementa a partir de la  descripci&oacute;n de su comportamiento en VHDL y tiene un tama&ntilde;o de 8 Kb. Tambi&eacute;n se  ubica dentro del FPGA en uno de los bloques predefinidos para memorias de este  tipo.    <br>       <br>   En la <a href="#t01">tabla  siguiente</a> se muestran las 12 posibles soluciones al Problema de los Tres  Colores, a partir del grafo <em>G.</em> Esto  es lo que debe contener la memoria RAM_OUT al terminar el proceso de filtrado.</font></p>     <p align="center"><img src="/img/revistas/rcci/v9n4/t0109415.jpg" alt="t01" width="390" height="285"><a name="t01"></a></p>     <p align="left">&nbsp;</p>     <p align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>RESULTADOS Y DISCUSI&Oacute;N </B></font></p>     <p><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="2">S&iacute;ntesis, Implementaci&oacute;n y  Simulaci&oacute;n</font></strong><font size="2">    <br>   De la s&iacute;ntesis del dise&ntilde;o, se obtiene el esquema el&eacute;ctrico de la  Implementaci&oacute;n de la NEP sobre el FPGA, la cual se muestra a continuaci&oacute;n. Se  identifican claramente los componentes NEP e1, NEP e2, NEP e3, NEP e4, RAM_IN y  RAM_OUT. N&oacute;tese la similitud de este esquema el&eacute;ctrico con el diagrama en  bloques presentado anteriormente.</font></font> <font face="Verdana, Arial, Helvetica, sans-serif"><font size="2">(Ver <a href="/img/revistas/rcci/v9n4/f0709415.jpg" target="_blank">figura 7</a>)</font></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Luego de la  implementaci&oacute;n del sistema, se obtuvo el siguiente resumen de la utilizaci&oacute;n de  los componentes internos del FPGA. Los datos demuestran que este algoritmo  complejo fue implementado utilizando muy pocos recursos de la FPGA, lo cual  demuestra la factibilidad de la soluci&oacute;n. (Ver <a href="#t02">tabla 2</a>)</font></p>     <p align="center"><img src="/img/revistas/rcci/v9n4/t0209415.jpg" alt="t02" width="556" height="113"><a name="t02"></a></p>     ]]></body>
<body><![CDATA[<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">La <a href="/img/revistas/rcci/v9n4/f0809415.jpg" target="_blank">simulaci&oacute;n  del sistema</a> arroj&oacute; el resultado que se muestra a continuaci&oacute;n. Se  visualizan varias se&ntilde;ales:</font></p> <font size="2" face="Verdana, Arial, Helvetica, sans-serif"> <ul>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Clk: reloj del sistema.</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">ADDR: valores de las direcciones  para acceder a la memoria RAM_IN.</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Salida_mp: datos que son  extra&iacute;dos de RAM_IN para ser procesados.</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Salida: soluciones al problema de  los tres colores guardados en la memoria RAM_OUT.</font></li>     </ul>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Los valores de  las se&ntilde;ales &ldquo;salida_mp &ldquo;y &ldquo;salida&rdquo; tienen al inicio de la simulaci&oacute;n estados  indeterminados (color naranja).&nbsp; Esto se  debe a que el acceso a las memorias se hace secuencial, y mientras que por sus  entradas de reloj no llegue un flanco de reloj, no habr&aacute; nada que mostrar.    <br>   Los valores de  las 12 soluciones al problema, en la simulaci&oacute;n, se encuentran en hexadecimal  para simplificar el tama&ntilde;o de la imagen y facilitar su entendimiento. Las  combinaciones asociadas a estos datos hexadecimales pueden ser consultadas en  la tabla 1.     <br>       <br>   <strong>Herramientas y Dispositivos</strong>    ]]></body>
<body><![CDATA[<br>       <br>   La herramienta de software que fue  utilizada para la programaci&oacute;n, s&iacute;ntesis, implementaci&oacute;n y simulaci&oacute;n del  sistema es el entorno de dise&ntilde;o ISE 12.1 (Entorno de Software Integrado). Este  proporciona un conjunto integrado de herramientas para la implementaci&oacute;n de  sistemas sobre FPGA, producidos por la compa&ntilde;&iacute;a Xilinx. (Xilinx, 2015)    <br> El flujo de dise&ntilde;o con ISE es el  siguiente: (Casta&ntilde;o, 2014)</font></p> <ol>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Introducir el dise&ntilde;o:  descripci&oacute;n mediante VHDL.</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Acceso a herramientas de  s&iacute;ntesis y simulaci&oacute;n.</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Implementaci&oacute;n de los dise&ntilde;os.</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Programaci&oacute;n de los  dispositivos (FPGA).</font></li>     </ol>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El sistema fue  probado en el Kit de Desarrollo Atlys Board de Digilent. Contiene un FPGA  Spartan-6 LX45 de Xilinx y otras m&uacute;ltiples funcionalidades. (Digilent, 2014) La  programaci&oacute;n del FPGA de dicho Kit, se realiz&oacute; v&iacute;a USB. </font></p> <address> <font size="2" face="Verdana, Arial, Helvetica, sans-serif"> Los kits de desarrollo son  plataformas de hardware que permiten la implementaci&oacute;n pr&aacute;ctica de sistemas digitales.  Con ellos se puede comprobar el funcionamiento real de los dise&ntilde;os, previamente  simulados. Ofrecen m&uacute;ltiples ventajas, como que no se necesita fabricar placas  de circuito impreso, la misma placa se puede reutilizar en m&uacute;ltiples  aplicaciones y permite el desarrollo r&aacute;pido de prototipos. (Ram&iacute;rez, 2011) </font> </address>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">El FPGA del Kit est&aacute; desarrollada sobre  tecnolog&iacute;a de 90nm, con una capacidad de hasta 376 pines de E/S simples &oacute; 156  pares de E/S diferenciales. La estructura interna de esta familia est&aacute;  conformada por Bloques de E/S (IOB, <em>Input  Output Block</em>), Bloques L&oacute;gicos Configurables (CLB, <em>Configurable Logic Blocks</em>), Manejador de Reloj Digital (DCM, <em>Digital Clock Manager</em>) y Ram de Bloque  (BRAM, <em>Block Ram</em>). (Xilinx, 2015)</font></p>     ]]></body>
<body><![CDATA[<p align="left">&nbsp;</p>     <p align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>CONCLUSIONES</B></font></p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Las Redes de  Procesadores Evolutivos son propicias para la soluci&oacute;n de problemas NP &ndash;  Completos, como el de los Tres Colores. Luego de la realizaci&oacute;n este trabajo,  se obtuvieron las siguientes conclusiones:</font></p> <ul>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Se logr&oacute; implementar en Hardware  Reconfigurable (FPGA) una Red de Procesadores Evolutivos (NEP) para solucionar  el Problema de los Tres Colores.</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Se alcanza un tiempo lineal de  c&oacute;mputo, ya que el procesamiento de la informaci&oacute;n no se realiza en una m&aacute;quina  secuencial.</font></li>       <li><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Se logra realizar el  procesamiento de los datos de forma paralela, debido al empleo de la FPGA.</font></li>     </ul>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">&nbsp;Todo lo anterior demuestra la viabilidad de la  implementaci&oacute;n de las NEP en dispositivos de hardware.</font></p>     <p>&nbsp;</p>     <p align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><B>REFERENCIAS    BIBLIOGR&Aacute;FICAS</B></font>     ]]></body>
<body><![CDATA[<!-- ref --><p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Ashenden, Peter J. The VHDL  Cookbook. Departamento de Ciencias de la  Computaci&oacute;n, Universidad de Adelaide, Australia. Julio, 1990.    <br>       <br>   Batard  Lorenzo, David &amp; Mart&iacute;nez Hernando, V&iacute;ctor J. &ldquo;Simulaci&oacute;n de NEP en Java&rdquo;,  Evento UCIENCIA 2012, La Habana, Cuba, 2012.     <br>       <br>   Implementaci&oacute;n  sobre FPGA de una Red de Procesadores Evolutivos (NEP) para solucionar el  Problema de los Tres Colores. I Convenci&oacute;n Internacional de Ciencias T&eacute;cnicas y  VII     <br>       <br>   Conferencia Internacional de Ingenier&iacute;a El&eacute;ctrica, Universidad de Oriente,  Santiago de Cuba, Cuba, junio 2014. ISBN: 978-959-207-529-0    <br>       <br>   Implementaci&oacute;n  en Hardware Reconfigurable de una Red de Procesadores Evolutivos para la  Soluci&oacute;n a un Problema NP-Completo. I Conferencia Internacional UCIENCIA,  Universidad de las Ciencias Inform&aacute;ticas, La Habana, Cuba, abril 2014. ISBN 978-959-286-026-1     <br>       ]]></body>
<body><![CDATA[<br>   D&iacute;az Mart&iacute;nez,  Miguel &Aacute;ngel. &ldquo;Redes de Procesadores Evolutivos con Filtros en las Conexiones&rdquo;.  Tesis Doctoral, Universidad Polit&eacute;cnica de Madrid, Espa&ntilde;a, 2008.     <br>       <br>   Digilent. Informaci&oacute;n obtenida en fecha 26 de junio de 2014. Informaci&oacute;n en http://www.digilentinc.com/Products/ATLYS.    <br>       <br>   Freire Rubio,  Miguel &Aacute;ngel. &ldquo;Manual de Introducci&oacute;n al lenguaje VHDL&rdquo;. Universidad  Polit&eacute;cnica de Madrid, Espa&ntilde;a. A&ntilde;o 2011.     <br>       <br>   Mart&iacute;nez  Hernando, V&iacute;ctor. &ldquo;Desarrollo de Sistemas F&iacute;sicos para Implantar Modelos de  Computaci&oacute;n con Membranas&rdquo;. Tesis Doctoral, Universidad Polit&eacute;cnica de Madrid,  Espa&ntilde;a (2008).    <br>       <br>   P&#259;un, Gh.,  Rozenberg, G., &amp; Salomaa, A., &ldquo;DNA Computing. New Computing Paradigms&rdquo;,  Berlin, Springer, 1998.     <br>       ]]></body>
<body><![CDATA[<br>   Ram&iacute;rez  Despaine, Maikel. &ldquo;Controlador  L&oacute;gico Programable basado en Hardware Reconfigurable&rdquo;. Tesis de Maestr&iacute;a,  CUJAE, La Habana, Cuba, 2011.     <br>       <br> Xilinx.  Informaci&oacute;n obtenida en  //www.Xilinx.com. Informaci&oacute;n Publicada el 20 de  febrero de 2013, consultada el 15 de mayo de 2015.</font></p>     
<p name="_ENREF_1">&nbsp;</p>     <p name="_ENREF_1">&nbsp;</p>     <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Recibido: 30/07/2015    <br> Aceptado: 15/10/2015 </font></p>      ]]></body><back>
<ref-list>
<ref id="B1">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ashenden]]></surname>
<given-names><![CDATA[Peter J]]></given-names>
</name>
</person-group>
<source><![CDATA[The VHDL Cookbook]]></source>
<year>Juli</year>
<month>o,</month>
<day> 1</day>
<publisher-name><![CDATA[Universidad de Adelaide]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Batard]]></surname>
<given-names><![CDATA[Lorenzo]]></given-names>
</name>
<name>
<surname><![CDATA[Martínez Hernando]]></surname>
<given-names><![CDATA[Víctor J]]></given-names>
</name>
</person-group>
<source><![CDATA[&#8220;Simulación de NEP en Java&#8221;]]></source>
<year>2012</year>
<publisher-loc><![CDATA[La Habana ]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B3">
<nlm-citation citation-type="book">
<collab>NEP</collab>
<source><![CDATA[Implementación sobre FPGA de una Red de Procesadores Evolutivos para solucionar el Problema de los Tres Colores]]></source>
<year></year>
<publisher-name><![CDATA[I Convención Internacional de Ciencias Técnicas y VII]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<nlm-citation citation-type="">
<collab>Conferencia Internacional de Ingeniería Eléctrica</collab>
<source><![CDATA[Ingeniería Eléctrica]]></source>
<year>juni</year>
<month>o </month>
<day>20</day>
<publisher-loc><![CDATA[Santiago de Cuba ]]></publisher-loc>
</nlm-citation>
</ref>
<ref id="B5">
<nlm-citation citation-type="book">
<collab>UCIENCIA</collab>
<source><![CDATA[Implementación en Hardware Reconfigurable de una Red de Procesadores Evolutivos para la Solución a un Problema NP-Completo]]></source>
<year>abri</year>
<month>l </month>
<day>20</day>
<publisher-loc><![CDATA[La Habana ]]></publisher-loc>
<publisher-name><![CDATA[Universidad de las Ciencias Informáticas]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Díaz Martínez]]></surname>
<given-names><![CDATA[Miguel Ángel]]></given-names>
</name>
</person-group>
<source><![CDATA[&#8220;Redes de Procesadores Evolutivos con Filtros en las Conexiones&#8221;]]></source>
<year>2008</year>
<publisher-name><![CDATA[Universidad Politécnica de Madrid]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B7">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Freire Rubio]]></surname>
<given-names><![CDATA[Miguel Ángel]]></given-names>
</name>
</person-group>
<source><![CDATA[&#8220;Manual de Introducción al lenguaje VHDL&#8221;]]></source>
<year>2011</year>
<publisher-name><![CDATA[Universidad Politécnica de Madrid]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B8">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Martínez Hernando]]></surname>
<given-names><![CDATA[Víctor]]></given-names>
</name>
</person-group>
<source><![CDATA[&#8220;Desarrollo de Sistemas Físicos para Implantar Modelos de Computación con Membranas&#8221;]]></source>
<year>2008</year>
<publisher-name><![CDATA[Universidad Politécnica de Madrid]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B9">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[P&#259;un]]></surname>
<given-names><![CDATA[Gh]]></given-names>
</name>
<name>
<surname><![CDATA[Rozenberg]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[Salomaa]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[&#8220;DNA Computing. New Computing Paradigms]]></source>
<year>1998</year>
<publisher-loc><![CDATA[Berlin ]]></publisher-loc>
<publisher-name><![CDATA[Springer]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B10">
<nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Ramírez Despaine]]></surname>
<given-names><![CDATA[Maikel]]></given-names>
</name>
</person-group>
<source><![CDATA[&#8220;Controlador Lógico Programable basado en Hardware Reconfigurable&#8221;.]]></source>
<year>2011</year>
<publisher-loc><![CDATA[La Habana ]]></publisher-loc>
<publisher-name><![CDATA[CUJAE]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B11">
<nlm-citation citation-type="">
<collab>Xilinx</collab>
<source><![CDATA[Tesis de maestria]]></source>
<year></year>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
