Equipos Programas Media Internet Telecomunicaciones Seguridad Base de Datos Programación Calidad Desarrollo Empresa

Ruta: >Programación

Conceptos Matemáticos

Nombre Descripcion
1 Conceptos matemáticos de programación
1.1 Conjuntos
1.1.1 Conjunto

Conjunto

Reunión de elementos. Si el conjunto es infinito no puede definirse por enumeración, ya que es infinito. Por ello debe definirse por extensión.

Números naturales = (1, 2, 3, 4 ...)

Colores = (Negro, Rojo ...)

1.1.2 Constante

Constante

Elemento de un conjunto.

1.1.3 Variable

Variable

Es un 'almacen' donde que puede contener cualquier valor de un conjunto. En un programa, define una zona de memoria.

1.1.4 Producto cartesiano

Producto cartesiano

Todos los pares ordenados posibles con los elementos de dos conjuntos.

Ej: Teniendo un conjunto A y otro B, el producto cartesiano AxB =

A1B1 A2B1 A3B1
A1B2 A2B2 A3B2
A1B3 A2B3 A3B3
1.1.5 Mapeo

Mapeo

Correspondencia entre dos conjuntos.

Ejemplo: mapeo del conjunto cartesiano de los conjuntos A (A1, A2 y A3) y B (B1, B2 y B3) con el grupo N

AxB -> N

Los elementos del conjunto N = A1B1, A1B2 ... A3B3

1.2 Funciones
1.2.1 Función

Función

Correspondencia de un elemento de un conjunto (Dominio) a un único elemento de otro conjunto (imagen).

f: A->B ó y = f(x) siendo x Î A, x Î B

Ej: 3 + 5 = 8

Las funciones más importantes en informática son: crear, destruir, obtener propiedad de objeto y modificar propiedad de objeto.

1.2.2 Función compuesta

Función compuesta

Función compuesta de otras funciones (en secuencia, no de manera anidada).

1.2.3 Grafo de una función

Grafo de una función

Es la representación gráfica de dicha función.

1.3 Relación

Relación

Relación R entre A y B en R = (A,B,P(x,y))

Puede darse entre:

  • Elementos de conjuntos distintos.
  • Elementos del mismo conjunto.
  • Un elemento consigo mismo.

Haciendo un símil con el lenguaje escrito, mediante las conjunciones hacemos relaciones de composición en el lenguaje.

Las relaciones pueden ser de:

  • Equivalencia. Permite hacer clasificaciones. Ej: Tener la misma altura. Es una relación:
    • Reflexiva
    • Transitiva
    • Simétrica
  • Orden.
    • Tipos
      • Total. Ej: en programas, los concurrentes no lo son.
      • Parcial. Solo están ordenados algunos elementos. Ej: programas concurrentes.
    • Es una relación:
      • Reflexiva
      • Transitiva
      • Simétrica
1.4 Proposición

Proposición

'Frase que afirma algo'.

Ej: Cervantes escribió el Quijote

Añadiendo detrás si dicha proposición es verdadera o falsa obtenemos un predicado.

1.5 Predicado

Predicado

Es una proposición a la que se le añade si es verdera o falsa.

Ej:'Cervantes escribió el Quijote' es verdadero

1.6 Álgebra

Algebra

Si sobre un conjunto definimos operaciones (o funciones) y ecuaciones tenemos un álgebra.

Álgebra = elementos + operaciones (suma, resta...) + ecuaciones (reglas, propiedades o leyes)

Álgebra de proposiciones:

  • Aserción o enunciado simple: p <el sol brilla>
  • Predicado. p<el sol brilla> = Verdadero
  • Enunciado compuesto. Son las operaciones entre proposiciones, osea, las operaciones lógicas p<el sol brilla> y q<hace calor> r = p ^ q
1.7 Diagramas
1.7.1 Organigramas

Organigramas

Se usan para describir una secuencia de acciones. Hacen énfasis en decisiones y acciones. Usan símbolos básicos, de decisión, etc.

1.7.2 Diagramas de estado

Diagramas de estado

Los estados los definen atributos y las transiciones son definiciones por acciones. Hace énfasis en los estados.

Imagen: DiagEstado.gif

1.7.3 Árboles organizativos

Árboles organizativos

Ponen de manifiesto las relaciones: de orden, etc.

Imagen: ArbolOrganizativo.gif

1.7.4 Diagramas PER

Diagramas PER

Son los que aparecen, por ejemplo, en las aplicaciones de diseño de proyectos. Ej: si en un proyecto de obra los albañiles deben haber terminado la estructura de la casa antes de que entren los fontaneros, debemos sincronizar a ambos para que los últimos no entren antes de que hayan concluido su trabajo los primeros.

