Proyecto Fin de Carrera Jónathan Heras Vicente

224
UNIVERSIDAD DE LA RIOJA Facultad de Ciencias, Estudios Agroalimentarios e Informática PROYECTO FIN DE CARRERA Ingeniería Técnica en Informática de Gestión Cálculo en paralelo de grupos de homología con gridMathematica Alumno: Jónathan Heras Vicente Director: Luis Javier Hernández Paricio Codirectora: María Teresa Rivas Rodriguez Logroño, 10 (Diciembre, 2007)

description

descripcion

Transcript of Proyecto Fin de Carrera Jónathan Heras Vicente

  • UNIVERSIDAD DE LA RIOJA

    Facultad de Ciencias, Estudios Agroalimentarios e Informtica

    PROYECTO FIN DE CARRERA

    Ingeniera Tcnica en Informtica de Gestin

    Clculo en paralelo de grupos de homologa con gridMathematica

    Alumno: Jnathan Heras Vicente

    Director: Luis Javier Hernndez Paricio

    Codirectora: Mara Teresa Rivas Rodriguez

    Logroo, 10 (Diciembre, 2007)

  • AgradecimientosQuiero agradecer por me-dio de estas lneas a todasaquellas personas que handedicado parte de su tiempo

    a hacerposible larealiza-

    cin deeste pro-yecto. Loprimero ami madrepor todoel apoyo

    que me ha dado en todoslos momentos de mi vi-da. A mi familia por es-tar siem-pre ahdndome animo. Alos amigos que estnsiempre en los malosy en losbuenos

    momentos. A los profe-sores Luis Javier Hernn-dez, Mara Teresa Rivasy Julio Rubio que me han

    ayudado a que esteproyecto sea unarealidad. A Jose Anto-nio Martinez por la ayudaprestada con el grid de la

    universidad. En ge-neral a todoslos profeso-

    res y los compae-ros de la universidad ya

    que estos aos estn siendolos mejores de mi vida.A todos vosotrosmuchas gracias.

  • II

    ResumenLos algoritmos desarrollados en el presente proyecto fin de carrera estudian el

    clculo de homologa de complejos cbicos tanto en local como en paralelo. Para laparalelizacin utilizaremos el gridMathematica de la Universidad de la Rioja.

    El captulo de Anlisis se centra en una descripcin detallada de los conceptos ma-temticos a aplicar.

    Los captulos de Diseo y Diseo en Paralelo mostraremos los algoritmos que se van aaplicar para realizar el clculo de homologa.

    En el captulo de Implementacin se muestra la forma en la que se han construidolos algoritmos (tanto de manera local, como en paralelo) en Mathematica.

    El captulo de Pruebas muestra los tests realizados para verificar el correcto funcio-namiento de nuestros algoritmos.

    Se ha conseguido desarrollar algoritmos en paralelo que mejoran sustancialmente lostiempos de ejecucin de los mtodos locales, estos resultados se muestran en el captu-lo de Anlisis de Resultados.

    Al final del proyecto se incluyen varios anexos que son de gran utilidad para com-prender el proyecto.

    Palabras ClaveHomologa, Forma Normal de Smith, Paralelizacin.

  • ndice general

    ndice general III

    ndice de figuras VII

    ndice de tablas XIII

    1. Documento de Objetivos del Proyecto 11.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3. Definicin e Inters del Proyecto . . . . . . . . . . . . . . . . . . . . 21.4. Descripcin del Proyecto . . . . . . . . . . . . . . . . . . . . . . . . 31.5. Alcance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.6. Tecnologa y Arquitectura . . . . . . . . . . . . . . . . . . . . . . . 4

    1.6.1. Tecnologa . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.6.2. Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    1.7. Recursos Humanos y Comunicacin . . . . . . . . . . . . . . . . . . 61.7.1. Recursos Humanos . . . . . . . . . . . . . . . . . . . . . . . 61.7.2. Comunicacin . . . . . . . . . . . . . . . . . . . . . . . . . 6

    1.8. Metodologa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.9. Planificacin del Proyecto . . . . . . . . . . . . . . . . . . . . . . . 7

    1.9.1. Estructura de Descomposicin del Trabajo . . . . . . . . . . 71.9.2. Listado de Actividades . . . . . . . . . . . . . . . . . . . . . 71.9.3. Estimaciones Globales . . . . . . . . . . . . . . . . . . . . . 101.9.4. Calendario de Trabajo . . . . . . . . . . . . . . . . . . . . . 11

    1.10. Riesgos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    2. Anlisis 152.1. Descripcin del Problema . . . . . . . . . . . . . . . . . . . . . . . . 15

    2.1.1. Conjuntos Cbicos . . . . . . . . . . . . . . . . . . . . . . . 152.1.2. Cadenas Cbicas . . . . . . . . . . . . . . . . . . . . . . . . 182.1.3. El operador borde de cadenas cbicas . . . . . . . . . . . . . 192.1.4. Homologa de conjuntos cbicos . . . . . . . . . . . . . . . . 212.1.5. Componentes conexas y H0(X) . . . . . . . . . . . . . . . . 242.1.6. Colapsos elementales . . . . . . . . . . . . . . . . . . . . . . 26

    III

  • IV NDICE GENERAL

    2.1.7. Conjuntos cbicos acclicos . . . . . . . . . . . . . . . . . . 292.2. Modelo de Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . 30

    2.2.1. Diagrama de Casos de Uso . . . . . . . . . . . . . . . . . . . 312.2.2. Actores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    3. Diseo 353.1. Estructura del algoritmo . . . . . . . . . . . . . . . . . . . . . . . . 353.2. Algoritmos bsicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.3. Algoritmo Forma Escalada por filas . . . . . . . . . . . . . . . . . . 383.4. Algoritmo Kernel-Imagen . . . . . . . . . . . . . . . . . . . . . . . . 413.5. Algoritmo Forma Normal de Smith . . . . . . . . . . . . . . . . . . . 423.6. Algoritmo Solve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.7. Algoritmo grupo-cociente . . . . . . . . . . . . . . . . . . . . . . . . 483.8. Algoritmo principal . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    4. Diseo en Paralelo 534.1. Primera Idea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.2. Paralelizando a bajo nivel . . . . . . . . . . . . . . . . . . . . . . . . 544.3. ParalelizandoMinNonZero . . . . . . . . . . . . . . . . . . . . . . . 554.4. Mejorando Smith . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564.5. Smith en lista de Matrices . . . . . . . . . . . . . . . . . . . . . . . . 58

    5. Implementacin 655.1. Implementacin Local . . . . . . . . . . . . . . . . . . . . . . . . . 65

    5.1.1. Gestionando la Salida de Resultados . . . . . . . . . . . . . . 655.1.2. Estructura de Paquete . . . . . . . . . . . . . . . . . . . . . . 685.1.3. Reservando Variables . . . . . . . . . . . . . . . . . . . . . . 695.1.4. Reduciendo Smith . . . . . . . . . . . . . . . . . . . . . . . 72

    6. Implementacin en Paralelo 736.1. Nuestro gridMathematica . . . . . . . . . . . . . . . . . . . . . . . . 736.2. Implementando la Primera Idea . . . . . . . . . . . . . . . . . . . . . 736.3. Implementando Paralelizacin a bajo nivel . . . . . . . . . . . . . . . 746.4. Seleccionando el kernel remoto . . . . . . . . . . . . . . . . . . . . . 796.5. Usando variables remotas . . . . . . . . . . . . . . . . . . . . . . . . 846.6. ImplementandoMinNonZero . . . . . . . . . . . . . . . . . . . . . . 866.7. Implementando Mejorando Smith . . . . . . . . . . . . . . . . . . . 866.8. Implementando Smith en listas de Matrices . . . . . . . . . . . . . . 89

    7. Pruebas 937.1. Pruebas locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

    7.1.1. Test para calcular la forma escalada por filas . . . . . . . . . 937.1.2. Test para calcular el kernel y la imagen . . . . . . . . . . . . 947.1.3. Test para calcular la Forma Normal de Smith v.1 . . . . . . . 947.1.4. Test para calcular la Forma Normal de Smith v.2 . . . . . . . 947.1.5. Test para resolver ecuaciones con coeficientes enteros . . . . 94

  • NDICE GENERAL V

    7.1.6. Test para calcular el grupo cociente . . . . . . . . . . . . . . 957.1.7. Conclusiones de las pruebas locales . . . . . . . . . . . . . . 95

    7.2. Pruebas en Paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . 957.2.1. Pruebas de Conexin . . . . . . . . . . . . . . . . . . . . . . 957.2.2. Pruebas de Primera Idea . . . . . . . . . . . . . . . . . . . . 967.2.3. Pruebas de Paralelizacin a bajo nivel . . . . . . . . . . . . . 977.2.4. Cmo detectar errores? . . . . . . . . . . . . . . . . . . . . 977.2.5. Pruebas ParalelizacinMinNonZero . . . . . . . . . . . . . . 977.2.6. Pruebas Mejorando Smith . . . . . . . . . . . . . . . . . . . 987.2.7. Pruebas Smith en listas . . . . . . . . . . . . . . . . . . . . . 98

    7.3. Pruebas de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

    8. Anlisis de Resultados 1018.1. Arrays o Listas? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1018.2. Resultados de la Primera Idea . . . . . . . . . . . . . . . . . . . . . . 1038.3. Resultados de Implementacin bsica . . . . . . . . . . . . . . . . . 1048.4. Resultados SmithForm vs Smith . . . . . . . . . . . . . . . . . . . . 1058.5. Resultados Paralelizacin MinNonZero . . . . . . . . . . . . . . . . . 1088.6. Resultados Mejorando Smith . . . . . . . . . . . . . . . . . . . . . . 1098.7. Resultados Smith en listas . . . . . . . . . . . . . . . . . . . . . . . 1118.8. Conclusiones de los Resultados . . . . . . . . . . . . . . . . . . . . . 111

    9. Gestin del Proyecto 1159.1. Gestin real del proyecto . . . . . . . . . . . . . . . . . . . . . . . . 115

    9.1.1. Duracin real de Tareas y Actividades . . . . . . . . . . . . . 1159.1.2. Comparativa Absoluta entre tiempo estimado y tiempo real . . 1179.1.3. Comparativa Relativa entre tiempo estimado y tiempo real . . 1189.1.4. Motivos del desfase . . . . . . . . . . . . . . . . . . . . . . . 118

    10. Conclusin y futuras actuaciones 11910.1. Conclusiones Generales . . . . . . . . . . . . . . . . . . . . . . . . . 11910.2. Futuras Actuaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

    11. Glosario de Trminos 123

    A. Anexo 1 Por qu Latex? 125A.1. Latex vs Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

    B. Anexo 2 Acceso al gridMathematica de la UR 129B.1. Acceso externo con Windows . . . . . . . . . . . . . . . . . . . . . . 129B.2. Acceso Interno con Windows . . . . . . . . . . . . . . . . . . . . . . 133B.3. Acceso interno con Linux . . . . . . . . . . . . . . . . . . . . . . . . 136B.4. Instalacin cygwin . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

  • VI NDICE GENERAL

    C. Anexo 3 Gua gridMathematica de la UR 143C.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143C.2. Conexin y Primeros Pasos . . . . . . . . . . . . . . . . . . . . . . . 143C.3. Evaluacin en Paralelo . . . . . . . . . . . . . . . . . . . . . . . . . 144

    C.3.1. Enviando comandos a los kernels remotos . . . . . . . . . . . 145C.3.2. Evaluacin en Paralelo de Expresiones . . . . . . . . . . . . 147

    C.4. Concurrencia: Manejando Procesos en Paralelo . . . . . . . . . . . . 148C.4.1. Iniciando y Esperando procesos . . . . . . . . . . . . . . . . 148C.4.2. Latencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151C.4.3. El Scheduler . . . . . . . . . . . . . . . . . . . . . . . . . . 152

    C.5. Definiciones Remotas . . . . . . . . . . . . . . . . . . . . . . . . . . 153C.6. Memoria Virtual Compartida . . . . . . . . . . . . . . . . . . . . . . 156

    C.6.1. Memoria compartida vs Memoria Distribuida . . . . . . . . . 156C.6.2. Sincronizacin . . . . . . . . . . . . . . . . . . . . . . . . . 156

    D. Anexo 4 Algoritmos Disponibles 163

    E. Anexo 5 Fundamentos de Paralelismo 189E.1. Qu es la computacin en paralelo? . . . . . . . . . . . . . . . . . . 189E.2. Beneficios de la computacin en Paralelo . . . . . . . . . . . . . . . 189

    F. Anexo 6 Introduccin a gridMathematica 191F.1. Estructura de gridMathematica . . . . . . . . . . . . . . . . . . . . . 191F.2. Caractersticas principales de gridMathematica . . . . . . . . . . . . 192

    F.2.1. Instalacin de gridMathematica . . . . . . . . . . . . . . . . 193

    G. Anexo 7 Manual de Usuario 195G.1. Manual para el usuario local . . . . . . . . . . . . . . . . . . . . . . 195G.2. Manual para el usuario paralelo . . . . . . . . . . . . . . . . . . . . . 195G.3. Subir Archivos al grid . . . . . . . . . . . . . . . . . . . . . . . . . . 198

    H. Anexo 8 Interfaz de Usuario 201H.1. GUIKit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201H.2. Nuestra Interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

    Bibliografa 205

  • ndice de figuras

    1.1. Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2. WBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.3. Horas empleadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.4. Calendario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    2.1. Ejemplo de cubos elementales en R2 . . . . . . . . . . . . . . . . . . 162.2. Situacin imposible con cubos elementales . . . . . . . . . . . . . . 162.3. Conjunto cbico X R2 . . . . . . . . . . . . . . . . . . . . . . . . 172.4. Cubos elementales ms simples en R2 . . . . . . . . . . . . . . . . . 172.5. Celdas de los cubos elementales ms simples en R2 . . . . . . . . . . 172.6. Descomposicin en celdas de un complejo cbico . . . . . . . . . . . 182.7. Complejo cbico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.8. Cadena con aristas orientadas . . . . . . . . . . . . . . . . . . . . . . 232.9. Cadena con lectura circular . . . . . . . . . . . . . . . . . . . . . . . 242.10. Conjunto cbico X R2 y sus tres componentes conexas . . . . . . 252.11. Conjunto Cbico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.12. Conjunto Cbico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.13. Caras maximales de dimensin 1 . . . . . . . . . . . . . . . . . . . . 262.14. Caras maximales de dimensin 2 . . . . . . . . . . . . . . . . . . . . 262.15. Caras libres de dimensin 0 . . . . . . . . . . . . . . . . . . . . . . . 262.16. Caras libres de dimensin 1 . . . . . . . . . . . . . . . . . . . . . . . 272.17. Conjunto cbico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.18. Conjunto Cbico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.19. Colapsando un conjunto cbico . . . . . . . . . . . . . . . . . . . . . 282.20. Colapsando un conjunto cbico . . . . . . . . . . . . . . . . . . . . . 282.21. Colapsando un conjunto cbico . . . . . . . . . . . . . . . . . . . . . 282.22. Colapsando un conjunto cbico . . . . . . . . . . . . . . . . . . . . . 282.23. Rectngulo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.24. Conjunto cbico con forma de estrella . . . . . . . . . . . . . . . . . 302.25. Conjunto cbico con forma de estrella . . . . . . . . . . . . . . . . . 312.26. Diagrama casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . 32

    3.1. Diagrama de la estructura del algoritmo . . . . . . . . . . . . . . . . 36

    VII

  • VIII NDICE DE FIGURAS

    5.1. RowExchangeOperation . . . . . . . . . . . . . . . . . . . . . . . . 665.2. RowExchangeOperation2 . . . . . . . . . . . . . . . . . . . . . . . . 685.3. Ayuda Smith . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695.4. Problema 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.5. Solucin problema 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 705.6. Smith usando Block . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.7. Smith usando Module . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    6.1. Comando ParallelEvaluate . . . . . . . . . . . . . . . . . . . . . . . 746.2. RowExchangeOperation . . . . . . . . . . . . . . . . . . . . . . . . 756.3. Tiempo Local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756.4. Algoritmo RowExchangeOperation en paralelo . . . . . . . . . . . . 756.5. Tiempo en paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . 766.6. Tiempos RowExchangeOperation matriz 100 100 . . . . . . . . . . 766.7. Tiempos RowExchangeOperation matriz 200 200 . . . . . . . . . . 766.8. 3 Tipos de ejecucin de Formas Normales de Smith . . . . . . . . . . 776.9. Seccin del Algoritmo RowExchangeOperation en Paralelo . . . . . . 776.10. Mejorando Algoritmo RowExchangeOperation en Paralelo . . . . . . 786.11. Mejorando Algoritmo RowExchangeOperation en Paralelo 2 . . . . . 786.12. Usando Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796.13. Eligiendo kernel de forma aleatoria 1 . . . . . . . . . . . . . . . . . . 806.14. Eligiendo kernel de forma aleatoria 2 . . . . . . . . . . . . . . . . . . 806.15. Usando Array 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816.16. Resto de dividir 16 entre 5 . . . . . . . . . . . . . . . . . . . . . . . 816.17. Eligiendo kernel de forma iterativa 1 . . . . . . . . . . . . . . . . . . 816.18. Eligiendo kernel de forma subjetiva . . . . . . . . . . . . . . . . . . 826.19. Eligiendo kernel de forma aleatoria 3 . . . . . . . . . . . . . . . . . . 836.20. Eligiendo kernel de forma iterativa 2 . . . . . . . . . . . . . . . . . . 836.21. Eligiendo kernel mediante colas . . . . . . . . . . . . . . . . . . . . 846.22. Uso de Variables locales . . . . . . . . . . . . . . . . . . . . . . . . 856.23. FragmentoMinNonZero en paralelo . . . . . . . . . . . . . . . . . . 866.24. Algoritmo Elimina . . . . . . . . . . . . . . . . . . . . . . . . . . . 876.25. Primera iteracin de Mejorando Smith . . . . . . . . . . . . . . . . . 886.26. Fragmento del algoritmo smithmatrices . . . . . . . . . . . . . . . . 91

    7.1. Prueba de Conexin al grid . . . . . . . . . . . . . . . . . . . . . . . 967.2. Traza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

    8.1. Comparativa Array y Lista en SmithForm . . . . . . . . . . . . . . . 1028.2. Comparativa Array y Lista en RowEchelon . . . . . . . . . . . . . . . 1038.3. Grfica Send-Receive en RowEchelon . . . . . . . . . . . . . . . . . 1068.4. Grfica Send-Receive en SmithForm . . . . . . . . . . . . . . . . . . 1068.5. Grfica Send-Receive en KernelImage . . . . . . . . . . . . . . . . . 1078.6. Comparativa SmithForm, Smith, IntegerSmithForm, SmithFormSevilla 1088.7. Resultados ParalelizandoMinNonZero . . . . . . . . . . . . . . . . . 1098.8. Primera Iteracin del proceso SmithParalelo . . . . . . . . . . . . . . 110

  • NDICE DE FIGURAS IX

    8.9. SmithParalelo vs Smith . . . . . . . . . . . . . . . . . . . . . . . . . 1108.10. Smith en listas de tamao 5 . . . . . . . . . . . . . . . . . . . . . . . 1118.11. Smith en listas de tamao 10 . . . . . . . . . . . . . . . . . . . . . . 1128.12. Smith en listas de tamao 15 . . . . . . . . . . . . . . . . . . . . . . 1128.13. Smith en listas de tamao 25 . . . . . . . . . . . . . . . . . . . . . . 113

    9.1. Gestin Real del Proyecto . . . . . . . . . . . . . . . . . . . . . . . 1179.2. Comparativa absoluta entre tiempo estimado y tiempo real . . . . . . 1179.3. Comparativa relativa entre tiempo estimado y tiempo real . . . . . . . 118

    B.1. Cygwin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131B.2. Fuentes aadidas a Cygwin . . . . . . . . . . . . . . . . . . . . . . . 131B.3. ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132B.4. Tunneling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132B.5. ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133B.6. Cygwin 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134B.7. Fuentes aadidas Cygwin 2 . . . . . . . . . . . . . . . . . . . . . . . 135B.8. ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135B.9. Tunneling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136B.10. ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136B.11. Instalacin Cygwin 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 138B.12. Instalacin Cygwin 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 138B.13. Instalacin Cygwin 3 . . . . . . . . . . . . . . . . . . . . . . . . . . 139B.14. Instalacin Cygwin 4 . . . . . . . . . . . . . . . . . . . . . . . . . . 139B.15. Instalacin Cygwin 5 . . . . . . . . . . . . . . . . . . . . . . . . . . 140B.16. Instalacin Cygwin 6 . . . . . . . . . . . . . . . . . . . . . . . . . . 140B.17. Instalacin Cygwin 7 . . . . . . . . . . . . . . . . . . . . . . . . . . 141

    C.1. Gua gridMathematica 1 . . . . . . . . . . . . . . . . . . . . . . . . 144C.2. Gua gridMathematica 2 . . . . . . . . . . . . . . . . . . . . . . . . 144C.3. Gua gridMathematica 3 . . . . . . . . . . . . . . . . . . . . . . . . 144C.4. Gua gridMathematica 4 . . . . . . . . . . . . . . . . . . . . . . . . 145C.5. Gua gridMathematica 5 . . . . . . . . . . . . . . . . . . . . . . . . 145C.6. Gua gridMathematica 6 . . . . . . . . . . . . . . . . . . . . . . . . 145C.7. Gua gridMathematica 7 . . . . . . . . . . . . . . . . . . . . . . . . 146C.8. Gua gridMathematica 8 . . . . . . . . . . . . . . . . . . . . . . . . 146C.9. Gua gridMathematica 9 . . . . . . . . . . . . . . . . . . . . . . . . 147C.10.Gua gridMathematica 10 . . . . . . . . . . . . . . . . . . . . . . . . 147C.11.Gua gridMathematica 11 . . . . . . . . . . . . . . . . . . . . . . . . 147C.12.Gua gridMathematica 12 . . . . . . . . . . . . . . . . . . . . . . . . 148C.13.Gua gridMathematica 13 . . . . . . . . . . . . . . . . . . . . . . . . 148C.14.Gua gridMathematica 14 . . . . . . . . . . . . . . . . . . . . . . . . 149C.15.Gua gridMathematica 15 . . . . . . . . . . . . . . . . . . . . . . . . 149C.16.Gua gridMathematica 16 . . . . . . . . . . . . . . . . . . . . . . . . 150C.17.Gua gridMathematica 17 . . . . . . . . . . . . . . . . . . . . . . . . 150C.18.Gua gridMathematica 18 . . . . . . . . . . . . . . . . . . . . . . . . 150

  • X NDICE DE FIGURAS

    C.19.Gua gridMathematica 19 . . . . . . . . . . . . . . . . . . . . . . . . 151C.20.Gua gridMathematica 20 . . . . . . . . . . . . . . . . . . . . . . . . 151C.21.Gua gridMathematica 21 . . . . . . . . . . . . . . . . . . . . . . . . 152C.22.Gua gridMathematica 22 . . . . . . . . . . . . . . . . . . . . . . . . 152C.23.Gua gridMathematica 23 . . . . . . . . . . . . . . . . . . . . . . . . 152C.24.Gua gridMathematica 24 . . . . . . . . . . . . . . . . . . . . . . . . 153C.25.Gua gridMathematica 25 . . . . . . . . . . . . . . . . . . . . . . . . 153C.26.Gua gridMathematica 26 . . . . . . . . . . . . . . . . . . . . . . . . 154C.27.Gua gridMathematica 27 . . . . . . . . . . . . . . . . . . . . . . . . 154C.28.Gua gridMathematica 28 . . . . . . . . . . . . . . . . . . . . . . . . 155C.29.Gua gridMathematica 29 . . . . . . . . . . . . . . . . . . . . . . . . 155C.30.Gua gridMathematica 30 . . . . . . . . . . . . . . . . . . . . . . . . 155C.31.Gua gridMathematica 31 . . . . . . . . . . . . . . . . . . . . . . . . 155C.32.Gua gridMathematica 32 . . . . . . . . . . . . . . . . . . . . . . . . 157C.33.Gua gridMathematica 33 . . . . . . . . . . . . . . . . . . . . . . . . 157C.34.Gua gridMathematica 34 . . . . . . . . . . . . . . . . . . . . . . . . 157C.35.Gua gridMathematica 35 . . . . . . . . . . . . . . . . . . . . . . . . 157C.36.Gua gridMathematica 36 . . . . . . . . . . . . . . . . . . . . . . . . 158C.37.Gua gridMathematica 37 . . . . . . . . . . . . . . . . . . . . . . . . 158C.38.Gua gridMathematica 38 . . . . . . . . . . . . . . . . . . . . . . . . 159C.39.Gua gridMathematica 39 . . . . . . . . . . . . . . . . . . . . . . . . 159C.40.Gua gridMathematica 40 . . . . . . . . . . . . . . . . . . . . . . . . 159C.41.Gua gridMathematica 41 . . . . . . . . . . . . . . . . . . . . . . . . 160C.42.Gua gridMathematica 42 . . . . . . . . . . . . . . . . . . . . . . . . 160C.43.Gua gridMathematica 43 . . . . . . . . . . . . . . . . . . . . . . . . 161

    D.1. Algoritmos disponibles . . . . . . . . . . . . . . . . . . . . . . . . . 164D.2. Ejemplo CheckForDivisibility . . . . . . . . . . . . . . . . . . . . . 165D.3. Ejemplo CheckForDivisibility2 . . . . . . . . . . . . . . . . . . . . . 165D.4. Ejemplo ColumnAdd . . . . . . . . . . . . . . . . . . . . . . . . . . 166D.5. Ejemplo ColumnAddOperation . . . . . . . . . . . . . . . . . . . . . 166D.6. Ejemplo ColumnAddOperation2 . . . . . . . . . . . . . . . . . . . . 167D.7. Ejemplo ColumnExchange . . . . . . . . . . . . . . . . . . . . . . . 167D.8. Ejemplo ColumnExchangeOperation . . . . . . . . . . . . . . . . . . 168D.9. Ejemplo ColumnExchangeOperation2 . . . . . . . . . . . . . . . . . 168D.10.Ejemplo ColumnMultiply . . . . . . . . . . . . . . . . . . . . . . . . 169D.11.Ejemplo ColumnMultiplyOperation . . . . . . . . . . . . . . . . . . 169D.12.Ejemplo ColumnMultiplyOperation2 . . . . . . . . . . . . . . . . . . 170D.13.Ejemplo CreaMatriz . . . . . . . . . . . . . . . . . . . . . . . . . . . 170D.14.Ejemplo Desplaza . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171D.15.Ejemplo EliminaFila . . . . . . . . . . . . . . . . . . . . . . . . . . 171D.16.Ejemplo IntegerInvariantFactors . . . . . . . . . . . . . . . . . . . . 172D.17.Ejemplo KernelImage . . . . . . . . . . . . . . . . . . . . . . . . . . 172D.18.Ejemplo MinNonZero . . . . . . . . . . . . . . . . . . . . . . . . . . 173D.19.Ejemplo MinNonZero2 . . . . . . . . . . . . . . . . . . . . . . . . . 173D.20.Ejemplo MoveMinNonZero . . . . . . . . . . . . . . . . . . . . . . 174

  • NDICE DE FIGURAS XI

    D.21.Ejemplo MoveMinNonZero2 . . . . . . . . . . . . . . . . . . . . . . 174D.22.Ejemplo PartColumnReduce . . . . . . . . . . . . . . . . . . . . . . 175D.23.Ejemplo PartColumnReduce2 . . . . . . . . . . . . . . . . . . . . . 175D.24.Ejemplo PartRowReduce . . . . . . . . . . . . . . . . . . . . . . . . 176D.25.Ejemplo PartRowReduce2 . . . . . . . . . . . . . . . . . . . . . . . 176D.26.Ejemplo PartSmithForm . . . . . . . . . . . . . . . . . . . . . . . . 177D.27.Ejemplo PartSmithForm2 . . . . . . . . . . . . . . . . . . . . . . . . 177D.28.Ejemplo QuotientGroup . . . . . . . . . . . . . . . . . . . . . . . . . 178D.29.Ejemplo RowAdd . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178D.30.Ejemplo RowAddOperation . . . . . . . . . . . . . . . . . . . . . . 179D.31.Ejemplo RowAddOperation2 . . . . . . . . . . . . . . . . . . . . . . 179D.32.Ejemplo RowEchelon . . . . . . . . . . . . . . . . . . . . . . . . . . 180D.33.Ejemplo RowExchange . . . . . . . . . . . . . . . . . . . . . . . . . 180D.34.Ejemplo ColumnExchangeOperation . . . . . . . . . . . . . . . . . . 181D.35.Ejemplo RowExchangeOperation2 . . . . . . . . . . . . . . . . . . . 181D.36.Ejemplo RowMultiply . . . . . . . . . . . . . . . . . . . . . . . . . 182D.37.Ejemplo RowMultiplyOperation . . . . . . . . . . . . . . . . . . . . 182D.38.Ejemplo RowMultiplyOperation2 . . . . . . . . . . . . . . . . . . . 183D.39.Ejemplo RowPrepare . . . . . . . . . . . . . . . . . . . . . . . . . . 183D.40.Ejemplo RowReduce2 . . . . . . . . . . . . . . . . . . . . . . . . . 184D.41.Ejemplo SmallestNonZero . . . . . . . . . . . . . . . . . . . . . . . 184D.42.Ejemplo SmallestNonZero2 . . . . . . . . . . . . . . . . . . . . . . . 185D.43.Ejemplo Smith . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185D.44.Ejemplo SmithDesplazada . . . . . . . . . . . . . . . . . . . . . . . 186D.45.Ejemplo SmithForm . . . . . . . . . . . . . . . . . . . . . . . . . . . 186D.46.Ejemplo SmithMatrices . . . . . . . . . . . . . . . . . . . . . . . . . 187D.47.Ejemplo SmithParalelo . . . . . . . . . . . . . . . . . . . . . . . . . 187D.48.Ejemplo Solve2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

    F.1. Estructura de grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192F.2. Plataformas disponibles . . . . . . . . . . . . . . . . . . . . . . . . . 193

    G.1. Manual usuario paralelo 1 . . . . . . . . . . . . . . . . . . . . . . . 196G.2. Manual usuario paralelo 2 . . . . . . . . . . . . . . . . . . . . . . . 196G.3. Manual usuario paralelo 3 . . . . . . . . . . . . . . . . . . . . . . . 197G.4. Manual usuario paralelo 4 . . . . . . . . . . . . . . . . . . . . . . . 197G.5. Manual usuario paralelo 5 . . . . . . . . . . . . . . . . . . . . . . . 197G.6. Manual usuario paralelo 6 . . . . . . . . . . . . . . . . . . . . . . . 198G.7. Pantalla ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198G.8. Pantalla New File Transfer Window . . . . . . . . . . . . . . . . . . 199G.9. Pantalla New File Transfer Window . . . . . . . . . . . . . . . . . . 199

    H.1. Interfaz de Usuario 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 202H.2. Interfaz de Usuario 2 . . . . . . . . . . . . . . . . . . . . . . . . . . 202H.3. Interfaz de Usuario 3 . . . . . . . . . . . . . . . . . . . . . . . . . . 202H.4. Interfaz de Usuario 4 . . . . . . . . . . . . . . . . . . . . . . . . . . 203

  • XII NDICE DE FIGURAS

    H.5. Interfaz de Usuario 5 . . . . . . . . . . . . . . . . . . . . . . . . . . 203H.6. Interfaz de Usuario 6 . . . . . . . . . . . . . . . . . . . . . . . . . . 203H.7. Interfaz de Usuario 7 . . . . . . . . . . . . . . . . . . . . . . . . . . 203

  • ndice de tablas

    8.1. Array vs Listas en SmithForm . . . . . . . . . . . . . . . . . . . . . . 1028.2. Array vs Listas en RowEchelon . . . . . . . . . . . . . . . . . . . . . 1028.3. ParallelEvaluate aplicado a Smith . . . . . . . . . . . . . . . . . . . 1038.4. ParallelEvaluate aplicado a SmithForm . . . . . . . . . . . . . . . . . 1048.5. ParallelEvaluate aplicado a KernelImage . . . . . . . . . . . . . . . . 1048.6. ParallelEvaluate aplicado a RowEchelon . . . . . . . . . . . . . . . . 1048.7. Send-Receive en RowEchelon . . . . . . . . . . . . . . . . . . . . . 1058.8. Send-Receive en SmithForm . . . . . . . . . . . . . . . . . . . . . . 1058.9. Send-Receive en KernelImage . . . . . . . . . . . . . . . . . . . . . 1058.10. SmithForm vs Smith vs IntegerSmithForm vs SmithFormSevilla . . . 1078.11. Resultados Paralelizando MinNonZero . . . . . . . . . . . . . . . . . 1098.12. Primera Iteracin del proceso SmithParalelo . . . . . . . . . . . . . . 1098.13. SmithParalelo vs Smith . . . . . . . . . . . . . . . . . . . . . . . . . 1108.14. Smith en listas de tamao 5 . . . . . . . . . . . . . . . . . . . . . . . 1118.15. Smith en listas de tamao 10 . . . . . . . . . . . . . . . . . . . . . . 1128.16. Smith en listas de tamao 15 . . . . . . . . . . . . . . . . . . . . . . 1128.17. Smith en listas de tamao 25 . . . . . . . . . . . . . . . . . . . . . . 113

    9.1. Comparativa Gestin-Direccin del Proyecto . . . . . . . . . . . . . 1159.2. Comparativa Iniciacin . . . . . . . . . . . . . . . . . . . . . . . . . 1159.3. Comparativa Investigacin . . . . . . . . . . . . . . . . . . . . . . . 1169.4. Comparativa Diseo . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169.5. Comparativa Implementacin . . . . . . . . . . . . . . . . . . . . . . 1169.6. Comparativa Pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . 1169.7. Comparativa Anlisis de Resultados . . . . . . . . . . . . . . . . . . 116

    F.1. Plataformas disponibles . . . . . . . . . . . . . . . . . . . . . . . . . 194

    XIII

  • Introduccin

    Este proyecto fin de carrera tiene su inicio en una beca de iniciacin a la investiga-cin concedida durante el curso 2006-2007.La motivacin de un trabajo de este estilo es la realizacin de un proyecto con ciertacarga matemtica que permita al alumno el aprendizaje de nuevos conceptos as comode nuevas tecnologas.

    El resultado final ser una serie de algoritmos capaces de trabajar en paralelo que pue-den ser utilizados para el clculo de homologa de complejos cbicos. Esto es til parael departamento ya que tienen diversas lneas de investigacin en este sentido.

    XV

  • Captulo 1

    Documento de Objetivos delProyecto

    El Documento de Objetivos de Proyecto (DOP) es un documento muy importanteen cualquier proyecto. En este capitulo se especifican entre otras cosas las motivacio-nes del proyecto, la descripcin del mismo, el alcance, etc.

    1.1. Objetivos

    Durante el desarrollo del PFC se persiguen una serie de metas enumeradas a conti-nuacin establecindoles un orden de prioridad:

    1. Iniciacin a la investigacin matemtica.

    2. Aplicacin de los conocimientos obtenidos a lo largo de la carrera y los obtenidosde forma autodidacta en la realizacin del proyecto.

    3. Realizar un algoritmo que sea capaz de computar primero en local y luego enparalelo el clculo de homologa en un complejo cbico a partir de sus matricesde incidencia.

    1.2. Antecedentes

    El algoritmo clsico para el clculo de la homologa consta esencialmente de lossiguientes pasos:

    Dado un complejo de cadenas libre sobre un conjunto graduado finito y de di-mensin n, se calculan las matrices de incidencia.

    A continuacin se diagonalizan y es suficiente con examinar las matrices de in-cidencia de las dimensiones (q + 1) y q y las de dimensiones q y (q 1) parapoder calcular la homologa en dimensin q.

    1

  • 2 CAPTULO 1. DOCUMENTO DE OBJETIVOS DEL PROYECTO

    En la literatura es frecuente referirse al algoritmo anterior como la diagonalizacin deSmith y son numerosos los trabajos existentes sobre posibles algoritmos y sus comple-jidades.

    Puesto que la homologa es isomorfa a una suma finita de grupos cclicos; el corres-pondiente q-simo grupo de homologa queda determinado por el nmero de gruposcclicos infinitos, q, que se llama q-simo nmero de Betti, y por los coeficientes detorsin de los grupos cclicos finitos.

    Hay que tener en cuenta que se pueden utilizar distintas tcnicas y algoritmos parael clculo de homologa.

    La mayora de estas tcnicas y algoritmos estn desarrollados para ejecutarse en unnico ordenador, siendo esto un problema debido su complejidad y el tiempo necesariopara obtener los resultados.

    La paralelizacin aparece como una solucin para problemas que requieren veloci-dad de ejecucin, luego es una alternativa que nos puede ser til.

    Ya se han dado posibles soluciones para el clculo de la Forma Normal de Smith utili-zando algoritmos que se ejecutan en paralelo. Por ejemplo los artculos de Gerold Jger[2] o de Ingmar Neumann y Wolfgang Wilhelmi [8].

    1.3. Definicin e Inters del Proyecto

    El grupo de investigacin de Topologa de la Universidad de la Rioja ha desarro-llado un mtodo para el anlisis de datos, con el que se analizan ficheros con un grannmero de datos a travs de una aproximacin que consiste en un complejo cbico yuna funcin densidad. Una parte importante del estudio se centra en el clculo de lahomologa de dicho complejo cbico.

    Como ejemplo de la utilidad de estos algoritmos podemos decir que la Universidaddel estado de San Francisco, los utiliz para intentar predecir el progreso del cncer depecho.

    Por otro lado, el grupo de Ciencias de Computacin ha desarrollado numerosos al-goritmos y herramientas para el clculo de invariantes homotpicos y en particularhomolgicos.

    El objetivo de este proyecto consiste en la creacin de algoritmos eficientes, mediantelas tcnicas de paralelizacin, que sean tiles para el clculo de homologa de comple-jos cbicos.

    Para ello utilizaremos la tecnologa proporcionada por el gridMathematica disponible

  • 3en la universidad y que nos proporcionar los elementos necesarios para ser capaces deparalelizar los algoritmos y con esto intentar mejorar su eficiencia.

    1.4. Descripcin del Proyecto

    En este proyecto de investigacin podemos considerar tres partes:Una primera parte en la que se estudiarn las nociones bsicas para la resolucin delproblema del clculo de homologa en complejos cbicos.Se estudiarn basndonos en el libro [5] los siguientes apartados:

    Conjuntos cbicos.

    Cadenas cbicas.

    El operador borde de cadenas cbicas.

    Homologa de conjuntos cbicos.

    Componentes conexas y H0(X).

    Colapsos elementales.

    Conjuntos cbicos acclicos.

    Estas nociones sern detalladas ms adelante.

    En la segunda parte se desarrollar un algoritmo que ser capaz de calcular la homolo-ga de un complejo cbico mediante sus matrices de incidencia, cuyas entradas serncoeficientes enteros. Este algoritmo ser capaz de integrarse en los mtodos desarrolla-dos por el grupo de investigacin de Topologa de la universidad.Los algoritmos a desarrollar estn basados en el libro [5].

    En la tercera parte se realizarn las modificaciones necesarias para que el algoritmose pueda ejecutar en paralelo a travs del gridMathematica. Aqu tambin se realiza-r una comparativa con las versiones anteriores, para ver los posibles beneficios de lacomputacin en paralelo.

    1.5. Alcance

    Al final de este proyecto lo que tendremos ser: Un algoritmo capaz de calcular la homologa de un complejo cbico a partir desus matrices de incidencia. La novedad de este algoritmo en comparacin conotros ya construidos es que ser capaz de realizar esta operacin en paralelo.

    Se podrn utilizar los subalgoritmos para el clculo de la Forma Normal de Smithy de la forma escalada, de forma aislada, con el fin de que puedan ser aprovecha-dos para otros proyectos que los necesiten.

  • 4 CAPTULO 1. DOCUMENTO DE OBJETIVOS DEL PROYECTO

    Una ayuda similar a la que proporcionaMathematica utilizando el comando ?me-todo.

    Manual de uso de los algoritmos.

    Un manual de acceso al gridMathematica de la universidad.

    La memoria del proyecto terminada.

    Presentacin del proyecto preparada.

    La necesidad de realizar este proyecto es clara: el computo de la homologa y otrosalgoritmos similares que necesiten hallar la Forma Normal de Smith consumen muchotiempo para su clculo. Nuestro algoritmo proporcionar una gran ganancia en tiempode ejecucin ya que la obtencin de resultados se producir gracias al uso de variosordenadores trabajando de forma coordinada.

    Como temas que han surgido al realizar este proyecto y que puedan ser afinados enun futuro, tenemos los siguientes:

    Una aplicacin grfica ms elaborada para el uso del algoritmo. Existen tecnolo-gas como J/link, mathlink o webMathematica que permiten integrar interfacesjava con la tecnologa de Mathematica. Pero este no ser uno de los objetivos delproyecto.

    El programa sirve para calcular homologa en complejos cbicos a partir de susmatrices de incidencia, que estarn compuestas de coeficientes enteros. Para ma-trices de incidencia con coeficientes no enteros el algoritmo debera ser modifi-cado.

    Ser necesario planificar en un futuro la gestin de acceso de forma concurrenteal gridMathematica, pues, aunque de momento el uso que se le est dando al grides mnimo, es previsible que ms adelante esto pueda cambiar.

    1.6. Tecnologa y Arquitectura

    1.6.1. Tecnologa

    Las diferentes tecnologas utilizadas para el desarrollo de este proyecto de investi-gacin sern:

    Latex: sistema de creacin de textos, especialmente orientado para cubrir las ne-cesidades de los tcnicos y cientficos. Ser necesario un periodo de aprendizajede este lenguaje debido al desconocimiento inicial del mismo. En el Anexo 1 sedetalla porqu se utiliza Latex en este proyecto y no otro procesador de textos.

    Beamer: paquete de LaTeX que usaremos para crear la presentacin. Para utili-zar este paquete ser necesario un corto periodo de aprendizaje, una vez comple-tada la memoria.

  • 5 Mathematica: lenguaje de programacin en el cual se escribir el algoritmopara el cmputo de la homologa. La utilizacin de Mathematica no supondr untiempo excesivo en su aprendizaje debido a su utilizacin en distintas asignaturasde la carrera.

    gridMathematica: solucin para la realizacin de clculos distribuidos y la for-ma de compartir recursos, desarrollada sobre la herramienta de computacin tc-nica Mathematica. Es necesaria una fase de aprendizaje debido a que es unatecnologa desconocida.

    Adems de estas tecnologas se utilizarn en menor medida otros programas como son:excel, pdf, visio, Poseidon, ssh y cygwin.

    1.6.2. Arquitectura

    El grid de la universidad est compuesto de 8 ordenadores conectados en una redaislada y el que hace la funcin de maestro es el grid6. Esto es debido a que es el quems memoria posee. Este ordenador hace de puente ya que est conectado tambin a lared de la universidad.

    Usuario externo Universidad

    Internet

    CortafuegosUniversidad

    Usuario InternoUniversidad

    Red de la Universidad

    Ordenador MaestroGrid6

    VPN Grid2

    Grid3

    Grid4

    Grid9

    Grid7

    Grid8

    Grid5

    Figura 1.1: Estructura

    Para acceder a l, hace falta tener permisos de acceso; una vez que stos han sido con-cedidos, se puede acceder al grid tanto desde la universidad como desde el exterior. Enmi caso trabajar desde la universidad ya que el funcionamiento es mucho mas rpido.La forma de acceder se explica en el Anexo 2.

  • 6 CAPTULO 1. DOCUMENTO DE OBJETIVOS DEL PROYECTO

    1.7. Recursos Humanos y Comunicacin

    1.7.1. Recursos Humanos

    Estas son las personas que formarn parte del proyecto, directa o indirectamente: Jnathan Heras Vicente: proyectante.

    Luis Javier Hernndez y Mara Teresa Rivas: profesores de la universidad. Sernlos encargados de ayudarme a comprender los conceptos tericos del proyecto.

    Julio Rubio: profesor de la universidad. Encargado de proporcionar asesora so-bre diferentes aspectos tanto tcnicos como referentes a la memoria.

    Eduardo Senz de Cabezn: acudir a alguna reunin de las que se mantendrncon Luis Javier Hernndez y con Mara Teresa Rivas. Adems aportar sus co-nocimientos sobre el gridMathematica.

    Miembros del tribunal: Grupo de profesores que evaluarn el proyecto.

    Jos Antonio Martinez: miembro del servicio tcnico de la universidad, ser elencargado de mostrar cmo conectarse al gridMathematica y de solucionar losposibles problemas que surjan.

    1.7.2. Comunicacin

    stas son las herramientas que se utilizarn en la comunicacin dentro del proyecto:

    Correo Electrnico: la mayor parte de la comunicacin con todos los recursoshumanos ser mediante correo electrnico. Se usar el correo proporcionado porla universidad.

    Reuniones informativas: se producirn al inicio del proyecto con Julio Rubio yLuis Javier Hernndez para conocer el problema.

    Reuniones de aprendizaje: se realizarn una serie de reuniones en las que LuisJavier Hernndez y Mara Teresa Rivas explicarn los conceptos bsicos de ho-mologa.

    Reuniones de correccin: estas reuniones, realizadas tanto con Julio Rubio, LuisJavier Hernndez y con Mara Teresa Rivas, servirn para corregir los distintosdocumentos que se irn obteniendo.

    Reuniones formativas: servirn para aprender a utilizar el gridMathematica.

    Defensa: Se utilizar una presentacin de 30 minutos de duracin mxima paracomunicar al tribunal los aspectos ms relevances acaecidos dentro del proyecto.

    FTP: Se crear un servidor ftp obtenido en la pgina web www.gratisweb.com para guardar sobre todo la documentacin ante posibles prdidas.

  • 71.8. Metodologa

    Durante el proyecto fin de carrera no se seguir ninguna metodologa en concreto,debido a que al ser un proyecto de investigacin ninguna se adeca correctamente parasu desarrollo.

    En un primer momento se pens que el ciclo de vida a utilizar podra ser el iterati-vo con dos iteraciones.En la primera iteracin se dar solucin al problema de clculo de homologa para unordenador local.En la segunda iteracin se dar solucin al mismo problema anterior, pero esta vez paraque sea ejecutado en paralelo.Pero este ciclo de vida es demasiado restrictivo para el proyecto que se va a realizar.Debido a que cada una de las iteraciones deberan seguir un ciclo de vida en cascada,impidiendo pasar de una iteracin a otra.En cambio, en este proyecto se prev que una vez terminada la fase local se puedanrealizar pequeas modificaciones en la misma.Esta es la razn por la cul no se seguir un ciclo de vida concreto.

    1.9. Planificacin del Proyecto

    1.9.1. Estructura de Descomposicin del Trabajo

    Figura 1.2: WBS

    1.9.2. Listado de Actividades

  • 8 CAPTULO 1. DOCUMENTO DE OBJETIVOS DEL PROYECTO

    Direccin del Proyecto

    Paquete formado por las tareas correspondientes a la planificacin, seguimiento,formacin, reuniones con el director del proyecto, la realizacin de la memoria y ma-nuales, as como la preparacin de la defensa.

    Aprendizaje: Tarea relacionada con la formacin necesaria para el desarrollo del pro-yecto (familiarizacin con nuevas tecnologas, estudio inicial del problema, lectura dedocumentacin, etc).Estimacin: 40 horas

    Planificacin: Tarea correspondiente a la descomposicin del proyecto en tareas e hi-tos, estimando la duracin y los recursos necesarios.Estimacin: 10 horas.

    Reuniones: Tarea referente a las reuniones iniciales realizadas tanto con Julio Rubio,como con Luis Javier Hernndez para un planteamiento inicial del problema.Estimacin: 5 horas.

    Seguimiento: Tarea donde se pretende llevar a cabo, un seguimiento-control de las ac-tividades y recursos empleados en el desarrollo del Sistema.Estimacin: 20 horas.

    Memoria: Actividad correspondiente a la realizacin de la memoria del proyecto.Estimacin: 80 horas.

    Defensa: Tarea correspondiente a la preparacin del material a utilizar en la defensadel proyecto, as como el ensayo de la misma.Estimacin: 15 horas.

    Iniciacin

    Paquete formado por las tareas cuyo objetivo es la comprensin del contexto delsistema.

    Creacin del DOP: Documento de Objetivos del Proyecto donde se expondrn losantecedentes, objetivos, el alcance, los riesgos y las tecnologas escogidas. Este docu-mento estar acompaado de la planificacin.Estimacin: 20 horas.

    Presentacin y Aprobacin del DOP: Una vez finalizado el DOP, este se presentara Julio Rubio para su aprobacin.Estimacin: 1 hora.

  • 9Investigacin

    Paquete formado por el conjunto de tareas necesarias para la correcta comprensindel problema de clculo de homologa en un complejo cbico.

    Aprendizaje: Esta tarea comprende el estudio para la comprensin del problema dehomologa.Estimacin: 20 horas.

    Reuniones: Esta actividad comprende las reuniones de aprendizaje realizadas con losprofesores Luis Javier Hernndez y Mara Teresa Rivas.Estimacin: 15 horas.

    Apuntes: Durante las reuniones de aprendizaje se irn tomando una serie de apuntesque sern escritos correctamente en latex, para su posterior inclusin en la memoria,esta parte se incluye dentro de esta actividad.Estimacin: 35 horas.

    Anlisis del Problema: Una vez concluidas todas las reuniones se pasar a realizarun anlisis del problema de clculo de homologa.Estimacin: 15 horas.

    Presentacin y Aprobacin de Documentos: Esta tarea comprende la entrega de losdocumentos generados a Luis Javier Hernndez y Mara Teresa Rivas para su correc-cin, tambin incluye las modificaciones que deban ser realizadas sobre el mismo.Estimacin: 15 horas.

    Diseo

    Paquete formado por las actividades necesarias para el diseo de los algoritmosnecesarios para el clculo de homologa.

    Planteamiento Solucin Local: Esta actividad servir para documentar y explicar elfuncionamiento de los subalgoritmos necesarios para la creacin del algoritmo princi-pal de forma local.Estimacin: 12 horas.

    Planteamiento Solucin Paralelo: En esta tarea se vern las distintas alternativas quepodemos tomar para el desarrollo en paralelo del clculo de homologa.Estimacin: 35 horas.

    Implementacin

    Paquete formado, por las tareas necesarias para la implementacin del algoritmopara el clculo de homologa.

  • 10 CAPTULO 1. DOCUMENTO DE OBJETIVOS DEL PROYECTO

    Implementacin Local: En la primera fase se realizar la implementacin del algo-ritmo para que funcione de forma local.Estimacin: 50 horas.

    Iniciacin Trabajo en Paralelo: Para ser capaces de implementar el algoritmo en para-lelo ser necesario un periodo de aprendizaje del uso del gridMathematica. Esta tarease hace referencia a este periodo.Estimacin: 20 horas.

    Implementacin Paralelo: En la segunda fase se realizar la implementacin del al-goritmo en paralelo utilizando el gridMathematica de la Universidad.Estimacin: 50 horas.

    Revisin Implementacin: Esta tarea comprende la revisin del correcto funcionamien-to de los algoritmos tanto de forma local, como de forma paralelizada.Estimacin: 20 horas.

    Anlisis de Resultados

    Paquete que comprende la tarea de obtencin y comparacin de los resultados quese han producido al ejecutar el programa tanto en modo local como en paralelo.

    Obtencin Resultados: En esta tarea se recogern los resultados obtenidos al probarel programa en local y en paralelo.Estimacin: 5 horas.

    Comparativa Resultados: Una vez obtenidos estos resultados se compararn entre sy se obtendrn conclusiones.Estimacin: 7 horas.

    1.9.3. Estimaciones Globales

    Tras la descomposicin detallada de las distintas tareas en las que se puede des-componer el proyecto, podemos concluir que la distribucin de horas en los distintospaquetes es la siguiente:

    Direccin del Proyecto: 170 horas. Iniciacin: 21 horas. Investigacin: 100 horas. Diseo: 47 horas. Implementacin: 140 horas. Anlisis de Resultados: 12 horas.Total: 490 horas.

  • 11

    Figura 1.3: Horas empleadas

    El grfico de la figura 1.3 detalla el porcentaje de horas de cada paquete:

    1.9.4. Calendario de Trabajo

    Debido a que durante el curso 2006/07 todava estaba cursando el ltimo ao dela doble titulacin de Matemticas e Ingeniera Tcnica en Informtica de Gestin dela Universidad de la Rioja, la dedicacin completa durante el curso se hace totalmenteimposible.

    A pesar de ello se realizan reuniones peridicas de aprendizaje y se trabaja en la do-cumentacin, sobre todo los fines de semana alrededor de 8 horas en todo el fin desemana, para no tener abandonado el proyecto.

    Los dos periodos de exmenes, Febrero y Junio, y el mes inmediatamente anteriorse decide dejar a un lado el proyecto para poder centrarse en el estudio.

    Una vez terminados los exmenes el 22 de Junio de 2007 se retoma el proyecto tra-bajando en primer lugar desde casa 7 horas al da y descansando el domingo.

    El da 11 de Julio Rubio, se empieza a trabajar con el gridMathematica. Se decidetrabajar 5 horas por la maana en la universidad, debido a la mayor velocidad del grid-Mathematica y trabajar 3 horas por la tarde en casa, dedicando estas horas al trabajo dedocumentacin.

    En la figura 1.4 se muestra un esquema del calendario de trabajo:

    1.10. Riesgos

  • 12 CAPTULO 1. DOCUMENTO DE OBJETIVOS DEL PROYECTO

    Figura 1.4: Calendario

    Durante el proyecto fin de carrera pueden surgir imprevistos, que pueden retrasar elproyecto. Se explicarn cules son estos riesgos, las soluciones que se proponen en elcaso de que ocurran, la probabilidad de que estos se produzcan y el momento previstopara su deteccin.

    Inexperiencia a la hora de realizar un proyecto de investigacin: Debido a quees la primera vez que el proyectante realiza un proyecto de estas caractersti-cas, lo normal es que surjan muchas dudas y existe la posibilidad de que no secomprenda bien el problema planteado.

    Solucin: Invertir tiempo suficiente en estudiar a fondo los conceptos ydocumentarse correctamente para llegar a comprender el problema.

    Momento previsto: Durante la fase de investigacin. Probabilidad: Elevada.

    Inexperiencia o desconocimiento de determinadas tecnologas: Este riesgo afec-ta directamente a la marcha del proyecto.

    Solucin: Realizar una documentacin adecuada; por ejemplo, en el casode Latex, haber realizado una buena bsqueda de pginas de referencia.

    Momento previsto: Durante todo el proyecto. Probabilidad: Media.

    Prdida de Informacin relativa al proyecto:

  • 13

    Solucin: Al finalizar la jornada de trabajo se realizar una copia de segu-ridad del trabajo realizado. Peridicamente se realizar una copia de todoel trabajo realizado hasta esa fecha.

    Momento previsto: Durante todo el proyecto. Probabilidad: Baja.

    Estimaciones mal realizadas:

    Solucin: En el caso de terminar una tarea antes de plazo, supondr unacortamiento del proyecto; en cambio, los retrasos supondrn tener queaumentar el ritmo de trabajo para llegar a cumplir el plazo.

    Momento previsto: Durante todo el proyecto. Probabilidad: Media.

    Dudas surgidas durante la ausencia de los directores:

    Solucin: Con el fin de no ralentizar el ritmo de trabajo, nos centraremosen otra parte del proyecto.

    Momento previsto: Durante todo el proyecto. Probabilidad: Media.

    Ausencia del proyectante: Este riesgo puede surgir debido a enfermedades, faltade tiempo, etc.

    Solucin: Supondr un retraso en el proyecto. Si esto no fuera posible, setomar la determinacin de aumentar en cuanto sea posible el nmero dehoras de trabajo.

    Momento previsto: Durante todo el proyecto. Probabilidad: Baja.

    Problemas con la tecnologa grid: La tecnologa puede darnos problemas pormultiples razones: fallos de sistema, velocidad de conexin lenta, etc.

    Solucin: Ante el problema de la velocidad de conexin, la solucin estrabajar desde la sala de proyectos de la universidad, desde la cual la velo-cidad de acceso al grid es superior que la de acceso desde el exterior de launiversidad. En caso de fallos de sistema u otros problemas similares noscentraremos en otra parte del proyecto.

    Momento previsto: Durante la implementacin. Probabilidad: Media.

  • Captulo 2

    Anlisis

    2.1. Descripcin del Problema

    El proyecto fin de carrera consiste en la realizacin de un algoritmo, que podr eje-cutarse en modo local y en paralelo. Este algoritmo ser capaz de calcular la homologade un complejo cbico a partir de sus matrices de incidencia, que estarn compuestaspor elementos enteros.

    Supondremos que el lector posee algunos conocimientos de topologa, anlisis, lge-bra,... Tambin suprimiremos las demostraciones de los teoremas para simplificar. LaHomologa es una herramienta muy potente que permite sacar conclusiones sobre pro-piedades globales de espacios y aplicaciones a partir de computaciones locales. Incluyeuna mezcla de lgebra, combinatoria, computacin y topologa. Nosotros trabajaremoscon cubos cuyos vrtices son enteros. Esto, en un principio, puede parecer muy restric-tivo. Sin embargo, desde un punto de vista terico, el tamao de una rejilla es slo unacuestin de eleccin de unidades.

    2.1.1. Conjuntos Cbicos

    Notaciones previas: R es la recta eucldea.Rd = R . . .(d R es el espacio eucldeo de dimensin d.Z el conjunto de los nmeros enteros.Mmn denota las matrices dem filas y n columnas.Definicin 2.1.1.1 Llamaremos intervalo elemental o (sencillamente intervalo) a unintervalo de R de la forma I = [l, l + 1] o I = [l, l] con l Z. En el ltimo caso,diremos que es degenerado y lo denotaremos sencillamente por [l].Diremos que un producto finito de intervalos elementales Q = I1 . . . Id Rd esun cubo elemental.

    Las siguientes figuras muestran algunos ejemplos de cubos elementales en R2:

    15

  • 16 CAPTULO 2. ANLISIS

    Figura 2.1: Ejemplo de cubos elementales en R2

    Nota 2.1.1.1 Como l Z, cuando tenemos dos cubos elementales no se puede dar lasiguiente situacin representada en esta grfica.

    Figura 2.2: Situacin imposible con cubos elementales

    Definicin 2.1.1.2 Llamaremos dimensin de un cubo elementalQ = I1 . . . Id Rd y lo denotaremos por dim Q al nmero de intervalos Ii coni {1, . . . , d} no degenerados.Llamaremos ambiente de Q y lo denotaremos por amb Q a la dimensin d del espacioeucldeo Rd en el que est contenido.

    Denotaremos como K al conjunto de todos los cubos elementales, y, para cada d 1,por Kd al conjunto de cubos elementales contenidos en Rd, es decirKd = {Q K|amb Q = d}. Se cumple que K=

    d=1

    Kd.Para cada entero k 0, denotaremos por Kk al conjunto de cubos elementales cuyadimensin es k, es decir Kk= {Q K|dim Q = k}. Se cumple que K=

    k=0

    Kk.Si denotamos por Kdk =KdKk, observamos que si P Kdk y Q Kd

    k entonces

    P Q Kd+dk+k .

    Definicin 2.1.1.3 Dados P,Q K se dice que Q es una cara de P y se denota porQ P si Q P .Si Q P y Q 6= P , diremos que Q es una cara propia de P , esto lo denotaremos aveces por Q < P . Por otro lado si Q P y adems dim P = 1+ dim Q diremos queQ es cara primaria de P .

    Definicin 2.1.1.4 Dado X Rd, diremos que X es un conjunto cbico si es unaunin finita de cubos elementales.

  • 17

    Notar que, por tanto, un conjunto cbico X Rd es un subconjunto compacto de Rd,esto es, cerrado y acotado.

    Ejemplo 2.1.1.1 La siguiente figura muestra un ejemplo de un conjunto cbico X R2.

    Figura 2.3: Conjunto cbico X R2

    Definicin 2.1.1.5 Dado un intervalo I = [l, l + 1] llamaremos celda elemental de Iy lo denotaremos por I a (l, l + 1). Si el intervalo I es degenerado, I = [l], diremosque su celda elemental I es {l}.Dado un cubo elemental, Q = I1 . . . Id, diremos que su celda elemental es Q =I1 . . . Id .Vemoslo grficamente, tomando primero los cubos elementales ms simples en R2:

    Figura 2.4: Cubos elementales ms simples en R2

    Las celdas elementales de estos cubos elementales son

    Figura 2.5: Celdas de los cubos elementales ms simples en R2

  • 18 CAPTULO 2. ANLISIS

    Si X Rd es un conjunto cbico, entonces denotaremos por Kdk(X) o sencilla-mente Kk(X) al conjunto Kdk(X) = {Q Kk|Q X}.A los elementos de K0(X) se les suele llamar vrtices de X y a los de K1(X) aristaso ejes de X .Denotamos por Kd(X) o sencillamente por K(X) al conjuntoK(X) = {Q K |Q X}.

    La siguiente figura muestra cmo el conjunto cbico del ejemplo anterior se puedeescribir como la unin de las celdas elementales de sus cubos.

    Figura 2.6: Descomposicin en celdas de un complejo cbico

    2.1.2. Cadenas Cbicas

    Definicin 2.1.2.1 Dado Q Kdk diremos que la aplicacin Q :Kdk Z tal queQ(P ) =

    {0 si P 6= Q1 si P = Q es la k-cadena cbica elemental asociada a Q.

    Denotaremos Kdk = {Q|Q Kdk}. De modo anlogo, se tienen los conjuntos Kd =k=0

    Kdk=d

    k=0

    Kdk y K=d=0

    Kd.

    Definicin 2.1.2.2 Llamaremos k-cadena cbica en Rd (brevemente k-cadena) a todaaplicacin de la forma c = 1Q1 + ...+ mQm donde 1, ..., m Z y Qi Kdk .Si denotamos por Cdk al grupo de k-cadenas en Rd, notemos que:

    (i) Cdk es el grupo abeliano libre sobre el conjunto Kdk.(ii) Los elementos de Cdk son aquellas aplicaciones c : Kdk Z tal que c(Q) = 0

    salvo para un nmero finito de elementos de Kdk. Observemos que(1Q1 + ...+ mQm)(P ) =

    = 1Q1(P ) + ...+ mQm(P ) ={

    0 si P 6 {Q1, . . . , Qm}i si P = Qi, i {1, . . . ,m}

    Definicin 2.1.2.3 Dada c Cdk llamaremos soporte de la cadena c y lo denotaremospor |c|, al conjunto |c| = {Q Kdk|c(Q) 6= 0}; es decir, si

  • 19

    c = 1Q1+ ...+mQm tenemos que |c| = Q1 . . .Qm. Notemos que por lo tanto|c| es un conjunto cbico.

    Definicin 2.1.2.4 Llamaremos producto escalar de k-cadenas a la aplicacin: Cdk Cdk Z definida por: < c1, c2 >=

    QKdk

    c1(Q)c2(Q).

    Dadas c1, c2 Cdk , siempre es posible reescribirlas comoc1 =

    mi=1

    iQi y c2 =mi=1

    iQi, entonces tenemos que < c1, c2 >=mi=1

    ii.

    Notemos que el producto escalar de cadenas es bilineal y adems, dada una cadena c,su soporte puede reescribirse como |c| =

    6=0Qi, donde

    < c, Qi >= c(Qi).

    Definicin 2.1.2.5 Dadas dos cadenas elementales P Kdk, Q Kdk , llamaremos

    producto cbico de P y Q, y lo denotaremos por P Q, a la cadena elemental P Q Kd+dk+k .

    En general, si tenemos dos cadenas cualesquiera c1 Cdk , c2 Cd

    k entonces se definesu producto cbico c1 c2 Cd+d

    k+k por:

    c1 c2 =

    PKdkQKd

    k

    < ci, P >< c2, Q > P Q .

    Observemos que si c1 = 1P1+ ...+nPn y c2 = 1Q1+ ...+mQm con i, j Z, Pi Kdk y Qj Kd

    k , entonces c1 c2 =

    n,mi,j=1

    ij(Pi Qj).

    Notemos que dado un cubo elemental cualquiera Q = I1 ... Id, con d > 1, stepuede reescribirse como Q = I1 (I2 ... Id), y considerando P = I2 ... Id,tendremos Q = I1 P . Reiterando el proceso, se obtiene que la cadena elemental aso-ciada Q puede expresarse como Q = I1 I2 ... Id

    2.1.3. El operador borde de cadenas cbicas

    Notemos que k > d 0, Cdk = 0 y consideremos tambin C11 = 0.

    Definicin 2.1.3.1 Dado d 1, para cada k Z con k 0 llamaremos operadorborde cbico k al homomorfismo k : Cdk Cdk1 que se describe acontinuacin:

    (a) Definimos k para cadenas elementales Q Cdk inductivamente sobre d delmodo siguiente:Tomemos el caso ms sencillo donde d = 1, tendremos dos situaciones:

  • 20 CAPTULO 2. ANLISIS

    (i) Si Q C11 , entonces Q = [l, l + 1] y definimos

    1(Q) = [l + 1] [l] C10

    (ii) Si Q C10 , entonces Q = [l] y definimos

    0(Q) = 0 C11.

    Ahora, sea d > 1 y supongamos definido kj sobre cadenas elementales para0 kj q, con q d 1.Si Q Cdk , donde Q = I1 . . . Id, tenemos que Q = I1 P con I1 C1k1 yP Cd1k2 , siendo k1 = dim I1 y k2 = dim P . Entonces, definimos

    k(Q) = k1(I1) P + (1)k1 I1 k2(P ).

    Notemos que (1)k1 es positivo (+1) si I1 es un intervalo degenerado y es ne-gativo (1) si es no degenerado.

    (b) Por ltimo, k se extiende por linealidad a k-cadenas, del modo siguiente:Si c = 1Q1 + ...+ nQn Cdk con Qi Kdk, entonces se define

    k(c) = 1k(Q1) + ...+ nk(Qn).

    Por comodidad, dada una cadena c Cdk , escribiremos muchas veces (c) en lugar dek(c).

    Proposicin 2.1.3.1 Si c Cdk , c Cd

    k tendremos que c c Cd+d

    k+k . Entonces, severifica que (c c) = (c) c + (1)dimc(c (c)).

    Corolario 2.1.3.1

    (Q1 . . . Qm) =mj=1

    (1)j1i=1

    dimQi(Q1 . . . Qj1) (Qj) (Qj+1 . . . Qm)

    Proposicin 2.1.3.2 Sea Q = I1 . . . Id Kdn de modo que Ii1 , . . . , Iin son nodegenerados con Iij = [kj , kj + 1].Para j = 1, . . . , n, consideremos las siguientes caras primarias de Q:Q+j = I1 . . . Iij1 [kj+1] Iij+1 . . . IdQj = I1 . . . Iij1 [kj ] Iij+1 . . . IdEntonces se verifica que Q =

    nj=1

    (1)j1(Q+j Qj ).

    Proposicin 2.1.3.3 = 0.

  • 21

    Idea de la demostracin: Puesto que es un homomorfismo, basta probarlo para lascadenas elementales. Para stas, se comprueba en el caso d = 1 y por induccin parad > 1, utilizando el hecho de que siQ Kdk con d > 1,Q = I1P donde P Rd1.

    Proposicin 2.1.3.4 |c| |c|, c Cdk .

    2.1.4. Homologa de conjuntos cbicos

    Definicin 2.1.4.1 Sea X Rd un conjunto cbico. Sea Kk(X) = {Q|Q Kk(X)}y seaCk(X) el subgrupo deCdk generado por los elementos de Kk(X). A los elementosde Ck(X) les llamaremos k-cadenas cbicas (o sencillamente k-cadenas) en X .

    Observemos que Ck(X) = {c Cdk | |c| X} y que Kk(X) es una base finita delgrupo abeliano libre Ck(X).Dada una cadena c Ck(X), sta puede escribirse comoc =

    QKk(X)

    QQ =

    QKk(X)< c, Q > Q donde Q = c(Q).

    Notemos que si c Ck(X), entonces c Ck1(X). Por lo tanto, (Ck(X)) Ck1(X), lo que justifica la siguiente definicin.

    Definicin 2.1.4.2 El operador borde para el conjunto cbico X Rd,Xk : Ck(X) Ck1(X), viene definido por la restriccin a Ck(X) del operadorborde k : Cdk Cdk1.

    Definicin 2.1.4.3 Llamaremos complejo de cadenas cbico del conjunto cbicoX Rd al complejo C(X) dado por

    C(X) : = {Ck(X); Xk }kZdonde Ck(X) = 0, k 1 y Xk = 0, k 0. Para k 0, Ck(X) denota al grupode las k-cadenas cbicas en X y Xk el correspondiente operador borde. Cuando nohay lugar a confusin, suele denotarse Xk sencillamente por k o incluso cuando ladimensin est clara.

    Notemos que Ck(X) = 0, k d+ 1; por tanto, el complejo C(X) es de la forma:

    0 Cdd (X) . . . Ck(X) k Ck1(X) . . . C1(X) C0(X) 0.

    Puesto que, para un conjunto cbicoX Rd, Ck(X) es un grupo abeliano finitamentegenerado con base Kk(X), el homomorfismo borde k : Ck(X) Ck1(X) puedeexpresarse mediante una matriz de enteros (ij) donde, para cada Pj Kk(X), Qi Kk1(X), se tiene que ij = (k(Pj))(Qi). Por tanto ij = 0 si Qi no es cara de Pjy ij = 1 si Qi es cara de Pj .La matriz Mk = (ij) se llama matriz de incidencia en dimensin k de X . NotemosqueMk es una matriz de orden (nk1 nk), donde nq denota el cardinal de Kq(X).

  • 22 CAPTULO 2. ANLISIS

    Definicin 2.1.4.4 Llamaremos k-ciclos del conjunto cbico X Rd a los elementosdel conjunto Zk(X) = kerk.Llamaremos k-bordes de X a los elementos del conjunto Bk(X) = Imk+1.

    Notar que, como kk+1 = 0, entonces Bk(X) Zk(X), lo que justifica la siguientedefinicin.

    Definicin 2.1.4.5 Llamaremos k-simo grupo de homologa cbica del conjunto c-bico X Rd al grupo cociente

    Zk(X)Bk(X)

    = Hk(X).

    Notemos que los elementos de Hk(X) son clases que vienen determinadas por la si-guiente relacin () de equivalencia: Dados dos k-ciclos c, c Zk(X) Ck(X) setiene que c c si y slo si c c = (c) para alguna (k+1)-cadena c Ck+1(X).Suele denotarse por [c] la clase de un ciclo c Zk(X). Si para otro ciclo c Zk(X)se tiene que c c, esto es, que [c] = [c] se dice que c y c son homlogos.La homologa cbica del conjunto cbico X es la coleccin de todos los grupos dehomologa cbica de X , y se denota por

    H(X) = {Hk(X)}kZ.

    Ejemplo 2.1.4.1 SiX = , se tiene que 0 C0(X) = 0 0. Por tantoHk(X) = 0,k.

    Ejemplo 2.1.4.2 SiX = {x0}, entonces el complejo de cadenas C(X) es de la forma0 C0(X) = Z 0 y se obtiene que

    Hk(X) ={Z si k = 00 si k 6= 0 .

    Ejemplo 2.1.4.3 Sea X R2 el siguiente complejo cbico:X = [0] [0, 1] [1] [0, 1] [0, 1] [0] [0, 1] [1]

    Sean a1 = [0] [0, 1], a2 = [1] [0, 1], a3 = [0, 1] [0], a4 = [0, 1] [1]. Tenemosque K1(X) = {a1, a2, a3, a4} y K0(X) = {v1, v2, v3, v4}, donde v1 = [0] [0],v2 = [0] [1], v3 = [1] [0], v4 = [1] [1].Su representacin grfica vendra dada por:

    a3

    a4

    a2a1

    v1

    v2

    v3

    v4

    Figura 2.7: Complejo cbico

  • 23

    El complejo de cadenas C(X) ser:

    0 C1(X) 1 C0(X) 0

    con C1(X) el grupo abeliano libre a1, a2, a3, a4 engendrado por {a1, a2, a3, a4} yC0(X) el grupo abeliano libre v0, v1, v2, v3 engendrado por {v1, v2, v3, v4} y tendre-mos que 1(a1) = 1([0][0, 1]) = (1)0( [0] [1] [0] [0]) = v2v1. Anlogamentepara el resto.A continuacin reflejaremos en la siguiente matriz de incidencia cmo es el borde decada aj en funcin de los vi, donde 1(aj) viene determinado por la j-sima columna

    a1 a2 a3 a4

    v1 1 0 1 0v2 1 0 0 1v3 0 1 1 0v4 0 1 0 1

    = M1Tomemos por ejemplo el elemento 22 = 0 marcado de color rojo en la matriz M1;esto representa que v2, no es cara de a2. En cambio, en los casos en los que aparece 1o 1 s que son caras.Calculamos Z1(X) = ker1. Para ello, hay que resolver la ecuacin matricial:

    M1

    t1t2t3t4

    =0000

    Se obtiene que t1 = t2 = t3 = t4. Por tanto, las soluciones son de la format(1,1,1, 1), con t Z.Luego, si c1 (1,1,1, 1), esto es: c1 = a1a2a3+a4, se tiene que ker1 estengendrado por c1; es decir, ker1 =< c1 >= Z.Geomtricamente, la cadena c1 corresponde a leer de modo circular las aristas orienta-das y se observa fcilmente que es un ciclo.La figura siguiente muestra las aristas orientadas:

    a3

    a4

    a2a1

    v1

    v2

    v3

    v4

    Figura 2.8: Cadena con aristas orientadas

    En cambio la siguiente figura muestra la lectura circular:

  • 24 CAPTULO 2. ANLISIS

    a3

    a4

    a2a1

    v1

    v2

    v3

    v4

    Figura 2.9: Cadena con lectura circular

    As que tendremos:Hk(X) = 0, si k 6= 0, 1 y H1(X) = Z.Y queda por calcular H0(X). Para ello consideremos C1(X)

    1 C0(X) 0 0.Z0(X) = C0(X) =< v1, v2, v3, v4 >. Para calcular B0(X), notemos quev2 v1 = a1, v4 v2 = a4, v4 v3 = a2, v3 v1 = a3. Por tanto,v1 v2 v3 v4, con lo que [v1] = [v2] = [v3] = [v4]. As queH0(X) =

    Z0(X)B0(X)

    =< [v1] >= Z. Con lo que obtenemos:

    Hk(X) ={Z si k = 0, 10 si k 6= 0, 1 .

    2.1.5. Componentes conexas y H0(X)

    SeaX Rd un conjunto cbico. Denotaremos la componente conexa de un puntox X como ccX(x).Notemos que dado un punto x X existe algn vrtice v K0(X) tal que ccX(x) =ccX(v). Adems X tiene slo un nmero finito de componentes conexas.

    Definicin 2.1.5.1 Una sucesin de vrtices v0, . . . , vn K0(X) es un camino dearistas (o ejes) enX si existen aristas e1, . . . , en K1(X) tal que vi, vi1 son las doscaras de ei para todo i = 1, . . . , n.

    Definicin 2.1.5.2 X es conexo por aristas (o por ejes) si cada dos vrtices de Xpueden unirse por un camino de aristas en X .

    Notemos que todo cubo elemental es conexo por aristas.

    Definicin 2.1.5.3 Dado x X , llamaremos componente conexa por aristas de x y lodenotaremos por eccX(x) a la unin de los subconjuntos cbicos conexos por aristasde X que contienen al punto x.

    Proposicin 2.1.5.1 Si X es un conjunto cbico y x X , entonces se tiene queccX(x) = eccX(x).

    Notar que por lo tantoX es conexo si y slo si es conexo por aristas, lo que es equiva-lente en este caso a ser arcoconexo.

  • 25

    Lema 2.1.5.1 Sea X un conjunto cbico y sean X1, . . . , Xn sus componentes cone-

    xas. Si, para cada i {1, . . . , n}, ci Ck(Xi), entonces |ni=1

    ci| =ni=1

    |ci|.

    Ejemplo 2.1.5.1 El siguiente ejemplo muestra un conjunto cbico X R2 y sus trescomponentes conexas X1, X2, X3.

    Figura 2.10: Conjunto cbico X R2 y sus tres componentes conexas

    Teorema 2.1.5.1 Sea X un conjunto cbico y sean X1, . . . , Xn las componentes co-nexas de X . Entonces, H0(X) es un grupo abeliano libre Z

    . . .(n

    Z engendrado

    por {[Pi]|i = 1, . . . , n} donde, para cada i = 1, . . . , n, Pi es un vrtice de X conPi Xi.

    Notemos que lo que nos dice este teorema es que H0(X) mide el nmero de compo-nentes conexas de X .

    Ejemplo 2.1.5.2 Para el siguiente conjunto cbico X:

    Figura 2.11: Conjunto Cbico

    Se tiene que H0(X) = ZZ.

  • 26 CAPTULO 2. ANLISIS

    2.1.6. Colapsos elementales

    Definicin 2.1.6.1 Sea X un conjunto cbico y Q K(X). Si P K(X) {Q} setiene que Q 6 P (esto es, que Q no es una cara propia), se dice que Q es una caramaximal deX . El conjunto de los cubos elementales deX que son caras maximales lodenotaremos por Kmax(X).Si |P K(X) tal que Q es cara propia de P , se dice que Q es una cara libre de X.

    Ejemplo 2.1.6.1 Sea X el conjunto cbico mostrado en la siguiente figura:

    Figura 2.12: Conjunto Cbico

    Caras maximales de X: De dimensin 0 no hay caras maximales.De dimensin 1 son las marcadas con lnea discontinua.

    Figura 2.13: Caras maximales de dimensin 1

    De dimensin 2 son las sombreadas con color rojo.

    Figura 2.14: Caras maximales de dimensin 2

    Caras libres de X: De dimensin 0 son los marcados con puntos rojos.

    Figura 2.15: Caras libres de dimensin 0

  • 27

    De dimensin 1 son aquellas marcadas con lnea punteada.

    Figura 2.16: Caras libres de dimensin 1

    De dimensin 2 no hay caras libres.

    Ejemplo 2.1.6.2 Sea X el conjunto cbico mostrado en la siguiente figura:

    Figura 2.17: Conjunto cbico

    El punto rojo es una cara maximal de dimensin 0, y la lnea punteada no sera libre.

    Lema 2.1.6.1 Sea X un conjunto cbico, sea Q K(X) con Q una cara libre de Xy Q < P K(X). Entonces, P Kmax(X) y dim Q = dim P 1

    Definicin 2.1.6.2 Sea X un conjunto cbico, Q una cara libre en X y P su caramaximal asociada. Sea K(X) =K (X) \ {Q,P}. Si X =

    RK(X )R diremos que el

    conjunto cbico X se ha obtenido de X va un colapso elemental de P por medio deQ. Tambin suele decirse que hemos colapsado P a travs de Q.

    Notemos que en tal caso X es un retracto por deformacin (fuerte) de X .

    Lema 2.1.6.2 Supongamos que X es un conjunto cbico y X se ha obtenido de Xva un colapso de P0 Kk(X) por Q0 Kk1(X). Entonces se verifica que:

    (i) {c Ck(X)|c Ck1(X )} Ck(X )(ii) Para cada c Ck1(X), c Ck1(X ) tal que c c Bk1(X)(iii) Hq(X) = Hq(X ), q.

    Teorema 2.1.6.1 SeaX un conjunto cbico y supongamos que Y se ha obtenido de Xpor una sucesin de colapsos elementales. Entonces H(X) = H(Y ).

    Ejemplo 2.1.6.3 Sea X el conjunto cbico que muestra la siguiente figura

  • 28 CAPTULO 2. ANLISIS

    P0

    Q0

    Figura 2.18: Conjunto Cbico

    Colapsando X obtenemos X 1:

    P0Q0

    Figura 2.19: Colapsando un conjunto cbico

    Haciendo tres colapsos de X 1 consecutivos obtenemos X2:

    Figura 2.20: Colapsando un conjunto cbico

    Haciendo otros dos colapsos obtenemos X 3:

    Figura 2.21: Colapsando un conjunto cbico

    Haciendo un ltimo colapso se llega a X :

    Figura 2.22: Colapsando un conjunto cbico

    Luego, como H(X) = H(X ), se tiene que Hq(X) = Z si q = 0 y Hq(X) = 0 siq 6= 0.

  • 29

    A continuacin se analizar el efecto que produce un colapso elemental en las matricesde incidencia.Dado un conjunto cbico X , recordemos que el homomorfismo borde

    Ck(X)k Ck1(X)

    donde Ck(X) es el grupo abeliano libre sobre los k cubos deX y Ck1(X) es el grupoabeliano libre sobre los (k 1) cubos deX , viene representado por la siguiente matrizde incidencia

    Pj......

    Qi . . . . . . ij . . ....

    = Mk

    Puesto que ij = 0 siQi no es cara de Pj y ij = 1 siQi es cara de Pj , notemos quesi Qi es maximal, toda su fila i-sima ser 0, pues Qi no aparece al calcular el bordede ningn cubo de dimensin mayor. Si Qi es libre su fila i-sima ser de la forma(0, . . . , 0,1, 0, . . . , 0). En este caso1 aparece en la columna j-sima indicando quePj es su cubo maximal asociado.Supongamos Qi libre y Pj su maximal asociado, entonces, si colapsamos Pj medianteQi obtenemos el complejo cbicoX , y la matriz de incidenciaM k correspondiente esel resultado de eliminar la fila i y la columna j de la matrizMk.

    2.1.7. Conjuntos cbicos acclicos

    Definicin 2.1.7.1 Un conjunto cbicoX es acclico siHk(X) ={Z si k = 00 en otro caso

    Teorema 2.1.7.1 Todo cubo elemental es acclico.

    Proposicin 2.1.7.1 Si X,Y son conjuntos cbicos, entonces

    Ck(X Y ) = Ck(X) + Ck(Y ).

    Proposicin 2.1.7.2 SeanX,Y conjuntos cbicos tales queX,Y,XY son acclicos.Entonces, X Y es acclico.

    Definicin 2.1.7.2 Llamaremos rectngulo a un conjunto X de la formaX = [k1, l1] . . . [kn, ln] Rn donde ki, li Z y ki li.Notemos que todo rectngulo es un conjunto cbico.

  • 30 CAPTULO 2. ANLISIS

    Figura 2.23: Rectngulo

    Figura 2.24: Conjunto cbico con forma de estrella

    Ejemplo 2.1.7.1 Un ejemplo de rectngulo es el subconjunto de R2 que aparece en lafigura 2.23.

    Proposicin 2.1.7.3 Sea X conjunto cbico. Entonces X es convexo si slo si X esun rectngulo.

    Definicin 2.1.7.3 Un conjunto cbico X Rd tiene forma de estrella con respectoa un punto x Zd, si X es una unin finita de rectngulos, cada uno de los cualescontiene al punto x.

    Ejemplo 2.1.7.2 El conjunto cbico X , de la figura 2.24, tiene forma de estrella res-pecto al punto rojo sealado.

    Ejemplo 2.1.7.3 Al igual que en el anterior ejemplo, el conjunto cbicoX de la figura2.25 tiene forma de estrella respecto al punto rojo sealado.

    Proposicin 2.1.7.4 Todo conjunto cbico con forma de estrella es acclico.

    2.2. Modelo de Casos de Uso

    Este apartado est divido en:

    Diagrama de Casos de Uso: presenta los casos de uso, los actores y las interrelacionesque existen entre ellos.

  • 31

    (1)

    (2)

    (3)

    Figura 2.25: Conjunto cbico con forma de estrella

    Actores: describe los actores que aparecen en el Diagrama de Casos de Uso.

    2.2.1. Diagrama de Casos de Uso

    Nuestro diagrama de casos de uso es muy simple, debido a que lo que nosotrosbuscamos es la creacin de un nico algoritmo que sea capaz de resolver nuestro pro-blema. Y la mejora del mismo a travs del clculo en paralelo.La figura 2.26 muestra el diagrama de casos de uso, del cul es necesario comentaralgunos aspectos.Primero: Se distinguen en el diagrama dos partes, la que hace referencia a los usuariosque no tienen acceso al grid y la correspondiente a los que s lo tienen.Las dos partes en principio parecen iguales, debido a que en este momento no sabemossobre qu algoritmos vamos a aplicar la paralelizacin.

    Segundo: Se han suprimido los subalgoritmos ms bsicos para clarificar el diagra-ma.

    Tercero: Aunque los actores no estn relacionados directamente con todos los mto-dos, pueden usarlos de forma independiente.

    Cuarto: Los casos de uso EliminaFila y CreaMatriz son auxiliares y en principio noson necesarios para el uso local, pero s posiblemente para el clculo en paralelo.

    2.2.2. Actores

    Actor 1. Usuario sin Acceso al Grid

    Identificacin: El actor Usuario sin Acceso al Grid representa a todas las personasque tengan acceso al paquete de Mathematica que sirve para ejecutar los algoritmos deforma local.

  • 32 CAPTULO 2. ANLISIS

    Figura 2.26: Diagrama casos de uso

  • 33

    Contexto: Cualquier persona que tenga instalado en su ordenador el programa Mathe-matica y que tenga a su disposicin nuestro paquete bsico se considerar un Usuariosin Acceso al grid.

    Objetivo: El objetivo de los Usuarios sin Acceso al Grid es poder calcular la homologade complejos cbicos, as como la Forma Normal de Smith, el Kernel y la Imagen, etc,a partir de sus matrices de incidencia, en su ordenador personal.

    Actor 2. Usuario con Acceso al Grid

    Identificacin: El actor Usuario con Acceso al Grid representa a todas las personasque tengan acceso al paquete de Mathematica que sirve para ejecutar los algoritmos deforma local, adems de los permisos necesarios para acceder al grid de la universidad.Hereda del actor Usuario sin Acceso al Grid y podr utilizar todas sus funciones siem-pre y cuando tenga instalado Mathematica en su ordenador y posea el paquete paraejecutar en local.

    Contexto: Cualquier persona que tenga los permisos necesarios para el acceso al grid,nuestropaquete de clculo en paralelo y los programas que se detallan en el anexo 2 se consi-derar un Usuario con Acceso al Grid.

    Objetivo: El objetivo de los Usuarios con Acceso al Grid es poder calcular la homolo-ga de complejos cbicos, as como la Forma Normal de Smith, el Kernel y la Imagen,etc, a partir de sus matrices de incidencia ejecutndolos en paralelo, con la ganancia develocidad que esto supone.

  • Captulo 3

    Diseo

    Como hemos visto en el captulo anterior, dado un conjunto cbicoX sabemos quesus grupos de homologaHq(X) estn bien definidos; adems, en algunos casos hemossido capaces de calcularlos.En este captulo la idea es desarrollar un algoritmo que nos permita calcular la ho-mologa H(X). Para ello iremos introduciendo sobre la marcha algunas nociones yresultados para la correcta comprensin del algoritmo.

    Teorema 3.0.1 Todo grupo abeliano G finitamente generado es isomorfo a un grupode la forma Zr

    Zb1

    Zb2

    . . .Zbk , donde r y k son enteros no negativos y Zb

    denota el grupo de enteros mdulo b. Cumplindose que bi > 1 y bi divide a bi+1 parai {1, 2, . . . k 1} si k > 0.Los nmeros r y b1, b2, . . . , bk estn unvocamente determinados por G.

    Lo verdaderamente importante, desde el punto de vista de la clasificacin, es que todogrupo abeliano G finitamente generado est determinado exactamente por un conjuntofinito de nmeros {r, b1, b2, . . . , bk}, lo que da pie a la siguiente definicin.

    Definicin 3.0.1 Sea G un grupo abeliano con G = ZrZb1Zb2 . . .Zbken las condiciones del teorema anterior. El nmero r es el rango del subgrupo libre Zry se le llama nmero de Betti de G. Los nmeros b1, b2, . . . , bk se llaman coeficientesde torsin de G.

    3.1. Estructura del algoritmo

    Partiremos de un complejo de cadenas finito C = {Ck, k}nk=0 donde los Ck sonZ-mdulos. Suponemos tambin que los Z-mdulos Ck son de tipo finito, y libres.Queremos calcular la homologa de C con coeficientes en Z.La ventaja de esto es que a partir de ellos podemos obtener la homologa con coeficien-tes en cualquier otro anillo. Por otro lado son ms difciles y costosos de calcular, enparticular si lo comparamos con el clculo de homologa con coeficientes en un cuer-po.

    35

  • 36 CAPTULO 3. DISEO

    El complejo de cadenas lo codificaremos como un vector D de matrices de enteros,indexado desde 0 hasta n. Cada elemento k de la lista es la matriz del correspondienteborde o diferencial k del complejo.Los subgrupos libres de Zm se expresarn como matrices en las que cada columna esun generador del grupo.Los cocientes de grupos se expresarn mediante listas de enteros correspondientes a suforma cannica, es decir, nmero de Betti y coeficientes de torsin.El siguiente diagrama representa la estructura bsica del algoritmo:

    calcular homologa

    ker-im

    forma escalada por filas

    grupo cociente

    solve

    forma normal smith

    forma normal smith

    Figura 3.1: Diagrama de la estructura del algoritmo

    3.2. Algoritmos bsicosLa estructura bsica del algoritmo es la mostrada en el diagrama de la seccin ante-

    rior. Pero todos los subalgoritmos estn basados en alguno de los siguientes algoritmossimples, los cuales es conveniente comentarlos para entender el algoritmo principal.Dada una matriz B denotaremos por f1, f2, . . . a cada una de sus filas y c1, c2, . . . acada una de sus columnas.Los siguientes algoritmos realizan operaciones sobre las filas de la matriz dada.(af1) RowExchange: Este algoritmo recibe como parmetros de entrada una matriz B

    y dos enteros i, j que indican dos filas de la matriz B. El algoritmo intercambiala fila fi por la fila fj y nos devuelve B modificada.

    (af2) RowMultiply: Este algoritmo recibe como parmetros de entrada una matriz B yun entero i que indica una fila de la matriz B. El algoritmo multiplica toda la filafi por 1 y devuelve B modificada.

    (af3) RowAdd: Este algoritmo recibe como parmetros de entrada una matriz B y tresenteros i, j, q. Los dos primeros indican dos filas de la matriz B. El algoritmosustituye la fila fi por la fila fi ms la fila fj multiplicada por q y devuelve Bmodificada.

    A continuacin se muestran los algoritmos que realizan operaciones sobre las columnasde la matriz dada; stas son muy parecidas a las realizadas sobre las distintas filas perocon alguna pequea modificacin.

  • 37

    (ac1) ColumnExchange: Este algoritmo recibe como parmetros de entrada una matrizB y dos enteros i, j que indican dos columnas de la matriz B. El algoritmointercambia la columna ci por la columna cj y devuelve B modificada.

    (ac2) ColumnMultiply: Este algoritmo recibe como parmetros de entrada una matrizB y un entero i que indica una columna de la matriz B. El algoritmo multiplicatoda la columna ci por 1 y devuelve B modificada.

    (ac3) ColumnAdd: Este algoritmo recibe como parmetros de entrada una matriz B ytres enteros i, j, q. Los dos primeros indican dos columnas de la matriz B. Elalgoritmo sustituye la columna cj por la columna cj ms la columna ci multipli-cada por q y devuelve B modificada.

    Estos algoritmos son la base del algoritmo principal, y a partir de stos se desarrollanunos algoritmos todava bastante bsicos, que son los siguientes:

    (a1) RowExchangeOperation: Este algoritmo recibe como parmetros de entrada tresmatrices B,Q,Q y dos enteros i, j. El algoritmo llama a las funcin RowEx-change primero con parmetros B, i, j segundo con parmetros Q, i, j, y porltimo llamamos a ColumnExchange Q, i, j. El algoritmo devuelve las matricesB,Q,Q modificadas.

    (a2) RowMultiplyOperation: Este algoritmo recibe como parmetros de entrada tresmatrices B,Q,Q y un entero i. El algoritmo llama a las funcin RowMultiplyprimero con parmetros B, i, segundo con parmetros Q, i, y por ltimo llama-mos a ColumnMultiply con parmetros Q, i. El algoritmo devuelve las matricesB,Q,Q modificadas.

    (a3) RowAddOperation: Este algoritmo recibe como parmetros de entrada tres ma-trices B,Q,Q y tres enteros i, j, q. El algoritmo llama a las funcin RowAddprimero con parmetros B, i, j, q, segundo con parmetros Q, i, j, q, y por lti-mo se llama a ColumnAdd con parmetros Q, i, j,q. El algoritmo devuelve lasmatrices B,Q,Q modificadas.

    Los algoritmos relacionados con la modificacin de columnas, aunque similares a losanteriores, no son completamente idnticos, por lo que a continuacin pasamos a des-cribirlos:

    (a4) ColumnExchangeOperation: Este algoritmo recibe como parmetros de entradatres matrices B,Q,Q y dos enteros i, j. El algoritmo llama a las funcin Colum-nExchange primero con parmetros B, i, j; segundo con parmetros Q, i, j, ypor ltimo llamamos a RowExchange Q, i, j. El algoritmo devuelve las matricesB,Q,Q modificadas.

    (a5) ColumnMultiplyOperation: Este algoritmo recibe como parmetros de entradatres matrices B,Q,Q y un entero i. El algoritmo llama a las funcin Column-Multiply primero con parmetrosB, i, segundo con parmetrosQ, i, y por ltimollamamos a RowMultiply con parmetros Q, i. El algoritmo devuelve las matri-ces B,Q,Q modificadas.

  • 38 CAPTULO 3. DISEO

    (a6) ColumnAddOperation: Este algoritmo recibe como parmetros de entrada tresmatrices B,Q,Q y tres enteros i, j, q. El algoritmo llama a las funcin Colum-nAdd primero con parmetros B, i, j, q, segundo con parmetros Q, i, j, q, y porltimo se llama a RowAdd con parmetros Q, i, j,q. El algoritmo devuelve lasmatrices B,Q,Q modificadas.

    3.3. Algoritmo Forma Escalada por filas

    En esta seccin usaremos las operaciones sobre filas y columnas elementales paratransformar matrices de enteros arbitrarias en matrices simples. Los pasos que daremospara ello posiblemente recuerden a la eliminacin Gaussiana pero con la restriccin deque tenemos que trabajar con coeficientes enteros.Denotaremos porMmn(Z) al conjunto de las matrices de ordenmn con coeficien-tes enteros.Definicin 3.3.1 La posicin pivote de un vector no nulo es la posicin del primer ele-mento no nulo de ese vector.Una matriz A est en forma escalada por filas si para cualesquiera dos filas consecuti-vas ri y ri+1 se verifica que si ri+1 6= 0, entonces ri 6= 0 y la posicin pivote de ri+1es mayor que la posicin pivote de ri.Una matriz A se dice que est en forma escalada por columnas si su traspuesta At esten forma escalada por filas.

    Ejemplo 3.3.1 La siguiente matriz est en forma escalada por filas:

    B =

    0 2 0 7 30 0 1 0 110 0 0 0 70 0 0 0 00 0 0 0 0

    Las tres primeras filas son filas no nulas. La posicin pivote de estas tres columnas es2,3 y 5.

    Ejemplo 3.3.2 El siguiente ejemplo muestra una matriz en forma escalada por colum-nas

    B =

    0 0 0 01 0 0 00 2 0 0

    Bt =

    0 1 00 0 20 0 00 0 0

    Proposicin 3.3.1 Sea {e1, . . . , en} la base cannica de Zn, donde

    ei =( (i0, . . . , 1, 0, . . . , 0

    ) Zn. Sea A Mmn(Z) y sean c1, c2, . . . , cnlas columnas de A. Si A est en forma escalada por columnas, entonces se tiene que{c1, c2, . . . , ck} es una base de im A y {ek+1, ek+2, . . . , en} es una base de ker A.

  • 39

    Dada B Mmn(Z), para cada i {1, . . . ,m} y j {1, . . . , n}, denotaremos porB[i, j] al elemento de B determinado por la fila i y la columna j.

    j......

    i . . . . . . B[i, j] . . ....

    = BY denotamos por B[k : l, k : l] a la submatriz de B formada por los B[i, j] tales quek i l y k j l. B[i, k : l] denotar la submatriz formada por los elementosde la fila i que estn en las columnas j tal que k j l. Anlogamente B[k : l, j]son los elementos de la columna j que estn en las filas i tal que k i l.

    Para llegar a calcular la forma escalada por filas de una matriz se utilizan los siguientesalgoritmos:

    Algoritmo PartRowReduce:Este algoritmo tiene como parmetros de entrada tres matrices B,Q,Q y dos enterosk, l y slo se puede aplicar en el caso de que B[k, l] 6= 0. Su funcionamiento es elsiguiente:Para cada fila i desde la fila k + 1 hasta el nmero total de filas de B, calculamos laparte entera, la cual denotaremos por q, del cociente B[i, l]/B[k, l]. A continuacinrealizamos las operaciones indicadas por el mtodo RowAddOperation aplicado a lasmatrices B,Q,Q y a los enteros i, k,q. Al final devolvemos las matrices B,Q,Qmodificadas. De forma anloga podemos construir la funcinAlgoritmo PartColumnReduce, con la diferencia de que en vez de llamar al mtodoRowAddOperation llamamos al mtodo ColumnAddOperation.

    Ejemplo 3.3.3 Sea

    B =

    2 3 1 13 2 1 44 4 2 2

    Si llamamos al algoritmo PartRowReduce con parmetros B, I33, I33, 1, 1 obtene-mos:En un primer paso

    B =

    2 3 1 11 1 0 54 4 2 2

    Q = 1 0 01 1 0

    0 0 1

    Q = 1 0 01 1 0

    0 0 1

    En un segundo paso obtenemos las matrices que sern devueltas

    B =

    2 3 1 11 1 0 50 2 4 0

    Q = 1 0 01 1 0

    2 0 1

    Q = 1 0 01 1 0

    2 0 1

  • 40 CAPTULO 3. DISEO

    Algoritmo SmallestNonZero:Tiene como entradas un vector v y un entero k. El objetivo de este algoritmo es encon-trar el menor elemento no nulo en valor absoluto, al cual denotaremos por , del vectorv, a partir del elemento k de dicho vector. Tambin calcula la posicin en la cual seencuentra ese elemento.Como dicho elemento puede estar repetido se devuelve la posicin ms baja, a la cualllamaremos i0. Devolveremos e i0.

    Algoritmo RowPrepare:Este algoritmo tiene como objetivo preparar la matriz de modo que sta sea ms fcilde utilizar d