<?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>1683-0789</journal-id>
<journal-title><![CDATA[Acta Nova]]></journal-title>
<abbrev-journal-title><![CDATA[RevActaNova.]]></abbrev-journal-title>
<issn>1683-0789</issn>
<publisher>
<publisher-name><![CDATA[Universidad Católica Boliviana]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S1683-07892003000200006</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Inmersión en Hipercubos (Cubos n-dimensionales)]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Tola]]></surname>
<given-names><![CDATA[Ricarda]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,Universidad Autónoma Tomás Frías  ]]></institution>
<addr-line><![CDATA[Potosí ]]></addr-line>
<country>Bolivia</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>12</month>
<year>2003</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>12</month>
<year>2003</year>
</pub-date>
<volume>2</volume>
<numero>3</numero>
<fpage>390</fpage>
<lpage>398</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://www.scielo.org.bo/scielo.php?script=sci_arttext&amp;pid=S1683-07892003000200006&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.bo/scielo.php?script=sci_abstract&amp;pid=S1683-07892003000200006&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://www.scielo.org.bo/scielo.php?script=sci_pdf&amp;pid=S1683-07892003000200006&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[En la computación paralela, la arquitectura óptima depende del algoritmo diseñado para resolver un problema concreto. Una arquitectura de árbol puede ser ideal para resolver el problema X, mientras para el problema Y la malla puede ser la mejor. Por tanto, para resolver estos dos problemas, se requerirían dos computadoras paralelas con dos distintas arquitecturas. En este artículo se presenta un algoritmo, basado en la estrategia llamada de inmersión estricta, para sumergir árboles en hipercubos, lo que permite "traducir" los algoritmos diseñados para trabajar sobre la primera arquitectura, para que se puedan ejecutar sobre la segunda.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[Programación paralela]]></kwd>
<kwd lng="es"><![CDATA[hipercubos]]></kwd>
<kwd lng="es"><![CDATA[estrategia de inmersión en grafos]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Art&iacute;culo Cient&iacute;fico</b></font></p>     <p align="right">&nbsp;</p>     <p align="center"><font size="4" face="Verdana, Arial, Helvetica, sans-serif"><b>Inmersión en Hipercubos (<i>Cubos n-dimensionales</i>)</b></font></p>     <p align="center">&nbsp;</p>     <p align="center">&nbsp;</p>     <p align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>Ricarda Tola</b></font></p>     <p align="center"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Universidad Autónoma Tomás Frías</font>    <br> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">Potosí, Bolivia </font>    <br> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">e-mail: <a href="mailto:rictopa@hotmail.com">rictopa@hotmail.com</a></font></p>     <p align="center">&nbsp;</p>     ]]></body>
<body><![CDATA[<p align="center">&nbsp;</p> <hr align="JUSTIFY" noshade>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Resumen</b></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">En la computación paralela, la arquitectura óptima depende del algoritmo diseñado para resolver un problema concreto. Una arquitectura de árbol puede ser ideal para resolver el problema X, mientras para el problema Y la malla puede ser la mejor. Por tanto, para resolver estos dos problemas, se requerirían dos computadoras paralelas con dos distintas arquitecturas. En este artículo se presenta un algoritmo, basado en la estrategia llamada de inmersión estricta, para sumergir árboles en hipercubos, lo que permite &quot;traducir&quot; los algoritmos diseñados para trabajar sobre la primera arquitectura, para que se puedan ejecutar sobre la segunda.</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Palabras clave:    </b>Programación paralela, hipercubos, estrategia de inmersión en grafos.</font></p> <hr align="JUSTIFY" noshade>     <p align="justify">&nbsp;</p>     <p align="justify">&nbsp;</p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b>1.&nbsp; &nbsp; Introducción</b></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">En las últimas décadas, hemos asistido al crecimiento continuo de las capacidades y rendimiento de los sistemas de cómputo debido a dos tipos de cambios: tecnológicos y arquitecturales. Dentro de los cambios arquitecturales, el más destacado es, sin lugar a dudas, la aparición de las computadoras paralelas.</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">La programación paralela involucra muchos aspectos que no se presentan en la programación convencional (secuencial). El diseño de un programa paralelo tiene que considerar, entre otras cosas, el tipo de arquitectura sobre el cual se va a ejecutar el programa, las necesidades de tiempo y espacio de la aplicación, el modelo de programación paralela adecuado para implantar la aplicación y la forma de coordinar y comunicar diferentes procesadores para que trabajen juntos en la resolución de un problema. En cuanto a las diferentes arquitecturas, las más frecuentes son la <i>malla </i>bidimensional (<i>grid</i>), el <i>árbol </i>y el <i>hipercubo o cubo n </i>— <i>dimensional. </i>Todas ellas son casos particulares de grafos, cuyos vértices representan los procesadores y cuyos ejes representan las conexiones físicas entre ellos, por lo que la teoría general de grafos es muy útil en su estudio.</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Si se tiene un algoritmo paralelo diseñado para una cierta arquitectura, por ejemplo de malla, y se dispone de una máquina con otra arquitectura, digamos de hipercubo,</font> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">para ejecutarlo, se debe seleccionar una subred (o subgrafo) del hipercubo que constituya una malla y ejecutar el algoritmo sólo en los procesadores que componen la subred, sin necesidad de modificarlo. Este proceso se conoce como <i>inmersión de la malla en el hipercubo.</i></font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Los hipercubos, o <i>cubos n </i>— <i>dimensionales, </i>son utilizados en muchos algoritmos paralelos por sus ventajas a la hora de enviar mensajes entre procesadores en el menor tiempo posible, por ello en la presente propuesta se ha tomado como la arquitectura destino para la inmersión de árboles binarios completos (<i>CBT</i>), que son estructuras bidimensionales y, por tanto, más simples y más comprensibles.</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Las máquinas paralelas constan de varios procesadores interconectados entre sí mediante una red fija a través de la cual intercambian la información necesaria para la ejecución de los programas. Un computador paralelo puede definirse entonces como un <i>&quot;conjunto de procesadores de capacidades comparables, cooperando en la ejecución de una tarea, bajo el control de un único sistema operativo, en el que se ejecuta más de un cómputo al mismo tiempo en varios procesadores&quot; </i>[1].</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Partiendo del hecho que un computador paralelo se puede reducir a un conjunto de elementos que cooperan para lograr un fin común, es evidente que ha de existir un medio, la red de interconexión, que facilite el intercambio de información. Una red de interconexión estática es aquella cuya topología (anillo, malla, árbol, hipercubo, etc..) queda definida y establecida durante la construcción de la máquina paralela [3].</font></p>     <p align="justify">&nbsp;</p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b>2.&nbsp; &nbsp; Definiciones</b></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Topología árbol</b></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Los árboles son grafos no direccionados, acíclicos y conectados. Si se elige un nodo para distinguirlo y llamarlo raíz, se dice que el árbol está enraizado. Los <b>árboles enraizados </b>constituyen una clase muy importante de grafos para la comunicación, por su estructura jerárquica, en la que se tiene como principal al vértice raíz, mientras todos los demás son sus &quot;descendientes&quot;. A los vértices que están a distancia 1 de la raíz se los conoce como sus <b>hijos </b>y se dice que la raíz es su <b>padre. </b>Esta relación se extiende a todos los vértices del árbol. Sólo la raíz no tiene padre y los vértices que no tienen hijos se llaman vértices o nodos hoja. Se conocen como nodos interiores a los que tienen padre y al menos un hijo. El <b>nivel </b>de un nodo es el número de nodos del camino que lleva desde éste hasta la raíz (sin incluirse a sí mismo). La <b>altura </b>de un árbol es el máximo de los niveles presentes en él o -si se prefiere- la máxima de todas las distancias entre la raíz y los nodos hoja.</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">En un árbol binario completo (<i>CBT </i>por sus siglas en inglés), los nodos interiores tienen exactamente dos hijos (hijo izquierdo e hijo derecho) y todos los nodos hoja están al mismo nivel. Un <i>BCT </i>de altura <i>k </i>se conoce como <i>BCT<sub>k</sub> </i>y puede definirse recursivamente de la siguiente manera:</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Definición 1. </b><i>Un BCT<sub>&#954;</sub>. consta de Raíz, subárbol izquierdo y subárbol derecho. La Raíz es un vértice y los subárboles izquierdo y derecho son árboles binarios completos de altura k </i>— 1. <i>Si k = 0, el BCT</i><sub>0</sub><i> consta de un solo vértice que será la raíz.</i></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Según esta definición, es fácil construir el <i>BCT<sub>&#954;</sub> </i>a partir de un vértice <i><font face="Georgia, Times New Roman, Times, serif">v</font> </i>y de dos <i>BCT<sub>&#954;</sub></i><sub>-1</sub><i>, </i>haciendo que la raíz del primer <i>BCT<sub>&#954;-</sub></i><sub>1</sub> sea el hijo izquierdo de<i><font face="Georgia, Times New Roman, Times, serif"> v </font></i>y la raíz del segundo <i>BCT<sub>&#954;</sub></i><sub>-1</sub> sea el hijo derecho de <i><font face="Georgia, Times New Roman, Times, serif">v</font>.</i></font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Las propiedades que presentan los árboles binarios completos de altura <i>k</i> (<i>CBT<sub>&#954;</sub></i>) son:</font></p>     <blockquote>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">&#9632; Número de nodos: 2<sup></sup><i><sup>k+</sup></i><sup>1</sup><i> — </i>1</font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">&#9632; Profundidad: <i>k</i></font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">&#9632; Diámetro: 2<i>&#954;</i></font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">&#9632; Ancho de bisección: 1</font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">&#9632; Número máximo de ejes por nodo: 3</font></p> </blockquote>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">En el presente campo, se utiliza la siguiente forma de nombrar los nodos de una árbol binario completo:</font></p>     <p align="center"><img src="/img/revistas/ran/v2n3/a06_figura_01.gif" width="447" height="250"></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Para la presente propuesta se requiere recorrer el <i>CBT, </i>visitando sistemáticamente todos los nodos del árbol. De las varias formas de recorrido de árboles, que difieren solamente en el orden en que se visitan los nodos, se ha elegido el recorrido <b>pre-orden, </b>que se define mediante una simple regla recursiva.: &quot;visitar la raíz, después el subárbol izquierdo y a continuación el subárbol derecho&quot;.</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Topología hipercubo <i>(cubo n-dimensional)</i></b></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Definición 2. </b><i>El hipercubo se define recursivamente en términos del producto cartesiano de grafos como sigue:</i></font></p>     <p align="center"><img src="/img/revistas/ran/v2n3/a06_ecuacion_01.gif" width="208" height="48"></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><i>donde K<sub>n</sub> es el grafo completo de orden n.</i></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">También en este caso, a partir de dos hipercubos de dimensión <i>k</i> — 1<i>, </i>Q<i><sub>&#954;</sub></i><sub>-1</sub>, se puede construir un hipercubo de dimensión <i>k, </i>Q<i><sub>&#954;</sub></i>, enlazando con un eje cada vértice del primer hipercubo con un vértice del segundo hipercubo.</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Según la definición de grafos isomorfos</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Dos grafos <i>G</i><sub>1</sub> y <i>G</i><sub>2</sub> son grafos isomorfos, si existe una función biyectiva &fnof; : <i>V</i>(<i>G</i><sub>1</sub>) &rarr; <i>V</i>(<i>G</i><sub>2</sub>), tal que, si (<i><font face="Georgia, Times New Roman, Times, serif">v</font><sub>i</sub>,<font face="Georgia, Times New Roman, Times, serif">v</font><sub>j</sub></i>) </font><font face="Verdana, Arial, Helvetica, sans-serif">&isin;</font><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> <i>E</i>(<i>G</i><sub>1</sub>) <img src="/img/revistas/ran/v2n3/flecha_doble.gif" width="13" height="9"> (&fnof;(<font face="Verdana, Arial, Helvetica, sans-serif" size="2"><i><font face="Georgia, Times New Roman, Times, serif">v</font></i></font><sub>i</sub>), &fnof;(<font face="Verdana, Arial, Helvetica, sans-serif" size="2"><i><font face="Georgia, Times New Roman, Times, serif">v</font></i></font><sub>j</sub>)) </font><font face="Verdana, Arial, Helvetica, sans-serif">&isin;</font><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> <i>E</i>(<i>G</i><sub>2</sub>).</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">un <i>cubo n </i>— <i>dimensional </i>Q<sub><i>n</i></sub> podría definirse también de la siguiente manera:</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Definición 3. </b><i>Un hipercubo es isomorfo a un grajo G con </i>2<sup>n</sup><i> vértices, cada uno de los cuales está etiquetado con una cadena de n- dígitos binarios, de manera tal que dos nodos son adyacentes si y solamente si sus cadenas correspondientes varían en un solo dígito.</i></font></p>     <p align="center"><img src="/img/revistas/ran/v2n3/a06_figura_02.gif" width="412" height="190"></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Las propiedades fundamentales de los <i>cubos n </i>— <i>dimensionales </i>son:</font></p>     <blockquote>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">&#9632; El número de vértices de <i>Q<sub>n</sub> </i>es 2<sup><i>n</i></sup>.</font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">&#9632; El número de ejes de <i>Q<sub>n</sub> </i>es <i>n</i>2<i><sup>n</sup></i><sup>-1</sup>.</font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">&#9632; Q<i><sub>n</sub></i> es un grafo regular de grado <i>n.</i></font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">&#9632; <i>Q<sub>n</sub> </i>es un grafo bipartito.</font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">&#9632; <i>Q<sub>n</sub> </i>es un grafo hamiltoniano con circuito para n&#8805;2.</font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">&#9632; El diámetro de <i>Q<sub>n</sub> </i>es <i>n.</i></font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">&#9632; <i>Q<sub>n</sub> </i>es un grafo conectado.</font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">&#9632; Ancho de bisección es 2<i><sup>k</sup></i><sup>-1</sup> [3].</font></p> </blockquote>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Las propiedades de los hipercubos los convierten en una buena opción para constituirse en la arquitectura preferida de las máquinas paralelas de fines generales:</font></p>     <blockquote>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">1.&nbsp; &nbsp; El hecho de que <i>Q<sub>n</sub> </i>pueda ser definido recursivamente como el producto, <i>Q<sub>n</sub> = Q<sub>n</sub></i><sub>-1</sub><i>K</i><sub>2</sub><i>, </i>sugiere que un hipercubo puede utilizar la estrategia dividir-y-vencer. Ciertos algoritmos, tales como el Bitonic Sort (Ordenación) y el FFT (Transformada Rápida de Fourier) se pueden poner en ejecución eficientemente en una red hipercubo, en la cual los procesadores se comunican sólo entre pares de adyacentes.</font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">2.&nbsp; &nbsp; El hecho de que <i>Q<sub>n</sub> </i>sea homogéneo (dado cualquier par de nodos <i>p </i>y <i>q, </i>existe un automorfismo <i>&#963; </i>de <i>Q<sub>n</sub> </i>para el cual <i>&#963; </i>(<i>p</i>)<i> =</i> <i>q</i>) permite que los algoritmos sean escritos de tal manera que, si se asume que un cierto nodo tiene un rol asignado, el cubo puede ser después rotado de modo que cualquier otro nodo deseado asuma ese papel.</font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">3.&nbsp; &nbsp; El hecho de que <i>Q<sub>n</sub> </i>tenga diámetro <i>n, </i>relativamente pequeño para el número de nodos que posee, implica que ningún mensaje entre dos procesadores arbitrarios necesite recorrer más de <i>n </i>puentes de comunicación (procesadores intermedios).</font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">4.&nbsp; &nbsp;La difusión (un nodo envía la misma información a todos los demás), que es una operación crucial, puede ser implementada en <i>n </i>pasos, a través de la comunicación paralela conocida como &quot;doblando recursivamente&quot;.</font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">5.&nbsp; &nbsp;El hecho de que <i>Q<sub>n</sub> </i>sea <i>n-conectado </i>sugiere que la red tenga un alto grado de <i>tolerancia a fallas.</i></font></p> </blockquote>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Un aspecto importante del uso eficiente de un sistema hipercubo para resolver un problema dado, es que la asignación de subtareas a los distintos procesadores supone costos de comunicación bajos. Las subtareas y sus requisitos de intercomunicación se pueden modelar por un grafo y la asignación de éstas a los procesadores son vistos como una inmersión del grafo de las tareas en el grafo de la <i>red hipercubo.</i></font></p>     <p align="justify">&nbsp;</p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b>3.&nbsp; &nbsp; Inmersión estricta en grafos</b></font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Definición 4. </b><i>Una inmersión (estricta) de un grafo G = </i>(<i>V, E</i>)<i> en un grafo G' = </i>(<i>V', E'</i>),<i> es una aplicación </i><font face="Times New Roman, Times, serif">&#934;</font> : <i>G</i> &larr; <i>G</i>' <i>que consiste en dos aplicaciones:</i></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><font face="Times New Roman, Times, serif">&#934;</font><i><sub>v</sub></i>:<i> V<sub>G</sub> </i>&rarr;<i> V<sub>G'</sub>, inyectiva, </i>(<i>si <font face="Georgia, Times New Roman, Times, serif">u</font></i></font><font face="Verdana, Arial, Helvetica, sans-serif"> &isin; </font><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><i>V<sub>G</sub>, entonces </i>&#934;<sub>V</sub>(<i><font face="Georgia, Times New Roman, Times, serif">u</font></i>) </font><font face="Verdana, Arial, Helvetica, sans-serif">&isin;</font><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> <i>V<sub>G'</sub> </i>)<i> y</i></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><font face="Times New Roman, Times, serif">&#934;</font><i><sub>E</sub></i>: <i>E<sub>G</sub> </i>&rarr;<i> E<sub>G'</sub>, que hace corresponder a cada eje </i>(<i><font face="Georgia, Times New Roman, Times, serif">u</font>,<font face="Georgia, Times New Roman, Times, serif">v</font></i>) </font><font face="Verdana, Arial, Helvetica, sans-serif">&isin;</font><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><i> E<sub>G</sub> un eje </i>(<font face="Times New Roman, Times, serif">&#934;</font><i><sub>v</sub></i>(<i><font face="Georgia, Times New Roman, Times, serif">u</font></i><font face="Georgia, Times New Roman, Times, serif"></font>),<font face="Times New Roman, Times, serif"> &#934;</font><i><sub>v</sub></i>(<i><font face="Georgia, Times New Roman, Times, serif">v</font></i><font face="Georgia, Times New Roman, Times, serif"></font>))</font><font face="Verdana, Arial, Helvetica, sans-serif"> &isin;</font><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><i> E<sub>G'</sub></i></font><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><i>.</i></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Definición 5. </b><i>Un grafo G se llama <u>cúbico</u>, si para algún n, existe una inmersión de G en Q<sub>n</sub> y la <u>dimensión cúbica</u> de G, denotada por cd</i>(<i>G</i>), <i>es el menor entero positivo n para el cual G se puede sumergir en Q<sub>n</sub>.</i></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Los investigadores I. Havel y J. Morávek (citados en [2]) han demostrado que un grafo <i>G </i>conectado es inmersible en <i>Q<sub>n</sub> </i>si y sólo si es posible etiquetar todos los ejes de <i>G </i>con un entero i </font><font face="Verdana, Arial, Helvetica, sans-serif">&isin;</font><font face="Verdana, Arial, Helvetica, sans-serif" size="2"> a {1, 2,..., <i>n</i>} de tal manera que cumplan las siguientes condiciones:</font></p>     <blockquote>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">i) Los ejes incidentes en un nodo tienen etiquetas diferentes.</font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">ii) Para todo camino no cíclico en <i>G, </i>existe una etiqueta <i>i </i>que pertenece a {1, 2,..., <i>n</i>}, que aparece en el camino un número impar de veces.</font></p>       <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">iii) Para todo camino cíclico de <i>G, </i>ninguna etiqueta <i>i </i>que pertenece a {1,2,.....<i>,n</i>}</font> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">aparece en el camino un número impar de veces.</font></p> </blockquote>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Sobre esta base se demuestra, por ejemplo, que el grafo <i>K</i><sub>1,<i>m</i></sub> (llamado grafo estrella) de <i>m</i> + 1 nodos es cúbico y <i>cd</i>(<i>K</i><sub>1,<i>m</i></sub>) = <i>m, </i>por tanto <i>K</i><sub>1,<i>m</i></sub> es sumergible en <i>Q<sub>m</sub>. </i>En la <a href="#f3">figura 3</a> se ve un grafo <i>K</i><sub>1,4</sub> inmerso en un <i>Q</i><sub>4</sub>.</font></p>     ]]></body>
<body><![CDATA[<p align="center"><a name="f3"></a><img src="/img/revistas/ran/v2n3/a06_figura_03.gif" width="304" height="390"></p>     <p align="center">&nbsp;</p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b>4.&nbsp; &nbsp; &nbsp;Estrategia de inmersión estricta</b></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">A continuación, se presenta la estrategia propuesta para una inmersión específica de un árbol binario completo de altura <i>n</i> (<i>CBT<sub>n</sub></i>) en un <i>cubo</i> (<i>n + </i>2) — <i>dimensional Q<sub>n+2</sub>.</i></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">En primer lugar se debe determinar que el árbol <i>CBT<sub>n</sub> </i>es inmersible en el <i>cubo </i>(<i>n + </i>2) — <i>dimensional Q<sub>n</sub>+2,  </i>en base a las bases explicadas en el apartado anterior:</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">1&deg; Asignar etiquetas a los ejes de <i>CBT<sub>n</sub> </i>de forma tal que cumplan las condiciones enunciadas en la sección 3, para determinar la existencia del <i>k </i>mínimo que indica la dimensión del <i>cubo k — dimensional Q<sub>k</sub>, </i>en el que se va a sumergir el árbol.</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">En segundo lugar hay que ver cómo puede sumergirse el árbol en el hipercubo:</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">2&deg; Asignar etiquetas a los ejes del <i>cubo </i>(<i>n + </i>2) <i>dimensional Q<sub>n</sub></i>+2, y </font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">3&deg; Construir la función de inmersión <font face="Times New Roman, Times, serif">&#934;</font>.</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">La <a href="#f4">figura 4</a> muestra que el árbol binario completo de nivel 2, <i>CBT</i><sub>2</sub> es inmersible en el <i>cubo </i>4 — <i>dimensional Q</i><sub>4</sub><i>, </i>esto es <i>CBT</i><sub>2</sub> es cúbico y cd(<i>CBT<sub>2</sub></i>) = 4, ya que no podría sumergirse en el hipercubo de dimensión 3.</font></p>     ]]></body>
<body><![CDATA[<p align="center"><a name="f4"></a><img src="/img/revistas/ran/v2n3/a06_figura_04.gif" width="320" height="314"></p>     <p align="center">&nbsp;</p>     <p align="center"><a name="f5"></a><img src="/img/revistas/ran/v2n3/a06_figura_05.gif" width="247" height="124"></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Algoritmo de inmersión estricta</b></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Dados el grafo <i>CBT<sub>n</sub> </i>y el <i>cubo </i>(<i>n + </i>2) — <i>dimensional Q<sub>n</sub>+2</i>;</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">1&deg; <b>Etiquetar los ejes del árbol <i>CBT<sub>n</sub>.</i></b></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Sea v<i><font face="Georgia, Times New Roman, Times, serif"> </font></i>la raíz de un subárbol cualquiera de <i>CBT<sub>n</sub> </i>en el nivel <i>m, </i>(0 &#8804; <i>m </i>&#8804;<i> n</i>) y sean <i>l</i>(<i><font face="Georgia, Times New Roman, Times, serif">v</font></i>) y <i>r</i>(<i><font face="Georgia, Times New Roman, Times, serif">v</font></i>) los hijos izquierdo y derecho de la raíz <i><font face="Georgia, Times New Roman, Times, serif">v</font>. </i>Etiquetar, los ejes que conectan<i><font face="Georgia, Times New Roman, Times, serif"> v </font></i>con sus hijos: </font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Etiq (<font face="Georgia, Times New Roman, Times, serif"><i>v</i></font><i>,r</i>(<i><font face="Georgia, Times New Roman, Times, serif">v</font></i>))<i> = </i></b><i>n <b>- </b>m <b>+ </b></i>2 y<b> Etiq </b>(<i><font face="Georgia, Times New Roman, Times, serif">v</font></i>, <i>l</i>(<i><font face="Georgia, Times New Roman, Times, serif">v</font></i>)) <i>= n - m.</i></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">El etiquetado del árbol <i>CBT<sub>n</sub> </i>cumple con las condiciones enunciadas en la sección 3. Esta aseveración se demuestra por inducción a partir de <i>k = </i>1.</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Prueba</b></font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Supóngase cierto para un árbol <i>CBT<sub>k</sub></i>, con <i>k = m — </i>1. Un árbol <i>CBT<sub>k</sub>. </i>con <i>k = m</i>, es constituido por dos subárboles <i>CBT<sub>k</sub></i><sub>-1</sub><i>, </i>cuyas raíces serán los hijos izquierdo (<i><font face="Georgia, Times New Roman, Times, serif">l</font></i>(<font face="Georgia, Times New Roman, Times, serif"><i>v</i></font>)) y derecho (<i>r</i>(<i><font face="Georgia, Times New Roman, Times, serif">v</font></i>)) de un nuevo vértice <i><font face="Georgia, Times New Roman, Times, serif">v</font>, </i>conectados por dos ejes que deberán ser etiquetados.</font></p>     <p align="center"><img src="/img/revistas/ran/v2n3/a06_figura_06.gif" width="334" height="219"></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Sean los ejes etiquetados como: (<font face="Georgia, Times New Roman, Times, serif"><i>v</i></font>, r(<font face="Georgia, Times New Roman, Times, serif"><i>v</i></font>)) = <i>n — </i>0 + 2 = <i>n + 2 </i>y (<font face="Georgia, Times New Roman, Times, serif"><i>v</i></font>, <i><font face="Georgia, Times New Roman, Times, serif">l</font></i>(<font face="Georgia, Times New Roman, Times, serif"><i>v</i></font>)) <i>= n — </i>0 = <i>n. </i>El subárbol cuya raíz es <i>r</i>(<font face="Georgia, Times New Roman, Times, serif"><i>v</i></font>)<i>, </i>cumple con las condiciones de la sección 3 (por hipótesis de inducción), y la etiqueta de (<font face="Georgia, Times New Roman, Times, serif"><i>v</i></font>,<i>r</i>(<font face="Georgia, Times New Roman, Times, serif"><i>v</i></font>))<i> = n + </i>2 es un valor nuevo que no se repite en todo el árbol, por lo que, cualquier camino nuevo (que contenga a</font> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">este eje), cumple todavía las condiciones estipuladas.</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Ahora bien, el eje (<font face="Georgia, Times New Roman, Times, serif"><i>v</i></font>, <i><font face="Georgia, Times New Roman, Times, serif">l</font></i>(<font face="Georgia, Times New Roman, Times, serif"><i>v</i></font>))<i> = n </i>podría contradecir a las condiciones requeridas; sin embargo este valor, por el algoritmo de etiquetado, se presenta en el nivel 2 un número par de veces, ya que el árbol es binario completo, con lo que se garantiza el cumplimiento de las condiciones mencionadas.</font></p>     <p align="center"><img src="/img/revistas/ran/v2n3/a06_figura_07.gif" width="428" height="208"></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">2&deg; <b>Etiquetar los ejes del Q<sub><i>n</i>+2</sub>.</b></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Para etiquetar los ejes de Q<sub><i>n</i>+2</sub>, cada nodo debe ser representado por una cadena de (<i>n + </i>2) <i>bits, </i>de manera que el eje incidente a 2 nodos pueda ser enumerado (etiquetado) por la posición en que difieren las respectivas cadenas, lo que conduce a que los ejes incidentes a un nodo se etiqueten desde 1, 2, 3,..., <i>n + </i>2.</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">3&deg; <b>Construir la función de inmersión</b></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Para construir la función de inmersión, los nodos de <i>Q<sub>n+2</sub>, </i>son representados como una cadena de (<i>n + </i>2) <i>bits. </i>Sea el recorrido del árbol <i>CBT<sub>n</sub> </i>en <i>pre — orden.</i></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">La imagen de la raíz puede ser asignada a cualquier nodo del cubo <i>Q<sub>n+2</sub>. </i></font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Para determinar la imagen del vértice <i><font face="Georgia, Times New Roman, Times, serif">v</font> </i>a ser visitado, se debe:</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">i) Identificar la imagen de su padre (que ya fue determinado), es decir, <i>g</i>(<i><font face="Georgia, Times New Roman, Times, serif">v</font></i>) = <i>q<sub>¡</sub></i></font> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">que pertenece a <i>Q<sub>n+2</sub>. </i></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">ii) Identificar la etiqueta de<i><font face="Georgia, Times New Roman, Times, serif"> v </font></i>con su padre, <i>e</i>(<i><font face="Georgia, Times New Roman, Times, serif">v</font></i>).</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">iii) Identificar <i>q<sub>j</sub>, </i>nodo adyacente a <i>q<sub>i</sub></i>, que difiere de los bits de este, en la posición <i>e</i>(<font face="Georgia, Times New Roman, Times, serif"><i>v</i></font>) (dicho nodo es único por las propiedades de <i>Q<sub>n</sub></i><sub>+2</sub>).</font></p>     <p align="center"><img src="/img/revistas/ran/v2n3/a06_figura_08.gif" width="214" height="212"></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">iv) <i>g</i>(<i><font face="Georgia, Times New Roman, Times, serif">v</font></i>)<i> =</i></font> <font face="Verdana, Arial, Helvetica, sans-serif" size="2"><i>q<sub>j</sub></i></font></p>     <p align="center"><img src="/img/revistas/ran/v2n3/a06_figura_09.gif" width="332" height="272"></p>     <p align="center">&nbsp;</p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b>5.&nbsp; &nbsp; &nbsp;Conclusiones</b></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">1.&nbsp;El algoritmo de inmersión estricta desarrollado, sumerge un árbol binario completo en un hipercubo, ya que cumple las condiciones que Livinstone y Scout demostraron suficientes. Esto permite traducir los algoritmos creados para la arquitectura de árbol binario completo a algoritmos que funcionen sobre topología de hipercubo.</font></p>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">2.&nbsp;El hecho de que algunos miembros de varias clases importantes de grafos puedan verse como subgrafos de <i>Q<sub>n</sub> </i>sugiere que los hipercubos pueden comportarse como esas clases ellos sin un aumento considerable de recursos, si los algoritmos diseñados para esta arquitectura se pueden adaptar fácilmente al hipercubo.</font></p>     <p align="justify">&nbsp;</p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><b>Referencias</b></font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">[1] V. Kumar, A. Grama, A. Gupta, y G. Karypis. <i>Introduction to Parallel Computing. </i>Benjamin Cummings Publishing Co., Redwood City, California, 1994.</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">[2] M. Livingston y Q. F. Stout. Embeddings in hypercubes. <i>Mathematical and Computational Modelling, </i>11:222-227, 1988.</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">[3] Ricarda Tola P. Un estudio sobre cubos n-dimensionales. Tesis de Licenciatura, Universidad Autónoma Tomás Frías, 1999.</font></p>     <p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">[4] Ricarda Tola P. Inmersión en hipercubos. Tesis de maestría, Universidad Autónoma Tomás Frías, 2002.</font></p>     <!-- ref --><p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">[5] Javier Cañas R. <i>Apuntes de Computación Paralela. </i>Departamento de Informática, UTFSM, 1998.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=815608&pid=S1683-0789200300020000600005&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">[6] Robert Sedgewick. <i>Algoritmos en C++. </i>Addison - Wesley de Santos, 1994.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=815609&pid=S1683-0789200300020000600006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><p align="justify">&nbsp;</p>     ]]></body>
<body><![CDATA[ ]]></body><back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Kumar]]></surname>
<given-names><![CDATA[V.]]></given-names>
</name>
<name>
<surname><![CDATA[Grama]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Gupta]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
<name>
<surname><![CDATA[Karypis]]></surname>
<given-names><![CDATA[G.]]></given-names>
</name>
</person-group>
<source><![CDATA[Introduction to Parallel Computing]]></source>
<year>1994</year>
<publisher-loc><![CDATA[Redwood City, California ]]></publisher-loc>
<publisher-name><![CDATA[Benjamin Cummings Publishing Co.]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Livingston]]></surname>
<given-names><![CDATA[M.]]></given-names>
</name>
<name>
<surname><![CDATA[Stout]]></surname>
<given-names><![CDATA[Q.F.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Embeddings in hypercubes]]></article-title>
<source><![CDATA[Mathematical and Computational Modelling]]></source>
<year>1988</year>
<volume>11</volume>
<page-range>222-227</page-range></nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Tola P]]></surname>
<given-names><![CDATA[Ricarda]]></given-names>
</name>
</person-group>
<source><![CDATA[Un estudio sobre cubos n-dimensionales]]></source>
<year>1999</year>
</nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Tola P]]></surname>
<given-names><![CDATA[Ricarda]]></given-names>
</name>
</person-group>
<source><![CDATA[Inmersión en hipercubos]]></source>
<year>2002</year>
</nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Cañas R.]]></surname>
<given-names><![CDATA[Javier]]></given-names>
</name>
</person-group>
<source><![CDATA[Apuntes de Computación Paralela]]></source>
<year>1998</year>
<publisher-name><![CDATA[Departamento de Informática, UTFSM]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Sedgewick]]></surname>
<given-names><![CDATA[Robert]]></given-names>
</name>
</person-group>
<source><![CDATA[Algoritmos en C++]]></source>
<year>1994</year>
<publisher-name><![CDATA[Addison - Wesley de Santos]]></publisher-name>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