1.8 Grafos
1.8.1 Grafos

Grafos

Han sido simplificados en gráficos.

1.8.2 Ruta

Ruta

Camino o ruta es la secuencia finita y no vacía de arcos. (Ej: ruta a un archivo).

1.8.3 Nodo terminal

Nodo terminal

Nodo que no tiene hijos.

1.8.4 Grafo etiquetado

Grafo etiquetado

Un grafo etiquetado finito (digrafo) etiquetado se define como la tupla G = <N,A,E,F>, donde:

  • N. Conjunto finito de nodos.
  • A. Conjunto de pares o arcos ordenados (incluidos en el producto cartesiano, y no mayor que este).
  • E. Conjunto finito no vacio de etiquetas (son dirigidas, van en un sentido). Las relaciones pueden ser bidireccionales.
  • F. Función (1, 2, 3... h) en E.
    • f(i) es la etiqueta de (ni, nj)
1.8.5 Grafo dual

Grafo dual

Aquel en el que pueden cambiarse arcos por nodos y viceversa sin que ocurra nada.

1.8.6 Autómata finito

Autómata finito

Defino estados y transiciones. El número de estados es finito. Son similares a los diagramas de estado.

M sobre alfabeto A. M = (S,A,m,si,F), donde:

  • S. Conjunto no vacio de estados.
  • A. Alfabeto finito de estados.
  • m. Mapeo de SxA en S (define la transición).
  • si. Estado inicial.
  • F. Conjunto de finales.
1.8.7 Redes de Petri
1.8.7.1 Redes de Petri

Redes de Petri

Es una tupla que se compone de R = <P,T,e,s>, donde:

  • P. Conjunto finito y no vacio de lugares (nodos).
  • T. Conjunto finito y no vacio de transiciones.
  • P n T = 0. Es decir, que una transición no puede ser un nodo y viceversa.
  • P x T -> N (Arco de entrada a las transiciones).
    Imagen: PxT.gif
  • T x P -> N (Arco de salida a las transiciones).
    Imagen:TxP.gif
1.8.7.2 Marcaje de una Red de Petri

Marcaje de una Red de Petri

Red de Petri<R, M0> El marcaje de la red se compone por uno o más tokens o marcas en los nodos.

El marcado de la red que se ve a la izquierda es:
M = (1, 0, 1) donde M = (P1, P2, P3)

1.8.7.3 Red simple

Red simple

Tiene arcos de salida de lugares con valor 1 y de entrada con valor -1.

1.8.7.4 Red no simple

Red no simple

En una red no simple, una transición está cargada cuando los lugares tengan al menos las marcas que indica su arco.

1.8.7.5 Red dual

Red dual

De manera equivalente a como ocurría con los grafos duales, una red dual es aquella en la cual los lugares pueden cambiarse por transiciones y viceversa.

1.8.7.6 Red inversa

Red inversa

La que se obtiene al cambiar el sentido de las flechas.

1.8.7.7 Transición cargada

Transición cargada

Una transición está cargada cuando todos los lugares de entrada tienen al menos una marca (al menos el valor absoluto del arco).

Imagen: TransicionCargada.gif

1.8.7.8 Regla de disparo

Regla de disparo

Si la transición de T1 está cargada, la regla de disparo es: de los lugares de entrada les restamos tantas marcas como indica su arco de entrada, y a los lugares de salida les ponemos tantas marcas como indica su arco de salida.

Veamos un ejemplo de red de Petri, y como evoluciona al ir realizando disparos consecutivos. M0 sería el estado inicial, y M2 el final (en el cual se produce un bloqueo).

Imagen: DisparoM0.gif Imagen: DisparoM1.gif Imagen: DisparoM2.gif
1.8.7.9 Bloqueo

Bloqueo

Un bloqueo supone que ya no se puede ejecutar otra transición en la red. Pueden ser buscados o no buscados. Ej: la inicialización de una aplicación es deseable que solo se ejecute una vez, así que tras la primera inicialización suele provocarse su bloqueo.

Un bucle infinito también se considera un bloqueo.

1.8.7.10 Obtener un diagrama de estado a partir de

Obtener un diagrama de estado/transición a partir de una red de Petri

Imagen: RedPetri2.gif Imagen: Petri_a_EstadoTransicion.gif
1.8.7.11 Concurrencia en Redes de Petri

1.8.7.12 Concurrencia

Concurrencia en Redes de Petri

Veamos un ejemplo de red de Petri en secuencia:

Imagen: Secuencia0.gif Imagen: Secuencia1.gif Imagen: Secuencia2.gif

A continuación veamos un ejemplo (que se lee de izquierda a derecha) de red donde existe concurrencia. Se dice que existe concurrencia porque podría dispararse tanto T1 como T2. Da igual el orden en el que se efectúa el disparo, porque el resultado final siempre será el mismo.

Imagen: Imagen: Concurrencia1.gif Imagen: Concurrencia3.gif Imagen: Concurrencia4.gif
Imagen: Concurrencia2.gif
1.8.7.13 Ejemplo: Enviador-Receptor

Ejemplo: Enviador-Receptor

La red de Petri del ejemplo, modela el envío de un correo electrónico desde un emisor a un receptor. Este ejemplo nos permite ver los distintos estados y analizar si se bloqueará la comunicación.

En el ejemplo se muestra un proceso Enviador, que envía mensajes (marca), a un proceso Receptor. Como la velocidad de operación de estos procesos puede ser distinta, se sincronizan a través de un proceso Buffer. Si las velocidades de disparo son distintas, el más rápido deberá esperar al más lento.

Veamos el ejemplo para entenderlo mejor. A continuación podemos ver:

El emisor, antes de enviar el correo, debe escribirlo. Por otra parte, el receptor, antes de leer un correo ha de recibirlo. Cada lugar puede almacenar, como máximo un token.

Imagen: DiagramaPER1.gif

Si el emisor escribiera y enviara correos más rápido de lo que el receptor puede recibirlos y leerlos el canal de comunicación se saturaría. Este diagrama no sería muy eficaz, ya que en el punto *1 puede desbordarse. Dichos lugares se llaman unbounded. Los lugares marcados como *2 no lo serían.

Imagen: DiagramaPER2.gif

Veamos ahora un ejemplo similar al anterior, pero en el que se ha incluido un servidor de correo.Para que el servidor acepte el correo procedente del emisor, debe tener el canal vacío, ya que si está lleno el emisor no puede enviarle otro. El emisor y el receptor trabajan en concurrencia. Sin embargo, el emisor y el servidor de correo trabajan en secuencia, y el receptor con el servidor de correo también.

La sincronización impone una secuenciación. En esta red no hay lugares unbounded.

En el siguiente ejemplo, tanto el canal ocupado como el vacío puede albergar, cada uno, tres tokens, en lugar de un token (como ocurría en los ejemplos anteriores).

Imagen: DiagramaPER3.gif

1.9 Lenguajes
1.9.1 Tipos de lenguaje

Tipos de lenguaje

Los tipos de lenguajes más habituales son:

  • Natural. El que usamos para hablar, escribir, etc.
  • de requisitos. Utilizado para la especificación de requisitos.
  • de especificación. Para realizar especificaciones.
  • de diseño. Usado en diseño.
  • de pruebas.
  • de programación.
1.9.2 Alfabeto o vocabulario

Alfabeto o vocabulario

Conjunto finito de símbolos usados en el lenguaje.

1.9.3 Sentencia

Sentencia

Cualquier cadena de longitud finita compuesta de símbolos de un alfabeto.

1.9.4 Lenguaje

Lenguaje

Es el conjunto de sentencias creadas a partir de un alfabeto.

1.9.5 Metalenguaje

Metalenguaje

Lenguaje utilizado para utilizar otro lenguaje.

Ej: XML

1.9.6 BNF

BNF

Es un metalenguaje, que se compone de:

Meta símbolos Interpretación
<P> Producción
:: Se define como
<P> <Q> Producción P y seguida de producción Q
<P> | <Q> Producción P o producción Q
{ } Conjunto de (puede estar vacío)

Ej: <Oración> :: <Sujeto> <Verbo> <Complementos>

Se leería: Una Oración se define como un Sujeto seguido de un Verbo y seguido de Complementos.

1.9.7 Gramática

Gramática

La gramática, formulada matemáticamente sería:

G = (Vn, Vt, P, S)

Donde:

  • Vn. Variables o no terminales.
  • Vt. Terminales. Son los tokens e identificadores. Son palabras reservadas del lenguaje. Ej: en programación suelen ser las palabras IF, THEN, ELSE, etc.
    Ej2: en el lenguaje natural suelen serlo las preposiciones, los artículos, etc.
  • S. Símbolos de comienzo.
  • P. Producciones. Son relaciones entre varias cadenas de variables y terminales. Ej: frase.
1.9.8 Scanner

Scanner

Es un programa que analiza el léxico (palabras). Reconoce los delimitadores. Ej: Lex de Unix.

1.9.9 Parser

Página generada automáticamente desde la Base de Datos: Tecnologias/ el 27/3/2008 18:50:23