Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Integrantes:
Sebastián Díaz Tapias
Víctor Manuel Baena Delgado
Luis David Correo Galván
Luis Ángel Bustamante Herazo
Diego Andrés Aguas Herazo
Arboles de Expresión
Los árboles de expresión son estructuras de datos que definen código. Se
basan en las mismas estructuras que usan los compiladores par analizar
el código y generar un resultado compilado.
+ +
(c*d)
a b * e
c d
Características de un árbol de
expresión
La raíz siempre debe ser un operador.
Las hojas siempre deben ser operandos.
Los nodos deben estar etiquetados por operandos.
Si un operador tiene mayor prioridad que la raíz se coloca como hijo.
Si un operador tiene mayor o igual prioridad que un nodo se coloca
como padre.
Un nodo puede contener como hijo otro subárbol que tiene una
pequeña expresión.
Ejemplos:
Notación polaca
La notación polaca, también conocida como notación de prefijo o notación
prefija es una forma de notación para la lógica, la aritmética, el algebra y
la computación. Su característica distintiva es que coloca operadores a la
izquierda de sus operandos.
Para obtener la notación polaca se realiza un recorrido en pre-orden del
árbol de expresión.
A cotización vemos un ejemplo en el cual obtendremos la notación polaca
del siguiente árbol.
Notación polaca ejemplo
((x + 2 * y) 5) /(2*x-3) /
(x + 2 * y) 5) (2*x-3)
(x + 2 * y) 5 2*x
- 3
+ 5 3
4
*
x 2*y x
x * 4 x
2 y
2 y
Notación polaca ejemplo
((x + 2 * y) 5) /(4 * x - 3) /
+ 5 3
*
x * 4 x
En notación polaca:
2 y / +x*2y5-*4x3
A partir de la expresión en notación polaca podemos
recuperar la expresión original. Agrupando los operandos
en paréntesis teniendo la secuencia; operador, elemento,
elemento como se muestra a continuación.
/ +x*2y5-*4x3
/(( x + (2 * y) 5) - * 4 x 3
/ +x*2y5-*4x3 /(( x + (2 * y) 5) – (4 * x) 3
/ + x (2 * y) 5 - * 4 x 3 /(( x + (2 * y) 5) – (4 * x) 3
/ + x (2 * y) 5 - * 4 x 3
/(( x + (2 * y) 5) ((4 * x) – 3)
/ ( x + (2 * y) 5 - * 4 x 3
/(( x + (2 * y) 5) ((4 * x) – 3)
/ ( x + (2 * y) 5 - * 4 x 3
(( x + (2 * y) 5) / ((4 * x) – 3)
/(( x + (2 * y) 5) - * 4 x 3
Notación polaca inversa
La notación polaca inversa, notación de postfijo, o notación posfija, es un
método algebraico alternativo de introducción de datos.
En la notación polaca inversa es al revés: primero están los operandos y
después viene el operador que va a realizar los cálculos sobre ellos. Tanto
la notación polaca como la notación polaca inversa no
necesitan usar paréntesis para indicar el orden de las operaciones,
mientras la aridad del operador sea fija.
Para hallar la notación polaca inversa realizamos un recorrido en Pos-
orden.
Notación polaca inversa
((x + 2 * y) 5) /(4 * x - 3) /
+ 5 3
*
x * 4 x
/-3*x4 5+*y2x
En notación polaca inversa:
2 y
x2y*+5 4x*3-/
A partir de la expresión en notación polaca inversa
podemos recuperar la expresión original. Agrupando los
operandos en paréntesis teniendo la secuencia; elemento,
elemento, operador como se muestra a continuación.
x2y*+5 4x*3-/
((x + (2 * y)) 5) 4 x * 3 - /
x2y*+5 4x*3-/ ((x + (2 * y)) 5) (4 * x) 3 - /
x (2 * y) + 5 4 x * 3 - /
((x + (2 * y)) 5) (4 * x) 3 - /
x (2 * y) + 5 4 x * 3 - /
(( x + (2 * y) 5) ((4 * x) – 3) /
(x + (2 * y)) 5 4 x * 3 - /
(x + (2 * y)) 5 4 x * 3 - / (( x + (2 * y) 5) ((4 * x) – 3) /
(( x + (2 * y) 5) / ((4 * x) – 3)
((x + (2 * y)) 5) 4 x * 3 - /
Árbol de expresión a partir de una pila