000061415 001__ 61415
000061415 005__ 20170607111348.0
000061415 037__ $$aTAZ-PFC-2017-018
000061415 041__ $$aspa
000061415 1001_ $$aEscartín Aparicio, Rubén Alejandro
000061415 24200 $$aAn approach to algorithm optimization by circuit minimization for boolean functions
000061415 24500 $$aUna aproximación a la optimización de algoritmos mediante el uso de minimización de funciones booleanas
000061415 260__ $$aZaragoza$$bUniversidad de Zaragoza$$c2017
000061415 506__ $$aby-nc-sa$$bCreative Commons$$c3.0$$uhttp://creativecommons.org/licenses/by-nc-sa/3.0/
000061415 520__ $$aEste proyecto explora la posibilidad de optimizar algoritmos utilizando técnicas de minimización de funciones booleanas. La idea de partida es que  expresar un programa a muy bajo nivel permitirá localizar y eliminar redundancia. Para ello se trabaja con operaciones bit a bit de lógica booleana. Usamos únicamente la función NAND para expresar cualquier otra función gracias a su propiedad de completitud funcional. Expresar un algoritmo de esta forma nos permite, por un lado, tener una medida del coste del algoritmo en funciones NAND y, por otro, paralelizarlo. Mediante minimización, se puede optimizar un circuito lógico equivalente a un fragmento de código secuencial, que no tenga bucles ni recursividad. Para ello se ha desarrollado una técnica propia de minimización rápida. Se han desarrollado técnicas para este proyecto que permiten aplicar la minimización a algoritmos recursivos. De este modo se eliminan, por ejemplo, operaciones repetidas en diferentes iteraciones de un bucle. Para llevar a cabo este trabajo se ha desarrollado una notación propia, parecida a un lenguaje ensamblador, que permite trabajar con funciones lógicas y recursividad. Se ha creado una base de datos dónde se definen las funciones recursivas, que pueden representar desde una puerta lógica hasta un algoritmo como el de la suma. Se han implementado los métodos de optimización de estas funciones recursivas y un método de evaluación, mediante el que se ejecutan para comprobar que son correctas. También se han implementado una serie de utilidades para, por ejemplo, traducir entre diferentes notaciones. Finalmente se han comparado los resultados con el algoritmo sin optimizar y con la solución que nos ofrecerían otras herramientas.
000061415 521__ $$aIngeniero en Informática
000061415 540__ $$aDerechos regulados por licencia Creative Commons
000061415 700__ $$aCampos Laclaustra, Javier$$edir.
000061415 700__ $$aViñals Yufera, Víctor$$edir.
000061415 7102_ $$aUniversidad de Zaragoza$$bInformática e Ingeniería de Sistemas$$cLenguajes y Sistemas Informáticos
000061415 8560_ $$f543588@celes.unizar.es
000061415 8564_ $$s2208196$$uhttps://zaguan.unizar.es/record/61415/files/TAZ-PFC-2017-018.pdf$$yMemoria (spa)
000061415 909CO $$ooai:zaguan.unizar.es:61415$$pproyectos-fin-carrera$$pdriver
000061415 950__ $$a
000061415 951__ $$adeposita:2017-06-06
000061415 980__ $$aTAZ$$bPFC$$cEINA