Árboles de Decisión Árboles de Sintaxis

Documentos relacionados
Método secuencial de toma de decisiones en ambiente de riesgo (se conocen los estados posibles de la naturaleza, así como las probabilidades de éstos)

Unidad II: Análisis semántico

RECORRIDO EN ARBOLES

GENERACIÓN DE CÓDIGO INTERMEDIO ÁRBOLES DE SINTAXIS ABSTRACTA (ASA)

Generación de Código Intermedio

ESTRUCTURAS DE DATOS Y ALGORITMOS

ESTRUCTURA DE DATOS. ABB Arboles de Búsqueda Binaria

Árboles Binarios Ordenados Árboles AVL

Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1.

Tema 4: Gramáticas independientes del contexto. Teoría de autómatas y lenguajes formales I

Temario. Tema 5. Estructuras de Datos no Lineales. 5.1 Árboles Binarios 5.2 Árboles n-arios

Un. VI. Generador de código intermedio.

Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS

Estructura de datos y de la información Boletín de problemas - Tema 10

UNIDAD 2. ESTRUCTURAS DE DATOS SECUENCIALES. 1. Pilas (Stacks)

Análisis y Complejidad de Algoritmos. Arboles Binarios. Arturo Díaz Pérez

Escuela Normal Superior N 40 Mariano Moreno. Cuadernillo Propedéutico 2017 Nivel Superior

MASTER DE INGENIERÍA BIOMÉDICA. Métodos de ayuda al diagnóstico clínico. Tema 6: Árboles de decisión.

Estructuras de Datos Clase 10 Árboles binarios

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

Profesor: José Miguel Rubio L.

PRÁCTICA No. 9 RECORRIDOS EN ÁRBOLES BINARIOS

Introducción a Árboles Árboles Binarios

ÍNDICE UNIDAD 2: GENERACION DE CODIGO INTERMEDIO

Estructura de Datos Unidad 6: ARBOLES

Árboles binarios. Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile

Tema 10: Árbol binario de búsqueda

UNIVERSIDAD AUTONOMA DE MADRID ESCUELA POLITÉCNICA SUPERIOR ESTRUCTURAS DE DATOS Y ALGORITMOS

Programación Estructuras Arborescentes

12/08/2017 AVL. Especificación sobre árboles AVL. AVL: rotaciones

Estructuras de Datos Clase 10 Árboles binarios

Solución práctico 6 Tipos Abstractos de Datos Lista, Pila y Cola

Expresiones y sentencias

Estructura de datos. Carrera: IFM Participantes. Representantes de la academia de sistemas y computación de los Institutos Tecnológicos.

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol

Compiladores: Sesión 16. Análisis semántico, traducción dirigida por sintaxis

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA Escuela Técnica Superior de Ingeniería Informática Procesadores de Lenguajes. Tema 3.

Estructura de datos y algoritmos. Tema V TDA DINÁMICOS NO LINEALES: Árboles: árboles binarios

ALGORITMO ID3. Objetivo

ÁRBOLES CRISTIAN ALFREDO MUÑOZ ÁLVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACÓN PEÑA EDUARDO GONZALES

4. Operadores Operador asignación

Compiladores: Generación de Código. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón

Controla el flujo de tokens reconocidos por parte del analizador léxico. 4.2 Introduccion a las gramaticas libres de contexto y arboles de derivacion

Tema: Arboles en C#. Objetivos Específicos. Materiales y Equipo. Introducción Teórica. Definición de Árbol Binario. Programación IV. Guía No.

Estructuras de datos y algoritmos

GRAMATICAS LIBRES DEL CONTEXTO

Aprendizaje Automático Segundo Cuatrimestre de Árboles de Decisión

Uno de los conceptos más útiles en ciencias de la computación es la pila.

