Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof.



Documentos relacionados
Árbol binario. Elaborado por Ricardo Cárdenas cruz Jeremías Martínez Guadarrama Que es un árbol Introducción

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Estructuras de Datos y Algoritmos. Árboles de Expresión

Notas de Clase. Prof. Juan Andrés Colmenares, M.Sc. Instituto de Cálculo Aplicado Facultad de Ingeniería Universidad del Zulia. 21 de febrero de 2004

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

árbol como un conjunto de nodos y líneas

Árboles. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

Matemáticas para la Computación

Modulo 1 El lenguaje Java

PRC-DTI-006 Administración de Roles de los Sistemas de Información de la DTI Procedimiento Dirección de TI - COSEVI

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

BASE DE DATOS RELACIONALES

Cualquier número de cualquier base se puede representar mediante la siguiente ecuación polinómica:

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:

Proyecto Rediseño de los webs públicos de OMIE. Aplicación de resultados del mercado. Uso

Centro de Capacitación en Informática

_ Antología de Física I. Unidad II Vectores. Elaboró: Ing. Víctor H. Alcalá-Octaviano

Líneas de espera. Introducción.

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

Módulo 9 Sistema matemático y operaciones binarias

NÚMEROS NATURALES Y NÚMEROS ENTEROS

JOSE VICENTE CONTRERAS JULIO CALCULO INTEGRAL LA ANTIDERIVADA

Construcción de Escenarios

Programa en Microsoft Visual Basic 6.0 para el análisis de riesgos eléctricos en oficinas y centros de cómputo. López Rosales, Juan Carlo.

PRÁCTICA N 2 SISTEMAS DE NUMERACIÓN

Unidad II: Diseño de Bases de Datos y el modelo E-R. 2.1 El Proceso de Diseño

4. SISTEMAS DE COSTOS P OR PROCESOS

La ventana de Microsoft Excel

INSTITUTO VALLADOLID PREPARATORIA página 57

MICROSOFT EXCEL Introducción: Qué es y para qué sirve Excel2007? TECNOLOGIA/ INFORMATICA: MS-EXCEL

Ambas componentes del sistema tienen costos asociados que deben de considerarse.

Preguntas y respuestas para el facilitador

Bits, Bytes y Datos y tipos de datos.

Tutorial Sistema de indicadores Observatorio de la Persona Joven


ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Resolución de Problemas

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

Introducción a Visual Studio.Net

Índice Introducción Números Polinomios Funciones y su Representación. Curso 0: Matemáticas y sus Aplicaciones Tema 1. Números, Polinomios y Funciones

mcd y mcm Máximo Común Divisor y Mínimo Común múltiplo José de Jesús Angel Angel jjaa@math.com.mx

Capítulo 6. ÁRBOLES.

Memoria La memoria es la parte del ordenador en la que se guardan o almacenan los programas (las instrucciones y los datos).

El conjunto de conocimientos científicos y técnicos que hacen posible la resolución de forma automática de problemas por medio de las computadoras.

Otros Lenguajes de Programación

Los estados financieros proporcionan a sus usuarios información útil para la toma de decisiones

Registro (record): es la unidad básica de acceso y manipulación de la base de datos.

Guía de estudio para examen de recuperación tecnología I

Software para Seguimiento de Clientes. Descripción del Producto

Microsoft Excel Unidad 6. La Hoja de Cálculo

Lección 24: Lenguaje algebraico y sustituciones

Introducción: Modelos, Escalas y Métricas. Valentin Laime. Calidad de Software

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD CULHUACÁN INTEGRANTES

Introducción. 3.1 Modelo del Transistor

PROGRAMACIÓN ORIENTADA A OBJETOS

L3 ORGANIZACIÓN DE ARCHIVOS ELECTRÓNICOS

Orientaciones para la Presentación de Proyectos y Trabajos de Investigación en el IPNM (OPTI)

MANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS (SASP)

MATEMÁTICAS APLICADAS A LAS C.C. SOCIALES

Organización Básica de un Computador y Lenguaje de Máquina

