Sei sulla pagina 1di 10

Unidad n 6

Captulo 1 : rboles
Estudiaremos un tipo especial de relacin de mucha utilidad, con gran variedad
de aplicaciones en la ciencia de la computacin y que por lo general se
representa por un grafo.
Estas relaciones son esenciales para construir bases de datos y compiladores
de lenguajes. Son los rboles, a veces llamados arboles con raz por la
apariencia de su grafo.
Definicin:
Sea A un conjunto y R una relacin en A , R es un rbol si existe un vrtice v 0
en A con la propiedad de que existe una nica trayectoria en R de v 0 hacia
cualquier otro vrtice de A , pero no existe una trayectoria de v 0 a v0
El vrtice v0 es nico y es llamado raz del rbol R
Se simboliza (R,v0) rbol con raz v0
Ejemplo 1
A={ a,b,c,d,e,f} R={ (a,b),(a,c), (a,d), (b,e),(d,f)}

(A,R) es un rbol de raz a


Teorema 1 : Sea (T,v0) un rbol entonces
a) No existen ciclos en T
b) v0 es la nica raz
Teorema 2 : Sea (T,v0) un rbol entonces
a) T es arreflexivo
b) T es asimtrico
c) , , , [ (a,b) T y (b,c) T] (a,c) no pertenece a T ,
Teorema 3 : Sea (T,v0) un rbol con raz v0 y sea v T , entonces T(v) tambin
es un rbol con razv. T(v) es el subrbol de T que comienza en v
En el ejemplo 1 R(b) , R(d) son subrboles de R
EJERCICIO 1: Dada la relacin R en el conjunto A, determinar si R es un rbol y,
si lo es, encuentre la raz.
a) A = { a, b , c, d, e, f } R = { (a,b), ( b,c) , (c,a) , (d,e) }
RTA: no es rbol porque hay un camino de a a b y de b a c y no puede haber un
camino de c a a. Ademas (d,e) no est conectado.

b) A = { a, b , c, d, e } R = { (a,b) , (b,e) , (c,d) , (d,b) , (c,a ) }


RTA: no es rbol porque a se
relaciona con b y d tambin se
relaciona con b. Los arboles no tiene
ciclos.

c) A = { 1,2,3,4,5,6 } R = { (2,1) , (3,4 ) , (5,2 ) , (6,5) , (6,3) } ES ARBOL, la


raz es 6.

d) A = { 1,2,3,4,5,6 } R = { (1,2) , (1,3) , (4,5), (4,6) } No es rbol, ya que


debe tener solo una raiz.

e) A = { u, v , w , x , y , z } R = { (u,x) , ( u, v ) , ( w,v) , ( x , z) , ( x , y) }
RTA: no es rbol.

EJERCICIO 2: Sea T un rbol. Suponga que T tiene r vrtices y s aristas.


Encuentre la frmula que relacione a r con s
Respuesta: Una rbol de n vrtices tiene n-1 aristas.
Demostracin: Para n=1, un rbol con n=1 vrtice no tiene aristas, de ah que
el teorema sea cierto para n=1 (por induccin)
rboles etiquetados.
A veces es til etiquetar los vrtices o aristas de un grafo para indicar su uso
para un propsito especfico. Esto es particularmente cierto para muchos usos
de rboles en computacin.

Consideremos la expresin algebraica 3-(2x Y)] + (Y 2) (3+Y)]


Sabemos que primero se deben evaluar los parntesis de la derecha e
izquierda para poder realizar la suma central.
Una importante representacin grfica de una expresin de este tipo es un
rbol binario etiquetado (rbol binario es aquel que de cada vrtice salen 2
hijos)

Con frecuencia se dice que un grafo etiquetado como ste es posicional que es
muy importante para la implementacin en computadora de una estructura de
datos de tipo rbol.
EJERCICIO 3: Construya el rbol de la expresin algebraica
a) ( 7 + ( 6 - 2 ) ) - ( x - ( y - 4) )

b) ( x + ( y - ( x + y ))) . (( 3 / ( 2 . 7 ) ) . 4 )

c) 3 - ( x + ( 6 . ( 4 / ( 2 - 3 ))))

d) ( x / y ) / (( x . 3 ) - ( z / 4 ))

