¿Por qué estudiamos lenguaje formal y autamata para informática?

Hay varias razones para estudiar autómatas y la complejidad es una parte importante del núcleo de la informática.

1. Introducción a los autómatas finitos

2. Representación estructural.

3. Autómatas y Complejidad.

Introducción a los autómatas finitos:

Los autómatas finitos son un modelo útil para muchos tipos importantes de hardware y software.

1. Software para diseñar y verificar el comportamiento de los circuitos digitales.

2. El “analizador léxico” de un compilador típico, es decir, el componente del compilador que rompe el

ingresar texto en unidades lógicas, como identificadores, palabras clave y puntuación.

3. Software para escanear grandes cuerpos de texto, como colecciones de páginas web, para encontrar

Apariciones de palabras, frases u otros patrones.

4. Software para verificar sistemas de todos los tipos que tienen un número finito de estados distintos, como

Protocolos de comunicaciones o protocolos para el intercambio seguro de información.

Representaciones estructurales:

Hay dos notaciones importantes que no son similares a la automatización, pero desempeñan un papel importante en el estudio de los autómatas y sus aplicaciones.

1. gramáticas son modelos útiles Cuando se trata de software que procesa datos con una estructura recursiva.

2 . Las expresiones regulares se denotan la estructura de los datos, especialmente las cadenas de texto.

Autómatas y Complejidad

Los autómatas son esenciales para el estudio de los límites de cómputo.

Hay dos cuestiones importantes.

1. ¿Qué puede hacer una computadora? Este estudio se llama ” decidibilidad “, y los problemas que pueden

Ser resueltos por computadora se llaman ” decidibles “.

2. ¿Qué puede hacer una computadora de manera eficiente? Este estudio se llama “intratabilidad” y los problemas que

puede ser resuelto por una computadora usando no más tiempo que alguna función de crecimiento lento de la

El tamaño de la entrada se denomina ” manejable “. A menudo, todas las funciones polinomiales son “lentamente”

creciendo ”, mientras que las funciones que crecen más rápido que cualquier polinomio se considera que crecen demasiado rápido.

Se utilizan en Inteligencia Artificial, Sistema Embebido, Teoría de la Computación, Verificación Formal, etc. Pero la aplicación más utilizada es en Compilación de Construcción. Verifican si el lenguaje escrito es correcto o no.

Tenga en cuenta que está programando en lenguaje C. Entonces, ¿cuáles son todos los símbolos que escribes en la programación? … son un conjunto que consta de {a, b, c … .z, A, B, C ……. Z, +, -, $, … .ect} que es un conjunto de alfabetos “finitos”. Ahora escribiste un programa como

#include

vacío principal(){

int a, b;

… ..

… }

En C es un programa, pero en TOC es una cadena y C es básicamente un conjunto de todos los programas válidos , que de hecho es un conjunto infinito. Por lo tanto, un programa que está escribiendo es correcto si está en ese conjunto “Infinito” de programa C correcto, que es imposible de crear y buscar linealmente. Entonces, TOC funciona de manera tal que, dado un lenguaje, digamos lenguaje C, funciona en una representación finita que puede almacenarse en la memoria que toma la cadena, que es su programa, y ​​decidir si es un programa C válido o no. Y estas representaciones finitas son todas las reglas que seguimos para escribir un programa. Diga que compruebe si el número de corchetes abiertos ‘{‘ es igual al número de corchetes ‘}’.

Recuerdo haber conversado hace años con alguien que se lamentaba de la misma manera. Sigue las líneas de “por qué tengo que aprender cosas inútiles como las matemáticas discretas y las estructuras de datos cuando VSAM y JCL es lo importante”.

Fundamentalmente, es la diferencia entre una educación universitaria y una escuela de oficios. Es la diferencia entre una base para una carrera técnica frente a la cosa “más caliente” actual.

Y sí, cuando tenía tu edad, tuve que caminar 10 millas hasta la escuela, cuesta arriba, en la nieve, sin zapatos.

La teoría de los autómatas te enseña la equivalencia muy importante entre

  1. un lenguaje: algunos – usualmente – un conjunto infinito de cadenas
  2. Una gramática: el conjunto finito de reglas para generar ese lenguaje.
  3. Un autómata: el dispositivo de procesamiento abstracto que puede reconocer ese lenguaje.

Si estudia la jerarquía de idiomas de Chomsky (regular, libre de contexto, sensible al contexto, fregadero de cocina, lo siento, olvidé el nombre), también obtendrá el concepto de complejidad computacional en tiempo y espacio que se necesita para el proceso de reconocimiento.

Estos son conceptos teóricos importantes para tener en cuenta en el resumen. En la práctica, los idiomas pueden ser muy diferentes de los conjuntos de cadenas, por ejemplo, que describen las transiciones de estado de algunos sistemas. Supongamos que está escribiendo software para controlar algún sistema físico. Si su sistema puede ser descrito por un lenguaje regular, y se encuentra usando una pila para analizarlo, está haciendo algo mal.

Como respuesta breve, la teoría de autómatas y los lenguajes formales son la base de los compiladores actuales, expresiones regulares, analizadores, scrappers web, procesamiento de lenguaje natural (NLP), máquinas de estado basadas en cadenas de Markov y un largo etcétera.

En realidad, estos temas tienen una aplicación real en la actualidad. La teoría del lenguaje formal es importante en el diseño del lenguaje de programación y está en el corazón de las arquitecturas modernas de compilación. La teoría de los autómatas contribuye con el concepto de expresiones regulares, utilizado de muchas maneras en la comparación de patrones.

Lo más importante es que la teoría de la computabilidad, que puede considerarse una rama de la teoría de autómatas, define ciertos problemas que no tienen solución y, por lo tanto, evita gastar enormes cantidades de dinero de manera condenada al fracaso. (He visto casos de grandes empresas que gastan decenas de millones de dólares en intentos de resolver problemas equivalentes al problema de detención en una máquina universal de Turing porque no entendían la teoría relevante).

Bueno, el significado de un código escrito en un lenguaje de programación es diferente a una oración simple en inglés. Pero, lo que es común en el lenguaje de programación y el inglés básico es que los lenguajes de programación usan palabras en inglés que tienen sentido para el programa. Al igual que si tengo que mostrar una salida, tengo que escribirla en un idioma particular:

System.out.println (“Hello Aharna!”);

En java i significa imprimir “Hola …”, usando palabras en inglés de una manera particular.

Para que pueda comprender el tema importante de cómo funcionan los compiladores.

Incluso tuve la misma pregunta durante tantos meses en mi cabeza. Y aquí está lo que te sugiero que hagas. Yo hice lo mismo. Espero que incluso ustedes entiendan.

Hacer una investigación sobre la jerarquía de Chomsky.

Mire algunos videos de Youtube sobre la jerarquía de Chomsky y trate de entender la razón detrás de la jerarquía de Chomsky.

Creo que entenderás por qué estudiamos el lenguaje formal y los autómatas finitos.

Si quieres conocer la historia detrás de las máquinas de Turing, te recomiendo encarecidamente que veas la película “The Imitation Game”.

La teoría de los autómatas es esencial para estudiar los límites de la computación.

Aquí hay una buena explicación para su consulta:

Ir a través del enlace: