5.20. Teoría de la Computación (Obligatorio)

5.20. Teoría de la Computación (Obligatorio)

Figura 5.20: Mapa de Conexión. CS211 Teoría de la Computación

5.20.1. Justificación ↑ Volver arriba

La Teoría de la Computación proporciona los fundamentos matemáticos para entender qué puede ser computado y con qué eficiencia. Introduce lenguajes formales, autómatas y los límites de la resolubilidad algorítmica. Este conocimiento es fundamental para comprender la construcción de compiladores, la verificación formal y la complejidad inherente de los problemas computacionales.

5.20.2. Objetivos Generales ↑ Volver arriba

  1. Dominar los conceptos de autómatas finitos y expresiones regulares.
  2. Analizar gramáticas libres de contexto y autómatas de pila.
  3. Comprender la Máquina de Turing Universal como modelo de computación.
  4. Comprender los límites de la computabilidad y el Problema de la Parada.
  5. Diferenciar entre clases de complejidad como P y NP.

5.20.3. Contribución a los resultados (Outcomes) ↑ Volver arriba

AG-C08) Análisis de Problemas: Identifica, formula y analiza problemas complejos de computación. (Usage)
AG-C12) Aplica la teoría de la ciencia de la computación y los fundamentos de desarrollo de software para producir soluciones basadas en computadora. (Usage)

5.20.4. Contenido ↑ Volver arriba

5.20.4.1. Lenguajes Formales y Autómatas (18 horas) [Habilidades AG-C08,AG-C12] ↑ Volver arriba

Referencias Bibliográficas: (Sipser, 2012; Hopcroft et al., 2013)

