Skip to content

AlejoTechEngineer/Maquinas_De_Turing_Con_JFLAP

Repository files navigation

🤖 Máquinas de Turing con JFLAP

Turing Machine JFLAP Status Academic

Laboratorio de Informática Teórica
Fundación Universitaria Internacional de La Rioja

📚 Ver Documentación🎯 Ejercicios🚀 Uso👨‍💻 Autor


📋 Descripción

Este repositorio contiene la implementación práctica de Máquinas de Turing utilizando la herramienta JFLAP, desarrollado como parte del Laboratorio No. 1 de la asignatura de Informática Teórica.

El proyecto demuestra dos tipos fundamentales de Máquinas de Turing:

  • 🔍 Máquinas Reconocedoras: Deciden si una cadena pertenece a un lenguaje formal
  • ⚙️ Máquinas Computadoras: Ejecutan procedimientos algorítmicos concretos

Arquitectura

flowchart TD
    A[JFLAP 7.1 - Simulador] --> B[Ejercicio_1.jff - Reconocedor L igual 0n1n]
    A --> C[Ejercicio_2.jff - Calculadora Sucesor Binario]
    B --> D[Estados: q0 q1 q2 q3 qa qr - Marcado X/Y]
    D --> E{Cadena Valida?}
    E -->|01 - 0011 - 000111| F[qa: Acepta]
    E -->|001 - 0111 - 0101| G[qr: Rechaza]
    C --> H[Estados: q0 q1 qa - Acarreo Binario]
    H --> I[Entrada n -> Salida n+1]
    A --> J[PDF Informe - Desarrollo_Proyecto.pdf]
Loading

🎯 Ejercicios Implementados

Ejercicio 1: Reconocedor del Lenguaje L = {0ⁿ1ⁿ : n > 0}

Objetivo: Diseñar una Máquina de Turing que reconozca cadenas con igual cantidad de ceros y unos.

Estrategia: Algoritmo de marcado y emparejamiento

  • ✅ Marca cada 0 como X
  • ✅ Busca y marca el 1 correspondiente como Y
  • ✅ Repite hasta emparejar todos los símbolos
  • ✅ Verifica que no sobren símbolos

Estados: q0, q1, q2, q3, qa, qr

Cadenas de Prueba

✅ Aceptadas ❌ Rechazadas
01 ε (vacía)
0011 1
000111 001
00001111 0111
0000011111 0101

Ejercicio 2: Calculadora del Sucesor Binario

Objetivo: Diseñar una Máquina de Turing que calcule n+1 de un número binario.

Estrategia: Suma binaria con propagación de acarreo

  • ✅ Se posiciona en el bit menos significativo
  • ✅ Aplica reglas de suma binaria
  • ✅ Propaga el acarreo hacia la izquierda
  • ✅ Añade dígito adicional si es necesario

Estados: q0, q1, qa

Ejemplos de Funcionamiento

Entrada Salida
0 1
1 10
10 11
111 1000
1011 1100

📁 Estructura del Repositorio

Maquinas_De_Turing_Con_JFLAP/
├── 📄 README.md
├── 🔒 .gitignore
├── 📘 Desarrollo_Proyecto_Alejandro_De_Mendoza.pdf
├── 🤖 Maquinas_de_Turing_con_JFLAP_Ejercicio_1.jff
├── 🤖 Maquinas_de_Turing_con_JFLAP_Ejercicio_2.jff
└── 📂 files/
    ├── COMANDOS_GIT.ps1
    └── COMANDOS_RAPIDOS.ps1

🛠️ Tecnologías Utilizadas

  • JFLAP 7.1: Software educativo para diseño y simulación de autómatas
  • Java: Requerido para ejecutar JFLAP
  • LaTeX/Word: Documentación del proyecto

🚀 Cómo Usar

Prerrequisitos

  1. Descargar e instalar JFLAP
  2. Tener Java instalado (JRE 8 o superior)