Definición de la sintaxis (1) Definición de la sintaxis (2) Definición de la sintaxis (3)

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Arboles. Definiciones formales: 1) un árbol es un grafo acíclico finito T (P, E) tal que. P = E + 1 => todo arco es desconectante.

Estructura de Datos. Árboles. Árboles. Primer Semestre, 2010 ÍNDICE DE CONTENIDOS

Unidad I: Análisis semántico

Capítulo 8. Árboles. Continuar

Principios de Computadoras II

Aprendizaje Automatizado

Fundamentos y Aplicaciones Prácticas del Descubrimiento de Conocimiento en Bases de Datos. - Sesión 11 -

Compiladores: Sesión 15. Análisis semántico, traducción dirigida por sintaxis

ASIGNATURA: (TIS-106) Estructuras de Datos II DOCENTE: Ing. Freddy Melgar Algarañaz TEMA 2. Árboles binarios

1. Leer el primer número y almacenarlo en la raíz del árbol. 2. Repetir hasta encontrar un duplicado o el árbol esté vacío.

Procesadores de lenguaje Tema 7 Generación de código intermedio

Definición recursiva de los árboles

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

MATRIZ DE ARBOLES DE DECISION

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

ÍNDICE TEMÁTICO. Teóricas Prácticas 1 Estructuras fundamentales Introducción a la programación en Java

Estructuras de Datos y Algoritmos

UNIDAD Creación del Árbol Octal de un objeto sólido vía la definición CSG

Unidad de Competencia I Elementos de Competencia Requerimientos de información

INDICE 1.1. Información y Significado 1.2. Arreglos en C 1.3. Estructura en C 1.4. Clases en C++ 2. La Pila 2.1. Definición y Ejemplos

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica

Estructuras de datos utilizando JAVA

Nombre de la asignatura : Estructura de Datos I. Carrera : Ingeniería en Sistemas Computacionales. Clave de la asignatura : SCB-9321

Toda copia en PAPEL es un "Documento No Controlado" a excepción del original.

Expresiones y sentencias

Proyecto 6. Árboles de decisión: Un árbol de decisión es un modelo de predicción utilizado en el ámbito de la inteligencia artificial.

ARBOLES DE DECISION. Miguel Cárdenas-Montes. 1 Introducción. Objetivos: Entender como funcionan los algoritmos basados en árboles de decisión.

Tema 5. Tipos Abstractos de Datos

1. PRINCIPIOS BÁSICOS DE PROGRAMACIÓN

Introducción. Análisis Semántico. José M. Castaño. Teoría de Lenguajes 2011 Departamento de Computación FCEyN, UBA

Un árbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que:

Unidad 5 Análisis semántico

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

CONTENIDOS MÍNIMOS SEPTIEMBRE. DEPARTAMENTO DE MATEMÁTICAS

Carlos Delgado Kloos Mª Carmen Fernández Panadero Raquel M. Crespo García Ingeniería Telemática Univ. Carlos III de Madrid

Compiladores. Análisis Sintáctico Ascendente. Adrian Ulises Mercado Martínez. Facultad de Ingeniería, UNAM. 5 de septiembre de 2013

Tema 7. Generación de código

Tema: Tipos Abstractos de Datos (TAD s) en C#.

ÁRBOL BINARIO. T der. Árbol binario homogéneo es aquel cuyos nodos tienen grado 0 ó 2(no hay ninguno de grado 1).

ÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales.

Investigación Operativa

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

16 Análisis sintáctico I

El TAD Árbol. El TAD Árbol

Árboles Carlos Delgado Kloos Mª Carmen Fernández Panadero Raquel M. Crespo García Ingeniería Telemática Univ. Carlos III de Madrid

Tema 8: Árboles de decisión

Bloque 1. Contenidos comunes. (Total: 3 sesiones)

Sesión 14: Redes de Decisión

Transcripción:

Árboles de Decisión Árboles de Sintaxis Estructuras de Datos Andrea Rueda Pontificia Universidad Javeriana Departamento de Ingeniería de Sistemas

Árboles de Decisión

Árbol de Decisión Forma gráfica de representar y visualizar todos los eventos que pueden surgir a partir de la toma de decisiones secuenciales. Facilita la identificación de la decisión más acertada, a partir de probabilidades. Permite el análisis de consecuencias, del comportamiento en la toma de decisiones.

Árbol de Decisión Ámbitos de utilización: Probabilidad y estadística: Uso en investigación de operaciones, en teoría de la decisión. Herramienta de apoyo empresarial. Tipos de nodos: Nodo de decisión: indica una toma de decisión. Nodo de probabilidad: indica un evento aleatorio. Nodo terminal: posible salida o resultado.

Árbol de Decisión http://www.treeplan.com/treeplan-for-decision-trees.htm

Árbol de Decisión Ámbitos de utilización: probabilidad y estadística. Análisis por medio de un árbol de decisión: 1.Definir el problema. 2.Dibujar el árbol de decisión. 3.Asignar probabilidades a los eventos aleatorios. 4.Estimar los resultados para cada combinación posible de alternativas. 5.Resolver el problema utilizando la ruta que proporcione la política óptima.

Árbol de Decisión Ejemplo: Una compañía de seguros nos ofrece una indemnización por accidente de $210.000. Si no aceptamos la oferta y decidimos ir a juicio podemos obtener $185.000, $415.000 o $580.000 dependiendo de las alegaciones que el juez considere aceptables. Si perdemos el juicio, debemos pagar los costos que ascienden a $30.000. Sabiendo que el 70% de los juicios se gana, y de éstos, en el 50% se obtiene la menor indemnización, en el 30% la intermedia y en el 20% la más alta, determinar la decisión más acertada.

Árbol de Decisión Ejemplo: 0.5 Bajo $ 185.000 0.7 Gana 0.3 Medio $ 415.000 Juicio 0.2 Alto $ 580.000 0.3 Pierde - $ 30.000 Arreglo extrajudicial $ 210.000

Árbol de Decisión Ejemplo: 0.7 $ 224.100 Juicio 0.5 $ 333.000 Gana 0.3 0.2 Bajo Medio Alto $ 185.000 $ 415.000 $ 580.000 $ 224.100 0.3 Pierde - $ 30.000 Arreglo extrajudicial $ 210.000

Árbol de Decisión Ámbitos de utilización: Aprendizaje de máquina y sistemas expertos: Enseñar al computador a tomar decisiones de acuerdo a comportamientos previos. Realizar predicciones (clasificación, regresión). Tipos de nodos: Nodos internos: implementan una función de decisión. Nodos hoja: salidas esperadas o posibles.

Árbol de Decisión Ejemplo: Administración de un fármaco. www.utm.mx/~jahdezp/archivos%20estructuras/desicion.pdf

Árbol de Decisión Ejemplo: Árbol de decisión a partir de datos. Cada dato caracterizado por: - Dos valores numéricos (x1 y x2) - Una forma geométrica Cómo separar las diferentes formas? Alpaydin, E. Introduction to machine learning. MIT press, 2004.

Árbol de Decisión Ejemplo: Árbol de decisión a partir de datos. Alpaydin, E. Introduction to machine learning. MIT press, 2004.

Árbol de Decisión Ejemplo de clasificación: 1. entrenamiento. No. Atributos Apariencia Temperatura Humedad Viento Clase 1 soleado alta alta no desfavorable 2 soleado alta alta si desfavorable 3 nublado alta alta no favorable 4 lluvioso media alta no favorable 5 lluvioso baja normal no favorable 6 lluvioso baja normal si desfavorable 7 nublado baja normal si favorable 8 soleado media alta no desfavorable 9 soleado baja normal no favorable 10 lluvioso media normal no favorable 11 soleado media normal si favorable 12 nublado media alta si favorable 13 nublado alta normal no favorable 14 lluvioso media alta si desfavorable

Árbol de Decisión Ejemplo de clasificación: 2. árbol de decisión. apariencia soleado lluvioso humedad nublado viento alta normal favorable si no desfavorable favorable desfavorable favorable

Árbol de Sintaxis

Árbol de Sintaxis Representación en árbol de la estructura sintáctica del código fuente. Abstracto en el sentido de que no incorpora de forma exacta cada detalle presente en el código (por ejemplo, los paréntesis están implícitos). Facilita la visualización de la estructura del código, la localización de elementos dentro del mismo, y la anotación de información adicional.

Árbol de Sintaxis Ejemplo: while (b!= 0) if (a > b) a = a b; else b = b a; return a;

Árbol de Sintaxis http://en.wikipedia.org/wiki/abstract_syntax_tree

Árbol de Sintaxis Interpretación del lenguaje: Qué representan las hojas? Qué representan los demás nodos? Qué significa recorrer el árbol? Preorden. Inorden. Posorden. Niveles.

Árbol de Sintaxis Ejercicio: int i = 0; int j = 4; for ( ; i<10; i++) { if (i<j) { j = i*j; } } return j;

Árbol de Sintaxis http://blog.zenika.com/index.php?post/2012/08/23/static-analysis-%28part-1/4%29

Árbol de Sintaxis inicio asignación asignación condición mientras variable nombre: x operación op: + variable nombre: y operación op: * comparación op: > cuerpo variable nombre: a variable nombre: b variable nombre: a variable nombre: b variable nombre: y variable nombre: a bloque asignación asignación variable nombre: a operación op: + variable nombre: x operación op: + variable nombre: a constante valor: 1 variable nombre: a variable nombre: b

Árbol de Sintaxis x = a + b; y = a * b; while (y > a) { a = a + 1; x = a + b; }

Árbol binario de expresión: Aplicación específica de un árbol binario para la evaluación de ciertas expresiones: Algebraicas o Booleanas. Operadores unarios o binarios.

((a + b) * c) + 7 http://en.wikipedia.org/wiki/binary_expression_tree

Cada nodo hoja contiene un único operando. Cada nodo interno contiene un único operador (unario o binario). Los subárboles izquierdo y derecho de un nodo operador representan subexpresiones que deben ser evaluadas antes de aplicar el operador en la raíz del subárbol.

Los niveles de los nodos indican la precedencia relativa de su evaluación (no se requieren paréntesis). Operaciones en los primeros niveles (niveles altos) se evalúan despúes que operaciones en los últimos niveles (niveles bajos). La operación en la raíz es siempre la última en ejecutarse.

Ejercicio Construir el árbol asociado a la expresión: ( ( 5 + z ) / ( - 8 ) ) * ( 4 ^ 2 )

( ( 5 + z ) / ( - 8 ) ) * ( 4 ^ 2 ) * / ^ + - 4 2 5 z 8 commons.wikimedia.org/wiki/file:binary_algebraic_expression_tree.jpg

( ( 5 + z ) / ( - 8 ) ) * ( 4 ^ 2 ) * / ^ + -8 4 2 5 z commons.wikimedia.org/wiki/file:binary_algebraic_expression_tree.jpg

Recorridos? Preorden: Posorden: Inorden:

Recorridos? Preorden: * / + 5 z - 8 ^ 4 2 * / + 5 z -8 ^ 4 2 Posorden: 5 z + 8 - / 4 2 ^ * 5 z + -8 / 4 2 ^ * Inorden: 5 + z / - 8 * 4 ^ 2 5 + z / -8 * 4 ^ 2

Recorridos: Asociados con la generación de expresiones en notación: Polaca (notación prefija): recorrido en preorden. Polaca inversa (notación posfija): recorrido en posorden. Infija (la más común): recorrido en inorden. + 3 5 3 5 + 3 + 5

Recorridos: Asociados con la generación de expresiones en notación: Polaca (notación prefija): recorrido en preorden. Polaca inversa (notación posfija): recorrido en posorden. Infija (la más común): recorrido en inorden. + 3 5 no ambigua 3 5 + no ambigua 3 + 5 ambigua (requiere paréntesis)

Generación del árbol a partir de la expresión?

Ejercicio: ( 7 + 8 ( 4 / ( 2 * 9 ) ) ) + 10

Ejercicio: ( 7 + 8 ( 4 / ( 2 * 9 ) ) ) + 10

Preorden (prefija): Posorden (posfija):

Preorden (prefija): + - + 7 8 / 4 * 2 9 10 Posorden (posfija): 7 8 + 4 2 9 * / - 10 +

Generación del árbol a partir de la expresión Expresión posfija?

Ejemplo expresión posfija: 2 6 * 3 8 / +

Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz & actual

Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz / actual

Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz / 8 actual

Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz / actual 8

Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz / actual 3 8

Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz & actual / 3 8

Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz actual * / 3 8

Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz * / actual 6 3 8

Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz actual * / 6 3 8

Ejemplo expresión posfija: 2 6 * 3 8 / + + raíz * / actual 2 6 3 8

Generación del árbol a partir de la expresión Expresión prefija?

Ejemplo expresión prefija: + * 2 6 / 3 8

Ejemplo expresión prefija: + * 2 6 / 3 8 +

Ejemplo expresión prefija: + * 2 6 / 3 8 * +

Ejemplo expresión prefija: + * 2 6 / 3 8 * + 2

Ejemplo expresión prefija: + * 2 6 / 3 8 * + 2 6

Ejemplo expresión prefija: + * 2 6 / 3 8 + * / 2 6

Ejemplo expresión prefija: + * 2 6 / 3 8 + * / 2 6 3

Ejemplo expresión prefija: + * 2 6 / 3 8 + * / 2 6 3 8

Evaluación de expresiones: Encontrar el valor numérico resultado de la expresión. Implica: - Sustituir variables (si las hay) por valores numéricos. - Aplicar las operaciones en el orden dado por la expresión (precedencia de paréntesis u orden dado por prefija o posfija).

Evaluación de expresiones: Notación infija? Notación posfija? Notación prefija?

Evaluación de expresiones. Notación posfija: Evaluar la expresión de izquierda a derecha. Si el elemento es un operando, insertar en la pila. Si el elemento es un operador, extraer los dos operandos de la pila, aplicar el operador, e insertar el resultado en la pila. Al final, retornar el elemento en el tope de la pila como resultado de la expresión.

Evaluación de expresiones. Notación posfija: 7 8 + 4 2 9 * / - 10 +

Evaluación de expresiones. Notación prefija: Evaluar la expresión de derecha a izquierda. Si el elemento es un operando, insertar en la pila. Si el elemento es un operador, extraer los dos operandos de la pila, aplicar el operador, e insertar el resultado en la pila. Al final, retornar el elemento en el tope de la pila como resultado de la expresión.

Evaluación de expresiones. Notación prefija: + - + 7 8 / 4 * 2 9 10

Referencias en.wikipedia.org/wiki/decision_tree www.dmae.upct.es/~mcruiz/telem06/teoria/arb ol_decision.pdf en.wikipedia.org/wiki/decision_tree_learning www.utm.mx/~jahdezp/archivos %20estructuras/DESICION.pdf www.dmi.unict.it/~apulvirenti/agd/qui86.pdf Alpaydin, Ethem. Introduction to machine learning. MIT press, 2004.

Referencias en.wikipedia.org/wiki/abstract_syntax_tree en.wikipedia.org/wiki/binary_expression_tree en.wikipedia.org/wiki/polish_notation en.wikipedia.org/wiki/reverse_polish_notation en.wikipedia.org/wiki/decision_tree en.wikipedia.org/wiki/decision_tree_learning