Temas

  1. Autómatas formales:
    1. Estado Finito
    2. Pila
    3. Linealmente Acotado
    4. Máquina de Turing enumerate
    5. Lenguajes formales, gramáticas y Jerarquía de Chomsky:
      1. Regulares (Tipo-3):
        1. Expresiones Regulares enumerate
        2. Libres de Contexto (Tipo-2)
        3. Sensibles al Contexto (Tipo-1)
        4. Recursivamente Enumerables (Tipo-0) enumerate
        5. Autómatas deterministas y no deterministas
        6. Demostraciones del Lema de Bombeo:
          1. Demostración de la limitación de Estado Finito/Lenguaje Regular
          2. Limitación de Autómatas de Pila/Lenguaje Libre de Contexto enumerate

          Aprendizaje esperado (Learning Outcomes)

          1. Para cada autómata formal en esta unidad:
            1. Explicar su definición comparando sus características con los otros autómatas de esta unidad
            2. Usando un ejemplo, explicar paso a paso cómo el autómata opera sobre la entrada incluyendo si acepta la entrada asociada
            3. Explicar un ejemplo de entradas que pueden y no pueden ser aceptadas por el autómata. enumerate [Explicar]
            4. Dado un problema, desarrollar un autómata apropiado que aborde el problema [Crear]
            5. Desarrollar una expresión regular para un lenguaje regular dado expresado en lenguaje natural [Crear]
            6. Convertir entre notaciones equivalentemente poderosas para un lenguaje, incluyendo entre DFAs, NFAs y expresiones regulares, y entre PDAs y CFGs [Aplicar]
            7. Aplicar lemas de bombeo, o medios alternativos, para demostrar las limitaciones de los autómatas de Estado Finito y Pila [Aplicar]
            5.20.4.2. Lenguajes Formales y Autómatas (16 horas) [Habilidades AG-C08,AG-C12] ↑ Volver arriba

            Referencias Bibliográficas: (Sipser, 2012; Hopcroft et al., 2013)

            Temas

            1. Autómatas formales:
              1. Estado Finito
              2. Pila
              3. Linealmente Acotado
              4. Máquina de Turing enumerate
              5. Lenguajes formales, gramáticas y Jerarquía de Chomsky:
                1. Regulares (Tipo-3):
                  1. Expresiones Regulares enumerate
                  2. Libres de Contexto (Tipo-2)
                  3. Sensibles al Contexto (Tipo-1)
                  4. Recursivamente Enumerables (Tipo-0) enumerate
                  5. Formas Normales: Chomsky y Greibach
                  6. Demostraciones del Lema de Bombeo:
                    1. Demostración de la limitación de Estado Finito/Lenguaje Regular
                    2. Limitación de Autómatas de Pila/Lenguaje Libre de Contexto enumerate
                    3. Relaciones entre autómatas formales, lenguajes y gramáticas

                    Aprendizaje esperado (Learning Outcomes)

                    1. Para cada autómata formal en esta unidad:
                      1. Explicar su definición comparando sus características con los otros autómatas de esta unidad
                      2. Usando un ejemplo, explicar paso a paso cómo el autómata opera sobre la entrada incluyendo si acepta la entrada asociada
                      3. Explicar un ejemplo de entradas que pueden y no pueden ser aceptadas por el autómata. enumerate [Explicar]
                      4. Dado un problema, desarrollar un autómata apropiado que aborde el problema [Crear]
                      5. Convertir entre notaciones equivalentemente poderosas para un lenguaje, incluyendo entre DFAs, NFAs y expresiones regulares, y entre PDAs y CFGs [Aplicar]
                      6. Aplicar lemas de bombeo, o medios alternativos, para demostrar las limitaciones de los autómatas de Estado Finito y Pila [Aplicar]
                      7. Construir GLCs para descripciones de lenguajes formales [Evaluar]
                      5.20.4.3. Lenguajes Formales y Autómatas (16 horas) [Habilidades AG-C08,AG-C12] ↑ Volver arriba

                      Referencias Bibliográficas: (Sipser, 2012; Kozen, 2006)

                      Temas

                      1. Autómatas formales:
                        1. Estado Finito
                        2. Pila
                        3. Linealmente Acotado
                        4. Máquina de Turing enumerate
                        5. Lenguajes formales, gramáticas y Jerarquía de Chomsky:
                          1. Regulares (Tipo-3):
                            1. Expresiones Regulares enumerate
                            2. Libres de Contexto (Tipo-2)
                            3. Sensibles al Contexto (Tipo-1)
                            4. Recursivamente Enumerables (Tipo-0) enumerate
                            5. Decidabilidad, (in)computabilidad y parada
                            6. La tesis de Church-Turing
                            7. Reducibilidad y reducciones
                            8. Modelos equivalentes de computación algorítmica:
                              1. Máquinas de Turing y Variaciones (por ejemplo, multicinta, no deterministas)
                              2. Cálculo Lambda
                              3. Funciones Mu-Recursivas enumerate

                              Aprendizaje esperado (Learning Outcomes)

                              1. Para cada autómata formal en esta unidad:
                                1. Explicar su definición comparando sus características con los otros autómatas de esta unidad
                                2. Usando un ejemplo, explicar paso a paso cómo el autómata opera sobre la entrada incluyendo si acepta la entrada asociada
                                3. Explicar un ejemplo de entradas que pueden y no pueden ser aceptadas por el autómata. enumerate [Explicar]
                                4. Explicar una Máquina de Turing universal y su operación [Explicar]
                                5. Presentar a una audiencia de compañeros de trabajo y gerentes la imposibilidad de proporcionarles un programa que verifique todos los otros programas, incluyendo algunos aparentemente simples, en busca de bucles infinitos incluyendo una explicación del problema de la parada, por qué no tiene solución algorítmica y su importancia para la computación algorítmica del mundo real [Explicar]
                                6. Explicar la Tesis de Church-Turing y su importancia para la computación algorítmica [Explicar]
                                7. Aplicar aritmetización y diagonalización para demostrar que el Problema de la Parada para Máquinas de Turing es Indecidible [Aplicar]
                                8. Dado un lenguaje indecidible conocido, aplicar una reducción por mapeo o historia computacional para demostrar que otro lenguaje es indecidible [Aplicar]
                                5.20.4.4. Lenguajes Formales y Autómatas (12 horas) [Habilidades AG-C08,AG-C12] ↑ Volver arriba

                                Referencias Bibliográficas: (Sipser, 2012; Kozen, 2006)

                                Temas

                                1. Lenguajes formales, gramáticas y Jerarquía de Chomsky:
                                  1. Regulares (Tipo-3):
                                    1. Expresiones Regulares enumerate
                                    2. Libres de Contexto (Tipo-2)
                                    3. Sensibles al Contexto (Tipo-1)
                                    4. Recursivamente Enumerables (Tipo-0) enumerate
                                    5. Relaciones entre autómatas formales, lenguajes y gramáticas
                                    6. Modelos equivalentes de computación algorítmica:
                                      1. Máquinas de Turing y Variaciones (por ejemplo, multicinta, no deterministas)
                                      2. Cálculo Lambda
                                      3. Funciones Mu-Recursivas enumerate
                                      4. Lenguajes Sensibles al Contexto (Tipo-1) y aplicaciones

                                      Aprendizaje esperado (Learning Outcomes)

                                      1. Para cada modelo formal en esta unidad:
                                        1. Explicar su definición comparando sus características con las otras en esta unidad
                                        2. Explicar ejemplos de entradas que son y no pueden ser aceptadas por el lenguaje/gramática. enumerate [Explicar]
                                        3. Explicar las funciones Recursivas Primitivas y Generales (cero, sucesor, selección, recursión primitiva, composición y Mu), su importancia e implementaciones en Máquina de Turing [Explicar]
                                        4. Explicar cómo se realiza la computación en el Cálculo Lambda (por ejemplo, conversión alfa y reducción beta) [Explicar]
                                        5. Explicar el teorema de Rice y su importancia [Explicar]
                                        5.20.4.5. Marco de Análisis de Complejidad (3 horas) [Habilidades AG-C08,AG-C12] ↑ Volver arriba

                                        Referencias Bibliográficas: (Sipser, 2012; Cormen et al., 2022)

                                        Temas

                                        1. Marco de Análisis de Complejidad:
                                          1. Rendimiento de un algoritmo en el mejor caso, caso promedio y peor caso
                                          2. Mediciones empíricas y relativas (Orden de Crecimiento)
                                          3. Tamaño de entrada y operaciones primitivas
                                          4. Eficiencia de tiempo y espacio enumerate

                                          Aprendizaje esperado (Learning Outcomes)

                                          1. Preparar una presentación que explique a estudiantes de primer año los conceptos básicos de complejidad algorítmica incluyendo comportamiento de algoritmo en mejor caso, caso promedio y peor caso, notaciones Big-O, Omega y Theta, clases de complejidad, compromisos tiempo-espacio, medición empírica e impacto en problemas prácticos [Explicar]
                                          2. Evaluar informalmente la clase de complejidad fundamental de algoritmos simples [Evaluar]
                                          5.20.4.6. Notación Asintótica y Clases de Complejidad (4 horas) [Habilidades AG-C08,AG-C12] ↑ Volver arriba

                                          Referencias Bibliográficas: (Sipser, 2012; Cormen et al., 2022)

                                          Temas

                                          1. Análisis de complejidad asintótica (cotas promedio y peor caso):
                                            1. Notaciones formales Big-O, Big-Omega y Big-Theta
                                            2. Clases de Complejidad Fundamentales y Ejemplos/Problemas Representativos:
                                              1. \(O(1)\) Constante (por ejemplo, acceso a arreglo)
                                              2. \(O(\log_2 n)\) Logarítmica (por ejemplo, búsqueda binaria)
                                              3. \(O(n)\) Lineal (por ejemplo, búsqueda lineal)
                                              4. \(O(n \log_2 n)\) Log Lineal (por ejemplo, mergesort)
                                              5. \(O(n^2)\) Cuadrática (por ejemplo, ordenamiento por selección)
                                              6. \(O(n^c)\) Polinomial (por ejemplo, \(O(n^3)\) eliminación gaussiana)
                                              7. \(O(2^n)\) Exponencial (por ejemplo, Mochila, Satisfactibilidad (SAT), Viajante de Comercio (TSP), todos los subconjuntos)
                                              8. \(O(n!)\) Factorial (por ejemplo, circuito hamiltoniano, todas las permutaciones) enumerate enumerate

                                              Aprendizaje esperado (Learning Outcomes)

                                              1. Usando ejemplos, explicar cada una de las clases de complejidad fundamentales en esta unidad [Explicar]
                                              2. Explicar a una audiencia no técnica la importancia de los algoritmos tratables versus intratables usando una explicación intuitiva de la complejidad Big-O [Explicar]
                                              5.20.4.7. Análisis de Complejidad: Recursión, Amortización y Cotas Ajustadas (7 horas) [Habilidades AG-C08,AG-C12] ↑ Volver arriba

                                              Referencias Bibliográficas: (Sipser, 2012; Cormen et al., 2022)

                                              Temas

                                              1. Notaciones Little-o, Little-Omega y Little Theta
                                              2. Análisis recursivo formal

                                              Aprendizaje esperado (Learning Outcomes)

                                              1. Usar relaciones de recurrencia para evaluar la complejidad de tiempo de algoritmos definidos recursivamente [Aplicar]
                                              2. Aplicar relaciones de recurrencia elementales usando una forma del Teorema Maestro [Aplicar]
                                              5.20.4.8. Teoría de la Complejidad Computacional (6 horas) [Habilidades ] ↑ Volver arriba

                                              Referencias Bibliográficas: (Sipser, 2012; Cormen et al., 2022)

                                              Temas

                                              1. Tractabilidad e intractabilidad:
                                                1. Clases de Complejidad P, NP y NP-Completo
                                                2. Problemas NP-Completos (por ejemplo, SAT, Mochila, TSP)
                                                3. Reducciones enumerate
                                                4. Modelos de complejidad basados en Máquinas de Turing:
                                                  1. Complejidad de tiempo:
                                                    1. Clases P, NP, NP-C y EXP
                                                    2. Teorema de Cook-Levin enumerate
                                                    3. Complejidad de espacio:
                                                      1. NSpace y PSpace
                                                      2. Teorema de Savitch enumerate enumerate

                                                      Aprendizaje esperado (Learning Outcomes)

                                                      1. Explicar la importancia de la NP-Completitud [Explicar]
                                                      2. Explicar cómo NP-Duro es una cota inferior y NP es una cota superior para la NP-Completitud [Explicar]
                                                      3. Explicar ejemplos de problemas NP-completos [Explicar]
                                                      4. Explicar el Teorema de Cook-Levin y la NP-Completitud de SAT [Explicar]
                                                      5. Explicar las clases P y NP [Explicar]
                                                      6. Demostrar que un problema es NP-Completo reduciendo un problema NP-C clásico conocido a él (por ejemplo, 3SAT y Clique) [Crear]
                                                      7. Explicar la clase P-espacio y su relación con la clase EXP [Explicar]

                                                      5.20.5. Referencias Bibliográficas ↑ Volver arriba

                                                      Sipser, M. (2012). Introduction to the Theory of Computation. Cengage Learning, 3rd edition.

                                                      Hopcroft, J. E., Motwani, R., and Ullman, J. D. (2013). Introduction to Automata Theory, Languages, and Computation. Pearson, 3rd edition.

                                                      Kozen, D. C. (2006). Theory of Computation. Springer.

                                                      Cormen, T. H., Leiserson, C. E., Rivest, R. L., and Stein, C. (2022). Introduction to Algorithms. MIT Press, 4th edition.

                                                      ¿Encontraste una errata, un curso desactualizado, un enlace roto, o tienes una sugerencia? Cuéntanos.

                                                      Escanea para abrir en tu teléfono