lunes, 14 de septiembre de 2015

  






Lenguaje y Gramática


LENGUAJES FORMALES Y LENGUAJES NATURALES


   Los lenguajes naturales y formales tienen puntos en común que nos pueden servir de inicio para una discusión. En principio se tiene la existencia de un conjunto finito llamado alfabeto, el cual esta constituido de símbolos simples llamados comúnmente letras. En los lenguajes naturales se tienen los alfabetos. En los formales la lógica, cálculo proposicional y de predicados. Mediante la concatenación de las letras del alfabeto formaremos: monemas, fonemas o palabras que determinan un conjunto extendido. El conjunto de palabras que tengan un significado constituirán el diccionario del lenguaje y, en lenguajes formales todas las palabras que puedan ser aceptadas por un cierto autómata.
   A partir de lo anterior, tendremos que un lenguaje se considera como un conjunto, usualmente es infinito, de oraciones o enunciados que se forman con palabras del diccionario. En este punto, podemos distinguir entre dos clases de lenguajes; los ``lenguajes naturales"  como el francés, inglés, y castellano y, los ``lenguajes formales"  como el de las matemáticas y la lógica. 
  En resumen podemos decir que los lenguajes naturales y formales, difieren significativamente uno de otro por su origen y por su rea de aplicación.



LENGUAJES FORMALES













  En matemáticas, lógica, y ciencias de la computación, un lenguaje formal es un conjunto de palabras (cadenas de caracteres) de longitud finita formadas a partir de un alfabeto (conjunto de caracteres) finito. El nombre lenguaje se justifica porque las estructuras que con este se forman tienen reglas de buena formación (gramática) e interpretación semántica (significado) en una forma muy similar a los lenguajes hablados.




LENGUAJE NATURAL

   Es el lenguaje hablado y/o escrito por humanos para propósitos generales de comunicación, para distinguirlo de otros como puedan ser una lengua construida, los lenguajes de programación o los lenguajes usados en el estudio de la lógica formal, especialmente la lógica matemática.El término lenguaje natural se refiere al estudio de las propiedades computacionales y de otro tipo implicadas en la comprensión, producción y uso de las lenguas naturales.






  Una gramática formal es objeto o modelo matemático que permite especificar un lenguaje o lengua, es decir, es el conjunto de reglas capaces de generar todas las posibilidades combinatorias de ese lenguaje, ya sea éste un lenguaje formal o un lenguaje natural. 







   Aristid Lindenmayer, en la década de los 60, fue el primero en utilizar estos modelos teóricos de crecimiento biológico y por eso se llaman sistemas-L. Sin embargo, fueron dos de sus estudiantes, Ben Hesper y Pauline Hogeweg de la Universidad de Utrech los primeros en darse cuenta de las posibilidades de los sistemas-L para representar plantas. En 1970, Hesper y Hogeweg emplearon dos semanas en crear el primer programa que, a partir de una ristra de 5.000 caracteres generados por un sistema-L, imprimió algo que se parecía mucho al dibujo de una hoja vegetal. Aunque esta primera excursión en el campo de la imaginería digital no gustó mucho a Lindemayer, (y dejó atónito al operador del ordenador donde ejecutaron el programa -recordemos que estamos hablando de la prehistoria, cuando aún se programaba con tarjetas perforadas, y, donde el resultado de la ejecución de los programas era un interminable listado de cálculos numéricos-), que consideraba que no debían perder el tiempo en tales banalidades. Lo cierto es que la idea comenzó a circular y arraigó en otros investigadores. Cuando en 1986 Lindemayer conoció a Przemyslaw Prusinkiewicz se convenció plenamente de las posibilidades de los sistemas-L, y empezó también a utilizarlos para generar imágenes cada vez más realistas de plantas.
  
   Lindenmayer también introdujo la noción de sistemas-L con paréntesis que son los sistemas-L que incluyen en su alfabeto los paréntesis cuadrados "[" y "]" que permite la representación de árboles como secuencia de caracteres ya que los paréntesis contienen las ramas de nuestro árbol.






   Por autómata en la matemática discreta entendemos una especie de computadora abstracta que dada una entrada produce una salida, es decir, calcula alguna función. Generalmente la entrada es una cadena de símbolos de un alfabeto, y la salida también, posiblemente sobre otro alfabeto. 



