Resumenes Segundo Ano-Ssl
Resumenes Segundo Ano-Ssl
Resumenes Segundo Ano-Ssl
DE
SISTEMAS OPERATIVOS
PRACTICO
Linux
Es un sistema operativo basado en Unix desarrollado inicialmente por Linus Torvalds en 1991 y de
libre distribución (se encuentra bajo la licencia GPL)
Posee gran portabilidad hacia muchas plataformas, y el mismo sistema se utiliza junto a un
empaquetado de software a la que se denomina distribución Linux.
Linux es flexible y estable, ampliamente usado en redes, navegación de internet y programación.
GPL
Una licencia de derechos de autor de amplio uso que consiste en garantizar a los usuarios el poder
estudiar, modificar, usar y compartir el software.
El Proyecto GNU
EL proyecto GNU inició en 1983 por Richard Stallman (rms), y tiene como objetivo el desarrollo de
un sistema operativo completo similar a Unix y compuesto enteramente de software libre
Software Libre
Software que una vez adquirido se obtiene la libertad de ejecutarlo, copiar el programa para
reproducirlo, cambiar el codigo fuente como se desee, y distribuir versiones mejoradas con el fin de
aportar a la comunidad del sistema.
El Comienzo de Linux
Unix era ampliamente utilizado en el mundo de la informática y fué desarrollado alrededor de los
70’, con el inconveniente para programadores y desarrolladores de que era inaccesible. Linus
Torvalds, estudiante de la universidad finlandesa de Helsinki buscó, en 1991, realizar un reemplazo
para Minix, un clon de Unix creado por Andrew Tannebaum.
El núcleo fué escrito inicialmente en Assembler y C, y luego de un par de versiones Linus logró
obtener un software estable que lanzó bajo la licencia GPL, completando un sistema GNU
completo, denominado “Sistema Operativo GNU/Linux”. El mismo fué liberado en internet lo que
permitió que muchos programadores lo obtuvieran y realizaran sus propias sugerencias y
modificaciones.
Unix
Unix es un Sistema Operativo desarrollado en los laboratorios Bell durante 1970, inspirado en los
sistemas CTSS y Multics. Con el pasar de la década y el lanzamiento de nuevas y mejoradas
versiones la popularidad de Unix fue creciendo, otorgando licencias para producción y educación.
Así nacieron sistemas basados en Unix, como BSD, Solaris, Sistem V, etc.
Fue el primero en implementar código escrito en lenguaje de alto nivel para el desarrollo de un
sistema operativo (partes escritas en lenguaje C).
Característias de Linux
1. Multitarea
2. Multiusuario
3. Diseño Modular del Kernel
4. Soporte de Consolas Virtuales
5. Opera sobre todos los sistemas de archivos estandar.
6. Muchas capacidades para redes y comunicaciones.
7. Soporte completo para distintos tipos de hardware.
8. Poderoso entorno gráfico.
9. Distribución G.N.U/GLP
10. Tiene la capacidad de “shared libraries” al cargar librerias en memoria y permitir su uso a
cualquier proceso que los necesite, lo que hace a los binarios más pequeños.
11. Administración de Memoria.
12. La licencia GNU permite el desarrollo de aplicaciones para prácticamente todas las
necesidades.
13. Es un sistema operativo pensado por y para los programadores, por lo que cuenta con una
gran cantidad de herramientas de desarrollo integradas.
14. El kernel de Linux, con cada actualización ha ido incluyendo soporte a variedad de técnicas
de seguridad, como firewalls y control de acceso.
15. Linux es capaz de convivir dentro de un disco con otros sistemas operativos mediante el
soporte de gestor de arranque para multiboot.
Kernel
Es la porción del sistema que se encarga de la interfaz con el hardware. En la arquitectura
micronúcleo, muchas de las funcionalidades del sistema se encuentran en forma de módulos
(programas que ofrecen servicios específicos del SO), mientras que en el kernel se mantienen
únicamente los servicios más esenciales. Si un programa necesita de un servicio, el mismo o
mediante una biblioteca realizará una llamada al sistema que lo comunicará con dicho servicio
mediante el traspaso de mensaje
lsmod
Comando que muestra el estado de los módulos del kernel que están cargados
Módulos
los módulos son programas que aportan funcionalidades de todo tipo al sistema, con la
característica de no encontrarse en el núcleo, sino que son cargados en memoria principal y luego
ejecutados cuando se requeren, dando extensibilidad, flexibilidad, portabilidad, y demás
características de una arquitectura microkernel. También pueden encontrarse dentro de la lista de los
procesos actuales.
uname
Comando que muestra información resumida del sistema
Opciones:
• -s nombre del kernel
• -r revisión del kernel
• -n nombre por el cual se identifica el sistema de red.
• -m tipo de arquitectura del sistema
• -v version del kernel.
• -p información sobre el procesador.
• -i plataforma de hardware (arquitectura de procesador)
• -o nombre del sistema operativo.
• -a muestra toda la información en el siguiente formato: Nombre del Kernel – hostname del
nodo de red – revisión del kernel – versión del kernel – nombre de la máquina – tipo de
procesador – plataforma de hardware.
• VV indica la serie principal del kernel. El número cambia cuando el kernel ha sufrido un
cambio muy importante.
• XX indica el número de revisión del kernel.
• YY indica nuevas revisiones, donde se incorporaron características nuevas y drivers.
• ZZ indica la realización de parches de seguridad y corrección de errores.
El mismo puede estar acompañado de letras especiales, que indican alguna particularidad o
nombre de desarrollador abreviado.
Distribución
Una distribución es un conjunto de utilerías o herramientas y programas que facilitan el trabajo con
el sistema.
Algunas son.
• Debian.
• Slackware.
• Ubuntu.
• Mandriva.
• Conectiva.
• Caldera.
• Ututo.
• Goobuntu.
Paquetes de Software
Las distribuciones están divididas en paquetes, cada una contiene un programa o servicio
específico, es generalmente distribuida en su versión compilada y la instalación y desinstalación de
dichos paquetes son controlados mediante un sistema de gestión de paquetes.
Algunos de los sistemas de paquetes son:
• Paquetes Debian de extensión .deb e introducidos por la distribución Debian.
• Paquetes RPM (Red Hat Package Manager), formato de la Linux Standard Base.
• Paquetes TAR.GZ o TGZ, usado por Slackware, que empaqueta el software usando tar o
gzip.
lsb_release
Muestra información de la distribución GNU/Linux del Equipo
-a, –all Muestra toda la información
-i, -id Muestra el nombre de la distribución GNU/Linux
-d, –description Muestra la descripción de la distribución
-r, -release Muestra la versión de la distribución
-c, -codename Muestra el código de la distribución
-s, -short Muestra la información solicitada en formato corto, sin el título inicial.
-h, -help Muestra la ayuda y finaliza
-v, -version Muestra la versión de la especificación LSB de la que es compatible y finaliza
Shell
programas encargados de interpretar lineas de comandos para realizar las acciones
correspondientes.. Permiten además construir programas a través de comandos, llamados
shellscripts, con las posibilidad de automatizar diversas tareas.
Ash A shell
Ksh Korn shell
Bsh Bourne shell
Bash Bourne Again shell
Csh C shell
Tsh Extensión de C shell
Interfaces de Usuario
EN linux existen dos vías fundamentales para interactura con el sistema una vez arrancado el
mismo: La poderosa interfaz por linea de comandos (CLI), conocida como Consola de Texto, y la
interfaz gráfica de usuario (GUI), un programa lanzado desde la linea de comandos tras arrancar el
sistema.
Concepto de Arranque
El arranque del sistema o “bootstrapping” es el proceso en donde se inicia el sistema partiendo
desde encender el ordenador hasta una estado operativo para el usuario.
El proceso “init” es el proceso a nivel de núcleo encargado de llevar al sistema a un estado operable
por usuario. “init” es comunmente usado en sistemas de base Unix SystemV, pero actualmente fué
reemplazado por la mayoria de distribuciones por el proceso “systemd” que ofrece más
funcionalidades.
“init” tiene PID 1 (es el primer proceso planificado), es el padre del resto de procesos y no puede
ser interrumpido.
Niveles de Ejecución
0 Halt. Apaga el sistema
1 Modo monousuario (modo de rescate)
2-5 Modo Multiusuario
6 Reboot o reinicio del sistema
S Se utiliza para el mantenimiento del sistema en
monousuario
Los runlevels se organizan bajo sus correspondientes directorios en /etc/rcN.d cambiando “N” por
el número correspondiente. Dentro de estos se encuentran un conjunto de scripts que controlan los
servicios a ejecutar. Tienen un nombre en formato [K | S] nn [string], donde “K” y “S” indican si el
proceso se detiene (Kill) o se inicia (Start); nn representa el número de prioridad y “string” es el
nombre del proceso. Todos los archivos son enlaces simbólicos al directorio /etc/init.d
runlevel
Comando que permite conocer los niveles de ejecución realizados. De haber iniciado el sistema
aparecerá un “N” primero seguido del runlevel actual.
init
Comando que permite iniciar el sistema en un runlevel determinado o cambiar el runlevel actual
del sistema.
systemd
software para la administración del sistema y de los servicios de Linux, padre de todos los procesos.
Mejora el framework para expresar dependencias, permite el procesamiento en concurrencia
durante el arranque del sistema. Posee los demonios de init junto con journald, longind, networkd, y
otros componentes de bajo nivel. Realiza muchos otros servicios.
• \d : fecha actual.
• \m : identificador de arquitetura de la
máquina.
• \o : nombre del dominio de la máquina.
• \s : nombre del sistema operativo.
• \r : versión del kernel
• \t : hora actual.
/var/run/utmp Lista de sesiones abiertas actualmente
/var/log/wtmp Lista de inicio de sesion anteriores
/etc/nologin Usuarios no-root que no pueden ingresar
/etc/tty Lista de tipos de terminales
var/log/btmp Lista de inicios de sesion fallidos
Who
Muestra información sobre las sesiones actualmente abiertas
-b tiempo transcurrido desde el inicio de sesion
-q conteo de usuarios logueados en el sistema
-r runlevel actual del sistema
-u usuarios logueados
-a listado detallado de sesiones con informacion extendida
-H cabecera de las columnas
Last
Listado de las ultimas sesiones abiertas
Lastb
Lista los inicios de sesion fallidos del sistema
logout
Realiza el cierre de la sesión actual en el sistema
Sistema de Archivos
EL sistema de archivos es la parte del sistema operativo que se encarga de la gestión de los datos
almacenados en los dispositivos de memoria, manejados como archivos y directorios, como por
ejeemplo la ubicación de archivos almacenados y espacios libres, la asignación, modificación y
liberación de ese espacio.
Los discos rígidos se encargan de almacenar los datos en sectores, mientras que el software del
sistema de archivos se encarga de manejar dichos datos en forma de “archivos”. También puede
utilizarse para manejar datos de forma dinámica y que no es necesario que pase por el
almacenamiento secundario, como los datos de red o procesos.
En Linux el Sistema de Archivos presentado al usuario es el resultado de los sistemas de archivos
montados de dispositivos de almacenamiento (disco, medios extraibles, etc). Los datos
correspondientes a los archivos se guardan dentro de bloques llamados i-nodos. El sistema que
adopta Linux actualmente es ext4 (cuarto sistema de archivos extendido).
Ext4
Una mejora del anterior sistema ext3, incluyendo compatibilidad con versiones anteriores, soporte a
archivos y espacio de almacenamiento mucho mayores, técnicas de persistencia de espacio para
almacenamiento contiguo (reducción de fragmentación), además de mejoras en el rendimiento.
Btrfs
Sistema desarrollado por Oracle Corporation, de copia en escritura (copy-on-write), destacando la
tolerancia a fallos, reparación y administración sencilla.
Zfs
Sistema desarrollado por Sun MicroSystems para el sistema operativo Solaris. Entre sus
características se destacan la integridad de los datos mediante el modelo transaccional,
autoreparación con configuración RAID-Z, uso de instantáneas del sistema de archivos, bandas de
tamaño variable y manejo del estandar POSIX.
Sectores
Unidades de bytes sobre las cuales trabaja el disco. Suele rondar los 512 bytes.
bloque
El bloque o cluster es una agrupacion de sectores del disco, generalmente de 4K, que tienen el fin
principal de formar la unidad de referencia de operaciones de entrada/salida (leer o escribir bloques
de 4k como mínimo).
Ls
Lista los archivos y directorios de un determinado directorio
-a muestra todos los archivos, incluso ocultos
-l formato extendido de la informacion de archivos
-h muestra el tamaño de los archivos (human-readable)
-d muestra solo directorios
-1 listado de una sola columna
-1 muestra el número de i nodo de cada archivo
-R presenta los datos de forma recursiva
--color muestra los archivos con diferentes colores
pwd
Nos permite conocer el directorio activo de trabajo
cd
Nos permite cambiar el directorio de trabajo
- Común – Ordinario.
d Directorio.
b Especial de Bloque.
c Especial de Caracter.
p Archivo de Tuberia para la comunicación de procesos.
s Archivo de Socket que son abiertos y referenciados por los procesos con el fin de
comunicarse.
i-nodo
Cada archivo posee un bloque de i – nodo, que contiene su forma de identificación, los atributos y
los punteros a donde se localiza. Al crearse un archivo se agrega una entrada al directorio que lo
contiene con su nombre y número de i – nodo.
touch
Crea un archivo de texto vacio
cat
Muestra, concatena o permite crear archivos.
mkdir
Crea un directorio o lista de directorios
-p permite crear los directorios padres de ser necesario.
rm
Borrar un archivo o lista de archivos.
-i pide al usuario que confirme la eliminacion del archivo.
-f borra el archivo sin tener en cuenta los permisos del archivo.
-r borrar de forma recursiva en directorios
-v explica que se esta haciendo
rmdir
Borra un directorio
more
Muestra un archivo de forma paginada
-n cantidad de lineas que muestra por página.
head
Muestra las n primeras lineas de un archivo
-n muestra las n primeras lineas
-c muestra los c primeros bytes del archivo
–bytes[ ]k muestra los primeros c kilobytes del archivo
tail
Muestra las últimas lineas del archivo.
-n ultimas n lineas
-c ultimos c bytes
-f muestra las lineas que se van adicionando
cp
Copia un archivo/lista de archivos en un directorio
mv
Mueve o renombra un archivo
Enlaces
Los enlaces dentro del sistema de archivos son las entradas en direcotorios diferentes hacia el
mismo archivos, con nombre distintos o iguales, pero con el mismo número de i nodo (único
identificador de archivo dentro de Linux). Existen los enlaces duros que apuntan a la misma
dirección de memoria donde el archivo se encuentra (por ende con el mismo numero de i nodo), lo
que dificulta el enlace entre distintos volúmenes físicos. Luego se encuentra el enlace simbólico,
que es un archivo diferente (diferente i nodo) que contiene la ruta hacia el nombre del archivo
original, con la desventaja de quedar inutilizable si la entrada de dicho archivo donde apunta cambia
de nombre o es removido.
ln
Crea un enlace entre archivos
-d permite al superusuario hacer enlaces duros a directorios
-s crea enlaces simbólicos.
-f borrar los archivos del destino que ya existen.
Respaldo de Archivos
Los backups o respaldos de archivos son copias de seguridad que nos aseguran mantener un grupo
de archivos y su contenido almacenados para prevenir su pérdida en caso de perder o modificar los
archivos originales.
Las técnicas de backups más conocidas son :
• Completas. (Respaldo de todo el contenido).
• Incremetales. (Respaldo del contenido modificado a partir del último respaldo incremental).
• Diferenciales (Respaldo del conteindo modificado a partir del último respaldo completo).
tar
Crea archivos de respaldo dentro de los sistemas Unix
-c acción de crear un archivo de respaldo
-v muestra los archivos a medidas que realiza operaciones
-f indica que el parámetro siguiente es el nombre del archivo a crear.
-p conserva los permisos de los archivos.
-z realiza la compresión de los archivos.
-d busca diferencias entre los archivos.
-r agrega los archivos al final de un archivo.
-t lista el contenido de los archivos del backup.
-x extrae los archivos del respaldo
X FILE exclude del relpado a los archivos listados en el archivo FILE
--exclude=“archivo” excluye un archio del respaldo.
-N crea un backup diferencial.
-g crea un backup incremental.
gzip
Comprime archivos, agrega el sufijo “.gz” por defecto
-c Esccribe la salida en la salida estandar, deja los archivos originales tal cual. Con varios archivos
de entrada, la salida consiste en una secuencia de miembros comprimidos independientemente.
-d Descomprime
-f Fuerza la compresión/descompresión.
-l Lista diferentes campos para los archivos siendo comprimidos.
--verbose muestra los campos correspondientes al métodos de compresión, bits y tiempos.
-r recorre la estructura de directorios recursivamente.
-# Regula la velocidad y calidad de compresión. (1 a 9, parte desde el archivo más grande en
menor tiempo, hasta el más pequeño pero con mayor tiempo).
zcat
Muestra el contenido de un archivo comprimido
gunzip
Comando que se utiliza para descomprimir archivos (comando gzip con la opción -d activa)
Filtros
Familia de comandos (grep, sort, find, locate, wc, cut, sed, tr, uniq, tee, etc), que obtienen salidas
mediante el filtrado del contenido de archivos contenedores de caracteres.
Expresiones Regulares
^ Indica inicio de linea
$ Final de linea
\ Evita dar significado especial al siguiente carácter
[] Indica un conjunto o rango de caracteres.
[^] Negación del conjunto.
. Culaquier carácter.
* Puede existir (o no) un conjunto de caracteres de cualquier longitud.
El carácter anterior puede existir entre x a z veces.
\{x,z\}
\{x\} El caracteres/expresion anterior debe existir exactamente x veces.
\{x,\} El caracter/expresion anterior puede existir x veces o mas.
egrep
Mismo de grep, utiliza la opción “e” (uso listado extendido de caracteres para las expresiones
regulares).
\f Salto de página.
\n Nueva linea.
[:lower:] Letras minúsculas.
[:upper:] Letras mayúsculas.
+n mayor a
-n menor a
n igual a
Seguridad
Autenticación
Acción por la cual demostramos, mediante algún método fiable, la identidad de decimos tener. Es la
acción de login que realizamos para acceder al sistema.
Autorización
Propiedades particulares ligadas a nuestra identidad que especifica el acceso y tipo de acceso que
tendremos a los recursos de un sistema informático, como archivos u opciones de ejecución de
programas. En Linux el sistema de permisos de archivos delimita la autorización de los usuarios
sobre los mismos, incluyendo el permiso de ejecución.
R Leer
W Escribir/modificar
X Ejecutar
El tipo de información sobre usuarios que guarda el archivo para manjar permisos son UGO:
U User
G User’s Group
O Others
A All the users
lsattr archivo
Lista los atruibutos del archivo especificado.
Administración de Procesos
Procesos
Estructura de datos que representa a la ejecución de un programa, incluyendo los datos, código y
bloques de control que utiliza el sistema para la gestión de los mismos.
En linux existen los procesos interactivos (iniciados y controlados por shell, estango en bg o fg), en
cola (Esperar a ejecutarse secuencialmente) y demonios (se lanzan al iniciar el sistema y se
ejecutan en bg).
pstree
Muestra el arbol jerárquico de procesos (padres e hijos).
-p Muestra los PIDs.
-a Muestra los argumentos de la linea de comandos.
-h Resalta el procesos actual y los que se encuentren encima de el.
ps
Muestra información sobre los procesos activos del sistema.
-e info sobre todos los procesos
-l información más completa de los procesos.
-f visualizar parámetros con los que se levantó un proceso.
-x procesos que no estan controlados por ningun terminal.
-uusuario procesos del usuario indicado.
-a todos los procesos asociados a un terminal.
-r muestra procesos en estado de ejecucion.
-H Muestra la jerarquia de procesos.
-txx Muestra los procesos asociados a la terminal txx
-aux Muestra info adicional de todos los procesos del sistema.
top
Muestra información en tiempo real referida a los procesos.
Creación de un procesos
Si el comando analizado por el shell es de si mismo, utiliza llamadas al sistema para la interacción
directa con el hardware (mediante le kernel). Si el comando corresponde a un archivo ejecutable, se
crea un proceso mediante una llamada fork() y lo ejecuta mediante exec(). Todos los procesos
lanzados desde un shell son hijos del propio shell, quien dio la llamada de creación de proeso.
Subdirectorio proc
El subdirectorio “proc” es un sistema de archivos virtuales, es decir que no son archivos que
existen en un dispositivo físico, sino que son creados por el sistema para registro y control de
procesos, memoria y configuraciones del kernel, entre otro. Cada procesos posee un subdirectorio
debajo de proc nombrado con su número de PID y contiene información sobre el mismo, existen
además otros archivos de información y configuración general.
Listado de archivos útiles dentro del subdirectorio “/proc”:
• PID/status : info del estado del proceso.
• Interrupts
• meminfo
• mounts
• partitions
• sys/ : informacion de configuración del propio kernel. Algunos archivos pueden modificarse.
• filesystems
jobs
Permite conocer los procesos ejecutándose en segundo plano, y procesos suspendidos.
nohup
Permite ejecutar un comando subordinado (lanzado desde una terminal, por ejemplo) para que se
ejecute hasta finalizar sin ser interrumpido.
fg
Lanza una tarea detenida en primer plano
bg
Lanza una tarea detenida en segundo plano
Se utiliza el signo % para referirse a un proceso por su número de tarea (%numero) en vez de PID.
Para los procesos se hará uso de ctrl+c o ctrl+z para detener la ejecución, para luego usar el
comando kill al estar detenido o si se trata de un proceso subordinado (en background).
Planificación de Procesos
El sistema de planificación de procesos de Linux se basa en prioridades de dos tipos: normal y real-
time. Los procesos comunes se asocia un quantum para ejecutarse, en cambio el kernel ocupa el
procesador hasta terminar la ejecución de la tarea llamada.
La prioridad se mide en números, mientras menor sea mayor es la prioridad. Ocupar el CPU
depende de los valores de prioridad base + uso total de la CPU + NI.
nice
Permite asignar una prioridad a un proceso al lanzarlo.
Para poder disminuir (– opcion) el número es necesario ser superusuario, para aumentar (- opcion),
lo puede hacer cualquiera.
renice
Pemite relanzar una tarea suspendida con una prioridad diferente
La salida de los comandos serán enviados como correo al usuario a menos que se redireccionen.
batch
Se usa para programar que un proceso se ejecute recién cuando la carga del sistema esté por debajo
de 0.8. (Mismo que at)
atq
Muestra los trabajos a finalizar por el comando at.
Demonio Cron:
es un demonio que se se planifica al iniciar el sistema y se despierta cada minuto a chequear los
comandos que deben ejecutarse para at y crontab, manteniéndose durmiendo en caso contrario.
Para programar tareas periódicas es necesario crear un archivo de caracteres que contengan los
comandos a realizar con el siguiente formato.
Administracion de Archivos
free [opciones]
Muestra la memoria fisica y de intercambio, así como los buffers y memoria compartida
-b bytes
-k kilobytes
-m megabytes
-g gigabytes
-h human readable
-s cantidad de segundos entre informes
-t valores totales en cada columna
-c cantidad de informes a mostrar entre intervalos
Dmesg
Muestra y manipula el almacenamiento intermedio del anillo del kernel.
-c limpia lo almacenado en el anillo, después de mostrarlo.
sync
Guarda el contenido de la caché de disco dentro del disco físico, forzando la escritora de los
cambios realizados.
swapon/off
Habilita o deshabilita dispositivos o archivos para el paginado de intercambio.
-p especifica la prioridad del archivo
-s muestra un resumen de uso de swap por dispositivo.
El Proceso de Entrada/Salida
umount
Desmonta un dispositivo o elimina dispositivos instalados.
Los dispositivos escritos en /dev/fstab son los que se montan al inicio del sistema y /proc/devices
enumera los tipos de dispositivos de carácter y bloque a los que se les da soporte con controladores.
df [opciones]
Se usa para ver los sistemas de archivos montados y el número de bloques de espacio de disco
libres que tiene cada uno.
. muestra el espacio que está utilizando el sistema actual solamente
-i informacion sobre los i nodos ocupados y libres en cada particion
-a nos muestran todos los sistemas de archivos.
du [opciones] recurso
Se usa para estimar el uso del disco, de una archivo, de un directorio o de archivos en un sistema
de archivos.
-b mostrar en bytes
-s mostrar solamente tamaño total de argumentos
-h imprime información legible
Cuota de Disco
Para implementar la cuota se debe agregar las palabras usrquota y grpquota dentro del archivo /etc/
fstab.
quotaon/off
Se usa para activar y desactivar cuotas de disco definidas para los usuarios o grupos de usuarios.
-g abrir limite de espacio de disco de grupo
-u abrir limite de espacio de disco de usuario
-v muestra la instrucción de ejecución de comandos
edquota
Sirve para controlar y monitorear la cuota de disco de cada usuario del sistema.
quota
Nos permite conocer el espacio utilizado por el usuario o grupo.
Impresión en Linux
El encargado de gestionar la cola de impresiones es el demonio lpd, que eventualmente se
dfespierta a verificar que haya nuevos archivos enviados a impresión y los para a la correspondiente
impresora.
lprm
Elimina un trabajo o archivo de la colade impresión
Pprinter cola asociada a dicha impresora
- borra todos los trabajos de un usuario
especifica el nombre del usuario dueño del trabajo a eliminar
job # hace referencia al número de trabajo a eliminar
lpq
Nos permite conocer los trabajos que están en cola de impresión
lpc
Permite activar o desactivar impresoras
lpstat
Muestra el estado de las impresoras conectadas al sistema
cups
Programa de comandos de shell que nos permite gestionar las impresiones.
/etc/group:
nombre-grupo:x:gid:otros-miembros
/etc/shadow:
nombre:clave-cifrada:dias que paso desde 1970 hasta ultima mod de contra:minimo de dias antes de
poder cambiar contra: maximo de dias con un contra: catn dias para avisar antes de caducar
contra:cant dias de contra caducada:cant dias con cuenta deshabilitada:R(espacio reservado).
/etc/gshadow:
nombre:contraseña:uid:gid:descripcion:shell
adduser
Agregar usuarios (version con guia)
groupdel grupo
Elimina el grupo
gpasswd
Permite cambiar la contraseña del grupo
grpconv y grpuncov
Convierten al formato gshadow o eliminan el formato gshadow
newgrp nombre-grupo
Permite que el usuario cambie de grupo primaria temporalmente.
userdel usuario
Elimina un usuario
pwconv pwuncov
Estos comandos convierte el formato shadow o elimina el formato shadow.
Chsh
Cambia el shell de un usuario activo
Who
Lista los nombres de los usuarios activos conectados actualmente en el sistema.
-b la hora del ultimo arranque del sistema
-s procesos muertos
-H muestra los encabezados de cada columna
etc/login.defs
En este archivo se definen las variables que permiten controlar los valores por defecto al crear un
usuario, y los valores en el archivo shadow
Comunicacion entre Usuarios
Linux es un Sistema que facilita las comunicaciones via red para el manejo de servicios y de
aplicaciones. Entre las necesidades existe la comunicación entre usuarios conectados en este
sistema mientras que trabajan.
wall (enter)
Envia un mensaje a todos los usuarios del sistema.
Una vez dado enter se escribe el mensaje en la entrada estandar y finaliza con ctrl+d. El mismo
aparecera en las terminales de los usuarios logueados.
rwall
Mismo que wall pero envia el mensaje a todos los sistemas de la red local suscriptos al host, no
solo a los usuarios del sistema actual.
El demonio que verifica la existencia de nuevos mensajes se denomina rwalld y debe estar activo
para poder emitir y recibir mensajes.
write [usuario/terminal]
Envia mensajes a usuarios especificos.
mesg [y/n]
Habilita o deshabilita la comunicación de mensajes entre usuarios por medio de write
Programación en Shell
Los shellscript son archivos de texto que contienen una serie, conjunto y/o grupo de comandos con
el objetivo de la automatizacion de tareas que son interpretadas por el shell, agregándole control de
flujo instrucciones como en un lenguaje de programación.
Los shellscripts se ejecutan en un subshell, por lo que no modifican variables del entorno del shell
almenos que se explicite de la siguiente manera:
“. ./comando” (se agrega un punto inicial antes del path del comando).
Para ejecutar el shellscript debe especificarse el path del mismo si este no está incluido en la
variable $PATH del entorno. Se lo puede agregar mediante la linea: PATH=(ruta):$PATH.
Variables:
Locales: Se define en una zona de datos local (propia del shell actual). Sus valores influyen
unicacmente en la sesion de shell actual, no en otros procesos.
Entornos: Zona de datos de todas las variables cuyos valores son iguales para todos los shells, como
definidas durante el inicio de sesion.
Las variables son unicamente de tipo carácter.
Asignacion
Directa:
variable=valor
variable=“cadena de caracteres con espacios”
export
Exporta los datos locales al entorno.
read [vars]
Lee los valores de las variables de la entrada estandar, los espacios son separadores de valores. Si
la cantidad de entradas (separadas por espacio) sobrepasan la cantidad de variables, las restantes se
definen como una sola cadena sobre la ultima variable. SOLO LEE ENTRADA ESTANDAR, NO
ES POSIBLE EL REDIRECCIONAMIENTO.
shift: mueve los la posicion de los parametros (los argumentos pocisionales) hacia la izquierda.
Exit: retorna un código numérico hacia la variable #? finalizando la ejecucion del shellscript para
informar el estado con el que finalizó.
printenv variables
Imprime todos o una lista de variables pasadas como argumentos.
Estados de salida:
0 se encontraron todas las variables de entornos
1 si no se encontro almenos una de las variables de entorno
2 si ocurrio un error de escritura
Set
Muestara tanto las variables locales como de entorno sus valores correspondientes.
Agrupaciones de comandos
Órdenes condicionales:
(comando)&&(comando): El segundo comando es ejecutado solo si el primero termina con éxito.
(comando)||(comando): El segundo comando se ejecuta solo si el segundo no termina con éxito.
grupo de comandos: Son órdenes secuencias encerradas con paréntesis y donde las entradas y las
salidas las tratan como una sola.
Ejemplo: (ls ~/; pwd) >> archivo (envia las salidas de ambos al mismo archivo).
Est. Condicional CASE-ESAC: Evalua el valor de una variable entre posible candidatos para
decidir que bloque de comandos ejecutar.
case $variable in
patron |(ó) patron-alternativo) comandos
;;
…
*) (opcional por default)
;;
esac
Est. Repetitiva FOR: ejecucion finita de veces donde cada iteracion lee un elemento diferente de
una lista dada.
for i in lista-variables
do
comandos
done
puede utilizarse la salida de un comando captado entre comillas especiales “´comando´”, como ls.
while comando
do
comandos
done
Puede usarse la palabra “true” para crear un loop infinito que sea terminado desde dentro con un
comando “break”
test
Permite comprobar el valor de una expresion. Las expresiones pasadas como argumentos pueden
combinarse con los condicionales (com)&&(com), (com)||(com) y !(com)
Verificacion de Archivos:
“test opcion archivo”
-a existe el archivo
-b existe y es especial de blqoues
-c existe y es especial de caracter
-d existe como directorio
-s existe y tiene tamaño mayor a cero
-f existe y es regular
-r el usuario tiene permiso de lectura
-w el usuario tiene permiso de escritura
-x el usuario tiene permiso de ejecucion
Comprobacion de cadenas:
“test [opcion cadena] [cadena operado cadena]”
-z cadena nula
-n existe la cadena
operadores:
cade1=cade2 cad1 igual a cad2
cade1==cade2 ambas iguales
!= cambas distintias
cadena cadena no nula
cad1<ca1d
cad1>cad2
Operadores Aritmeticos:
num -eq num
num -ne num
num -gt num
num -ge num
num -lt num
num -le num
break [n]
Finaliza la ejecucion de l estructura repetitiva. N indica la cantidad de niveles de estructuras se
finalizan
continue [n]
Finaliza la iteracion actual saltando a la siguiente. N cumople misma funcion
let
Permite operar con variables numéricas dentro de script.
Ej : let num=var1+var2, let var=var+1 o let var+=1
Declaracion de funciones:
function nombreFuncion() {
comandos
}
nombre [argumentos]
RESUMEN
DE
SINTAXIS Y SEMANTICA
DE LOS LENGUAJES
lOMoARcPSD|2834310
SSL – Teórico
Pre-RESUMEN (Rev. 3)
Contenido
Unidad n°1: Introducción a la Teoría de la Computación ................................................................. 7
Lenguajes naturales ................................................................................................................. 7
Lenguajes formales .................................................................................................................. 7
Máquinas abstractas ............................................................................................................... 7
Características de las máquinas abstractas .............................................................................. 7
Función de transición total o completa .................................................................................... 8
Función de transición parcial ................................................................................................... 8
Máquinas traductoras ............................................................................................................. 8
Máquinas reconocedoras ........................................................................................................ 8
Autómatas finitos .................................................................................................................... 8
Máquinas secuenciales ............................................................................................................ 8
Autómatas deterministas ........................................................................................................ 9
Autómatas no deterministas ................................................................................................... 9
Diferencia entre automatismos y autonomía ........................................................................... 9
Jerarquía de máquinas y gramáticas ............................................................................................ 9
Vínculo entre máquinas y gramáticas .................................................................................... 11
Unidad n°2: Gramáticas y lenguajes formales................................................................................ 13
1
lOMoARcPSD|2834310
Signo ..................................................................................................................................... 13
Lenguaje concepto ................................................................................................................ 13
Lingüística Matemática.............................................................................................................. 13
Alfabeto ................................................................................................................................ 13
Palabra, cadena, tira o string ................................................................................................. 14
Longitud de palabra ............................................................................................................... 14
Cadena vacía ......................................................................................................................... 14
Potencia de una palabra ........................................................................................................ 14
Partes de una palabra ............................................................................................................ 14
Operaciones con alfabetos .................................................................................................... 14
Universo de discurso de un alfabeto 𝚺................................................................................... 14
Estrella de Kleene de un alfabeto .......................................................................................... 15
Clausura positiva ................................................................................................................... 15
Lenguajes y operaciones............................................................................................................ 15
Lenguaje ................................................................................................................................ 15
Operaciones con lenguajes .................................................................................................... 16
Descripción de lenguajes: ...................................................................................................... 16
Gramáticas Formales ................................................................................................................. 16
Reglas de reescritura o producciones .................................................................................... 16
Gramática formal .................................................................................................................. 17
Lenguaje generado ................................................................................................................ 17
Equivalencia de gramáticas.................................................................................................... 17
Jerarquía de Chomsky ............................................................................................................... 18
Tipo 0: Lenguajes estructurados por frases: ........................................................................... 18
Tipo 1: Lenguajes dependientes del contexto: ....................................................................... 18
Tipo 2: Lenguajes independientes del contexto: .................................................................... 18
Tipo 3: Lenguajes regulares o lineales: ................................................................................... 18
Jerarquía inclusiva: ................................................................................................................ 19
Lenguajes regulares ................................................................................................................... 19
Expresiones regulares en forma recursivas ............................................................................ 19
Lenguajes independientes del contexto .................................................................................... 20
Gramática limpia ................................................................................................................... 20
Gramática bien formada ........................................................................................................ 20
3
lOMoARcPSD|2834310
4
lOMoARcPSD|2834310
Aspectos generales.................................................................................................................... 51
Conceptos de semántica de lenguajes ....................................................................................... 51
Metalenguajes para la especificación semántica de lenguajes ................................................... 52
Semántica operacional .......................................................................................................... 52
Semántica denotacional ........................................................................................................ 52
Semántica axiomática ............................................................................................................ 52
Semántica algebraica ............................................................................................................. 52
Semántica de acciones .......................................................................................................... 52
Gramáticas con atributos .......................................................................................................... 53
Definición de GA .................................................................................................................... 53
Atributos ............................................................................................................................... 54
Atributos sintetizados ............................................................................................................ 54
Atributos heredados .............................................................................................................. 54
Acciones semánticas .............................................................................................................. 55
Condiciones ........................................................................................................................... 55
Lenguajes naturales
Evolucionan permanentemente según usos y costumbres de los pueblos y épocas, con gramáticas
que deben esforzarse para explicarlos y justificarlos.
Lenguajes formales
Son desarrollados a partir de gramáticas previamente establecidas y no admiten forma alguna de
excepción o desviación. Son los apropiados para la interpretación inequívoca de mensajes.
Máquinas abstractas
(Autómatas) dispositivos formales capaces de exhibir conductas que han sido previamente
determinadas. Se trata de sistemas reactivos que operan en respuesta a los sucesivos estímulos
recibidos del exterior, que llevan a los mismos a adoptar condiciones características que son
denominadas estados y eventualmente a enviar una respuesta al medio exterior.
Máquinas traductoras
Son a aquellas que establecen una relación entre las cadenas de entrada y las cadenas de salida.
Máquinas reconocedoras
Validan o aceptan ciertas cadenas de entrada, arribando a estados finales definidos como de
aceptación, sin producir ninguna cadena de salida.
Autómatas finitos
Estos autómatas comienzan su operación en un estado conocido, que es denominado estado
inicial, y completan su ciclo arribando a un estado de aceptación que ha sido oportunamente
identificado. Su comportamiento es algorítmico.
Máquinas secuenciales
No tienen previsto estados de aceptación y en algunos casos, tampoco tienen definidos estados de
inicio de su operación. Esto significa que las máquinas secuenciales operan en forma
ininterrumpida, sin reconocer condiciones específicas para iniciar y terminar su actividad.
Autómatas deterministas
Las funciones de transición de los autómatas deterministas contemplan un único próximo estado a
partir de cada estado posible y cada símbolo del alfabeto de entrada.
Autómatas no deterministas
La función de transición puede prever más de un próximo estado para cierta condición de estado y
entrada. Otro rasgo que puede diferencias a los autómatas no deterministas es la posibilidad de
realizar transiciones de un estado a otro sin necesidad de leer ningún símbolo de entrada.
Es fácil advertir que los autómatas finitos deterministas (AFD) son un caso particular de los
autómatas finitos no deterministas (AFND).
Todo autómata finito no determinista tiene siempre un autómata finito determinista equivalente,
mientras que en el caso de los autómatas con memoria de pila esta equivalencia no
necesariamente existe.
10
Chomsky utilizó las formas que toman las reglas de producción de las gramáticas para proponer
una clasificación en cuatro tipos, en el que las menos restringidas incluyen sucesivamente a las
siguientes:
11
5. Máquina de Turing y gramáticas sin restricciones: Cuando eliminamos los límites extremos
de la cinta de entrada/salida, permitimos el acceso a un espacio ilimitado que puede ser
usado como un área auxiliar de almacenamiento. Esta máquina está relacionada con todas
las gramáticas, incluyendo la última en la escala de Chomsky que no tiene restricciones.
12
Signo
Concepto abstracto que permite hacer referencia a objetos. El proceso por el cual se toma un
objeto como signo de algo se denomina interpretación. La interpretación determina que el signo
actúe como tal, ya sea porque permite relacionar al signo con su objeto o bien porque el signo se
asocia a una idea o pensamiento. Fundamentalmente, interesa destacar que sin interpretación no
hay signo. Si bien pueden ser tomados como sinónimos, un símbolo es un signo creado
convencionalmente.
Se llama denotado al objeto al que se refiere el signo y designado a las características o
propiedades a las que se remite el signo. Por ejemplo, el signo vaso designa a un objeto con forma
de recipiente destinado a contener líquidos y denota a todos los objetos a los que es aplicable el
signo, es decir a todos los vasos.
Lenguaje concepto
Conjunto de signos y de reglas que organizan esos signos. Estas reglas destinadas a establecer las
relaciones entre los signos de un lenguaje son de tres tipos:
1. Reglas sintácticas: establecen el orden y la relación entre los signos.
2. Reglas semánticas: relacionan los signos y sus significados.
3. Reglas pragmáticas: vinculan los signos con sus usuarios.
Al establecer el orden y la relación entre signos, las reglas sintácticas permiten combinar las
palabras para formar frases correctas.
Lingüística Matemática
Alfabeto
Se denomina alfabeto a cualquier conjunto finito y no vacío de símbolos. Como se trata de
conjuntos:
• Dos alfabetos son iguales si y solo si tienen exactamente los mismos símbolos.
• Si todos los símbolos de un alfabeto Ω están también en otro alfabeto Ω se dice que el
primero está incluido en el segundo y se lo denota Ω ⊆ Ω , también se dice que Ω es un
subconjunto de Ω . Si además, el segundo alfabeto posee al menos un símbolo que el
primero no tiene, se dice que el primero está estrictamente incluido en el segundo,
denotándose en este caso Ω ⊂ Ω , se expresa en este caso que Ω es un subconjunto
propio de Ω .
• El cardinal de un alfabeto dado Ω, denotado como |Ω| es la cantidad de símbolos que el
mismo posee y siempre será, por definición un número entero positivo.
13
14
Σ∗ = Σ
Clausura positiva
Si se quita de la unión anterior la potencia cero, es decir, se elimina la palabra vacía, se obtiene el
conjunto de todas las palabras de símbolos de largo uno o mayor denominado clausura positiva:
Σ = Σ = Σ − Σ = Σ∗ − {𝜆}
Lenguajes y operaciones
Lenguaje
Un lenguaje definido sobre un alfabeto es un conjunto de palabras construidas con los símbolos de
ese alfabeto. En símbolos, si Σ es un alfabeto y L es un lenguaje definido sobre Σ, entonces:
𝐿 ⊆ Σ∗
Algunos conceptos de conjuntos adaptados al contexto de lenguajes son los que siguen:
• Un lenguaje 𝐿 definido sobre Σ es subconjunto de otro 𝐿 si toda palabra de 𝐿 es también
palabra de 𝐿 :
𝐿1 ⊆ 𝐿2 ⇔ ∀𝛼 ∈ 𝛴 ∗ : 𝛼 ∈ 𝐿1 → 𝛼 ∈ 𝐿2
𝐿1 = 𝐿2 ⇔ [ ∀𝛼 ∈ 𝛴 ∗ ∶ 𝛼 ∈ 𝐿1 ⇔ 𝛼 ∈ 𝐿2]
⇔ [𝐿1 ⊆ 𝐿2 ∧ 𝐿2 ⊆ 𝐿1 ]
• El conjunto vacío Ø es un lenguaje llamado lenguaje vacío, tiene cardinalidad cero y es el
único con esta propiedad, independientemente del alfabeto sobre el cual esté definido.
• {λ} el conjunto vacío cuyo único elemento es la cadena vacía, es también un lenguaje único
e independiente del alfabeto de definición. Debe notarse que su cardinalidad es uno, por lo
cual es bien distinto del lenguaje vacío definido anteriormente.
15
Unión: 𝐿 ∪ 𝐿 = {𝛼 ⁄𝛼 ∈ L ∨ 𝛼 ∈ 𝐿 }
Intersección: 𝐿 ∩ 𝐿 = {𝛼 ⁄𝛼 ∈ 𝐿 ∧ 𝛼 ∈ 𝐿 }
Resta: 𝐿 − 𝐿 = {𝛼⁄𝛼 ∈ 𝐿 ∧ 𝛼 ∉ 𝐿 }
Concatenación: 𝐿 . 𝐿 = {𝜇 = 𝛼𝛽 ⁄𝛼 ∈ 𝐿 ∧ 𝛽 ∈ 𝐿 }
Complemento: 𝐿 = {𝛼⁄𝛼 ∈ Σ ∗ ∧ 𝛼 ∉ 𝐿 }
Descripción de lenguajes:
• Por extensión o enumeración, indicando una por una todas las palabras que son
elementos del mismo;
• Por compresión, explicitando propiedades de las cadenas definidas sobre algún alfabeto,
que solo las palabras del lenguaje verificarán.
Gramáticas Formales
Reglas de reescritura o producciones
Para un alfabeto Σ dado, diremos que una producción o regla de reescritura es un par ordenado de
palabras (α, β) definidas sobre Σ. Escribiremos las producciones utilizando una notación similar a la
denominada BNF² de la siguiente forma:
𝛼: = 𝛽
y diremos que la cadena α es el lado izquierdo de la producción, := el símbolo de producción, la
cadena β su lado derecho y la leeremos alfa produce beta.
Se llama derivación directa a la operación que aplica una sola producción a una palabra
obteniendo una nueva palabra y se simboliza:
𝛿→𝜑
Se dice que 𝛿 se deriva directamente en 𝜑, o que 𝜑 se obtiene por derivación directa desde por la
aplicación de una producción.
16
Gramática formal
Una gramática formal G es una cuádrupla (ΣT , ΣN , S,P) donde sus componentes representan:
• Σ es el alfabeto de símbolos que formarán las cadenas del lenguaje que se está
describiendo y es denominado alfabeto de símbolos terminales
• Σ es un conjunto de variables o símbolos auxiliares llamado alfabeto de símbolos no
terminales
• 𝑆 ∈ Σ es un símbolo no terminal distinguido denominado axioma o símbolo inicial de la
gramática
• P es un conjunto de producciones de la forma α:=β donde ambas palabras están
compuestas de símbolos terminales y símbolos no terminales, pero en α al menos debe
encontrarse un símbolo no terminal.
El alfabeto de símbolos terminales es fundamental ya que todas las cadenas descriptas por la
gramática estarán construidas con estos símbolos. Los símbolos no terminales también son
llamados auxiliares ya que sirven para armar las producciones, pero nunca aparecerán en las
cadenas del lenguaje definido por la gramática. Por ello se exige que el alfabeto de símbolos no
terminales sea disjunto con el de terminales:
𝛴 ∩𝛴 =∅
Para un mismo lenguaje puede existir más de una gramática con distintos símbolos no terminales,
axioma y/o producciones, pero todas estas descripciones tendrán exactamente los mismos
símbolos terminales.
Lenguaje generado
Dada una gramática formal G=(ΣT ,ΣN ,S, P), se llama lenguaje formal generado por G al conjunto de
todas las cadenas de símbolos terminales que pueden derivarse desde el axioma S utilizando las
reglas de producción de P. En símbolos:
𝐿(𝐺 ) = {𝛼 ∈ Σ ∗ ⁄𝑆 →∗ 𝛼}
Se denomina forma sentencial o metapalabra a una cadena de terminales y no terminales
𝛼 ∈ (Σ ∪ Σ )∗ que puede derivarse desde el axioma de la gramática. La cadena final de
terminales a la que se arriba con la derivación desde el axioma pertenece al lenguaje generado
por la gramática y recibe también el nombre de sentencia o palabra generada por la gramática.
Equivalencia de gramáticas
Dos gramáticas son equivalentes si y solo si generan exactamente el mismo lenguaje:
𝐺 ≡ 𝐺 ⇔ 𝐿( 𝐺 ) = 𝐿 ( 𝐺 )
Para que esto ocurra, los alfabetos de símbolos terminales deben ser iguales. Nótese que basada
en la igualdad de lenguajes, la equivalencia de gramáticas es reflexiva, simétrica y transitiva, una
relación de equivalencia bien definida.
17
Jerarquía de Chomsky
𝛼𝐴𝛽 ∶= 𝛾 𝛼, 𝛽, 𝛾 ∈ (Σ ∪ Σ )∗ , 𝐴 ∈ Σ
𝑆 ∶= 𝜆 ó 𝛼𝐴𝛽 ≔ 𝛼𝛾𝛽 𝛼, 𝛽 ∈ (Σ ∪ Σ )∗ , 𝐴 ∈ Σ , 𝛾 ∈ (Σ ∪ Σ )
Esto dice que el símbolo no terminal A, solo puede ser reemplazado por la cadena γ de terminales
y no terminales si se encuentra flanqueada por α a la izquierda y por β a la derecha, es decir, en el
contexto alfa-beta. Debe notarse que la cadena γ debe por lo menos tener largo unitario, por lo
cual en estas reglas siempre la cadena del lado derecho es de largo igual o menor que la cadena
del lado derecho (reglas no compresoras), sin embargo, el lenguaje podría contener como palabra
la cadena vacía, por lo cual ésta debe poder ser generada por la gramática como única regla
compresora permitida.
𝑆 ∶= 𝜆 ó 𝐴 ∶= 𝛼 𝐴 ∈ Σ , 𝛼 ∈ (Σ ∪ Σ )
Puede verse que el símbolo no terminal A, puede ser reemplazado por la cadena α de terminales y
no terminales en cualquier lugar donde aparezca durante el proceso de derivación, sin tener en
cuenta el contexto donde se encuentra. Nótese que estas reglas también son compresoras, salvo
la regla de lambda que tiene idéntica justificación que en el tipo 1.
18
Jerarquía inclusiva:
Las gramáticas de Chomsky se diferencian unas de otras solo por el formato de sus producciones.
𝐿 ⊂𝐿 ⊂𝐿 ⊂𝐿
Lenguajes regulares
Admiten la siguiente definición recursiva:
1. Cualquier lenguaje finito 𝐿 definido sobre algún alfabeto Σ, es regular.
19
Análisis sintáctico
¿𝜶 ∈ 𝑳(𝑮)?
La forma que conocemos para lidiar con esa pregunta es encontrar una derivación 𝑆 →∗ 𝑎 que,
aplicando una cantidad finita de producciones de la gramática, logre transformar el axioma de la
misma en la cadena de terminales bajo análisis.
Se llama análisis sintáctico de la cadena α al proceso de búsqueda de esta derivación.
Árbol de derivación
Un árbol de análisis sintáctico tendrá:
• El axioma S de la gramática como raíz.
20
Ambigüedad
Se dice que una cadena es ambigua si puede ser generada por derivaciones que admiten distintos
árboles de análisis sintáctico.
Recursión
Una producción de una gramática independiente del contexto se dice que es recursiva si el no
terminal de su lado izquierdo se encuentra también del lado derecho 𝐴: = 𝛼𝐴𝛽
Una gramática que tiene una regla de reescritura recursiva, se dice que tiene recursión en un
paso. En el caso en el que un no terminal del lado izquierdo de una producción pueda derivarse en
una cadena que lo contenga en varios pasos: 𝐴 → 𝛿1 → 𝛿 → ⋯ → 𝛼𝐴𝛽 se dice que existe en la
gramática recursión en más de un paso.
Si en la regla recursiva 𝐴 = 𝛼𝐴𝛽 la cadena 𝛼 es vacía, esto es 𝐴: = 𝐴𝛽, se dice que la regla es
recursiva por izquierda y que la gramática tiene recursión izquierda. Si en cambio es 𝛽 la cadena
vacía 𝐴 ∶= 𝛼𝐴 se dice que la regla es recursiva por derecha y que la gramática tiene recursión
derecha.
Es menester eliminar la recursión izquierda modificando la gramática, pero haciendo que siga
generando el mismo lenguaje.
Eliminación de la recursión por izquierda en un paso:
Siendo 𝐴 ∶= 𝐴𝛼 |𝐴𝛼 | … |𝐴𝛼 |𝛽 |𝛽 | … |𝛽 se puede obtener una gramática equivalente sin
recursión izquierda haciendo lo siguiente:
a) Crear un nuevo símbolo no terminal X y agregarlo al alfabeto de símbolos no terminales:
Σ = Σ ∪ {𝑋}
21
b) Para cada símbolo terminal 𝑎 ∈ 𝛴𝑇 , crear un nuevo símbolo no terminal 𝑋 y una nueva
producción 𝑋 ∶= 𝑎
c) Para cada producción de la gramática que contenga en su lado derecho tanto símbolos no
terminales como símbolos terminales, reemplazarla por una nueva que tenga en su lugar
del terminal 𝒂 su correspondiente nuevo terminal 𝑋 , es decir 𝐴: = 𝛼𝑎𝛽 → 𝐴: = 𝛼𝑋𝑎 𝛽 . Al
terminar con estos pasos se tendrá una gramática equivalente con producciones que solo
contienen en su lado derecho un solo símbolo terminal (es decir, que es está en FNC) o una
cadena de dos o más símbolos no terminales. Si tiene dos no terminales, entonces ya está
en FNC, caso contrario:
d) Para cada producción con más de dos símbolos no terminales en su lado derecho, digamos
𝐴: = 𝐵𝜂 donde 𝜂 contiene dos o más no terminales, crear un nuevo símbolo no terminal X
y reemplazar la producción por el par 𝐴: = 𝐵𝑋 y 𝑋 ∶= 𝜂.
22
g) Para cada símbolo terminal 𝑎 ∈ Σ que esté en el lado derecho de las producciones
resultantes, pero no al inicio de las mismas, crear un nuevo símbolo no terminal 𝑋 y una
nueva producción 𝑋 ∶= 𝑎.
h) Para cada producción de la gramática que contenga en su lado derecho, luego del primer
símbolo terminal, tanto símbolos no terminales como símbolos terminales, reemplazarla
por una nueva que tenga en lugar del terminal no inicial 𝒂 su correspondiente no terminal
𝑋 .
Autómata finito
En su forma más general, el autómata finito es también traductor, generará una cadena de salida,
y al completar la lectura de la cadena de entrada arribará a algún estado final. Es por este motivo
que en su operación el autómata finito determina un procedimiento afectivo o algorítmico.
Máquinas secuenciales
Para las máquinas abstractas más simples, se reserva la denominación de máquinas
secuenciales. Las principales son la máquina de Mealy y de Moore.
23
Máquina de Mealy
Tiene 5 componentes y es definida así: 𝑀𝐸 = (𝛴𝐸 , 𝛴𝑆 , 𝑄, 𝑓 , 𝑔) donde:
• ΣE alfabeto de símbolos de entradas
• f Función de transición: 𝑓 ∶ 𝑄𝑥 𝛴𝐸 → 𝑄
La función de transición f tiene la finalidad de definir el próximo estado que adoptará la máquina a
partir de su estado actual y cada uno de los posibles símbolos de entrada. De igual forma, la
función de salida g define la salida de la máquina a partir de los mismos argumentos.
La máquina de Mealy es traductora, lo que significa que establece una relación entre una cadena
de entrada y la cadena de salida.
Máquina de Moore
se diferencia de la máquina de Mealy únicamente en su función de salida, ya que ésta solo
depende del estado actual y no de la entrada en ese instante, es decir:
𝑀𝑂 = (𝛴 , 𝛴𝑆 , 𝑄, 𝑓 , 𝑔)
donde la función de transición f no cambia y en g hay una relación directa entre el estado en cada
intervalo de tiempo y el símbolo de salida: 𝑓 ∶ 𝑄𝑥 𝛴𝐸 → 𝑄 𝑔: 𝑄 → 𝛴𝑆
Debe recordarse que la máquina de Moore incorpora un retardo entre la entrada y la salida, si en
un instante de tiempo t el autómata se encuentra en un estado 𝑞 ∈ 𝑄 es:
𝑠 = 𝑔(𝑞 )
Y como este último estado fue a su vez alcanzado en una transición anterior:
𝑞 = 𝑓(𝑞 ,𝑒 )
Se puede apreciar la relación directa entre la salida actual y la anterior, que es:
𝑠 = 𝑔(𝑓(𝑞 ,𝑒 ))
Puede demostrarse que para toda máquina de Moore hay una máquina de Mealy capaz de tener
el mismo desempeño y recíprocamente. Lo primero es obvio, ya que solo basta plantear una
máquina de Mealy que en cada estado prevea la misma salida para todos los símbolos de entrada.
Lo opuesto, obtener una máquina de Moore a partir de una de Mealy, no es tan obvio y requiere
mayor esfuerzo.
24
𝐴𝐹𝐷𝑇 = (𝛴𝐸 , 𝛴𝑆 , 𝑄, 𝑞0 , 𝐴 , 𝑓 , 𝑔)
donde:
• 𝑞 estado inicial 𝑞 ∈ 𝑄
Nótese que por tener un estado inicial y ser la cadena de entrada finita, el 𝐴𝐹𝐷 siempre
completa su operación, en una cantidad finita de tiempo, por lo tanto, determina un algoritmo.
Una característica importante del componente f del AFD es que se trata de una función y esto es
lo que lleva a definir al autómata como determinista. Debe recordarse que la función es un caso
particular de relación entre dos conjuntos, en la cual se asocian elementos del primero (alcance)
con elementos únicos del segundo (rango):
𝑓 ∶ 𝑄𝑥 𝛴𝐸 → 𝑄
Formas en las que una máquina “real” reconoce haber leído completamente una cadena:
1. se conoce anticipadamente los largos de las cadenas a ser leídas.
2. Los caracteres son recibidos con una periodicidad regular
3. El mensaje termina con un carácter especial.
25
donde q representa el estado en el que se encuentra y β el sufijo o subcadena de entrada que está
pendiente de ser leída.
Movimiento
El tránsito de una configuración a otra es denominado movimiento, es decir que si existe la
transición 𝑞 = 𝑓(𝑝, 𝑎 ), el movimiento del estado p al q, leyendo el símbolo de entrada a, puede
representarse:
(𝑝, 𝑎𝛽) ⊢ (𝑞, 𝛽)
El movimiento desde la configuración inicial a la final es representado:
𝑞0 𝛼 ⊢∗ (𝑞𝑛 , 𝜆)
donde ⊢∗ equivale a una cantidad finita de movimiento que es igual al largo |α| de la cadena de
entrada.
Extensión al tratamiento de palabras
La función de transición f puede ser extendida para describir lo que ocurre a partir de cada estado
si en lugar de recibir símbolos aislados se recibe una secuencia concatenada de los símbolos de
entrada.
𝑓 ∶ 𝑄𝑥 𝛴 ∗ → 𝑄
Considerando que la cadena 𝛼 = 𝑎𝑏𝑐𝑑𝑒 puede ser expresada como 𝛼 = 𝑎𝛽 con 𝛽 = 𝑏𝑐𝑑𝑒:
Este concepto también puede aplicarse para extender la función de salida de las máquinas
secuenciales de Mealy o Moore y del autómata finito traductor.
Aceptación de palabras y lenguajes
Si en el movimiento desde la configuración inicial hasta la final, representada por
𝑞0 , 𝛼 ⊢∗ (𝑞𝑛 , 𝜆) se verifica que 𝑞 ∈ 𝐴 se dice que la cadena α ha sido reconocida o aceptada.
El AFD reconocedor llega a la conclusión de aceptar o rechazar la cadena de entrada luego de
efectuar un número finito de transiciones o movimientos a partir de su configuración inicial. Es
decir que la aceptación de una cadena por parte de un AFD requiere la completa lectura de la
cadena de entrada y el arribo a un estado de aceptación.
Se dice que un lenguaje L es aceptado por un autómata finito si todas las palaras que lo componen
conducen a estados de aceptación.
26
27
Minimización de autómatas:
Autómata mínimo
Autómata que cumple correctamente su función con la menor cantidad posible de estados. Para
minimizar un autómata se recurre al concepto de conjunto cociente visto con anterioridad, es
decir, a la partición del conjunto de estados Q producida por la relación de equivalencia E, que
tiene por elementos a las clases de equivalencia, donde se agrupan todos los estados equivalentes
o indistinguibles entre sí.
El autómata mínimo equivalente a uno dado tendrá como estados a cada una de las partes o
clases de estados equivalentes del autómata original (es decir, su conjunto de estados será Q/E),
aquella clase que contenga el estado inicial original será su estado inicial, las que contengan algún
estado de aceptación del autómata original serán sus estados de aceptación; su función de
transición se construirá en base a la del autómata original.
Aspectos generales: Otorgando al AFD la capacidad de decidir el sentido del movimiento del
cabezal en cada intervalo de tiempo queda conceptualmente definido el AFDB. En la definición del
autómata se debe incorporar una función de movimiento. Se incorporan además, dos símbolos
especiales que identifican el inicio y el final del intervalo de cinta de entrada a ser analizado.
Esto da como resultado las siguientes características:
• Cada símbolo de entrada puede ser leído varias veces
• No hay ninguna condición que identifique el fin de la lectura de la cadena
• No es posible anticipar la cantidad de intervalos de tiempo requeridos para evaluar la
cadena
• El concepto de cadena que resta de ser leída desaparece
Una consecuencia puede ser que ocurra que ciertas cadenas de entrada lleven al AFDB a un ciclo
cerrado que no conduzca a nada, es decir, un ciclo infinito.
Se definen entonces:
𝐴𝐹𝐵𝐷 = (Σ , Γ, 𝑄, 𝑞 , 𝐴, 𝑓)
Donde:
28
La configuración 𝑘 de un AFDB que opera sobre cierta cadena de entrada α que en el instante de
tiempo t está en el estado q y con el cabezal en la posición k es:
𝐾 = (𝑞, ⊢ 𝛼 ⊣, 𝑘 )
𝐿(𝑀) = {𝛼⁄𝛼 ∈ Σ∗ 𝑦 𝑞 𝛼 ⊢∗ 𝛼𝑞 , 𝑞 ∈ 𝐴}
29
Conceptos relacionados:
• Editor de programas
• Compilación: Se refiere al proceso de convertir un programa fuente en un programa objeto
• Intérprete: Se denomina así a una herramienta o módulo que interpreta y ejecuta las
sentencias de un programa fuente una tras otra, sin generar un programa objeto
• Preprocesador: Es un módulo que tiene la finalidad de modificar o completar al programa
fuente previo a ser leído por el compilador
• Conversor Fuente-Fuente: Tiene por finalidad la conversión de un programa fuente desde
un lenguaje de alto nivel a otro
• Ensamblador: Se denomina así a un compilador que tiene por lenguaje fuente a uno de 2 da
generación
• Administrador de librerías: Es una herramienta que permite gestionar en una librería las
partes de un sistema que han sido compiladas por separado y que están destinadas a
integrar una aplicación
• Depurador: Es un módulo usado para facilitar las pruebas y eliminar errores de los
programas
• Enlazador: Tiene la misión de construir el programa ejecutable a partir del programa objeto
• Librería de enlace dinámico: Se trata de librerías que en lugar de ser incorporadas al
programa ejecutable por el enlazador son incorporadas a la aplicación en tiempo de
ejecución cuando son necesarias.
Tipos de compiladores:
• Compilador cruzado: Es el compilador que genera programas objeto que están destinados
a ser ejecutados en computadoras diferentes de aquel en el que se lo ha compilado
• Autocompilador: Es un compilador en que su propio programa fuente está escrito en el
mismo lenguaje que el de los programas fuentes que admite
• Metacompilador: Se trata de un compilador capaz de admitir programas fuentes escritos
en diversos lenguajes.
• Decompilador: Tiene como misión convertir programas escritos en lenguaje máquina a
programas fuentes de lenguajes de alto nivel
• Compilador optimizador: Los objetivos principales son la reducción de tamaño del
programa, reducción de la demanda de memoria y la rapidez de operación.
• Compilador intérprete: Se trata de compiladores que generan los programas objeto en un
lenguaje intermedio, que luego son interpretados en el momento de la ejecución.
30
31
Análisis léxico
También se denomina análisis lineal o de exploración y el módulo destinado a esta tarea es
denominado analizador lexicográfico o scanner. En esta fase, la cadena de caracteres que
constituye el programa fuente es leída carácter a carácter, para identificar y agrupar sus
componentes léxicos. Éstos, son secuencias de caracteres que tienen un significado colectivo
denominados tokens. Luego, una cadena de caracteres específica que se ajuste al patrón léxico de
un cierto tipo de token es denominada lexema.
Análisis sintáctico
Se reciben las secuencias de componentes léxicos que fueron identificadas en la fase anterior para
comprobar que las sentencias sean sintácticamente correctas. Es decir, se debe verificar que todas
las sentencias pueden haber sido generadas por la gramática del lenguaje fuente. Los lenguajes de
programación son generados por gramáticas libres de contexto, y éstos son reconocidos por los
autómatas con pila, por ende, todo analizador sintáctico tiene una capacidad computacional
equivalente a la de un autómata con pila.
32
Análisis semántico
Se revisa al programa fuente, para reunir información sobre los tipos de las variables que será
utilizada en la fase posterior de generación de código intermedio. Incluyen la detección y
comunicación de numerosos errores que corresponden a comprobación de tipos, coherencia en
los argumentos, potenciales errores en tiempo de ejecución, etc.
Generación de código intermedio
Prepara al programa fuente para ser convertido en un nuevo programa escrito en un lenguaje
elemental que es normalmente denominado lenguaje intermedio. La tendencia fue adoptar un
lenguaje universal denominado Uncol (Universal Compiler Oriented Language).
Optimización de código
Esta fase realiza una mejora en la calidad y eficiencia del código intermedio, pero difícilmente
permita alcanzar un código óptimo. Las mejoras refieren a la calidad de la implementación del
programa desde un punto de vista lógico, mejoras particulares para el mejor aprovechamiento
global de cierta máquina, direccionamientos, etc.
Generación del programa objeto
Se toma como entrada a la representación intermedia y se produce un programa objeto
equivalente que debe ser correcto, eficiente, apropiado a la máquina en la que se va a operar y
apto para dar lugar a un ejecutable compatible con el entorno (SO). Se encarga de la selección de
instrucciones de máquina de destino, asignación de registros de memoria y otros recursos,
administración de la memoria para datos y programa.
Gestor de la tabla de símbolos
Es en realidad un administrador de una base de datos que contiene los identificadores del
programa fuente y sus atributos.
Identificación y gestión de errores
El gestor de errores, activo en las fases de análisis, detecta los errores, los asocia a determinada
línea del programa fuente e intenta su recuperación con la finalidad de proseguir con la terea de
compilación. Para esta última tarea, el registrador dispone de un corrector lexicográfico, un
corrector sintáctico, y un corrector semántico que operan según la fase en la que fue reportada la
irregularidad.
Errores de programación
Se clasifican en lexicográficos, sintácticos, semánticos, por falla del compilador y de ejecución.
Las primeras tres clases de errores están al alcance de ser identificadas por las fases
correspondientes de la etapa de análisis del compilador, formando parte de lo que se denomina
evaluación estática. La última clase requiere la ejecución del programa y será más efectiva en la
medida en que estén mejor planeados los casos de prueba, ya que deberían procurarse recrear
todas las secuencias lógicas presentes. Esto se llama evaluación dinámica.
33
34
35
AFND
Los AFND quedan definidos como una quíntupla:
AFND = (Σ , Q, q , A, f)
Y su característica distintiva está en la definición de las transiciones, que aquí no es más una
función de estado a estado, sino una relación de transición, tomando la forma:
f: QxΣ → P(Q)
Donde P(Q) es el conjunto de todos los subconjuntos que se pueden formar con los elementos del
conjunto Q (conjunto potencia de Q).
Esta indeterminación, no significa incertidumbre o aleatoriedad en el desempeño final del
autómata. Más bien significa incertidumbre en cuanto al esfuerzo requerido al evaluar una cierta
cadena. Esto es así porque la operación del autómata implica una búsqueda exhaustiva en un
árbol de posibilidades que será más frondoso según sea mayor la cantidad de próximos estados
posibles en cada transición, llamada factor de ramificación F , donde F = |f(q, e)| donde
q ∈ Q, e ∈ Σ . El tiempo para resolver este tipo de problemas es exponencial.
La flexibilidad que ofrece el no determinismo es de gran ayuda en el diseño de autómatas
destinados a reconocer lenguajes complejos. Se obtienen diseños más simples a costa de
algoritmos menos eficientes.
Transiciones 𝛌
La definición de los AFND puede ampliarse para incluir transiciones de un estado a otro que no
dependan de ninguna entrada, las que son denominadas transiciones λ.
Para contemplarlas se incorpora una columna adicional a la relación f a fin de considerar los pares
(q,λ) y se asume además que cada estado tiene su propia transición λ que cicla sobre sí mismo.
Luego la expresión de f debe ser reescrita de manera de adicionar λ a los símbolos del alfabeto de
entrada:
f: Qx(Σ ∪ λ) → P(Q)
A todos los pares de estados que están vinculados por una transición λ es conveniente reunirlos en
un conjunto T denominado relación de transición λ. Por lo ya anticipado, en esta relación, se
incluyen además las transiciones de los estados con ellos mismos, reconociéndose el carácter
reflexivo de T:
T = (p, q)/q ∈ f(q, λ) ∪ (q, q)/q ∈ Q
36
37
38
Paso 4: A partir del nuevo grafo, se obtiene la gramática lineal por derecha siguiendo los siguientes
pasos:
Los alfabetos de símbolos terminales y no terminales son los mismos de la gramática original
lineal por izquierda
Por cada arco dirigido etiquetado con 𝑎 desde el nodo B al nodo A, se incorpora a la nueva
gramática la regla de producción 𝐵 ≔ 𝑎𝐴
Por cada arco dirigido etiquetado con 𝑎 desde el nodo B al nodo 𝜆, se incorpora la regla de
producción 𝐵 ≔ 𝑎
En caso de un arco sin etiqueta desde el nodo S al nodo 𝜆, se incorpora a la gramática la regla
𝑆≔𝜆
b. Para 𝜆:
c. Para 𝑎 ∈ Σ :
d. El lenguaje unión L€ y L(F) denotado por la expresión regular E+F, será reconocido por el
autómata construido de la siguiente forma:
- Quitar la característica de inicial de los estados iniciales de 𝐴𝐹 𝑦 𝐴𝐹
- Crear un nuevo estado inicial 𝑞 y relacionarlo mediante transiciones 𝜆 con antiguos
estados iniciales 𝐴𝐹 y 𝐴𝐹
- Quitar característica de aceptación.
- Crear nuevo estado de aceptación 𝑞 y agregar desde cada antiguo estado de
aceptación de 𝐴𝐹 𝑦 𝐴𝐹 una transición 𝜆 hacia él.
39
40
Definición del AP
Aceptación de lenguajes
a. Aceptación por vaciado de pila:
𝐿 = {𝛼⁄(𝑞 , 𝛼, #) ⊢∗ (𝑞, 𝜆, #) 𝑐𝑜𝑛 𝑞 , 𝑞 ∈ 𝑄, 𝛼 ∈ Σ∗ , # ∈ Γ}
b. Aceptación por estado final:
41
AP deterministas y transiciones 𝝀
Una vez que el AP ha completado la lectura de una sentencia, debe verificarse que la pila se
encuentra vacía y la única forma es leerla y comprobar que el símbolo leído es precisamente la
marca de fondo de pila (#). Por esta razón, cuando los autómatas han completado la lectura de la
cadena de entrada, realizan un movimiento adicional que está destinado a verificar la condición de
la pila, y en caso de estar vacía, transitar al estado de aceptación. Aquí la cadena de entrada ya ha
sido leída y esta lectura adicional de la pila se representa como una transición 𝜆.
Es importante advertir que, pese a la transición 𝜆, esto por sí solo no define al AP como no
determinista. En efecto, si se completó la lectura de la sentencia de entrada con el autómata en
un cierto estado q, el AP será determinista siempre que:
| 𝑓(𝑞, 𝜆, #)| = 1 𝑦 𝑓(𝑞, 𝑎, #) = ∅ para todo símbolo 𝑎 ∈ Σ
Y será considerado no determinista cuando:
𝑓(𝑞, 𝜆, #) ≠ ∅ 𝑦 𝑓(𝑞, 𝑎, #) ≠ ∅ para algún símbolo 𝑎 ∈ Σ
En el caso de las gramáticas independientes del contexto, estos autómatas llevan el nombre de
analizadores sintácticos.
La denominación de “compiler-compiler” proviene del hecho que los generadores de analizadores
tienen por finalidad la construcción de analizadores sintácticos, los que a su vez forman parte de la
etapa de análisis de los compiladores. Esta etapa incluye las fases de análisis léxico, destinado a
identificar los componentes del lenguaje, análisis sintáctico, que verifica que la estructura
corresponda a las reglas de reescritura de la gramática, y finalmente la fase de análisis semántico
que se ocupa del sentido y contenido lógico de las sentencias.
(Ampliar con lectura del libro)
42
43
44
Definiciones
El autómata linealmente acotado (ALA) queda definido como:
𝐴𝐿𝐴 = (Σ , Γ, 𝑄, 𝑞 , 𝐴, 𝑓)
Donde:
Γ: Alfabeto de cinta Γ = Σ ∪ {⊢, ⊣} ∪ Ω
𝑓: Función de transición, 𝑓: 𝑄𝑥 Γ → 𝑄 𝑥 Γ 𝑥 {𝐼, 𝑁, 𝐷, 𝑃}
El alfabeto de cinta Γ fue ampliado con símbolos auxiliares Ω y la otra variante está en la función
de transición, que debe incorporar las previsiones para efectuar la grabación de un símbolo sobre
la cinta en cada intervalo de tiempo. Nótese que no se trata más de una cinta de entrada sino más
bien de una cinta de trabajo o medio de entrada/salida, de largo igual al de la cadena a ser
procesada.
Esto significa que la llamada función de transición encierra ahora en realidad tres funciones: la de
transiciones entre estados (𝑓 ), la de movimientos del cabezal (𝑓 ) y una nueva que es la función
de salida (𝑓 ):
𝑝 = 𝑓 (𝑞, 𝑎)
𝑚 = 𝑓 (𝑞, 𝑎)
𝑏 = 𝑓 (𝑞, 𝑎)
𝑠𝑖𝑒𝑛𝑑𝑜 𝑝, 𝑞 ∈ 𝑄, 𝑎, 𝑏 ∈ Γ, 𝑚 ∈ {𝐼, 𝑁, 𝐷, 𝑃}
Ahora bien, si se permite a la cinta extenderse más allá de la cadena a ser procesada, es necesario
eliminar las marcas que la limitan. En este caso, se debe definir un símbolo que por defecto
ocupará el resto del medio de entrada/salida y usualmente se utiliza para este fin el b (blanco). La
ausencia de límites implica que este medio se extiende ahora hasta el infinito, conformando una
enorme área de trabajo o memoria auxiliar. Con esta muy importante variante, el autómata
linealmente acotado se convierte en una Máquina de Turing:
𝑀𝑇 = (Σ , Γ, 𝑄, 𝑞 , 𝐴, 𝑓, b)
En la máquina de Turing se incluye el símbolo b, que por defecto ocupa el resto de la cinta no
utilizada. El alfabeto de cinta de la MT es entonces:
Γ = Σ ∪ Ω ∪ {b}
La función de transición de la MT será igual a la del ALA:
𝑓: 𝑄𝑥 Γ → 𝑄 𝑥 Γ 𝑥 {𝐼, 𝑁, 𝐷, 𝑃}
45
Hay situaciones en las que el objetivo es el propio proceso y no una cierta cadena final 𝛽,
tratándose muchas veces de casos en que la máquina cumple infinitas veces un mismo ciclo. En
estos casos, interesa la sucesión de estados que recorre reiteradamente el autómata, ya que los
mismos suelen estar asociados a condiciones de control. Es decir que la salida del autómata no
está representada por la cadena final 𝛽 sino por la sucesión de los estados alcanzados en un cierto
orden:
(𝑝, 𝛼, 1) ⊢ … [𝑝, 𝑞, 𝑟, 𝑠, 𝑡] 𝑑𝑜𝑛𝑑𝑒 𝑝, 𝑞, 𝑟, 𝑠, 𝑡 ∈ 𝑄, 𝛼 ∈ Σ∗
46
47
Complejidad de la MT
Concepto
Se asocia el concepto de complejidad con los recursos de cómputo requeridos para resolver un
problema.
El foco de la teoría de la computabilidad (TC) está en la existencia o no de procedimientos que
permitan resolver cierto problema.
La teoría de la complejidad computacional (TCC) es la que se ocupa del esfuerzo asociado para
completar ese cómputo.
El concepto de complejidad no parece ser cuantificable o medible, sino más bien subjetivo.
Medidas de la complejidad
Una de las primeras medidas de complejidad para MT fue la propuesta por Shannon:
Teorema 1 de Shannon: Cualquier MT con “m” símbolos y “n” estados puede ser simulada por otra
MT con 2 estados y 4mn+m símbolos. En particular existe una MT universal de solo dos estados.
Además, toda MT universal necesita al menos dos estados.
Teorema 2 de Shannon: Cualquier MT con “m” símbolos y “n” estados puede ser simulada por otra
MT con exactamente dos símbolos y menos de 8mn estados.
Clases de problemas
Clase P: Incluye los problemas que pueden ser resueltos en tiempo polinómico por una MTD. Los
problemas de complejidad temporal polinómica sin denominados tratables.
Clase NP: Incluye los problemas que pueden ser resueltos por una MTND en tiempo polinómico, lo
que en la práctica conduce en general a una complejidad exponencial. Estos problemas son
denominados intratables.
48
49
Editor
Está destinado a la carga y actualización de dominios, función de transición y condiciones iniciales
de operación (requerimientos funcionales a, b, c, y d; requerimientos no funcionales a, b, c, y d;
finalmente requerimientos de interfaz gráfica a).
Generador de movimientos
Representa el núcleo operativo del sistema, su misión es ejecutar los movimientos de las
máquinas de estados y hacer las actualizaciones en la configuración según corresponda a cada tipo
de autómata (requerimientos funcionales e, f, y g; requerimientos no funcionales a, c, y d).
Gestor de representación
Tiene a cargo la interfaz gráfica con el usuario durante la operación de la máquina abstracta,
mostrar su evolución y poner a su disposición los comandos que puedan corresponder en cada
caso (requerimientos no funcionales a y b; requerimientos de interfaz gráfica b, c, d, e, f y g).
50
Aspectos generales
La gramática se ocupa del análisis de las estructuras de las frases, y dentro de la gramática, la
morfología analiza las formas que toman las palabras, la sintaxis se ocupa de cómo combinar las
palabras para formar frases correctas y la fonética trata al lenguaje hablado.
Por su parte, la semántica se ocupa del estudio del significado que es atribuible a expresiones
sintácticamente bien formadas.
51
Semántica operacional
La semántica operacional describe cómo interpretar un programa a través de una secuencia de
pasos de cálculo u operaciones. La descripción es muy cercana a su implementación.
Semántica denotacional
La principal idea de la semántica denotacional es que el significado de un programa puede
describirse en términos de la aplicación de entidades matemáticas (funciones) a sus argumentos
(denotación). Se alcanza así un elevado nivel de abstracción. De esta forma, se representan todas
las instrucciones del lenguaje con funciones que producen el efecto de haberlas ejecutado. Se
hace más hincapié en el resultado de la computación que en la forma en la que ésta es llevada a
cabo.
Semántica axiomática
La semántica axiomática descansa sobre una teoría formal, donde un conjunto de axiomas, junto
con una descripción formal del programa, permiten la deducción del resultado de la ejecución del
programa en cualquier ambiente dado.
Semántica algebraica
Este método está enfocado a especificar la semántica de los tipos y de las operaciones entre los
mismos. Se basa en la especificación de tipos de datos abstractos mediante un conjunto de valores
posibles y operaciones efectuadas sobre ellos y se la reconoce como una forma de semántica
axiomática basada en las reglas del álgebra.
Semántica de acciones
Está basado en el concepto de acciones, que son las soportadas por las operaciones
habitualmente previstas en los lenguajes de programación. Con este fin, se definen primitivas para
la asignación y declaración de identificadores y la combinación de instrucciones mediante control
de flujo secuencial, condicional e iterativo.
52
Las gramáticas con atributos (GA) o gramáticas atribuidas deben su nombre a que se apoyan en la
asignación de atributos (propiedades) a las distintas construcciones sintácticas de un lenguaje. Las
gramáticas son de tipo 2 (independientes de contexto) a las que se incorporan atributos a sus
símbolos terminales y no terminales, las reglas para su evaluación y las condiciones que éstas
deben cumplir.
Definición de GA
Una gramática con atributos es una gramática de contexto libre a la que se le ha incorporado un
conjunto de atributos (A), un conjunto de reglas semánticas (R) y un conjunto (C) de condiciones,
donde los elementos de A están relacionados con los símbolos terminales y no terminales,
mientras que los de R y C están asociados a cada una de las reglas de producción de P:
𝐺𝐴 = (Σ , Σ , 𝑆, 𝑃, 𝐴, 𝑅, 𝐶)
a. Los primeros cuatro componentes son los que corresponden a toda gramática formal. Las
reglas de producción deben responder a las condiciones que son propias de una gramática
independiente de contexto y pueden estar expresadas en formas normales, en las que las de
Greinbach y de Chomsky son las más habituales.
b. Denominados Σ = Σ ∪ Σ , el quinto componente de la GA es identificado como 𝐴(Σ),
representando al conjunto de atributos asociados a los símbolos del alfabeto Σ. Cada atributo
se denota con un nombre precedido por un punto y el nombre del símbolo al que está
asociado.
c. A cada regla de producción del conjunto P, se le asocia un número finito de acciones o reglas
semánticas que especifican la forma en que se modifican los atributos con la aplicación de la
regla sintáctica. Al conjunto de todas las reglas semánticas se lo define como R(P), que es el
sexto componente de la GA.
d. El séptimo y último componente de la GA es conjunto C(P) de condiciones asociado a cada una
de las reglas de producción P. Estas condiciones, que deben ser cumplidas por lo valores de los
atributos, describen un sublenguaje del lenguaje definido por la sintaxis de la gramática.
53
Atributos
Los atributos representan propiedades de los símbolos terminales y no terminales de una
gramática y su naturaleza varía según la información que contienen y la fase de procesamiento en
la que se encuentren.
Por ejemplo, el tipo de una variable, su valor, su dirección asignada en memoria, etc.
Al operarse los símbolos del alfabeto Σ a través de las reglas de producción, las propiedades
representadas por los atributos deben ser evaluadas. Dependiendo de las características que
presenten las gramáticas se dispone para esta evaluación de dos mecanismos, que son la herencia
y la síntesis.
Aquí cabe acotar que cuando es posible evaluar todos los atributos de los símbolos de todas las
sentencias de una gramática, se dice que es una gramática bien definida o no circular.
Atributos sintetizados
Las evaluaciones en cada nodo se realizan a partir de los atributos de sus nodos hijos u hojas del
árbol. Esto significa que se avanza en el árbol desde abajo hacia arriba, hasta alcanzar el axioma, lo
que corresponde a un proceso de reducción de una sentencia.
Al conjunto de atributos sintetizados, se lo denomina 𝐴𝑆(Σ).
Cuando todos los atributos asociados con los símbolos gramaticales son sintetizados se dice que se
trata de una gramática S-Atribuida, y aquí son muy eficaces los analizadores ascendentes ya que
permiten evaluar los atributos al mismo tiempo que se analiza la sentencia.
Atributos heredados
Los atributos en una derivación directa son heredados, si los mismos correspondientes a los
símbolos del consecuente de una regla de producción son evaluados a partir de los atributos del
símbolo del antecedente o de los atributos de los demás símbolos del consecuente, siempre que
esos símbolos aparezcan a la izquierda en la producción. Esto significa que, en el árbol de
derivación sintáctica, los atributos son heredados si se calculan a partir de los atributos del padre
de cada nodo o de los nodos hermanos, donde el orden de evaluación de los atributos se
corresponde con el orden en el que se “crean” los nodos de un árbol de análisis sintáctico.
Al conjunto de atributos heredados, se los denomina 𝐴𝐻(Σ) y las gramáticas que contienen
atributos tanto heredados como sintetizados son denominadas L-atribuidas. Entonces, las
gramáticas S-atribuidas son un subconjunto de las L-atribuidas.
54
Acciones semánticas
Dependiendo del tipo de instrucción, las acciones semánticas que están incluidas en el conjunto
de reglas R(P) tienen distintas finalidades y pueden agruparse según se presenta en la siguiente
tabla:
TIPO DE INSTRUCCIÓN ACCIONES SEMÁNTICAS
Declaración Obtención de tipos de la tabla de símbolos
Ejecutables Completar la definición de tipos de los símbolos
Funciones y procedimientos Comprobación del número, orden y tipo de argumentos
Identificación de variables Comprobación de identificación previo a su uso
Etiquetas Comprobación de repetición y validación
Constantes Comprobación de intentos de alteración de valores
Conversiones Verificación de equivalencias
Sobrecarga de operadores Identificación y resolución
Condiciones
El conjunto de condiciones que es definido sobre las producciones C(P) regulan la validez y alcance
de las acciones semánticas sobre los atributos, estableciendo límites claros a la aplicación de las
acciones según sea la naturaleza de la regla sintáctica. Estas condiciones están activas tanto en
tiempo de compilación como de ejecución, ya que muchas de ellas pueden verificarse
correctamente en forma estática y no cumplirse dinámicamente por alteración de los valores
asociados a los símbolos. El conjunto de estas condiciones describe un sublenguaje del lenguaje
definido por la sintaxis de la gramática, donde los atributos de una sentencia sintácticamente
correcta deben satisfacer todas las condiciones C que le correspondan, para ser considerada
semánticamente válida.
55
¿Qué es la estadística?
¿Cómo?
Datos Estadísticos
Unidad de relevamiento
Operaciones permitidas
Nominal Igualdad
Ordinal Mayor o menor
De Intervalos Suma y resta
De Razón Multiplicación y división
Podemos encontrar:
Podemos encontrar:
• Datos primarios: Son los que hay que recoger mediante el uso
de técnicas como los grupos de interés, entrevistas Teléfono,
Cuestionario por corre, Puerta en puerta, Abordaje en un
centro comercial, Entrevistas
Tablas estadísticas
Podemos encontrar dos tipos:
• Simplicidad
• Solo un tema por vez en la tabla
x1 Primer valor
x2 Segundo valor
x3 Tercer valor
xn Valor enésimo
Cabe aclarar que al ser x minúscula nos estamos refiriendo a que los
valores se obtuvieron de un muestreo, en caso de ser X mayúscula nos
referimos a un censo. Lo mismo para la cantidad de elementos dentro de
la muestra es “n” y para la cantidad de elementos de una población es “N”
Titulo: En Lista
yi ni hi Ni Hi
y1 n1 h1 n1 h1
y2 n2 h2 n1 + n2 h1 + h2
y3 n3 h3 n1 + n2 + n3 = n h1 + h2 + h3 = 1
m n 1
Titulo: En Intervalo
y’i-1 – y’i yi ni hi Ni Hi
y’0 – y’1 y1 n1 h1 n1 h1
y’1 – y’ 2 y2 n2 h2 n1+n2 h1+h2
y’ 2 – y’3 y3 n3 h3 n1+n2+n3 = n H1+h2+h3 = 1
n 1
Medidas de posición
Son medidas que me dan la tendencia central de la distribución de datos
como:
• M(k) = k
• M(k * Y) = k *M(Y)
• M(k ± Y) = k ± M(Y)
• M(X ± Y) = M(X) ± M(Y)
Medidas de Dispersión
Son medidas que indican la concentración o la dispersión de los datos con
respecto a la promedio de la distribución, estas medidas son a menudo
complemento de las medidas de posición ya que por sí solas no
caracterizan totalmente una distribución o también sirven para hacer
comparaciones entre conjuntos. Por ejemplo si hay mucha dispersión
respecto al promedio la medida de posición no representa un valor
altamente significativo del conjunto
• V(k) = 0
• V(k*Y) = k² * V(Y)
• V(k+Y) = V(Y)
• V(-k+Y) = V(Y)
Formas de calculo
Serie simple, v. en lista y en 𝐷𝑠 = √𝑉(𝑌)
intervalo
• Ds(Y) >= 0
• Ds(k) = 0
Medidas de asimetría
Cuando dos conjuntos de datos coinciden en sus medidas de posición y
dispersión se suele recurrir a las medidas de asimetría que muestran de
manera grafica la tendencia central de cada una de ellas.
Medidas de puntiagudez
Indica la velocidad con la que sube o baja la curva en una distribución de
datos la cual se calcula con el coeficiente de curtosis de Fisher
𝑀(𝑌)4
𝑘= −3
𝑉(𝑌)4
Experimento aleatorio
Es aquel que conduce a dos o más resultados posibles. Este puede estar
definido por una sola prueba o por un conjunto de pruebas bajo las
mismas condiciones
Evento o Hecho
Teoría de probabilidades
Se cuenta con tres tipos de teorías
Cálculo de probabilidades
𝑃(𝐴∩B)
P(A/B) =
𝑃(𝐵)
Probabilidad Marginal
Teorema de Bayes
𝑃(𝐴)∗𝑃(𝐵/𝐴)
P (A/B) =
𝑃(𝐵)
Desarrollo:
Supongamos lo siguiente
𝑃(𝐴∩B)
• P(A/B) = ---> P(𝐴 ∩ B) = P(A/B) * P(B)
𝑃(𝐵)
P (𝐴 ∩ B) = P (𝐵 ∩ A)
𝑃(𝐵∩A)
• P(B/A) = ---> P(𝐵 ∩ A) = P(B/A) * P(A)
𝑃(𝐴)
𝑃(𝐴)∗𝑃(𝐵/𝐴)
1) P (A/B) =
𝑃(𝐵∩𝐴1)+𝑃(𝐵∩𝐴2)+𝑃(𝐵∩𝐴𝑖 )
𝑃(𝐴)∗𝑃(𝐵/𝐴)
2) P (A/B) =
𝑃(𝐵/𝐴1)∗𝑃(𝐴1)+𝑃(𝐵/𝐴2)∗𝑃(𝐴2)+𝑃(𝐵/𝐴𝑖 )∗𝑃(𝐴𝑖)
Variable Aleatoria
Características:
o Es una función monótona creciente
o Los valores que puede asumir la función están entre 0 y 1
o La probabilidad de que la variable asuma un valor menor a 0
es igual a 0
o La probabilidad de que la variable asuma valores menores o
iguales a todos los valores posibles va a ser igual a 1
o Dado dos números enteros positivos A y B tales que A < B, la
P(A ≤ X ≤ B) = P(B ≤ X) – P (X < A) = P (B ≤ X) – P(A ≤ A - 1)
o Dado una variable aleatoria X y un numero entero positivo A,
la P(A ≤ X) = 1 – P(X < A) = 1 – P(X ≤ A - 1)
𝑏
P(a ≤ X ≤ b) = ∫𝑎 𝑓𝑥 ∗ 𝑑𝑥
O
𝑎
P(x ≤ a) = ∫−∞ 𝑓𝑥 ∗ 𝑑𝑥
Formula
𝑁
V. aleatoria Discreta
𝐸 (𝑥) = ∑ 𝑥𝑖 ∗ 𝑃(𝑥𝑖)
𝑖=1
∞
V. aleatoria Continua
𝐸 (𝑥) = ∫ 𝑥 ∗ 𝑓(𝑥) ∗ 𝑑𝑥
−∞
Propiedades
Formula
𝑁
V. aleatoria Discreta
𝑉 (𝑥) = ∑ 𝑥𝑖² ∗ 𝑃(𝑥𝑖) − (𝐸 (𝑥))²
𝑖=1
∞
V. aleatoria Continua
𝐸 (𝑥) = ∫ 𝑥² ∗ 𝑓(𝑥) ∗ 𝑑𝑥 − (𝐸 (𝑥))²
−∞
Propiedades
1) V(X) ≥ 0
2) V(c) = 0
3) V(c * X) = c² * V(X)
4) V(c ± X) = V(X)
5) V(X ± Y) = V(X) ± V(Y) Solo cuando X e Y sean independientes
∞
V. aleatoria Continua
𝑚𝑘 = 𝐸 (𝑥 𝑘 ) = ∫ [𝑥𝑖 − 𝐸 (𝑋)]𝑘 ∗ 𝑓 (𝑥) ∗ 𝑑𝑥
−∞
• K = 2: Representa la varianza
• K = 3: Utilizada para determinar si una distribución es simétrica o
asimétrica. Entonces:
o 𝐸(𝑥 3 ) = 0: Simetría alrededor de la esperanza
o 𝐸(𝑥 3 ) > 0: Asimétrica hacia la derecha
o 𝐸(𝑥 3 ) < 0: Asimétrica hacia la izquierda
o 𝐸(𝑥 4 ) = 0: Mesocurtica
o 𝐸(𝑥 4 ) > 0: Leptocurtica
o 𝐸(𝑥 4 ) < 0: Platicurtica.
Función de cuantía
𝑃(𝑋 = 𝑥𝑖) = 𝑃 𝑋 ∗ (1 − 𝑃)1−𝑋
Parámetros
1
Esperanza
𝐸 (𝑥) = ∑ 𝑥 ∗ 𝑃(𝑥)
𝑥=0
1
Varianza
𝑉 (𝑥) = ∑ 𝑥² ∗ 𝑃(𝑥) − (𝐸 (𝑥))²
𝑥=0
Desviación Ds = √𝑃𝑄
estándar
Demostraciones:
La media es una variable aleatoria bipuntual es igual a la
probabilidad de éxito
𝒙 ≈ 𝑩(𝒏, 𝑷)
Funciones
Función de Cuantía P(x = xi, n, P) = 𝐶𝑛𝑥 ∗ 𝑃 𝑥 ∗ 𝑄𝑛−𝑥
Funciones
Función de cuantía 𝑪𝒙𝑿 ∗ 𝑪𝒏−𝒙
𝑵−𝑿
𝑷(𝑿 = 𝒙, 𝑵, 𝑿, 𝒏) = 𝒏
𝑪𝑵
Función acumulada 𝑪𝑿 ∗ 𝑪𝒏−𝒙
𝒙
𝑵−𝑿
𝑷(𝑿 ≤ 𝒙, 𝑵, 𝑿, 𝒏) = ∑ 𝒏
𝑪𝑵
Parámetros
Esperanza E(x) = n*P siendo P = X/N
Varianza V(x) = n*P*Q siendo Q = (1-(X/N))
Desviación estándar Ds(x) = √𝒏 ∗ 𝑷 ∗ 𝑸
Esperanza
𝑥 1 1
E (Psombrero)= 𝐸 (𝑛) = ∗ 𝐸(𝑥) = ∗ 𝑛∗𝑃 = 𝑷
𝑛 𝑛
Varianza
𝑥 1 1 𝑷∗(𝟏−𝑷)
V(Psombrero)= 𝑉 ( ) = ∗ 𝑉 (𝑥 ) = ∗𝑛∗𝑃∗𝑄 =
𝑛 𝑛2 𝑛2 𝒏
Desviación Estándar
𝑷∗(𝟏−𝑷)
Ds(Psombrero) = √ 𝒏
Esperanza
𝑥 1 1
E (Psombrero)= 𝐸 ( ) = ∗ 𝐸(𝑥) = ∗ 𝑛∗𝑃 = 𝑷
𝑛 𝑛 𝑛
Funciones
Función de cuantía 𝑒 −λ ∗ λx
P(x=xi,µ = λ) =
𝑥!
Función acumulada 𝑒−λ∗ λx
P(x≤xi,µ = λ) =∑𝑋𝑖
𝑋=0 𝑥!
Funciones
Función de densidad 1
f(x) = 𝑏−𝑎 𝑎 ≤ 𝑥 ≤ 𝑏
∞
∫ 𝑓 (𝑥) ∗ 𝑑 (𝑥) = 1
−∞
𝑏
∫ 𝑘 ∗ 𝑑𝑥 = 𝑘 ∗ (𝑏 − 𝑎)
𝑎
𝑏
𝑘 𝑘 ∗ (𝑏 − 𝑎)
∫ ∗ 𝑑𝑥 =
𝑎 𝑘 ∗ (𝑏 − 𝑎) 𝑘 ∗ (𝑏 − 𝑎)
𝑏
1
∫ ∗ 𝑑𝑥 = 1
𝑎 (𝑏 − 𝑎)
1
Lo cual indica que la función” f(x) = “es una función de
(𝑏−𝑎)
densidad constante.
𝑥
1 𝑥−𝑎
∫ ∗ 𝑑𝑥 =
𝑎 (𝑏 − 𝑎) 𝑏−𝑎
Funciones
Función de densidad
t(x) = 𝜆 − 𝑒 −λx
Función acumulada
t(x) = P(x ≤ xi) = 1 − 𝑒 −λx
Parámetros
Esperanza 1
E(x) = β =
𝜆
Varianza 1
V(x) = β² =
𝜆²
Desviación estándar 1
Ds(x) = β =
𝜆
1 −
(𝑥−µ)²
𝑓(𝑥 ) = 𝑒 2σ²
σ√2π
A tener en cuenta:
o Toda el área bajo la curva es igual a 1
o La curva es asintótica con el eje de las x
o El área determinada por un intervalo debajo de la curva y por
encima de las x es la probabilidad del mismo.
o El dominio de f(x) es infinito
o f(x) solo depende de µ y σ
o µ Es el factor de traslación que mueve la grafica
o σ Hace que sea más o menos aplanada la función
Propiedades:
1 −𝑧²
𝑓(𝑧) = 𝑒−2
√2π
𝑥− µ 1 µ
𝑍= = 𝑥−
σ σ σ
Demostración de E (Z) = 0
1 µ 1 µ
𝐸( 𝑥− ) = ∗µ− =0
σ σ σ σ
Demostración de V (Z) = 1
1 µ 1 1
( )
𝑉( 𝑥− ) = 𝑉 𝑥 − 0 = ∗ σ² = 1
σ σ σ² σ²
𝑍
F (z) = ∫
−∞
𝑓 (𝑧) ∗ 𝑑𝑧
𝑥−𝑛∗𝑃
𝑍= ~N(0,1)
√𝑛∗𝑃∗𝑄
𝑥−𝑛∗𝑃
𝑍=
√𝑛 ∗ 𝑃
Calderon Jonathan Página 41
Siendo en este caso µ = n*p y σ =√𝒏 ∗ 𝑷
• Aproximación del modelo Hipergeometrico al Modelo Normal:
𝑿
𝒙 − 𝒏𝑵
𝒁=
√𝒏 𝑿 ∗ (𝟏 − 𝑿 ) ∗ 𝑵 − 𝒏
𝑵 𝑵 𝑵−𝟏
𝑷𝒔𝒐𝒎𝒃 − 𝑷
𝒁=
√𝑷 ∗ 𝑸 ∗ 𝑵 − 𝒏
𝒏 𝑵−𝟏
𝑥− µ 2
Es decir ∑𝑛𝑖=1 𝑍𝑖2 = ( σ ) = 𝑋(𝑛)
2
Características: Siendo ∅ = 𝑛 − 1
o El campo de variación de esta distribución va desde el 0 hasta
el + ∞
Parámetros
Esperanza 2
E(𝑋(∅) )=µ
Varianza 2
V(𝑋(∅) ) = 2∅
𝑍 𝑥−𝑢
𝑡∅ = =
2 σ
√𝑋
∅
Características:
o La variable t asume valores de -∞ a ∞.
o Es unimodal y simétrica respecto a 0.
o Es más aplanada que la distribución normal, pues su varianza
es ligeramente superior a 1.
Parámetros
Esperanza E(t) = 0
Varianza ∅
V(t) =
∅−2
o Plan de Muestreo
o Elección del estimador a utilizar
Tipos de procedimientos
𝑛
𝑛𝑖 =
𝑟
𝑁𝑖
𝑛𝑖 = ( ) 𝑛
𝑁
𝑁𝑖∗σ𝑖
𝑛𝑖 = ( )∗𝑛
∑ 𝑁𝑖∗σ𝑖
𝑁
𝑘=
𝑛
Distribuciones en el muestreo
Antes que nada hay que recordar que los muestreos pueden ser con
reposición o sin teniendo cada uno sus respectivas características:
Una vez aclarado eso podemos decir que hay tres tipos de distribuciones
que son:
∑𝑛𝑖=1 𝑥𝑖
𝑛
∑𝑛𝑖=1 𝑥𝑟𝑖 ∗ 𝑛𝑖
𝐸(𝑥𝑟) =
𝑁 𝑛 𝑜 𝐶𝑁𝑛
∑𝑛𝑖=1 𝑥𝑟𝑖 ² ∗ 𝑛𝑖
σ2 (𝑥𝑟) = − [𝐸(𝑥𝑟)]²
𝑁𝑛 𝑜 𝐶𝑛𝑁
correcciones finitas
𝐸 (𝑝) = ∑ 𝑝𝑖 ∗ 𝑃(𝑝𝑖 )
𝑖=1
∑𝑛𝑖=1 𝑝𝑖 ∗ 𝑛𝑖
𝐸 (𝑝) =
𝑁 𝑛 𝑜 𝐶𝑁𝑛
∑𝑛𝑖=1 𝑝𝑖 ² ∗ 𝑛𝑖
𝐸 (𝑝) = − [𝐸(𝑝)]²
𝑁 𝑛 𝑜 𝐶𝑁𝑛
Muestreo con
reposición P(1 − P)
σ(𝑝) = √
𝑛
∑𝑛𝑖=1(𝑥 − 𝑥𝑟)²
𝑠²𝑠𝑜𝑚𝑏𝑟𝑒𝑟𝑜 =
𝑛−1
𝑛
𝑠²𝑠𝑜𝑚𝑏𝑟𝑒𝑟𝑜 = 𝑆²
𝑛−1
Se puede calcular la desviación estándar muestral también siendo
esta la raíz cuadrada de la varianza muestral corregida
𝑠𝑠𝑜𝑚𝑏𝑟𝑒𝑟𝑜 = √𝑠²𝑠𝑜𝑚𝑏𝑟𝑒𝑟𝑜
2
∑𝑛𝑖=1 𝑠 2 𝑠𝑜𝑚𝑏𝑟𝑒𝑟𝑜.𝑖 ∗ 𝑛𝑖
𝐸 (𝑠 𝑠𝑜𝑚𝑏𝑟𝑒𝑟𝑜 ) =
𝑁 𝑛 𝑜 𝐶𝑁𝑛
Ø Al parámetro a estimar
Øsombrero Al estimador que por razones cómodas solo para este resumen se
llamara Øs el cual será función de las observaciones muéstrales y por esto
implica que va a ser una variable aleatoria. Por otro lado un estimador es
un estimador puntual de una característica de la población si proporciona
un solo número como estimación y por otro lado está la estimación por
intervalos en donde sitúa al parámetro entre dos valores para una
confianza dada
e = (Øs0 - Ø)
Ahora para medir el riesgo de cometer un error mayor que “e” seria
Pr[(Øs0- Ø) > e]
Øs0− Ø
Pero antes hay que normalizar la variable particular, es decir z = σ(Øs)
o Riesgo:
𝑒 ∗ √𝑛
𝑍=
σ
𝑍∗ σ
𝑒=
√𝑛
Mientras mayor sea la desviación, mayor será el error
Si se incrementa n el error será más pequeño
Si incrementamos el riesgo disminuye z y disminuye el error
𝑧² ∗ σ²
𝑛=
𝑒²
Ø Parámetro a estimar
Øs Estimador
K(Ø, Øs) Distribución de probabilidades
tabulada y conocida
n Observaciones muéstrales
K1,k2 Coeficientes de confianza o puntos
críticos
1-α Nivel de confianza
L1, L2 Limites del intervalo de confianza
(L1 < Ø < L2)
Ø=μ
Øs= xr
1 – α = Pr [𝑧1≤ 𝑥𝑟 − 𝜇 ≤ 𝑍 ]
σ 2
√n
σ σ
1 – α = Pr [𝑥𝑟 − 𝑧2∗ ≤ μ ≤ 𝑥𝑟 + 𝑧1∗ ]
√n √n
Ø=μ
Øs = xr
𝑥𝑟 − 𝜇
K (Øs, Ø) = σ ~ 𝑡𝑛−1
√n
𝑧²∗ σ²
n≥
𝑒²
Ø=P
Øs = p
𝑝(1−𝑝) 𝑝(1−𝑝)
1 – α = Pr [p – z2*√ ≤ P ≤ p + z1* √ ]
𝑛 𝑛
Se suele utilizar a P = 0,50 para así poder dar un tamaño lo mayor posible
para la muestra.
Ø = σ²
Øs = Ssomb²(Ss²)
𝑆𝑠²(𝑛−1) 𝑆𝑠²(𝑛−1)
1 – α = Pr[ ≤ σ²≤ ]
𝑥2² 𝑥1²
Decisión Estadística
Hipótesis Estadística
𝐻0 : Ø = Ø0
𝐻1 : Ø ≠ Ø0
𝐻0 : Ø = Ø0
𝐻1 : Ø ≠ Ø0
𝐻0 : Ø = Ø0
𝐻1 : Ø > Ø0
Considerando ahora solo un punto crítico (Øs*]) podemos decir que:
1-α = Pr[Øs ≤ Øs*/H0 es cierta]
• Izquierda:
𝐻0 : Ø = Ø0
𝐻1 : Ø < Ø0
𝐻0 : Ø = Ø0
𝐻1 : Ø = Ø1
Pasos para docimar: Los pasos son los mismos que la de la unidad anterior
solo que ahora se agregan las hipótesis, es decir
Como se dijo anteriormente hay dos tipos de errores cada uno con su
cálculo de probabilidad, para la media poblacional es de la siguiente
manera
• Derecha:
1-α = Pr [xr ≤ xr*/𝐻0 sea cierta]
α= Pr [xr > xr*]
• Izquierda:
1-α = Pr [xr ≥ xr*/𝐻0 sea cierta]
𝑥𝑟∗ −𝜇1
Siendo xr# = 𝜎 para ambos casos.
⁄
√𝑛
D. Izquierda Derecha
Compuesta
Parámetro Ø=µ Ø=µ
poblacional, Øs = xr Øs = xr
su estadístico K(xr,µ)~ N(0,1) K(xr,µ)~ N(0,1)
y si
distribución
Planteo las 𝐻0 : µ = 𝜇0 𝐻0 : µ = 𝜇0
hipótesis 𝐻1 : µ < 𝜇0 𝐻1 : µ > 𝜇0
𝜎 𝜎
Calculo de xr* = 𝜇0 - 𝑍1−∝ ∗ xr* = 𝜇0 + 𝑍1−∝ ∗
√𝑛 √𝑛
puntos
críticos
Toma de xr ≥ xr* Acepto 𝐻0 xr ≤ xr* Acepto 𝐻0
decisión xr < xr* Rechazo 𝐻0 xr > xr* Rechazo 𝐻0
2. Planteo de hipótesis
𝐻0 : µ = 𝜇0
𝐻1 : µ ≠ 𝜇0
𝜎
𝑥𝑟2∗ = 𝜇0 + 𝑧1−∝ ∗
2 √𝑛
5. Cálculo de probabilidades
Cálculo de probabilidades
• Derecha:
1 − 𝛼 = Pr[𝑝 ≤ 𝑝∗ / 𝐻0 𝑠𝑒𝑎 𝑐𝑖𝑒𝑟𝑡𝑎]
𝛼 = Pr[𝑝 > 𝑝∗ ]
1 − 𝛽 = Pr[𝑝 > 𝑝# ]
• Izquierda:
1 − 𝛼 = Pr[𝑝 ≥ 𝑝∗ / 𝐻0 𝑠𝑒𝑎 𝑐𝑖𝑒𝑟𝑡𝑎]
𝛼 = Pr[𝑝 < 𝑝∗ ]
1 − 𝛽 = Pr[𝑝 < 𝑝# ]
# 𝑝∗ −𝑃1
Siendo 𝑝 =
𝑃 (1−𝑃1)
√ 1
𝑛
2. Planteo de hipótesis
𝐻0 : P = 𝑃0
𝐻1 : P ≠ 𝑃0
𝑃0 (1 − 𝑃0 )
𝑝1∗ = 𝑝0 − 𝑍1−𝛼 ∗ √
2 𝑛
𝑃0 (1 − 𝑃0 )
𝑝1∗ = 𝑝0 + 𝑍1−𝛼 ∗ √
2 𝑛
4. Toma de decisión
𝑝1∗ ≤ 𝑝 ≤ 𝑝2∗ −→ 𝐴𝑐𝑒𝑝𝑡𝑜 𝐻0
5. Cálculo de probabilidades
Siendo
𝑝1∗ −𝑃1
𝑝1# =
𝑃 (1−𝑃1)
√ 1
𝑛
𝑝2∗ − 𝑃1
𝑝2# =
√𝑃1 (1 − 𝑃1 )
𝑛