Instituto Politécnico Nacional Escuela Superior de Ingeniería Mecánica y Eléctrica Unidad Culhuacan Nombres: Cárdenas guilar Noé !on"ále" #o rres $osé ntonio %amíre" Monroy Manuel !rupo: &C'( Materia: Matemáticas discretas Pro)* $osé +uis del %io 'a lde" Matemáticas Discretas Página 1
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
O +a concatenaci4n +3+& consiste de todas a9uellas palabras de la )orma 6G
donde 6 es una palabra de +3 y G es una palabra de +&
O +a intersecci4n +3+& consiste en todas a9uellas palabras 9ue están contenidas
tanto en +3 como en +&
O +a uni4n +3H+& consiste en todas a9uellas palabras 9ue están contenidas ya sea
en +3 o en +&
O El complemento T+3 consiste en todas a9uellas palabras producibles sobre el
al)abeto de +3 9ue no están ya contenidas en +3
O El cociente +3+& consiste de todas a9uellas palabras 6 para las cuales eiste
una palabra G en +& tales 9ue 6G se encuentra en +3
O +a estrella +3V consiste de todas a9uellas palabras 9ue pueden ser escritas de
la )orma W3W&***Wn donde todo Wi se encuentra en +3 y n X K* 7N4tese 9ue
esta de)inici4n incluye a épsilon en cual9uier +V8
O +a intercalaci4n +3V+3 consiste de todas a9uellas palabras 9ue pueden ser
escritas de la )orma 63G36&G&***6nGn son palabras tales 9ue la concatenaci4n
63***6n está en +35 y la concatenaci4n G3***Gn está en +&
Gramáticas ! Lenguaes.
Gramáticas.
Una gramática para estructura de epresiones ! es una /?ada 7'5 S5 6o8 donde 'es un con1unto )inito5 S es un subcon1unto de ' "' SK5 y a es una relaci4n )inita
en V '* +a idea es 9ue S es5 como ya se ha anali"ado5 el con1unto de todas las
YpalabrasZ permitidas en el lengua1e5 y ' consta de S además de algunos otros
símbolos* El elemento K 6 de ' es un punto de partida para las sustituciones5 9ue
serán anali"adas en bre6e* Por ;ltimo la relaci4n a sobre 'V especi)ica los
reempla"os permisibles5 en el sentido de 9ue5 si Ga G> se puede reempla"ar Gcon
G> siempre 9ue apare"ca la cadena G5 ya sea sola o como subcadena de alguna
otra cadena*
#radicionalmente5 a la proposici4n Ga G> se le llama producci4n de !* Entonces5 Gy G> son los lados i"9uierdos y derecho de la producci4n5 respecti6amente*
Sup4ngase 9ue ninguna producci4n de ! tiene a la cadena 6acía $ como lado
i"9uierdo* Es la a relaci4n de producci4n de !*
Esto parecería complicado5 pero en realidad es una idea sencilla5 como muestran
los siguientes e1emplos*
Si ! 7'5 S5 6o o8 es una gramática para la estructura de oraciones5 S es el
con1unto de símbolos terminales y N ' [ S es el con1unto de símbolos no
termina obsér6ese 9ue ' S % N
E1emplo 3* Sea S $uan5 $ulia5 mane1a5 corre5 descuidadamente5 rápido5
)recuentemente85 N oraci4n5 su1eto5 predicado5 6erbo5 ad6erbio8 y sea 'S % N*
Sea K 6 oraci4n5 y sup4ngase 9ue la relaci4n a en 'V 9ueda descrita
El con1unto S contiene todas las palabras permitidas en el lengua1eD N consta de
las palabras 9ue describen partes de la oraci4n5 pero 9ue en realidad no están
contenidas en el lengua1e*
Se a)irma 9ue la oraci4n Y$ulia mane1a )recuentementeZ5 9ue será denotada por G5es una oraci4n permisible o con sintais correcta5 de acuerdo con las reglas de
este lengua1e* Para demostrar esto5 considérese la siguiente serie de cadenas en
'V* \raci4n*
Su1eto predicado
$ulia predicado
$ulia 6erbo ad6erbio
$ulia mane1a ad6erbio
$ulia mane1a )recuentemente
hora bien5 cada una de las cadenas es consecuencia de la anterior5 utili"ando
una producci4n para reali"ar una sustituci4n parcial o completa* En otras palabras5
cada cadena está relacionada con la siguiente cadena por la relaci4n'5 de modo
9ue oraci4n ]' G* Por de)inici4n5 G tiene una sintais correcta ya 9ue5 en estee1emplo5 y es una oraci4n* En las gramáticas para la estructura de oraciones5 la
b;s9ueda de una sintais correcta se re)iere s4lo al proceso mediante el cual al
)ormar una oraci4n se procura 9ue ésta sea correcta gramaticalmente hablando5 y
nada más*
<ay 9ue obser6ar 9ue la serie de sustituciones 9ue producen una oraci4n 6álida5
serie 9ue es llamada deducci4n 7o deri6aci4n8 de la oraci4n5 no es ;nica*
Lenguaes.
Se considera el con1unto VS 9ue consta de todas las cadenas )initas de elementos
del con1unto S* Eisten muchas interpretaciones posibles de los elementos de VS5
seg;n la naturale"a de S* Si se piensa en S como un con1unto de YpalabrasZ5
Uno de los en)o9ues para determinar si un programa es correcto es establecer una acti6idad de testing* Esta consiste en seleccionar un con1unto de datos de
entrada para determinar si los resultados producidos por el programa con esos
datos coinciden o no con los 6alores esperados* Para asegurar 9ue el programa
es correcto se debería anali"ar el mismo con todos los 6alores posibles de los
datos de entrada* Pero esto es imposible cuando este con1unto es in)inito* Por eso5
el testing s4lo puede mostrar la presencia de errores y no su ausencia* \tro
en)o9ue5 la prueba )ormal de programas5 es una técnica 9ue se basa en el cálculo
de predicados* Primero5 se debe describir el comportamiento de cada instrucci4n
del lengua1e )ormalmente* Es decir5 se debe de)inir la semántica de un lengua1e de
programaci4n en términos de )4rmulas l4gicas* Para probar un programa5 se debe
epresar su semántica en términos de )4rmulas l4gicas y luego probar 9ue el
programa signi)ica lo mismo 9ue su especi)icaci4n* Una prueba )ormal de un
programa asegura 9ue el programa es correcto con respecto a una especi)icaci4n
para todas las entradas* <ay dos problemas importantes con la prueba )ormal de
programas: 38 la manipulaci4n l4gica puede ser tediosa y propensa a erroresD &8 laprueba solamente muestra 9ue el programa implementa la especi)icaci4n
correctamente* No hay certe"a de 9ue la especi)icaci4n describe lo 9ue el usuario
realmente desea* e)inici4n: Si un programa usa n 6ariables 735 &5***5 n8 el
estado s es una #upla de 6alores 735 &5***5 n8 donde i es el 6alor de la 6ariable
i*
E1emplo: ado el estado s 75 y8 7`5 285 el resultado de e1ecutar la sentencia de
Una 6ariable se usa en un programa para describir una posici4n de memoria 9ue
puede contener 6alores di)erentes en di)erentes estados* Una manera de describir
un con1unto de estados es utili"ando )4rmulas del cálculo de predicados*
e)inici4n: Sea U el con1unto de todos los posibles estados del programa y sea S) U* Se de)ine PS5 el predicado característico de S5 tal 9ue S s> " S PS7s>8Q*
Es decir5 es el predicado 9ue solamente es satis)echo por los estados 9ue
pertenecen al con1unto S* Por e1emplo5 en 6e" de decir 9ue la sentencia : &VyJ3
trans)orma el estado s 75 y8 en el estado s> 7&VyJ35 y85 de)iniremos predicados
P75 y8 y P>7>5 y>8 tal 9ue si P75 y8 es 6erdadero en el estado s entonces P>7>5 y>8
será 6erdadero después de e1ecutar la sentencia : &VyJ3* E1emplo: Se 9uiere
probar @ ` después de e1ecutar : &VyJ3* Esto es 6erdadero si &VyJ3 @ ` antesde e1ecutar la sentencia5 es decir y @ .*
y @ .Q : &VyJ3 @ `Q
y @ .Q y @ ̀ Q se denominan aserciones*
e)inici4n: Una aserci4n es una )4rmula del cálculo de predicados ubicada en un
programa5 9ue es 6erdadera cada 6e" 9ue el programa pasa por ese punto*
e)inici4n: PQ S AQ5 donde P y A son aserciones llamadas pre?condici4n y post?
condici4n respecti6amente y S es un )ragmento de programa5 se interpreta como
sigue: si la e1ecuci4n de S empie"a en un estado caracteri"ado por P y S termina5
entonces terminará en un estado caracteri"ado por A* S se dice parcialmente
correcto con respecto a P y A* Si además se garanti"a 9ue S termina5 S es
totalmente correcto con respecto a P y A*
PQ S AQ se denomina especi)icaci4n )ormal de S*
$omputabilidad.
+a #eoría de la Computabilidad es la parte de la computaci4n 9ue estudia
los problemas de decisi4n 9ue pueden ser resueltos con un algoritmo o
entusiastas de la programaci4n el gra6e problema 9ue suponen los bucles in)initos
en los programas in)ormáticos* Estos programas son secuencias de c4digo cuya
e1ecuci4n 9ueda inmersa en una serie de 4rdenes 9ue son reiteradas
inde)inidamente* +a detecci4n preco" de estos errores es a menudo una tarea muy
costosa a e)ectos econ4micos y temporales* Por ello5 sería sumamente
interesante la elaboraci4n de un algoritmo 9ue )uese capa" de detectar bucles
in)initos en secuencias de c4digo 7otros algoritmos8 de entrada*
Se supone 9ue es deseable elaborar un algoritmo llamado Tester 9ue 6a a probar
si una secuencia de c4digo tiene o no alg;n bucle in)inito5 esto es5 si para
cual9uier dato de entrada5 el algoritmo termina o5 por el contrario5 permanece en
e1ecuci4n inde)inidamente* Este algoritmo re9uiera5 para ello5 un parámetro de
entrada P 9ue es la secuencia de c4digo 9ue se desea probar5 y un con1unto de
datos de entrada para probar dicho c4digo 9ue será E* +a salida )inal del algoritmo
es un 6alor booleano cierto si el algoritmo a probar se e1ecuta correctamente y
falso si se detectan bucles in)initos* +a llamada al algoritmo Tester 6a a 9uedar
como sigue: Tester (P, E)*
Como se ha puesto la premisa de 9ue los datos de entrada pueden ser
cuales9uiera5 no es necesario 9ue se le proporcione a nuestro algoritmo la entradade datos E5 ya 9ue estos podrían ser generados aleatoriamente en tiempo de
e1ecuci4n* Por ello5 la llamada al algoritmo 6a a 9uedar: Tester (P)5 siendo P la
secuencia de c4digo o algoritmo cuya terminaci4n se desea comprobar*
Suponiendo 9ue eiste el algoritmo Tester (P) no hay nada 9ue impida crear un
nue6o algoritmo llamado Amparo ()* Este algoritmo 6a a hacer uso del
método Tester y se implementa en él el siguiente c4digo pseudo CJJ:
Puede 6erse 9ue el c4digo de mparo es sencillo5 si el algoritmo no detecta bucles
in)initos en P5 mparo 9ueda sumido en un bucle in)inito* Por el contrario5 si #ester
detecta bucles in)initos 7no hay terminaci4n correcta en P85 mparo escribe un
mensa1e por pantalla y )inali"a correctamente* +legados a este punto5 no hay
ninguna condici4n 9ue prohíba cambiar el parámetro de entrada en la llamada a
#ester* ado 9ue el algoritmo de entrada puede ser cual9uiera5 es posible llamar a
#ester con el c4digo del propio mparo y 9ue compruebe su correcta terminaci4n*
'oid mparo 78
i) 7#ester 7mparo88 Ghile 738D
else print) 7Yin del algoritmo MP%\j D8Z8D
Q
la 6ista de este c4digo5 podemos llegar a la conclusi4n siguiente: YSi amparo
)inali"a correctamente5 entonces5 el propio mparo 9ueda sumido en un
bucle in)inito y N\ IN+Ik* Por el contrario5 si en amparo se detectan buclesin)initos 7no termina correctamente85 el mismo mparo muestra un mensa1e por
pantalla y IN+Ik correctamente*Z
Esto constituye5 a todas luces5 una doble contradicci4n 9ue s4lo puede
solucionarse admitiendo 9ue el algoritmo mparo no puede eistir* 5 dado 9ue la
;nica precondici4n 9ue se puso para la eistencia de mparo )ue la eistencia de
#ester5 tampoco es posible la eistencia de #ester* Se ha demostrado5 por tanto5
9ue no eiste un algoritmo 9ue sea capa" de probar la terminaci4n*