PROYECTO DE INVESTIGACIÓN EN EL AULA FACULTAD: FACULTAD DE CIENCIAS INFORMÁTICAS CARRERA: INGENIERÍA EN SISTEMAS MATERIA: MATEMÁTICAS DISCRETAS TEMA: ´´ÁRBOLES BINARIOS´´
AUTORES:
NIVEL: SEGUNDO NIVEL “A DOCENTE: ING. EDWARD GUTIERREZ PERIODO ACADÉMICO: MAYO-SEPTIEMBRE DEL 2016
UNIVERSIDAD TÉCNICA DE MANABÍ
TEMA:
ÁRBOLES
INTRODUCCIÓN
En el siguiente proyecto nos enfocaremos en tratar de todo lo que concierne a árboles, poniendo nuestros conocimientos en práctica e impartiéndolo a los demás compañeros, y darnos a conocer con el docente nuestro esfuerzo mediante este trabajo investigativo,
se dará una breve
descripción sobre la historia, el concepto, los tipos y los recorridos de árboles y la relación que tiene el mismo en nuestra especialidad, Ingeniera en sistemas.
Los arboles corresponden a una de las subclases de grafos de uso más amplio, particularmente en computación. Los grafos se pueden clasificar en dos grupos: dirigidos y no dirigidos. Los arboles forman parte de los no dirigidos. Sirven para organizar y relacionar datos en una base de datos, por ejemplo. Esto permite realizar operaciones de manera eficiente. Por ejemplo, un árbol de definición jerárquica se utiliza para configurar una base de datos para los registros de libros existentes en diversas bibliotecas.
En un computador además de permitir organizar información, resultan estructuras útiles para resolver ciertos tipos de problemas (por ejemplo pueden emplearse árboles para mantener información ordenada de forma eficiente). Finalizando con la introducción basaremos este trabajo de investigación en lenguaje de programación, aplicando nuestros conocimientos de acuerdo a nuestra carrera, relacionando en sí las Matemáticas Discretas con la programación, creamos un programa en base al tema de Árboles que presentaremos al final.
JUSTIFICACIÓN
Hemos escogido esta temática debido al interés que nos despertó además que es importante aclarar de qué forma influye la matemática discreta en nuestra carrera. Además nos llamó la atención de realizar este proyecto mostrando en lo que principalmente estamos estudiando, se creó un programa relacionado al tema de Árboles, que ejecutaremos y daremos a conocer acerca de una simulación de un torneo de fútbol, el cual se desarrolló por medio de árboles binarios en los ID o compiladores llamados DEV C++ y PHYTON.
Nos pareció interesante aplicar este tema en un lenguaje de programación, porque así daremos a conocer los conocimientos que hemos estado adquiriendo a lo largo de nuestras clases con el Ing. Edward Gutiérrez, nuestro decente en particular.
Finalizando con la justificación, presentaremos la ejecución de nuestro programa en dos compiladores distintos, y así demostraremos que no solamente se puede aplicar este tema dentro de un solo lenguaje de programación, si no; que se lo puede realizar en varios, y así se dará a conocer los objetivos planteados dentro de este trabajo de investigación.
OBJETIVOS: OBJETIVO GENERAL:
Demostrar el uso de Árboles dentro de la informática mediante un programa realizado en compiladores de ID distintos, en la materia de Matemática Discretas del Instituto de Ciencias Básicas de la Universidad Técnica de Manabí en el periodo mayo-septiembre del 2016.
OBJETIVOS ESPECÍFICOS:
Encontrar de qué manera se relaciona la matemática discreta y el tema en sí, con nuestra
carrera. Discernir en qué forma se usan los árboles dentro de lenguajes de programación. Realizar un programa que demuestre su uso y funcionamiento.
ÁRBOLES Historia Un grafo conectado que contiene circuitos no simples se llama árbol. En el año de 1857 Arthur Cayley, matemático inglés, los empleó para contabilizar componente químicos, no obstante, es importante señalar que no solo es una herramienta de la química sino que se han utilizado en diversas áreas, por ejemplo, conforme el propio interés de la materia encaminado hacia las ciencias de la computación, se utiliza para la construcción de las redes. Componentes o elementos de un Árbol Nodo: Son los Vértices o elementos del Árbol a. Raíz: Todos los árboles que no están vacíos tienen un único nodo raíz. Todos los demás elementos o nodos derivan o descienden de él. El nodo Raíz no tiene Padre es decir no es hijo de ningún elemento. b. Hijo: Un nodo X es descendiente directo de un nodo Y, si el nodo X es apuntado por el nodo Y. en este caso es común utilizar la expresión X es hijo de Y. c. Padre: Un nodo X es antecesor directo de un nodo Y, si el nodo X apunta al nodo Y. en ese d. e. f. g.
caso es común utilizar la expresión X es padre de Y. Hermano: Dos nodos serán hermanos si son descendientes directos de un mismo nodo. Hoja: Se le llama hoja o Terminal a aquellos nodos que no tienen ramificaciones (hijos). Nodo interior: Es un nodo que no es raíz ni Terminal Grado: Es el número de descendientes directos de un determinado nodo. Grado del árbol es el máximo grado de todos los nodos del árbol, es decir, el grado más alto entre todos
los nodos. h. Nivel: es el número de arcos que deben ser recorridos para llegar a un determinado nodo. Por definición la raíz tiene nivel 1. i. Altura del árbol: Es el máximo número de niveles de todos los nodos del árbol. A continuación se presenta un ejemplo para clarificar estos conceptos.
1. A es la raíz del árbol. 2. B es hijo de A. C es hijo de A. D es hijo de B. E es hijo de B. L es hijo de H. 3. A es padre de B. B es padre de D. D es padre de I. C es padre de G. H es padre de L. 4. B y C son hermanos. D, E y F son hermanos. G y H son hermanos. J y K son hermanos. 5. I, E, J, K, G y L son nodos terminales u hojas. 6. B, D, F, C y H son nodos interiores.
7. El grado del nodo A es 2. El grado del nodo B es 3. El grado del nodo C es 2. El grado del nodo D es 1. El grado del nodo E es 0. El grado del árbol es 3. 8. El nivel del nodo A es 1. El nivel del nodo B es 2. El nivel del nodo D es 3. El nivel del nodo C es 2. El nivel del nodo L es 4. 9. La altura del árbol es 4.
Propiedades de los árboles Entre las propiedades más importantes de los árboles está la presencia de un paseo entre cualquiera de dos vértices del árbol; segundo, que el número de vértices no es menor al número de aristas del árbol y que un árbol con más de dos vértices tiene por lo menos dos hojas. Un ejemplo claro de los árboles en la vida cotidiana son los árboles genealógicos. Para este caso, los vértices representan a los miembros de la familia y los arcos representan la relación de parentesco. Conforme los conocimientos adquiridos con anterioridad, el árbol no deja de ser un grafo, pero es del tipo no dirigido.
Ejemplo de árbol genealógico: En este ejemplo cabe señalar que los recuadros representan los vértices del grafo y los arcos son las líneas que representan las relaciones de parentesco conforme a esta familia:
Representación de los árboles El árbol es un grafo no dirigido conectado con circuitos no simples; además, no contiene arcos múltiples, con la propiedad de que hay un único camino simple entre cada par de vértices, teniendo el siguiente teorema: Teorema 1. “Un grafo no dirigido es un árbol si y solo si hay un camino simple único entre cualesquiera dos de sus vértices”. Conforme los siguientes grafos, ¿cuál de ellos es del tipo de árboles?
Si se observan los siguientes grafos, se concluye que el grafo G1 no es un árbol porque se observa un circuito simple, pero los grafos G2 Y G3 son de árboles, porque están conectados con circuitos no simples. Como se sabe, existen grafos que no tienen conexión y podría existir confusión el pensar que un árbol es un grafo conectado que tiene circuitos no simples, pero es importante mencionar que existen árboles del tipo que contienen circuitos no simples que no necesariamente están conectados, y esos árboles reciben el nombre de bosques, cuya característica es que cada uno de sus componentes conectados es un árbol. Los árboles son mostrados a continuación:
En gran parte de las aplicaciones de árboles, se designa a un vértice particular del árbol como la raíz, por lo que se pude asignar una dirección a cada arco, debido que hay un camino único de la raíz a cada vértice del grafo dirigiéndose cada arco alejándose de la raíz, conforme lo enunciado
en el teorema 1, en el apartado 6.1.2, por lo tanto es un grafo de árbol con raíz, esto es simplemente el árbol que junto con su raíz forman un grafo y en caso que fuesen diferentes s vértices como raíz, se producen diferentes árboles con raíz. A continuación se muestra un grafo de árbol con raíz:
De acuerdo a lo anterior se muestran los árboles con raíz en donde a y c son las raíces correspondientes del grafo R. Lo usual es elaborar un grafo de árbol con raíz en la parte superior del grafo, en donde las flechas muestran la dirección de los arcos, como se muestra en la siguiente figura:
En esta figura se deduce que E es un árbol con raíz a, se observa que los padres son b, c y d y, a su vez, don hermanos, f y g son hijos de b; además, e es hijo de c.
Otro ejemplo: si se supone que A es un árbol con raíz, si v es un vértice en A diferente de la raíz, el padre de v es el único vértice u tal que hay un arco dirigido de u a v. Cuando u es el padre de v, v es llamado un hijo de u. Los vértices con el mismo padre son llamados hermanos. Los ancestros de un vértice diferente de la raíz son los vértices en el grafo de la raíz a ese vértice, excluyendo el vértice mismo e incluyendo a la raíz. Los descendientes de un vértice v son aquellos vértices que tienen a v como ancestro. Un vértice de un árbol es llamado hoja si no tiene hijos. Los vértices que tienen hijos son llamados vértices internos. La raíz es un vértice interno a menos que sea el único vértice del grafo, en ese caso es una hoja. Si a es un vértice en un árbol, el subárbol con a como raíz, es el subgrafo del árbol que consiste de a y sus descendientes y todos los arcos incidentes en estos descendientes.
Observa la siguiente figura: En este árbol Z, la raíz está en el vértice a; el padre de c es b y su descendencia es b y e; los hermanos de i son h y j, quienes son hijos de g; además, se pueden observar todos los ancestros de m; y también se observa que en este árbol con raíz existe otro subárbol con raíz en el vértice g, si se hace un acercamiento en esta parte se percibe lo siguiente:
El padre es g, los hijos son h,i,j y los descendentes de j son i e m, y el descendente de h es k. También existe un árbol con raíz, de nombre m-ario, que consiste en que cada vértice interno no tiene más de m hijos, y el árbol m-ario completo consiste si cada vértice tiene exactamente m hijos y un árbol m-ario con cuando m=2 es llamado árbol binario. Conforme lo visto anteriormente se distinguirá los diferentes tipos de grafos:
Este grafo representa un árbol binario completo porque cada uno de sus vértices internos tiene un hijo.
En esta figura se representa un árbol, árbol 3-ario, completo porque cada uno de sus vértices internos tiene tres hijos.
Este es un árbol 5-ario completo porque cada vértice interno tiene 5 hijos. Este grafo representa un árbol m-ario completo para alguna m, porque algunos de sus vértices internos tienen dos hijos y otros tienen tres hijos.
También existe el caso de un árbol con raíz ordenado debido que los hijos de cada vértice interno están ordenados, y estos se expresan en el grafo de tal forma que los hijos de cada vértice interno se representan en orden de izquierda a derecha. Si el árbol con raíz ordenado tiene un vértice interno del cual emanan dos hijos, el primero se nombra hijo izquierdo y el segundo es llamado hijo derecho. Árboles de decisión Los árboles con raíz pueden ser empleados para modelar problemas en los que una serie de decisiones conducen a la solución. Por ejemplo, un árbol binario de búsqueda es utilizado para localizar elementos basados en una serie de comparaciones, donde cada comparación nos dice si hemos localizado el elemento o si debemos ir a la izquierda o a la derecha. Un árbol con raíz, en el que cada vértice interno corresponde a una decisión, con un subárbol en esos vértices para cada posible resultado de la decisión, se llama árbol de decisión. El siguiente ejemplo ilustra una aplicación de los árboles de decisión. Supóngase que hay 7 monedas, todas con el mismo peso y una moneda falsa que pesa menos que las otras, el
cuestionamiento es: ¿Cuántas pesadas son necesarias usando una balanza para determinar cuál de las ocho monedas es la falsa? Con el algoritmo se puede encontrar la moneda falsa. Existen tres posibilidades cada vez que se realiza una pesada con la balanza, Las dos charolas tienen un mismo peso, la primera charola pesa más o la segunda pesa más. En consecuencia, el árbol de decisión de la secuencia de pesadas es un árbol 3-ario. Hay al menos 8 hojas en el árbol de decisión, ya que hay ocho posibles resultados, y cada posible resultado tiene que ser representado por al menos una hoja. El número más grande de pesadas que se necesita para determinar la moneda falsa es la altura del árbol de decisión. Así, al menos dos pesadas son necesarias. Es posible determinar la moneda falsa usando dos pesadas:
Árbol Binario de Búsqueda Un árbol de búsqueda binaria es una estructura apropiada para muchas de las aplicaciones que se han discutido anteriormente con listas. La ventaja especial de utilizar un árbol es que se facilita la búsqueda. Un árbol binario de búsqueda es aquel en el que el hijo de la izquierda (si existe) de cualquier nodo contiene un valor más pequeño que el nodo padre, y el hijo de la derecha (si existe) contiene un valor más grande que el nodo padre. Un ejemplo de árbol binario de búsqueda es el siguiente:
Recorridos de un Árbol 1. In-orden *Recorrer el subárbol izquierdo en in-orden. *Examinar la raíz. *Recorrer el subárbol derecho en in-orden. 2. Pre-orden *Examinar la raíz. *Recorrer el subárbol izquierdo en pre-orden. *recorrer el subárbol derecho en pre-orden. 3. Post-orden *Recorrer el subárbol izquierdo en post-orden. *Recorrer el subárbol derecho en post-orden. *Examinar la raíz.
Secuencia de recorrido de pre-orden: F, B, A, D, C, E, G, I, H (raíz, izquierda, derecha)
Secuencia de recorrido de in-orden: A, B, C, D, E, F, G, H, I (izquierda, raíz, derecha); note cómo esto produce una secuencia ordenada
Secuencia de recorrido de post-orden: A, C, E, D, B, H, I, G, F (izquierda, derecha, raíz)
In-orden: GDBHEIACJKF Pre-orden: ABDGEHICFJK Post-orden: GDHIEBKJFCA
RESULTADOS OBTENIDOS
Se alcanzó el objetivo deseado y se desarrolló “Un torneo de futbol por medio de árboles binarios”, por lo que se consiguió demostrar la relación entre las Matemáticas Discretas con la carrera de la Ingeniería en sistemas informáticos. Además se ampliaron nuestros conocimientos a la hora de aplicar arboles por medio de la codificación que realizamos y al utilizar un compilador con el cual no habíamos tratado mucho como lo es PHYTON, por supuesto hubieron varias fallas al momento de la compilación, obteniendo bugs y errores de ejecución, obteniendo un margen de error del 30% que fue obtenido en base a los intentos realizados y a las funciones con una codificación y lógica correctas.
CONCLUSIONES
Concluyendo con nuestro proyecto de investigación, podemos decir que una de las tantas formas en que la Matemática discreta se relaciona con la carrera de Ingeniería en Sistemas Informáticos es mediante arboles binarios como estructura dinámica.
A base del desarrollo del proyecto se llevó a cabo la realización de una investigación minuciosa, con la misma que pudimos aprender mucho y aclarar cualquier duda causada en el transcurso del desarrollo del proyecto.
Al momento de llevar el proyecto a la ejecución práctica, nos dimos cuenta de que presentó un margen de error correspondiente al 30%, el mismo que se dio a causa de que no se codifico y se desarrolló una lógica de forma correcta.
RECOMENDACIONES
Como recomendación es importante acotar que se sigan los parámetros dados en el programa y no se intente introducir datos erróneos o ilógicos ya que podrían provocar alguna falla en su ejecución.
Los docentes deben seguir inculcando, la enseñanza y realización de los proyectos de investigación ya que a base de eso los estudiantes tenemos la libertad de expresar nuestros conocimientos y ponerlos en práctica. A parte de eso los estudiantes tienen la facilidad de empaparse de nuevos conocimientos.
Es recomendable hacer un correcto uso del programa y no manipular las líneas de códigos si se desconoce “que es lo que realizan” ya que podría causar daños irreversibles al programa dejándolo invalido para su uso. REFERENCIAS BIBLIOGRÁFICAS
Alvarado, J. A. (2008).Arboles. Bogotá, Colombia: Universidad Javeriana. Anónimo
(2013).
Elementos
de
un
Árbol.
Obtenido
de
https://www.gcfaprendelibre.org/tecnologia/curso/word_2013/las_tablas_y_las_grafic as_en_word_2013/8.do Escobar,
G.
(2009).
Tipos
de
Árbol.
Obtenido
de:
http://planeacion.cali.gov.co/Publicaciones/Cali_en_cifras/NormasTecnicasCuadros.p df Gonzales,
S. (2010). Tipos de Árbol. Gráficos http://www.uv.es/innomide/spss/SPSS/SPSS_0303a.pdf
SPSS.
Obtenido
de:
Microsoft Excel. (2007). Árboles Binarios. Barcelona, España: Andrea García Vega.
Muzante,
R.
(2011).
Ejemplos
de
Árbol.
Recuperado
de:
http://es.slideshare.net/gianfrancomuzantemoreno/tablas-estadisticas Rey, C. G. (Ed). (2007). Introducción a Árboles. La Coruña, España: Lorena Bello. Ortiz, M (2010). Partes de un Árbol. Recuperado de: https://exceltotal.com/partes-de-un-graficode-excel/