ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Un autómata


Enviado por   •  21 de Diciembre de 2013  •  Tesis  •  782 Palabras (4 Páginas)  •  206 Visitas

Página 1 de 4

Introducción

Un autómata con pila, autómata a pila o autómata de pila es un modelo matemático de un sistema que recibe una cadena constituida por símbolos de un alfabeto y determina si esa cadena pertenece al lenguaje que el autómata reconoce. El lenguaje que reconoce un autómata con pila pertenece al grupo de los lenguajes libres de contexto en la clasificación de la Jerarquía de Chomsky.

Los autómatas de pila, en forma similar a como se usan los autómatas finitos, también se pueden utilizar para aceptar cadenas de un lenguaje definido sobre un alfabeto A. Los autómatas de pila pueden aceptar lenguajes que no pueden aceptar los autómatas finitos. Un autómata de pila cuenta con una cinta de entrada y un mecanismo de control que puede encontrarse en uno de entre un número finito de estados. Uno de estos estados se designa como estado inicial, y además algunos estados se llaman de aceptación o finales. A diferencia de los autómatas finitos, los autómatas de pila cuentan con una memoria auxiliar llamada pila. Los símbolos (llamados símbolos de pila) pueden ser insertados o extraídos de la pila, de acuerdo con el manejo last-in-first-out (LIFO). Las transiciones entre los estados que ejecutan los autómatas de pila dependen de los símbolos de entrada y de los símbolos de la pila. El autómata acepta una cadena x si la secuencia de transiciones, comenzando en estado inicial y con pila vacía, conduce a un estado final, después de leer toda la cadena x.

Ejemplo

A continuación un ejemplo de un Autómata con Pila que acepta palabras con el mismo número de unos que de ceros.

#include <cstdlib>

#include <iostream>

#include <fstream>

using namespace std;

int A[50];

char palabra[100];

int n;

int i=0;

int novalido=0;

int valido=0;

int aux=0;

void muestrapila()

{

for(int j=n-1;j>=0;j--)

{

cout<<"A "<<j<<": "<<a[j]<<endl;

}

}

void crearpila(int n)

{

A[n];

for(int j=0;j<n;j++)

{

A[j]=0;

}

}

bool pilavacia()

{

bool W=true;

for(int j=n-1;j>=0;j--)

{

if(A[j]!=0)

{

W=false;

}

}

return W;

}

int main(int argc, char *argv[])

{

...

Descargar como (para miembros actualizados)  txt (3.9 Kb)  
Leer 3 páginas más »
Disponible sólo en Clubensayos.com