Ejecución

  1. Clonar el repositorio
   git clone https://github.com/AlejoTechEngineer/Maquinas_De_Turing_Con_JFLAP.git
   cd Maquinas_De_Turing_Con_JFLAP
  1. Abrir JFLAP
   java -jar JFLAP.jar
  1. Cargar un ejercicio

    • File → Open → Seleccionar .jff deseado
  2. Ejecutar simulación

    • Input → Step... (para ejecución paso a paso)
    • Input → Multiple Run (para pruebas masivas)

📚 Documentación

El documento completo del laboratorio incluye:

  • ✅ Introducción teórica a las Máquinas de Turing
  • ✅ Análisis detallado de cada lenguaje
  • ✅ Diseño de estados y transiciones
  • ✅ Diagramas de flujo completos
  • ✅ Pruebas exhaustivas con capturas de pantalla
  • ✅ Conclusiones sobre computabilidad

Leer el informe completo: Desarrollo_Proyecto_Alejandro_De_Mendoza.pdf


🎓 Conceptos Clave

Máquinas Reconocedoras vs Computadoras

Característica Reconocedoras Computadoras
Propósito Decidir membresía en un lenguaje Ejecutar cálculos
Salida Acepta/Rechaza Resultado computado
Ejemplo L = {0ⁿ1ⁿ} Sucesor binario
Uso Verificación formal Operaciones aritméticas

📊 Resultados

Ejercicio 1

  • 5/5 cadenas aceptadas correctamente
  • 5/5 cadenas rechazadas correctamente
  • 100% de precisión en el reconocimiento

Ejercicio 2

  • 5/5 pruebas calculadas correctamente
  • Propagación de acarreo funcionando perfectamente
  • Manejo de casos borde (todos 1s) exitoso

🔬 Validación

Todas las máquinas fueron validadas usando:

  • ✅ Simulación paso a paso en JFLAP
  • ✅ Pruebas unitarias con casos límite
  • ✅ Verificación manual de transiciones
  • ✅ Análisis de complejidad temporal

👨‍💻 Autor

Alejandro De Mendoza
Ingeniería Informática
Fundación Universitaria Internacional de La Rioja

🔗 GitHub: @AlejoTechEngineer


📅 Información del Proyecto

  • Asignatura: Informática Teórica (COLGII)
  • Periodo: Enero 2026 - PER 15746
  • Fecha de Entrega: 16 de Febrero de 2026
  • Tipo: Laboratorio Práctico No. 1

📖 Referencias Bibliográficas

  • Sipser, M. (2013). Introduction to the theory of computation (3rd ed.). Cengage Learning.
  • Hopcroft, J. E., Motwani, R., & Ullman, J. D. (2007). Introduction to automata theory, languages, and computation (3rd ed.). Pearson.
  • Turing, A. M. (1936). On computable numbers, with an application to the Entscheidungsproblem. Proceedings of the London Mathematical Society, 42(2), 230–265.
  • Rodger, S. H., & Finley, T. W. (2006). JFLAP: An interactive formal languages and automata package. Jones & Bartlett Learning.

📜 Licencia

Este proyecto es material académico desarrollado para fines educativos.


🙏 Agradecimientos

  • Al profesor Ing. Rogerio Orlando Beltrán Castro por su guía y conocimientos
  • A la Fundación Universitaria Internacional de La Rioja por los recursos proporcionados
  • A los creadores de JFLAP por esta excelente herramienta educativa

⭐ Si este proyecto te fue útil, considera darle una estrella ⭐

Made with ❤️ and ☕ by Alejandro De Mendoza

About

Implementación en JFLAP 7.1 de máquinas de Turing reconocedoras y computadoras: diseño formal de estados, transiciones y alfabetos sobre lenguajes de la jerarquía de Chomsky. Lab. 1, Informática Teórica, UNIR.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors