Está en la página 1de 11

AUTÓMATAS Y LENGUAJES FORMALES

FASE 1: PRESABERES – AUTÓMATAS Y LENGUAJES FORMALES


APORTE INDIVIDUAL

MILTON ARCENIO COGOLLO LIZARAZO


CODIGO 4104176
Grupo: 301405A_612

MARCO ALEXIS PALTA


TUTOR

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA UNAD


ESCUELA TECNOLOGÍA DE CIENCIAS BÁSICAS E INGENIERÍA
AUTOMATAS Y LENGUAJES FORMALES
Marzo, 2019
AUTÓMATAS Y LENGUAJES FORMALES

INTRODUCCIÓN

El presente trabajo se pretende conocer y dar a conocer, mediante las actividades de pre saberes para el

curso de AUTÓMATAS Y LENGUAJES FORMALES, de la UNAD, la historia y evolución de la

teoría de Autómatas y Lenguajes formales, realizando una investigación tanto en los medios

proporcionados por la universidad como en la gran red mundial.

Se inicia con un mapa conceptual donde se muestra la historia y evolución de esa teoría, luego se presenta

un ensayo argumentativo sobre Alan Turing y la máquina enigma, dando a conocer como apareció y cuál

fue su influencia en el desarrollo de la segunda guerra mundial.

Finalmente anexamos tres palabras que a la luz delos objetivos que pretendemos alcanzar en este curso,

vemos que hacen falta en el glosario de autómatas.


AUTÓMATAS Y LENGUAJES FORMALES

1. CUADRO SINÓPTICO
AUTÓMATAS Y LENGUAJES FORMALES

2. ALAN TURIN Y LA MAQUINA ENIGMA

El enigma no fue más enigmático, los códigos encriptados se des-encriptaron y la información oculta

salió a la luz. Se salvaron muchas vidas y la guerra se aligeró.

La poderosa máquina enigma creada por Arthur Scherbius estaba convirtiendo a Alemania en un enemigo

invencible, pues sus comunicaciones no podrían nunca, ser descifradas, lo que le daba una enorme ventaja

sobre sus adversarios. Ella enviaba los mensajes, las órdenes y la estrategia de guerra desde los cuarteles

hasta los combatientes oculta en un código que, según ellos, pasarían millones de años antes de poder ser

descifrados por personas diferentes a sus aliados. De esa forma destruían fortalezas, hundían barcos y

submarinos y ganaban batallas.

Con lo que no que no contaban es con que en Inglaterra existía Alan Turing, que usando sus máquinas

“bomba” y sus enormes condiciones para las matemáticas, estaba logrando descifrar cada mensaje que

los alemanes enviaban y que creían ultra secretos. Alan Turing fue un matemático, criptógrafo y

científico, que logró descifrar el lenguaje utilizado por los nazis y creó una máquina que lograba

transformar los códigos en mensajes entendibles. Su increíble inteligencia y dedicación ayudaron

enormemente al equipo GC&CS. Por tales cosas es considerado una de las mentes más brillantes del

mundo y el padre de la inteligencia artificial por sus numerosos estudios en el área de la computación y

las matemáticas.

El proceso de decodificación de los mensajes era efectivo pero demasiado lento, es por esto que Turing

toma la decisión junto con su colega Gordon Welchman de perfeccionar una máquina que contrarrestara

los efectos de Enigma y decodificaran los códigos de forma más rápida y eficaz.
AUTÓMATAS Y LENGUAJES FORMALES
La máquina decidieron llamarla “Bomba”, tenía un sistema de análisis matemático automatizado el cual

descifraba cuales eran las posiciones más factibles de los rotores, con los resultados en mano, se probaban

cada una de las probabilidades hasta dar con el mensaje.

Las máquinas comenzaron a producirse masivamente dentro de Bletchley Park y ya para 1943 las

“bombas” descifraban más de 84.000 mensajes provenientes de Enigma al mes. Todo esto era un

proyecto ultra secreto de máxima seguridad.

Se asegura que gracias a las maquinas Bombas de Alan Turing, la guerra se terminó dos años antes de lo

planificado y se lograron salvar 14.000 vidas más o menos. Poco tiempo después de la finalización de

la guerra, Turing fue acusado por su homosexualidad, el juez le ofreció o dos años de cárcel o un

tratamiento de castración química. Alan decidió tomar el tratamiento. El tratamiento le causaba muchas

molestias, dolores increíbles y perder movilidad en su cuerpo. Finalmente decide comer una manzana

impregnada de cianuro y muere en su lecho.


AUTÓMATAS Y LENGUAJES FORMALES

3. PALABRAS PARA ANEXAR AL GLOSARIO

Palabra 1: Autómata finito determinista:

Un autómata finito determinista (abreviado AFD) es un caso especial de un autómata finito no determinista en
el cual.

Ningún estado tiene una transición Є es decir, una transición con la entrada Є,

Para cada estado s y cada símbolo de entrada a, hay a lo sumo un arista etiquetada a que sale de s.

Un autómata finito tiene a lo sumo una transición desde cada estado con cualquier entrada. Si se esta usando
una tabla de transiciones para representar la función de transición de un AFD, entonces cada entrada en la tabla
de transiciones es solo un solo estado. Como consecuencia, es muy fácil determinar si un autómata finito
determinista acepta o no una cadena de entrada, puesto que hay a lo sumo un camino desde el estado de inicio
etiquetado con esa cadena. El siguiente algoritmo muestra como simular el comportamiento de un AFD con
una cadena de entrada.

ENTRADA: Una cadena de entrada x, que se termina con un carácter de fin de archivo eof. Un AFDD con el
estado inicial S0, que acepta estados F, y la función de transición mover.

SALIDA: Responde “sí” en caso de que D acepte a x “no” en caso contrario.

MÉTODO: Aplíquese el algoritmo siguiente a la cadena de entrada x. La función mueve: (s, c) da el estado al
cual hay una transición desde el estado S en un carácter de entrada c. La función sigtecar devuelve el siguiente
carácter de la cadena de entrada x.
S: =S0;
C: =sigtecar;
While c ≠ eof do
S: = mueve (s,c);
C: =sigtecar;
End:
If s esta en F then
Return “si”
AUTÓMATAS Y LENGUAJES FORMALES
Else return “no”;

Tomado de:

Cidecame.uaeh.edu.mx. (2019). 2.6.2. Autómatas Finitos Deterministas. Tomado det:


http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro32/autocontenido/autocon/262_autmatas_finitos_deter
ministas.html

Palabra 2: AWK:

Es un lenguaje de programación diseñado para procesar datos basados en texto, ya sean ficheros o flujos de
datos. ... AWK es ejemplo de un lenguaje de programación que usa ampliamente el tipo de datos de listas
asociativas (es decir, listas indexadas por cadenas clave), y expresiones regulares.

AWK

interpretado,
Paradigma procedimental y
dirigido por eventos

Lanzado en 1977

Aho, Weinberger y
Creado por
Kernighan

ninguno, puede
manejar cadenas,
enteros y puntos
Tipo de datos
flotantes y
expresiones
regulares
AUTÓMATAS Y LENGUAJES FORMALES

awk, GNU awk,


Implementaciones mawk, nawk, MKS
principales AWK, Thompson
AWK

old awk oawk 1977,


Dialectos new awk nawk 1985,
GNU Awk

C, SNOBOL4,
Influenciado por
Bourne shell

Perl, Korn Shell,


Influyo en
JavaScript

SO multiplataforma

Llamado así por los apellidos de sus inventores Aho, Weinberger y Kernighan. Lenguaje de programación
antiguo diseñado para el procesamiento de datos basados en texto.

Cuando es escrito en minúsculas, awk hace referencia al programa de Unix que corría otros programas escritos
en lenguaje de programación AWK.

El AWK es un ejemplo de un lenguaje de programación que usa extensamente los tipos de dato cadena, arreglos
asociativos (aquellos arreglos indexados por una llave tipo string) y expresiones regulares.

Tomado de:

Alegsa.com.ar (2016). Definición de AWK - ALEGSA © url:


http://www.alegsa.com.ar/Dic/awk.php

Palabra 3: Código ensamblador.


Se define como un lenguaje de programación que se usa para dar directamente órdenes al ordenador. A
diferencia de otros lenguajes, que usan el sistema operativo como intermediario para ejecutar las tareas (le dicen
AUTÓMATAS Y LENGUAJES FORMALES
al sistema operativo que haga una cosa y este es quien se encarga de hacérselo saber al ordenador), el lenguaje
de ensamblador (en inglés assembly) no usa intermediarios, sino que directamente le dá las órdenes a la
máquina.

Antes de proseguir conviene diferenciar para no confundirnos por un lado el término lenguaje ensamblador, y
por otro el término ensamblador. El primero sería el lenguaje de programación como tal, mientras el segundo
sería el programa que convierte un fichero escrito en lenguaje ensamblador en código máquina o binario para
que le ordenador pueda leerlo. Aunque en el artículo hablaremos de ambos y en general se usa ensamblador para
ambos indistintamente, técnicamente son cosas distintas.

Evidentemente este lenguaje tiene varias ventajas e inconvenientes. Entre las ventajas tenemos que por supuesto,
es más rápido y eficiente, más estable y requiere menos recursos.

Las desventajas son sin embargo mucho mayores: para empezar está limitado a las órdenes que el ordenador
traiga memorizadas en su placa base, nada más. Y requiere unos conocimientos técnicos muy avanzados, toda
vez que cada CPU incluye órdenes distintas e incluso formas distintas de darle esas órdenes, variando según el
modelo, el fabricante... etc... Es por ello, entre otras cosas, que no se ha impuesto en el mercado como lenguaje
de programación para aplicaciones o juegos.

Como se vé es un lenguaje de programación orientado a profesionales que trabajan con hardware, muy útil sobre
todo para detectar fallos e incompatibilidades entre piezas del PC o chequear el estado de estas.

Como ya dijimos el lenguaje ensamblador debe ser traducido a código máquina para funcionar, y por tanto
requiere un ensamblador que lo traduzca a código binario (a ceros y unos). Pero es el lenguaje más cercano al
propio código que usan los ordenadores. Es por ello que se dice que es un lenguaje de bajo nivel, debido a que
está sólo un escalón por encima del código máquina, y solo permite ejecutar instrucciones sencillas. Los
lenguajes de alto nivel son más elaborados y permiten realizar tareas múltiples y complejas con una sola orden,
mientras que en el que nos ocupa una orden equivale a una instrucción directa.

Existen como hemos visto muchas variantes del lenguaje ensamblador, de hecho una por cada tipo de
arquitectura del CPU. Las primeras CPU apenas tenían instrucciones y por tanto eran mucho más sencillas. En la
actualidad están en boga los llamados ensambladores de alto nivel, que permiten instrucciones más complejas e
incluso cadenas de instrucciones (macros).

Tomado de:
Sistemas.com. (2019). Ensamblador. Tomado de: https://sistemas.com/ensamblador.php
AUTÓMATAS Y LENGUAJES FORMALES

CONCLUSIONES

La automatización de tareas y procedimientos ha sido meta justificable para los seres humanos desde su
aparición en el universo, sobre todo cuando requirieron de desarrollar trabajos que requerían esfuerzo
fisco. Aplicaban alguna técnica y tecnología para hacer más fáciles esos procesos y es así como
aparecieron los lenguajes que programaban acciones para tales fines.

Estos procesos y procedimientos han venido evolucionando a medidas agigantadas hasta tal punto que
hoy por hoy todo parece requerir de autómatas, todo se hace mediante programas y la informática que es
el resultado de tal evolución es la ciencia más usada y estudiada ya que está presente en un 99% de los
quehaceres humanos.
AUTÓMATAS Y LENGUAJES FORMALES

REFERENCIAS BIBLIOGRÁFICAS

Cidecame.uaeh.edu.mx. (2019). 2.6.2. Autómatas Finitos Deterministas. Tomado det:


http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro32/autocontenido/autocon/262_autmatas_finitos_deter
ministas.html

Alegsa.com.ar (2016). Definición de AWK - ALEGSA © url:


http://www.alegsa.com.ar/Dic/awk.php

Sistemas.com. (2019). Ensamblador. Tomado de: https://sistemas.com/ensamblador.php