Introducción a las Ciencias de la Computación Colaboratorio de Computación Avanzada (CNCA) 2015 1 / 22
Contenidos 1 Computación e Informática Caracterización Áreas relacionadas 2 Antecedentes Orígenes Contexto histórico 3 Pilares de las Ciencias de la Computación Computabilidad Complejidad Tratabilidad 4 Síntesis 2 / 22
Introducción 3 / 22
Ciencias de la Computación Matemática aplicada al modelamiento y resolución de problemas. Utiliza representaciones formales. Estudia propiedades computacionales de los problemas. Computabilidad. Complejidad. Tratabilidad. Diseña, plantea y valida teorías. 4 / 22
Ciencias de la Computación Matemática aplicada al modelamiento y resolución de problemas. Utiliza representaciones formales. Estudia propiedades computacionales de los problemas. Computabilidad. Complejidad. Tratabilidad. Diseña, plantea y valida teorías. 4 / 22
Ingeniería de Software Representación, manejo y administración de la información. Diseño, implementación, validación y verificación de software. Utiliza procesos estructurados y bien definidos de ciclo de vida, mantenimiento y soporte de sistemas de información. 5 / 22
Computación vs. Ingeniería Áreas relacionadas De: http://compsci.ca/blog/6-degrees-of-computer-science 6 / 22
Antecedentes 7 / 22
Origen de la computación La computación antecede las computadoras electrónicas. Sistemas computacionales: Ábaco ( 2400 AEC) Reglas gramaticales: Metareglas, transformaciones y recursión. Por ejemplo, el Sánscrito ( 500 AEC). Motor diferencial (S. XIX DEC). Cálculo de polinomios, aproximación de logaritmos. 8 / 22
Motor diferencial Motor diferencial de Babbage 9 / 22
Formalización del razonamiento Hilbert: axiomatización Gödel y Turing: definición de computabilidad. Gödel: funciones recursivas, teorema de incompletitud. Turing: Máquina universal. 10 / 22
Máquina de Turing Máquina hipotética que utiliza: Cinta arbitrariamente larga (infinita). Conjunto de símbolos. Conjunto de instrucciones. Transiciones entre estados. Chuch-Turing: Computabilidad Turing Computabilidad intuitiva. Interpretación de la máquina de Turing De: http://aturingmachine.com/ 11 / 22
Las máquinas en contexto Evolución: utensilios, herramientas, máquinas. Las máquinas extienden funciones complejas del ser humano. Turing-completitud: MUT puede simular cualquier otra máquina de Turing. Extensión de nuestras capacidades de: Resolución de problemas. Análisis de datos. Identificación y reconocimiento de patrones. Representación simbólica y precisión. 12 / 22
Pilares de las Ciencias de la Computación 13 / 22
Representación La computación se basa en la manipulación de símbolos. Por lo general utiliza lenguaje matemático. Las soluciones se representan mediante algoritmos: Solución ordenada con pasos bien definidos. Los problemas pueden estudiarse según las propiedades de los algoritmos que los resuelven. 14 / 22
Computabilidad Dada una teoría de resolución de problemas: Es posible resolver este problema? Ejemplo de problema no computable: Turing: Problema de la parada Problema de la parada 15 / 22
Complejidad Medida de rendimiento de algoritmos. Permite determinar si un algoritmo es mejor que otro. Se puede medir tiempo, memoria, etc. Por ejemplo: Cuánto tarda este algoritmo en resolver este problema? Cuánta memoria require este algoritmo para resolver este problema? Recorrido en grafo 16 / 22
Tiempos de ejecución de algoritmos Cantidad de instrucciones requeridas para finalizar. Es importante el caso general, con problemas suficientemente grandes. Se utilizan las funciones: Aproximación inferior: Ω (mejor caso). Aproximación superior: O (peor caso). Aproximación superior e inferior: Θ (caso promedio). Tiempos de ejecución de algoritmos 17 / 22
Tratabilidad Algoritmos con alta complejidad se vuelven imprácticos en la vida real. Resuelve mi algoritmo este problema grande en un tiempo dado, t? Ejemplo de problema potencialmente intratable: Torres de Hanoi Con algoritmos conocidos, T (n) = O(2 n ). Torres de Hanoi 18 / 22
Síntesis 19 / 22
Importancia Es formativa: Utiliza sistemas formales. Requiere la definición clara de elementos, etapas y las relaciones entre componentes. Requiere entender claramente un problema, sus ramificaciones, y las formas de resolverlo. Es útil: Permite resolver cálculos que no tienen solución anaĺıtica. Permite resolver problemas con alta precisión numérica. Permite experimentar con objetos de estudio inaccesibles: galaxias, placas tectónicas, átomos, la inteligencia humana. Es entretenida: Plantea retos y problemas con la forma de acertijos y rompecabezas. Gran cantidad de soluciones posibles, cada una mejor que la anterior. 20 / 22
Síntesis Las ciencias de la computación estudian la resolución de problemas, sus propiedades, y las máquinas que los resuelven. Utiliza sistemas formales. Métodos computacionales (como algoritmos) son importantes en otras disciplinas. 21 / 22
Lecturas recomendadas Michael Sipser. Introduction to the Theory of Computation. 2da Edición, Course Technology, 2005. ISBN: 978-0534950972. Gilles Brassard y Paul Bratley. Fundamentals of Algorithmics. Prentice Hall, 1995. ISBN: 978-0133350685. 22 / 22