I NTRODUCCIÓN 1. ORDENADOR E INFORMÁTICA

Nombre del estudiante: Grimaldo velazquez Rafael. Herrera Díaz Jefree. Campus: san Rafael

MÓDULO 1: Sistemas de Cómputo

MATERIAL 2 EXCEL 2007

CUPES L. Ciencias experimentales. Configuración Electrónica. Recopiló: M.C. Macaria Hernández Chávez

Guía Integrada de Actividades

Unidad III: Programación no lineal

Diagramas de Clases ~ 1 ~ Ing. Fabián Silva Alvarado

Monitorización de Equipos y Redes [NAGIOS ] VIRTUALITY

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

Figura 4.1 Clasificación de los lenguajes de bases de datos

Diseño de una estrategia tecnológica de Customer Relationship Management (CRM) para la empresa BPM de México. CAPITULO 6

Declaración de Principios Adoptados por la Conferencia Internacional sobre Principios de Catalogación París, Octubre de 1961

Tema 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas: Apéndice

Para cerrar Excel, puedes utilizar cualquiera de las siguientes operaciones:

LEER Y ESCRIBIR ARCHIVOS O FICHEROS EN C. FOPEN, FCLOSE, MODOS DE ACCESO READ, WRITE Y APPEND (CU00536F)

La nueva criba de Eratóstenes Efraín Soto Apolinar 1 F.I.M.E. U.A.N.L. San Nicolás, N.L. México. efrain@yalma.fime.uanl.mx

Organización como función administrativa Resumen para Administración y Gestión Profesor: Gonzalo V.

DIAGRAMA DE CLASES EN UML

4. METODOLOGÍA. 4.1 Materiales Equipo

Introducción al UML. Domingo Hernández H. Escuela de Ingeniería de Sistemas Departamento de computación

Capítulo 6. Introducción a la POO

Programación Genética

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Word 2013 LIBRO 1

Haga contactos y cree equipos de trabajo entre miembros de la RVT, con apoyo del PERFILADOR

Introducción a la Informática

Wise Up Kids! En matemáticas, a la división de un objeto o unidad en varias partes iguales o a un grupo de esas divisiones se les denomina fracción.

BUSINESS OBJECTS EDICIÓN DE REPORTES NIVEL II

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

TEMA 14. Modelos de representación de diagramas

Para ingresar a la aplicación Microsoft PowerPoint 97, los pasos que se deben seguir pueden ser los siguientes:

La Estadística y el método científico. Datos Estadísticos. Tipos de Datos

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

Xerox 700 Digital Color Press con Integrated Fiery Color Server. Impresión de datos variables

Dirección IP - Características

Unidad 5 Utilización de Excel para la solución de problemas de programación lineal

Te damos los elementos básicos de los vectores para que puedas entender las operaciones básicas.

Transcripción:

Árboles Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof. Paula Echenique Una de las estructuras de datos más importantes en programación es el árbol. Pueden usarse los árboles para representar la información en una estructura jerárquica. Los árboles pueden procesarse en forma recursiva y son muy adaptables a pruebas matemáticas. El estudio de árboles ilustra las conexiones entre varios temas de la matemática discreta y ofrece oportunidades para aprovechar la matemática formal en la programación práctica. La idea de estructura jerárquica es muy usada en la práctica. Por ejemplo, los libros son a menudo organizados como una sucesión de capítulos cada uno de los cuales son una sucesión de secciones que puede tener subdivisiones, y así sucesivamente. Una empresa puede organizarse como las colecciones de unidades comerciales cada uno de las cuales pueden tener varias secciones. Las secciones, a su vez, pueden tener secciones múltiples, y así sucesivamente. El software es organizado como una colección de módulos cualquiera que pueden constituirse de varios su modulos, con el nivel de refinamiento que los diseñadores encuentren apropiado. En cierto nivel, los módulos se expresan en unidades básicas como los objetos, los métodos, o procedimientos. En otros términos, las estructuras jerarquías proporcionan una eficaz la manera de organizar la información. Los árboles proporcionan una capacidad enorme para expresar la idea de jerarquía. Ellos son objetos formales, matemáticos. Definición 1 Un árbol o bien es un árbol vacío o es un nodo junto con una sucesión de árboles. Sea A un conjunto cualquiera: 1. nil Arbol(A) 2. (cons a a1 a2 an) Arbol(A) si (a A) (a1, a2,,an Arbol(A)) La definición es inductiva. El punto de arranque para la definición inductiva es el árbol vacío. La definición no dice lo que un árbol vacío es; esto queda como un término indefinido, y la existencia del árbol vacío se acepta como un axioma. El término nodo no se define, y la existencia de nodos para construir árboles también se toma como un axioma. Más adelante cuando se usen árboles para representar entidades matemáticas específicas diremos exactamente qué entidades comprenden el la información que contiene cada nodo que compone el árbol que se está construyendo. Definición 2 El primer nodo que se agrega a un árbol no vacío es la raíz del árbol. Cada miembro individual de la sucesión de árboles en la que se divide un árbol no vacío se denomina hijo. Definición 3. Un árbol no vacío cuya la sucesión asociada de árboles está vacía se llama hoja. Una hoja sola es el tipo más simple de árbol no vacío. En este árbol la raíz es una hoja. En un árbol más complejo, es decir, uno que consiste en un nodo con hijos, la raíz no es una hoja. Definición 4. Se dice que s es un subárbol de t, si s es el propio t o si t es no vacío y s es un subárbol de uno de los hijos de t. La definición del término subárbol también es inductiva. Definición 5. Un árbol s es una hoja de un árbol t si s es un subárbol de t y s es una hoja. Página 1 de 6

Diagrama de un árbol, representación gráfica raíz ramas nodos hojas Definición 6. Se dice que un nodo n ocurre en un árbol t (o pertenece a t) y se denota n t, si t es un árbol que consiste en un cierto nodo m con una sucesión de hijos (a1, a2,..,an) y n o bien es m, o bien n pertenece a uno de los hijos de m. Ningún nodo pertenece al árbol vacío, por definición. Definición 7. Se dice que un nodo n es un nodo interior al árbol t si n pertenece a t y existe una sucesión de árboles (a1, a2,..,an) tal que n junto con esa sucesión es un subárbol de t. Los árboles normalmente contienen datos adicionales en sus nodos y hojas. La estructura del árbol (comprendiendo los nodos y hojas) proporciona un organización para los valores de los datos, haciendo que la información sea más fácil de usar que si simplemente estuviera contenida en una lista. Se considera el árbol que representa la expresión aritmética (3. 4) + ((5. 6)/8). la raíz del árbol es el + el funcionamiento, y cada subárbol representa expresiones que describen los argumentos a ser agregados. Las hojas del árbol representan los números que aparecen en la expresión. El valor de la expresión puede calcularse trabajando desde las hojas a la raíz, mientras se van calculando los valores intermedios que corresponden a cada operador. Página 2 de 6

Muchos intérpretes de lenguajes de programación y compiladores se acostumbran a representar con árboles la estructura del programa entero. Árboles binarios El caso particular de árboles dónde cada nodo debe tener exactamente dos hijos se llama árbol binario. Como se dijo antes un nodo de un árbol puede tener cualquier cantidad de hijos. Los árboles binarios normalmente se usan en las aplicaciones prácticas de computación. El ejemplo anterior de las EA se representa utilizando un árbol binario Definición inductiva de árboles binarios 1. nil AB(A) 2. (cons a izq der) AB(A) si a A izq AB(A) der AB(A) Representación de árboles binarios en Haskell Árbol binario de enteros. data BinTreeInt = Leaf Node Integer BinTreeInt BinTreeInt Dar los diagramas de los siguientes árboles: tree1 :: BinTreeInt tree1 = Leaf tree2 :: BinTreeInt tree2 = Node 23 Leaf Leaf tree3 :: BinTreeInt tree3 = Node 4 (Node 2 (Node 1 Leaf Leaf) (Node 3 Leaf Leaf)) (Node 7 (Node 5 Leaf (Node 6 Leaf Leaf)) (Node 8 Leaf Leaf)) Haskell también permite definir árboles polimórficos, dónde los datos de los nodos son de algún tipo a. El árbol resultado tiene tipo BinTree a, que significa "árbol binario con valores de tipo a". Página 3 de 6

Árbol binario de un tipo a: data BinTree a = BinLeaf BinNode a (BinTree a) (BinTree a) deriving Show tree4 :: BinTree String tree4 = BinNode "cat" BinLeaf (BinNode "dog" BinLeaf BinLeaf) tree5 :: BinTree (Integer,Bool) tree5 = BinNode (23,False) BinLeaf (BinNode (49,True) BinLeaf BinLeaf) tree6 :: BinTree Int tree6 = BinNode 4 (BinNode 2 (BinNode 1 BinLeaf BinLeaf) (BinNode 3 BinLeaf BinLeaf)) (BinNode 6 (BinNode 5 BinLeaf BinLeaf) (BinNode 7 BinLeaf BinLeaf)) Recorrida de árboles Una tarea común es recorrer uno a uno los nodos de un árbol con el fin de procesar los datos en de cada nodo, creando una lista como resultado. Un algoritmo que realiza esta función se denomina recorrida de un árbol. Para árboles binarios se utilizan comúnmente tres algoritmos para recorridas: Preorden: se visita primero la raíz y a continuación, se recorre en preorden el subárbol izquierdo y luego en preorden el subárbol derecho. Enorden: se visita el subarbol izquierdo en enorden, a continuación la raíz y por último el subárbol derecho en enorden. Postorden se visita el subárbol izquierdo en postorden, luego en postorden el subárbol derecho y por último la raíz. Recorrida en preorden del árbol de la figura: [4, 2, 1, 3, 7, 5, 6, 8]. Recorrida en enorden del árbol de la figura: [1, 2, 3, 4, 5, 6, 7, 8]. Recorrida en postorden del árbol de la figura: [1, 3, 2, 6, 5, 8, 7, 4] Página 4 de 6

Ejercicios: 1. Listar los nodos del árbol anterior en: a. Preorden b. Enorden c. Postorden 2. Definir funciones que recorran un árbol binario en: a. Preorden b. Enorden c. Postorden Ejercicios: 1. Definir un tipo de datos árbol que contiene un carácter y un entero en cada nodo, y exactamente tres subárboles. 2. Definir un tipo de datos árbol que contiene un entero en cada nodo, y que permite a cada nodo tener cualquier número de subárboles. 3. Defina el tipo de datos Tree que representa árboles binarios de elementos de un tipo genérico que sólo guarda información en los nodos hojas (nodos externos). Los nodos internos no guardan información. El árbol más pequeño es una hoja. a. Defina una función maptree que dado un árbol de tipo (Tree A), para un tipo genérico A, y una función f:a->b, con B un conjunto dado, retorne un árbol de tipo (Tree B) obtenido por la aplicación de la función f a cada uno de los nodos hojas del árbol parámetro. b. Defina una función que cuente la cantidad de nodos hojas que posee un árbol de tipo (Tree A), para un tipo genérico A. Página 5 de 6

c. Pruebe que la función MapTree preserva la cantidad de nodos hojas del árbol parámetro. d. Defina una función hojas que retorne una lista con las hojas de un árbol de tipo (Tree A), para un tipo genérico A. Pruebe luego que la cantidad de nodos hojas que posee un árbol de tipo (Tree A), para un tipo genérico A, es igual a la longitud de la lista resultante de aplicarle la función hojas al árbol. 4. Defina el tipo de datos (BinTree A) de árboles binarios con nodos internos de un tipo genérico A y nodos externos (hojas) de un tipo genérico B. El árbol más pequeño es una hoja. a. Defina una función que cuente la cantidad de nodos externos de un árbol binario de tipo (BinTree A). b. Defina una función que cuente la cantidad de nodos internos de un árbol binario de tipo BinTree. c. Pruebe que la cantidad de nodos externos en un árbol árbol binario de tipo BinTree es igual a la cantidad de nodos internos del árbol más 1. Página 6 de 6