MÁQUINAS DE ESTADO FINITO

   Un autómata finito o máquina de estado finito 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. Estas máquinas son una herramienta muy útil para especificar aspectos relacionados con tiempo real, dominios reactivos o autónomos, computación reactiva, protocolos, circuitos, arquitecturas de software, entre otros. 
   
  
 Algunas de  sus aplicaciones:
   
   En esta era de gran desarrollo tecnológico nos enfrentamos cotidianamente a situaciones donde una acción de entrada produce una salida. 
   Por ejemplo, cuando introducimos una o varias monedas en el parquímetro obtenemos como salida un cartoncito que nos permite estacionar el vehículo por un tiempo finito en un determinado lugar. Sólo cuando introducen las monedas y no antes, la máquina se pone en movimiento. La primera moneda introducida pone a la máquina en movimiento, si bien, como usuarios, no nos preocupamos demasiado por lo que ocurre interiormente en la máquina, lo cierto es que ésta, de alguna manera cuenta las monedas introducidas y si el monto es correcto, nos entrega un talón que señala la hora límite que puede estar estacionado el vehículo. Interiormente la máquina debe recordar cual es la suma de dinero que se introdujo y luego debe dar una salida.   

En la inteligencia artificial

    Las máquinas de estado finito tienen un gran futuro en la aplicación en inteligencia artificial. En la inteligencia artificial su principal objetivo es la creación de un agente inteligente que sea capaz de actuar y razonar como un humano. Para la creación de este agente es necesario contar con un total conocimiento de la gramática y los lenguajes formales que se requiere que el agente utilice, para esto debe contar una máquina que sea capaz de aceptar los símbolos y reconocer las cadenas que se están usando.

   También este tipo de máquinas los podemos encontrar como lo es en los semáforos, en los circuitos integrados, en los apagadores automáticos de luz, en el ventilador de techo, en los sistemas automáticos de riego, entre otros...



Diagrama de transición de una máquina de estado finito













Sumador en serie 
  El circuito sumador en serie o en secuencia está constituido por un solo sumador total que realiza simultáneamente la suma de dos bits y del acarreo procedente de la suma de los bits de peso inferior. para ello, ha de poseer un biestable que memorice el acarreo, hay que añadirle registros para almacenar los operandos y el resultado, y una unidad de control que secuencie las sumas de dos bits.







domingo, 13 de septiembre de 2015

CIRCUITO SECUENCIAL

    En la electrónica digital, un circuito o sistema secuencial es uno en el que la salida depende no solo de los valores actuales de las variables de entrada sino también de los valores pasados, o almacenados, de esas variables, es decir aquellos circuitos en que el contenido de los elementos de memoria solo puede cambiar en presencia de un pulso del reloj.



Aplicaciones


  Los circuitos secuenciales se pueden utilizar para aplicaciones, tales como retirar dinero de un cajero automático, que se pueden dividir en varias fases o estados y requieren validación en cada etapa. En el caso de un cajero automático, el usuario debe insertar una tarjeta de cajero automático e introducir un número de identificación personal válido antes de retirar el dinero, por lo que el resultado final depende de una serie de secuencias.

Como ya se ha comentado, los sistemas secuenciales forman un conjunto de circuitos muy importantes en la vida cotidiana, en cualquier elemento que sea necesario almacenar algún parámetro, es necesario un sistema secuencial. Así, cualquier elemento de programación (o lo que es lo mismo, con más de una función) necesita un sistema secuencial. Otro ejemplo, seria el caso de una máquina de refrescos. En esta máquina iremos introduciendo monedas hasta alcanzar o sobrepasar el valor del refresco que deseamos sacar.
Por lo tanto, en este sistema se debe almacenar una serie de datos, como pueden ser:
• Los precios de los productos ofertados.
 • Estado de existencia de los mismos.
• Cantidad de dinero que hayamos introducido en la máquina hasta el momento. Así, vemos que es necesario almacenar temporalmente una serie de datos, por lo que nos encontramos ante un sistema secuencial.