Captulo 2 : Lenguaje
Dado un conjunto A se pueden construir el conjunto A* formado por todas las
sucesiones finitas de los elementos de A. Con frecuencia A es un conjunto de
smbolos al que llamaremos alfabeto y a las sucesiones finitas que forman A*
las llamaremos palabras provenientes de A o cadenas de A.
Ejemplo A= { a,b,c, .z} el alfabeto usual. Entonces A* est formada por
todas las palabras ordinarias como casa, mesa, y tambin por palabras tales
como sadfvnm , dyt, Todas las sucesiones finitas procedentes de A estn en A*
Si se piensa a A como un conjunto de palabras, entonces A* se puede
considerar como la coleccin de todas las oraciones posibles formadas con

palabras de A Por supuesto tales oraciones no necesariamente tienen sentido


ni una estructura evidente.
Se puede pensar un lenguaje como una especificacin completa de tres cosas:
a) Un conjunto S de todas las palabras que se consideran parte del lenguaje.
b) Un subconjunto de S* formado por todas las oraciones construidas
adecuadamente.
c) El conjunto de las oraciones construidas adecuadamente que tengan un
significado.
La disciplina que regula la construccin adecuada de las oraciones es la
sintaxis de un lenguaje. La que se encarga del significado de las oraciones es la
semntica.
En los lenguajes de programacin (Fortran, Pascal, etc.) se debe respetar la
sintaxis de los mismos. La mayor parte de los errores de sintaxis son
detectados por el compilador que genera mensajes de error adecuados.
La semntica de un lenguaje de programacin constituye un tema de estudio
ms avanzado.
Estudiaremos una clase de lenguaje llamado gramtica para la estructura de
oraciones. Abarcan muchos lenguajes de importancia en la ciencia de la
computacin.
Gramtica de estructura de frase

G es una cuaterna G=(V,S, v0, )


V es un conjunto finito
S es un subconjunto de V
v0 pertenece a V-S, es el punto de partida para las
sustituciones
es una relacin definida en V*. Se llama Produccin y
especifica los reemplazos permisibles.
w u significa que se puede reemplazar w con u
w es el lado izquierdo y u el derecho de la produccin (suponemos que ninguna
produccin de G tiene la cadena vaca como lado izquierdo.
Relacin sustitucin:
En V* xy significa que y es el resultado de x utilizando alguna de las
producciones permitidas para reemplazar parte o todo x .Se la llama
derivabilidad directa.
Relacin * : una cadena w es una oracin adecuadamente construida si y
solo si v0* w o sea si es posible ir de v0 a w haciendo un numero finito de
sustituciones.
Ejemplo 1 : V={ v0, w, a, b, c} , S={a, b, c}

1 v 0 aw
2 w bbw

3wc
Sea G=( V, S, v0, )
Construir L(G) o sea todas las oraciones sintcticamente correctas.
Debemos hacer varias sustituciones utilizando (1),(2) y (3) hasta eliminar todos
los smbolos que no sean los terminales a , b , c
Se debe comenzar con (1) pues se inicia con v 0 Utilizamos n veces (2) y por
ultimo (3)
v0aw abbw abbbbw n veces (2) a(bb) nw a(bb)nc

v0 * a(bb)nc
L(G)= {a(bb)nc, n 0}
la palabra a b4c est en L(G) ?
Si, y su rbol de deduccin es:

Ejemplo 2 : V={ v0, w, a, b, c} , S={a, b, c} 1 v 0 a v0b


2 v 0b bw
3 abw c
Sea G=(V,S, v0, )
Construir L(G) o sea todas las oraciones sintcticamente correctas.
Se debe comenzar con (1) pues se inicia con v 0
v0 a v0b aa v0bb n veces (1) an av0bbn (usando (2) )
an a bw bn usando (3) an c bn

v0* anc bn
L(G)= { anc bn, n 0}
Observamos que las deducciones de las oraciones no pueden ser expresadas
en forma de rboles.
Sea G= (V, S, v0, ) una gramtica para la estructura de oraciones. G es de:
Tipo 0 si no se establecen restricciones sobre las producciones de G
Tipo 1 si para cualquier produccin w1 w2 la longitud de w1 es menor o igual
que la longitud de w2 (longitud es el nmero de palabras de la cadena)
Tipo 2 si el lado izquierdo de cada produccin es un nico smbolo no terminal
y el lado derecho consta de uno o ms smbolos.

Tipo 3 si el lado izquierdo de cada produccin es un nico smbolo no terminal


y el lado derecho tiene uno o ms smbolos, incluyendo a lo sumo un smbolo
no terminal, que debe estar en el extremo derecho de la cadena.
El ejemplo 1 es de tipo 3 y el ejemplo 2 es de tipo 0
Las gramticas de tipo 0 o 1 son difciles de estudiar y se sabe poco de ellas.
El proceso que hemos estudiado, o sea la deduccin de una oracin dentro de
una gramtica, verificar que tiene una sintaxis correcta de acuerdo a cierta
gramtica G construyendo un rbol de deduccin que la produzca es el
anlisis sintctico de la oracin.
El anlisis sintctico tiene una importancia fundamental para los compiladores
y otras formas de traduccin de lenguajes .Una oracin de un lenguaje se
somete a un anlisis sintctico para evidenciar su estructura y se construye un
rbol .De esta forma, por ejemplo, un programa de C++ se compila para dar
lugar a un programa en lenguaje de mquina.
EJERCICIO 4: Dada la gramtica G, describir exactamente el lenguaje
L(G) producido por G , o sea describir todas las oraciones sintcticamente
correctas.
a) G = ( V, S, v0 , ) V = { v0, v1 , x , y , z } S = { x , y , z }
P:

1 v0 x v0
2 v0 y v1
3 v1 y v1

4 v1 z
Solucin: Se puede empezar por (1) o por (2)
v0 x v0 xx v0 (n veces (1)) xn v0 (usando (2)) xn y v1
(usando k veces (3) ) xn yk v1 (usando (4) ) xn yk z

v0 * xn yk z
L(G)= { xn yk z , n 0, k 1}
b) G = ( V, S, v0 , ) V = { v0, a , b } S = { a , b }
P:

1 v0 a a v0
2 v0 a

3 v0 b
Solucin: Se puede empezar por (1) , por (2) o por (3)
v0 aa v0 aaaa v0 (n veces (1)) (aa)n v0 (usando (2))

(aa)n a o (usando (3)) (aa)n b

v0 * (aa)n a o v0 * (aa)n b
L(G)= { (aa)n a n 0} U { (aa)k b k 0}
Por ejemplo el rbol de derivacin para la cadena a 4b es:

c) G = ( V, S, v0 , ) V = { v0, v1 , a , b } S = { a , b }
P:

1 v0 a v1
2 v1 b v0

3 v1 a
Dibuje un rbol de derivacin para la secuencia a b a 2
ababaaa?

Pertenece a L(G)

d) G = ( V, S, v0 , ) V = { v0, x , y } S = { x , y }
P:

1 v0 x v0
2 v0 v0 y

3 v0 xy
Dibuje un rbol de derivacin para la secuencia x 3 y4
e) G = ( V, S, v0 , ) V = { v0, a } S = { a }
P:

1 v0 a a v0

2 v0 aa
Dibuje un rbol de derivacin para la secuencia a 8
f) G = ( V, S, v0 , ) V = { v0, v1 ,v2, a , b, c } S = { a , b, c }
P:

1 v0 aa v0
2 v0 b v1
3 v1 c v2b

4 v1 cb
2 v2 bb v2
3 v2 bb
Pertenece a L(G) ? . En los casos afirmativos dibuje el rbol de derivacin
1. aabcb
2. abbcb
3. aaaabcbb
4. aaaabcbbb
5. abcbbbbb
Respuesta: L(G)= { (aa)nbc (bb)kb , n 0, k 0 } Intntelo
EJERCICIO 5 : Construya una gramtica de estructura de frase G cuyo lenguaje
L(G) sea:
a) L(G) = { an bn / n 1 }
Dibujar un rbol de la oracin a3b3
Solucin: las soluciones pueden ser varias .Se muestra una posible
G = ( V, S, v0 , )
P:

V = { v 0, a , b }

S={a,b}

1 v0 a v0 b
2 v0 ab

b) L(G) = { xn y

/ n 2 , m no negativo y par }

c) L(G)={anbmcs / n0, m0,s1}


Dibujar, si es posible, un rbol de la oracin a 3b3c2
d) L(G)={(ab)mcs / m0,s2}
Dibujar, si es posible, un rbol de la oracin (ab) 3c4

Potrebbero piacerti anche