diff --git a/.gitattributes b/.gitattributes index be3f4032da9e217b51f8e7afdec082517ab2c104..212db4f36d0064e030ca2abf395e92575d9a75bb 100644 --- a/.gitattributes +++ b/.gitattributes @@ -669,3 +669,13 @@ a/Curso[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas/05-Árboles/01- a/Curso[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas/05-Árboles/02-Estructuras[[:space:]]de[[:space:]]Árboles[[:space:]]en[[:space:]]Programación[[:space:]]y[[:space:]]Jerarquías[[:space:]]de[[:space:]]Datos.mp4 filter=lfs diff=lfs merge=lfs -text a/Curso[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas/05-Árboles/03-Conceptos[[:space:]]Básicos[[:space:]]de[[:space:]]Estructuras[[:space:]]de[[:space:]]Árboles[[:space:]]en[[:space:]]Informática.mp4 filter=lfs diff=lfs merge=lfs -text a/Curso[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas/05-Árboles/04-Árbol[[:space:]]de[[:space:]]Expansión[[:space:]]Mínima[[:space:]]Conexión[[:space:]]Óptima[[:space:]]de[[:space:]]Nodos.mp4 filter=lfs diff=lfs merge=lfs -text +a/Curso[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas/05-Árboles/05-Tipos[[:space:]]de[[:space:]]Árboles[[:space:]]Binarios[[:space:]]y[[:space:]]sus[[:space:]]Características.mp4 filter=lfs diff=lfs merge=lfs -text +a/Curso[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas/05-Árboles/06-Recorridos[[:space:]]de[[:space:]]Árboles[[:space:]]Preorden[[:space:]]Inorden[[:space:]]y[[:space:]]Posorden.mp4 filter=lfs diff=lfs merge=lfs -text +a/Curso[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas/05-Árboles/07-Árboles[[:space:]]Binarios[[:space:]]para[[:space:]]Expresiones[[:space:]]Aritméticas.mp4 filter=lfs diff=lfs merge=lfs -text +a/Curso[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas/05-Árboles/08-Transformación[[:space:]]de[[:space:]]Expresiones[[:space:]]Aritméticas[[:space:]]en[[:space:]]Árboles[[:space:]]Binarios.mp4 filter=lfs diff=lfs merge=lfs -text +a/Curso[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas/06-Algoritmos/01-Algoritmo[[:space:]]de[[:space:]]Prim[[:space:]]Árbol[[:space:]]de[[:space:]]Expansión[[:space:]]Mínimo[[:space:]]en[[:space:]]Grafos.mp4 filter=lfs diff=lfs merge=lfs -text +a/Curso[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas/06-Algoritmos/02-Algoritmo[[:space:]]de[[:space:]]Dijkstra[[:space:]]Ruta[[:space:]]Óptima[[:space:]]y[[:space:]]Coste[[:space:]]Mínimo.mp4 filter=lfs diff=lfs merge=lfs -text +a/Curso[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas/06-Algoritmos/03-Algoritmo[[:space:]]de[[:space:]]Kruskal.mp4 filter=lfs diff=lfs merge=lfs -text +a/Curso[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas/06-Algoritmos/04-Algoritmo[[:space:]]de[[:space:]]Flury[[:space:]]Encontrar[[:space:]]Ciclos[[:space:]]Eulerianos[[:space:]]en[[:space:]]Grafos.mp4 filter=lfs diff=lfs merge=lfs -text +a/Curso[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas/06-Algoritmos/05-Algoritmo[[:space:]]de[[:space:]]Flujo[[:space:]]Máximo[[:space:]]en[[:space:]]Redes[[:space:]]Dirigidas.mp4 filter=lfs diff=lfs merge=lfs -text +a/Curso[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas/07-Conclusiones/01-Repaso[[:space:]]Final[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas[[:space:]]Lógica[[:space:]]Conjuntos[[:space:]]y[[:space:]]Algoritmos.mp4 filter=lfs diff=lfs merge=lfs -text diff --git "a/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/04-Resumen.html" "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/04-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..ae6942c264639861cbe309db5a32f8a54ee8c5e2 --- /dev/null +++ "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/04-Resumen.html" @@ -0,0 +1,95 @@ + + + + + + + Árbol de Expansión Mínima: Conexión Óptima de Nodos + + + +
+
+

Resumen

Un árbol de expansión mínimo es aquel árbol que partiendo de una raíz pueda conectar todos los vértices buscando los caminos de menor costo. Para sacar el costo mínimo del árbol solo basta con ir sumando el valor que tiene cada conexión nivel por nivel, luego sumar todos los niveles.

+
+
+ + \ No newline at end of file diff --git "a/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/05-Resumen.html" "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/05-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..4449a3b4847d8f8ea88949c066dbedc329ec1895 --- /dev/null +++ "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/05-Resumen.html" @@ -0,0 +1,99 @@ + + + + + + + Tipos de Árboles Binarios y sus Características + + + +
+
+

Resumen

Un árbol binario es aquel donde tenemos un máximo de dos hijos por cada uno de los vértices.

+

Existen dos tipos de arboles binarios, el primero de ellos es el árbol binario completo donde cada uno de los vértices tiene sus dos ramas bien definidas o no tiene ninguna.

+

El árbol binario lleno es aquel donde todos los nodos llegan a un mismo punto y al final todas sus ramas son terminales.

+

El árbol degenerado es donde la mayoría de sus nodos tienen solo un hijo.

+

Un árbol binario es una estructura recursiva pues puede llamarse a si misma, puedes descomponerlo en partes más pequeñas.

+
+
+ + \ No newline at end of file diff --git "a/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/05-Tipos de \303\201rboles Binarios y sus Caracter\303\255sticas.mp4" "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/05-Tipos de \303\201rboles Binarios y sus Caracter\303\255sticas.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..1b604ad033035957de5366ed73a917a82a2d8605 --- /dev/null +++ "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/05-Tipos de \303\201rboles Binarios y sus Caracter\303\255sticas.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:410f69d183ac4e2f0813bf5cf5ac5a39e299a74790163a6f1b2dbc5914bcaad7 +size 61250064 diff --git "a/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/05-Tipos de \303\201rboles Binarios y sus Caracter\303\255sticas.vtt" "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/05-Tipos de \303\201rboles Binarios y sus Caracter\303\255sticas.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..b8587c9aad0fcd31012daf08050941b59e23d8e0 --- /dev/null +++ "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/05-Tipos de \303\201rboles Binarios y sus Caracter\303\255sticas.vtt" @@ -0,0 +1,310 @@ +WEBVTT + +00:00:04.000 --> 00:00:06.819 +Un árbol binario es un árbol donde máximo + +00:00:07.120 --> 00:00:10.000 +tenemos dos hijos por cada uno de los + +00:00:10.000 --> 00:00:13.440 +vértices. En la siguiente imagen podemos apreciar lo + +00:00:13.440 --> 00:00:17.035 +que sería un árbol binario. Vemos que ninguno + +00:00:17.035 --> 00:00:20.075 +de esos nodos, por ejemplo, tiene más de + +00:00:20.075 --> 00:00:21.995 +dos hijos. Vemos que el nodo b, por + +00:00:21.995 --> 00:00:24.075 +ejemplo, tiene dos hijos, que el nodo g + +00:00:24.075 --> 00:00:26.735 +tiene dos hijos, y que los otros tienen + +00:00:26.955 --> 00:00:30.190 +un solo hijo. A esto le denominamos un + +00:00:30.190 --> 00:00:33.150 +árbol binario, bi, que viene de dos. Cuando + +00:00:33.150 --> 00:00:36.590 +hablamos de árbol binario, tenemos que tener en + +00:00:36.590 --> 00:00:40.370 +cuenta nuevamente la anotación, donde el nodo que + +00:00:40.510 --> 00:00:43.070 +esté por el mayor nivel lo vamos a + +00:00:43.070 --> 00:00:47.574 +denominar padre Y vamos a utilizar, no solo + +00:00:47.574 --> 00:00:50.055 +hijos, sino que como solo tenemos dos posibles + +00:00:50.055 --> 00:00:53.175 +opciones, vamos a tener o hijo izquierdo o + +00:00:53.175 --> 00:00:57.254 +hijo derecho, ¿de acuerdo? Y es necesario que + +00:00:57.254 --> 00:00:59.820 +cada nodo, si tiene hijos, pues cada nodo + +00:00:59.820 --> 00:01:03.660 +puede ser padre nuevamente. Por ejemplo, este nodo + +00:01:03.660 --> 00:01:07.180 +b que vemos allí es hijo izquierdo de + +00:01:07.180 --> 00:01:10.560 +ese nodo a, que es el padre, ¿verdad? + +00:01:11.180 --> 00:01:14.155 +Pero ese nodo b también es padre, también + +00:01:14.155 --> 00:01:17.115 +es padre y también puede ser raíz de + +00:01:17.115 --> 00:01:19.115 +el nodo d, que en este caso sería + +00:01:19.115 --> 00:01:22.475 +su hijo izquierdo y el e que sería + +00:01:22.475 --> 00:01:25.595 +su hijo derecho. De la misma manera el + +00:01:25.595 --> 00:01:28.230 +nodo c, por ejemplo, también podría ser padre + +00:01:28.230 --> 00:01:30.630 +del nodo f y el nodo f es + +00:01:30.630 --> 00:01:33.670 +padre del nodo g. Y así es como + +00:01:33.670 --> 00:01:36.790 +nos vamos a identificar, cómo vamos a poder + +00:01:36.790 --> 00:01:41.325 +recorrer los árboles más adelante. Antes de iniciar + +00:01:41.325 --> 00:01:43.085 +lo que es el recorrido de árboles, quiero + +00:01:43.085 --> 00:01:46.605 +que observemos algunos tipos de árboles binarios que + +00:01:46.605 --> 00:01:50.365 +podemos encontrar cuando nosotros trabajamos. El primero de + +00:01:50.365 --> 00:01:53.430 +ellos es el árbol binario completo. Y ¿por + +00:01:53.430 --> 00:01:56.549 +qué se le llama completo? Porque este árbol + +00:01:56.549 --> 00:01:59.590 +tiene o dos hijos, es decir sus dos + +00:01:59.590 --> 00:02:02.009 +ramas bien definidas o no tiene ninguna. Como + +00:02:02.710 --> 00:02:05.689 +vemos allí en pantallas, el nodo d tiene + +00:02:05.990 --> 00:02:09.215 +cero, el nodo e tiene dos, el nodo + +00:02:09.215 --> 00:02:11.335 +f tiene cero, y el nodo g tiene + +00:02:11.335 --> 00:02:13.895 +cero. Esas son las dos opciones. O el + +00:02:13.895 --> 00:02:16.695 +nodo no tiene hijos o tiene sus dos + +00:02:16.695 --> 00:02:19.335 +hijos completos, ¿de acuerdo? Y a eso le + +00:02:19.335 --> 00:02:22.350 +vamos a llamar un árbol binario completo. Hay + +00:02:22.350 --> 00:02:24.190 +otro tipo de árbol que se llama un + +00:02:24.190 --> 00:02:27.150 +árbol binario lleno. Lo podemos ver allí en + +00:02:27.150 --> 00:02:30.270 +pantallas. Y tú dirás, bueno, pero yo los + +00:02:30.270 --> 00:02:33.470 +veo exactamente iguales, o tienen dos hijos o + +00:02:33.470 --> 00:02:36.735 +tienen cero hijos. Sí, en parte tienes razón. + +00:02:36.875 --> 00:02:39.755 +La diferencia es que todos llegan hasta un + +00:02:39.755 --> 00:02:42.795 +mismo nivel. Como podemos ver, en el árbol + +00:02:42.795 --> 00:02:46.155 +binario completo, el nodo b tiene un nivel + +00:02:46.155 --> 00:02:50.260 +más de hijos, mientras que los otros nodos + +00:02:50.260 --> 00:02:53.980 +DFYG se quedaron más atrás. En el árbol + +00:02:53.980 --> 00:02:57.940 +binario lleno todos los nodos llegan hasta un + +00:02:57.940 --> 00:03:00.819 +mismo punto y al final todas sus ramas + +00:03:00.819 --> 00:03:03.814 +o todas sus hojas son terminales. Esa es + +00:03:03.814 --> 00:03:07.515 +la principal diferencia. Y tenemos el árbol degenerado + +00:03:08.135 --> 00:03:10.935 +que, si lo analizamos, pues, no tiene mucho + +00:03:10.935 --> 00:03:13.015 +de árbol y es porque la mayoría de + +00:03:13.015 --> 00:03:15.995 +sus hijos están compuestos por una sola conexión. + +00:03:16.300 --> 00:03:18.780 +Es decir, la mayoría de sus nodos solo + +00:03:18.780 --> 00:03:21.600 +tienen un hijo. Y por eso es como + +00:03:22.620 --> 00:03:27.420 +se le llama degenerado. Cuando tú vas a + +00:03:27.420 --> 00:03:31.285 +programar, o si estás trabajando en tu proyecto, + +00:03:31.285 --> 00:03:34.165 +es necesario que tengas muy en cuenta los + +00:03:34.165 --> 00:03:36.325 +árboles binarios porque te van a ayudar a + +00:03:36.325 --> 00:03:39.845 +solucionar muchos problemas. ¿Y por qué? Porque el + +00:03:39.845 --> 00:03:43.650 +árbol binario es una estructura recursiva. Y cuando + +00:03:43.650 --> 00:03:46.370 +hablamos de que es una estructura recursiva, nos + +00:03:46.370 --> 00:03:49.670 +referimos a que puede llamarse a sí misma. + +00:03:50.050 --> 00:03:52.610 +Es decir, tú puedes descomponer un árbol muy + +00:03:52.610 --> 00:03:56.985 +grande en problemas o iteraciones muy pequeñas. Por + +00:03:56.985 --> 00:03:59.784 +ejemplo, supongamos que tenemos el árbol que vemos + +00:03:59.784 --> 00:04:03.845 +en pantalla. Tú puedes descomponer este árbol en + +00:04:03.864 --> 00:04:08.185 +tres partes, que es un árbol raíz, un + +00:04:08.185 --> 00:04:12.850 +sub árbol izquierdo, ¿verdad? Que en este caso + +00:04:12.910 --> 00:04:15.490 +sería esa parte que hemos de b. Recordemos + +00:04:15.710 --> 00:04:17.630 +que no vamos a tener en cuenta lo + +00:04:17.630 --> 00:04:19.570 +que está arriba sino nos vamos a basar + +00:04:20.270 --> 00:04:22.510 +a tener en cuenta ese nodo como raíz + +00:04:22.510 --> 00:04:24.965 +y desprender lo que hay abajo. Y también + +00:04:25.425 --> 00:04:28.145 +tenemos un sub árbol derecho que en este + +00:04:28.145 --> 00:04:34.225 +caso sería CFYB. Pero si nosotros analizamos nuevamente + +00:04:34.225 --> 00:04:37.525 +ese sub árbol izquierdo, ese sub árbol izquierdo + +00:04:37.720 --> 00:04:41.960 +puede nuevamente ser descompuesto, ¿en qué? En una + +00:04:41.960 --> 00:04:45.720 +raíz, en un sub árbol izquierdo y en + +00:04:45.720 --> 00:04:48.460 +un sub árbol derecho y esto lo podemos + +00:04:48.520 --> 00:04:51.485 +aplicar para todos los árboles y cada uno + +00:04:51.485 --> 00:04:53.965 +de esos nuevos nodos los podemos volver a + +00:04:53.965 --> 00:04:56.765 +descomponer. Entonces, los podemos volver a llamar a + +00:04:56.765 --> 00:05:00.125 +sí mismo y podemos utilizar una mismo un + +00:05:00.125 --> 00:05:02.845 +mismo código que utilizamos para una parte muy + +00:05:02.845 --> 00:05:06.500 +pequeña, utilizarlo para problemas mucho más complejos o + +00:05:06.500 --> 00:05:12.259 +mucho más grandes, más complejos. Y viene un + +00:05:12.259 --> 00:05:15.560 +tema súper importante y es el recorrido de + +00:05:15.620 --> 00:05:17.700 +árboles, que nos va a permitir expresar todo + +00:05:17.700 --> 00:05:20.020 +esto que estamos viendo a través de código. + +00:05:20.020 --> 00:05:23.675 +¿Cómo podemos denominar este código? En la próxima + +00:05:23.854 --> 00:05:26.315 +clase aprenderemos lo que es recorrer un árbol + +00:05:26.615 --> 00:05:30.375 +en preorden, en entreorden y en posorden. No + +00:05:30.375 --> 00:05:31.755 +te la pierdas, vamos. diff --git "a/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/06-Recorridos de \303\201rboles Preorden Inorden y Posorden.mp4" "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/06-Recorridos de \303\201rboles Preorden Inorden y Posorden.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..511ab86e55e4dd8bef519afbdf5d21edd8dca5d2 --- /dev/null +++ "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/06-Recorridos de \303\201rboles Preorden Inorden y Posorden.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d8ea5525a7ff7930a9ab84a2602d189fa4412605993d59702b1557bc9b779bf +size 127120757 diff --git "a/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/06-Recorridos de \303\201rboles Preorden Inorden y Posorden.vtt" "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/06-Recorridos de \303\201rboles Preorden Inorden y Posorden.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..d21e5423fa3e808a7e4f3ad7e18fce646a284309 --- /dev/null +++ "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/06-Recorridos de \303\201rboles Preorden Inorden y Posorden.vtt" @@ -0,0 +1,613 @@ +WEBVTT + +00:00:04.000 --> 00:00:06.560 +Lo que vemos en el tablero es un + +00:00:06.560 --> 00:00:09.540 +árbol a los cuales ya hemos estado acostumbrados, + +00:00:10.160 --> 00:00:13.280 +este árbol puede representar muchas cosas entre ellas + +00:00:13.280 --> 00:00:15.834 +datos y el tema que vamos a ver + +00:00:15.834 --> 00:00:18.154 +en esta clase es súper importante, el recorrido + +00:00:18.154 --> 00:00:22.074 +de árboles, ¿por qué? Porque como vimos dependiendo + +00:00:22.074 --> 00:00:24.314 +de la estructura, del orden en que yo + +00:00:24.314 --> 00:00:27.195 +tome estos datos, todo mi árbol, todo mi + +00:00:27.195 --> 00:00:30.880 +sistema puede cambiar, por lo tanto, la estructura + +00:00:30.880 --> 00:00:34.360 +y el orden en que yo conozca estos + +00:00:34.360 --> 00:00:37.360 +nodos, estos vértices y estas conexiones me va + +00:00:37.360 --> 00:00:39.379 +a alterar todo el sistema. Entonces, es importante + +00:00:39.440 --> 00:00:41.780 +que yo tenga un orden y una estructura + +00:00:42.000 --> 00:00:44.945 +clara de los datos. Por ejemplo, si estamos + +00:00:44.945 --> 00:00:48.925 +hablando de las carpetas en tu computador, ¿cómo + +00:00:48.925 --> 00:00:52.145 +accedes tú a una carpeta donde están tus + +00:00:52.145 --> 00:00:54.945 +videojuegos, donde están tus imágenes? Siempre tiene que + +00:00:54.945 --> 00:00:57.870 +haber un orden estructurado donde tus imágenes están + +00:00:57.870 --> 00:01:00.350 +en una carpeta que se llama imágenes y + +00:01:00.350 --> 00:01:02.190 +esa está en una carpeta que se llama + +00:01:02.190 --> 00:01:05.630 +equipo, entonces todo tiene una secuencia, todo tiene + +00:01:05.630 --> 00:01:09.410 +una estructura de datos. El recorrido de árboles + +00:01:09.470 --> 00:01:12.990 +nos va a permitir pasar esto que tenemos + +00:01:12.990 --> 00:01:15.365 +aquí a un código, a una estructura de + +00:01:15.365 --> 00:01:17.338 +datos que se pueda leer y por el + +00:01:17.338 --> 00:01:19.765 +cual tú puedas identificar, por ejemplo, que acá + +00:01:19.765 --> 00:01:22.645 +está tu carpeta de imágenes y el recorrido + +00:01:22.645 --> 00:01:24.485 +de árboles nos va a permitir llegar de + +00:01:24.485 --> 00:01:27.765 +la manera más óptima a esa carpeta. Entonces + +00:01:27.765 --> 00:01:31.360 +vamos a ver cómo puede un programa recorrer + +00:01:31.420 --> 00:01:35.740 +un árbol, recorrer una estructura de árboles. Y + +00:01:35.740 --> 00:01:38.640 +existen tres formas que son las más conocidas, + +00:01:38.860 --> 00:01:42.405 +las más las principales que se usan en + +00:01:42.725 --> 00:01:46.265 +informática. La primera de ellas es preorden. ¿Qué + +00:01:46.485 --> 00:01:51.205 +nos dice el preorden? Que yo primero leo + +00:01:51.205 --> 00:01:54.725 +la raíz de un árbol, yo después me + +00:01:54.725 --> 00:01:56.805 +voy a mi nodo izquierdo y después a + +00:01:56.805 --> 00:02:00.680 +mi nodo derecho. Si recordamos la anotación en + +00:02:00.680 --> 00:02:04.680 +los árboles, mi nuevo raíz va a ser + +00:02:04.680 --> 00:02:06.920 +siempre el que esté en un nivel. Por + +00:02:06.920 --> 00:02:09.199 +ejemplo en este caso el nuevo raíz de + +00:02:09.199 --> 00:02:11.720 +este árbol es esta a que vemos aquí. + +00:02:11.720 --> 00:02:15.025 +Esta sería mi raíz o mi padre. Y + +00:02:15.725 --> 00:02:18.845 +los hijos serían BYC. Pero cuando hablamos de + +00:02:18.845 --> 00:02:21.725 +árboles binarios, es muy importante tener en cuenta + +00:02:21.725 --> 00:02:26.430 +que este será el hijo izquierdo y que + +00:02:26.430 --> 00:02:31.310 +este será el hijo derecho. De la misma + +00:02:31.310 --> 00:02:33.810 +forma yo puedo ir bajando por cada nivel + +00:02:34.190 --> 00:02:35.870 +y después decir que este es mi nuevo + +00:02:35.870 --> 00:02:38.670 +raíz y por lo tanto d es el + +00:02:38.670 --> 00:02:41.175 +hijo izquierdo de BYE es el hijo derecho + +00:02:41.415 --> 00:02:45.115 +y puedo repetir esta secuencia para cada uno + +00:02:45.135 --> 00:02:48.635 +de los niveles que encuentro en mi árbol. + +00:02:49.095 --> 00:02:53.355 +Entonces empecemos a analizar el recorrido de árboles + +00:02:54.295 --> 00:02:59.280 +por el preorden, preorden, que nos dice que + +00:02:59.280 --> 00:03:03.299 +primero vamos a tener en cuenta la raíz, + +00:03:03.680 --> 00:03:06.400 +después el hijo izquierdo y después el hijo + +00:03:06.400 --> 00:03:11.405 +derecho. Siempre empezamos por arriba, siempre empecemos por + +00:03:11.405 --> 00:03:14.845 +la raíz principal de todo mi sistema, empecemos + +00:03:14.845 --> 00:03:17.885 +por el nodo a, el nodo a es + +00:03:17.885 --> 00:03:20.125 +mi nodo raíz y si yo voy al + +00:03:20.125 --> 00:03:22.740 +pre orden lo primero que yo voy a + +00:03:23.060 --> 00:03:26.200 +analizar es la raíz, así que yo la + +00:03:26.660 --> 00:03:29.940 +escribo. Después me voy a mi a mi + +00:03:29.940 --> 00:03:32.520 +hijo izquierdo, que en este caso es b + +00:03:32.820 --> 00:03:35.140 +y este b se vuelve a convertir en + +00:03:35.140 --> 00:03:37.395 +una raíz porque vemos que tiene más hijos, + +00:03:37.875 --> 00:03:40.115 +como se convierte en raíz y como lo + +00:03:40.115 --> 00:03:43.155 +que yo anoto es la raíz, yo voy + +00:03:43.155 --> 00:03:48.035 +a notar ese nodo b. Nuevamente repito me + +00:03:48.035 --> 00:03:52.030 +voy por la izquierda, esa izquierda no tiene + +00:03:52.030 --> 00:03:54.690 +hijos, es un no, es un vértice terminal, + +00:03:55.470 --> 00:03:58.430 +por lo tanto es la izquierda, así que + +00:03:58.430 --> 00:04:00.750 +la noto porque después de la raíz viene + +00:04:00.750 --> 00:04:05.005 +la izquierda y después de la izquierda vendría + +00:04:05.005 --> 00:04:08.045 +a la derecha que sería esta e que + +00:04:08.045 --> 00:04:11.885 +tenemos aquí, pero ese e se convierte en + +00:04:11.885 --> 00:04:15.510 +una nueva raíz así que el pre orden + +00:04:15.510 --> 00:04:18.089 +nos dice que anotamos la raíz nuevamente, entonces + +00:04:18.310 --> 00:04:21.670 +la anotamos. Luego de esto viene el hijo + +00:04:21.670 --> 00:04:27.510 +izquierdo, que sería g, efectivamente es un hijo + +00:04:27.510 --> 00:04:30.945 +izquierdo porque ya no tiene más más hijos, + +00:04:31.005 --> 00:04:34.385 +así que lo anotamos g y después pasaríamos + +00:04:34.845 --> 00:04:37.565 +al hijo derecho. El hijo derecho efectivamente en + +00:04:37.565 --> 00:04:40.285 +este caso es el hijo derecho porque ya + +00:04:40.285 --> 00:04:43.005 +no tiene más más más hijos, por lo + +00:04:43.005 --> 00:04:45.165 +tanto no se convierte en raíz, entonces lo + +00:04:45.165 --> 00:04:49.300 +anotamos. Y si nos damos cuenta, hemos anotado + +00:04:49.320 --> 00:04:51.960 +la raíz y todo lo que tendríamos en + +00:04:51.960 --> 00:04:55.800 +el hijo izquierdo. Ahora pasaríamos al hijo derecho, + +00:04:55.800 --> 00:04:59.160 +que empezaría con este nodo c que tenemos + +00:04:59.160 --> 00:05:02.375 +aquí. Ese c se vuelve a convertir en + +00:05:02.375 --> 00:05:06.435 +una raíz porque tiene hijos detrás de él, + +00:05:06.615 --> 00:05:08.715 +anotamos la raíz porque es lo primero que + +00:05:08.815 --> 00:05:12.775 +vemos en el preorden, luego pasaríamos al hijo + +00:05:12.775 --> 00:05:15.095 +izquierdo, en este caso no tiene ningún hijo + +00:05:15.095 --> 00:05:18.970 +izquierdo y pasaríamos al hijo derecho que se + +00:05:19.190 --> 00:05:22.470 +convierte en raíz, raíz que anotamos porque es + +00:05:22.470 --> 00:05:26.390 +lo primero que vemos. Ahora pasamos a la + +00:05:26.390 --> 00:05:29.755 +izquierda y vemos que acá no hay nada + +00:05:29.755 --> 00:05:31.435 +más, por lo tanto si es mi izquierda + +00:05:31.435 --> 00:05:35.515 +así que anotamos. Y hemos completado lo que + +00:05:35.515 --> 00:05:38.715 +sería, hemos recorrido este árbol a través de + +00:05:38.715 --> 00:05:41.050 +lo que sería el pre orden, ¿de acuerdo? + +00:05:41.050 --> 00:05:45.530 +Ya lo hemos conseguido. Vamos a ver cómo + +00:05:45.530 --> 00:05:49.949 +sería el recorrido de este árbol ahora utilizando + +00:05:51.050 --> 00:05:55.435 +el inorden, que como vemos tiene como principal + +00:05:55.435 --> 00:05:58.255 +elemento la izquierda, después iría a la raíz + +00:05:58.634 --> 00:06:01.675 +y después iría a la derecha, analicémoslo con + +00:06:01.675 --> 00:06:09.430 +el ejemplo, vamos con el in orden. Primero + +00:06:09.430 --> 00:06:12.950 +voy por la izquierda empecemos desde nuestra raíz + +00:06:12.950 --> 00:06:16.070 +tengo mi raíz a como es raíz no + +00:06:16.070 --> 00:06:18.230 +la voy a anotar porque primero va a + +00:06:18.230 --> 00:06:21.290 +notaría la izquierda, me voy a mi izquierda + +00:06:21.910 --> 00:06:25.135 +esta se me vuelve nuevamente una raíz por + +00:06:25.135 --> 00:06:28.815 +lo tanto no la voy a anotar, sigo + +00:06:28.815 --> 00:06:31.215 +bajando hasta que encuentre un vértice que sea + +00:06:31.215 --> 00:06:33.935 +netamente izquierdo como en este caso es el + +00:06:33.935 --> 00:06:37.295 +vértice d, este efectivamente si es un hijo + +00:06:37.295 --> 00:06:39.639 +izquierdo ya no tiene más hijos por lo + +00:06:39.639 --> 00:06:42.680 +tanto lo puedo anotar porque yo empiezo por + +00:06:42.680 --> 00:06:46.759 +mi izquierda. Después de esto voy a mi + +00:06:46.759 --> 00:06:50.039 +nuevo raíz que lo voy a anotar que + +00:06:50.039 --> 00:06:53.815 +sería en este caso b, lo anotó porque + +00:06:53.815 --> 00:06:55.495 +es la raíz de mi hijo izquierdo que + +00:06:55.495 --> 00:06:59.575 +ya he notado y ahora voy a mi + +00:06:59.575 --> 00:07:02.975 +parte derecha, ya tengo izquierdo raíz voy a + +00:07:02.975 --> 00:07:05.680 +mi derecha que sería esta e, pero esa + +00:07:05.680 --> 00:07:08.000 +e se convierte en mi nuevo raíz porque + +00:07:08.000 --> 00:07:10.560 +tiene hijos, por lo tanto no la noto + +00:07:10.560 --> 00:07:13.060 +y me voy a su izquierda. Como este + +00:07:13.200 --> 00:07:17.780 +nuevamente es un nodo netamente izquierdo lo escribo + +00:07:18.160 --> 00:07:21.395 +y escribo la raíz del que viene y + +00:07:22.335 --> 00:07:24.895 +ahora sí puedo escribir esta derecha que es + +00:07:24.895 --> 00:07:29.075 +netamente derecha, por lo tanto esa sí va + +00:07:29.695 --> 00:07:31.855 +aquí y si observamos la estructura de los + +00:07:31.855 --> 00:07:38.540 +datos que hemos escrito fue izquierda, raíz y + +00:07:38.540 --> 00:07:41.500 +toda esta parte derecha. Como ya tenemos toda + +00:07:41.500 --> 00:07:44.620 +esta parte izquierda, podemos escribir la raíz de + +00:07:44.620 --> 00:07:48.300 +donde viene toda esta parte izquierda. Y ahora + +00:07:48.300 --> 00:07:51.514 +vamos a analizar la parte derecha que vendría + +00:07:52.294 --> 00:07:55.514 +siendo toda esta línea y empezamos por acá. + +00:07:56.375 --> 00:07:59.194 +Pero esta es una raíz porque tiene hijos + +00:07:59.495 --> 00:08:01.655 +y no la notamos porque primero vamos a + +00:08:01.655 --> 00:08:05.230 +la izquierda. Notamos que esta no tiene izquierda, + +00:08:05.370 --> 00:08:08.410 +por lo tanto vamos a la raíz que + +00:08:08.410 --> 00:08:12.250 +sería c y vamos al hijo derecho que + +00:08:12.250 --> 00:08:15.370 +sería f. Este se convierte en raíz, por + +00:08:15.370 --> 00:08:17.950 +lo tanto vamos a su izquierda que sería + +00:08:18.010 --> 00:08:20.875 +I y vamos a su raíz que sería + +00:08:21.735 --> 00:08:25.815 +f y hemos completado el recorrido de este + +00:08:25.815 --> 00:08:28.715 +árbol a través de la estructura de datos + +00:08:28.775 --> 00:08:31.740 +en orden. Vemos cómo puede variar y cómo + +00:08:32.220 --> 00:08:35.260 +una simple alteración de algún nuevo vértice te + +00:08:35.260 --> 00:08:39.260 +haría un árbol completamente diferente. Vamos por último + +00:08:39.260 --> 00:08:43.339 +a analizar lo que sería el posorden, que + +00:08:43.339 --> 00:08:47.565 +como vemos empieza por el hijo izquierdo, va + +00:08:47.565 --> 00:08:50.225 +al hijo derecho y termina en la raíz. + +00:08:51.324 --> 00:08:57.324 +Entonces anotemos acá, post orden y empecemos a + +00:08:57.324 --> 00:09:02.460 +analizar. Partamos nuevamente de nuestra raíz, de nuestra + +00:09:02.460 --> 00:09:05.980 +raíz a, es raíz así que no la + +00:09:05.980 --> 00:09:08.400 +anotamos porque vamos a iniciar por la izquierda, + +00:09:08.940 --> 00:09:12.140 +vamos al nodo b, es raíz no lo + +00:09:12.140 --> 00:09:15.815 +anotamos, seguimos bajando por la izquierda y vemos + +00:09:15.815 --> 00:09:18.454 +que esta efectivamente sí es una raíz izquierda + +00:09:18.454 --> 00:09:20.454 +porque ya no tiene más hijos así que + +00:09:20.454 --> 00:09:23.495 +la vamos a escribir. Sin embargo en este + +00:09:23.495 --> 00:09:25.815 +caso no vamos a anotar la raíz sino + +00:09:25.815 --> 00:09:27.810 +que nos vamos a ir a la derecha, + +00:09:28.210 --> 00:09:31.250 +a la derecha de mi árbol, pero este + +00:09:31.250 --> 00:09:33.730 +es un nuevo raíz porque tiene hijos, así + +00:09:33.730 --> 00:09:36.370 +que nos vamos a su izquierda y este + +00:09:36.370 --> 00:09:39.010 +es una izquierda efectivamente así que lo vamos + +00:09:39.010 --> 00:09:43.565 +a anotar. Una vez tenemos este, nos vamos + +00:09:43.565 --> 00:09:46.524 +es a la derecha y como este es + +00:09:46.524 --> 00:09:50.204 +totalmente derecha, no tiene hijos, lo podemos anotar + +00:09:50.204 --> 00:09:54.125 +que sería h y una vez tengo ya + +00:09:54.125 --> 00:09:57.200 +la izquierda, la derecha, en ese caso sí + +00:09:57.200 --> 00:10:01.360 +anotó la raíz, la raíz. Ahora ya tengo + +00:10:01.360 --> 00:10:05.700 +la izquierda, la derecha, ya puedo anotar esta + +00:10:05.840 --> 00:10:10.615 +raíz. Ya tengo toda esta izquierda, ahora vamos + +00:10:10.615 --> 00:10:14.135 +a analizar toda esta derecha. En esta derecha + +00:10:14.135 --> 00:10:17.095 +vemos que tenemos una raíz que no vamos + +00:10:17.095 --> 00:10:19.655 +a anotar porque tenemos es que anotar la + +00:10:19.655 --> 00:10:22.910 +izquierda, no hay izquierda, vamos a su derecha, + +00:10:23.850 --> 00:10:26.170 +esta derecha se convierte en raíz, por lo + +00:10:26.170 --> 00:10:29.210 +tanto no la anotamos, así que anotamos la + +00:10:29.210 --> 00:10:33.530 +izquierda que sería I. Y ya tenemos la + +00:10:33.530 --> 00:10:36.225 +izquierda, ahora vamos a la derecha, no hay + +00:10:36.605 --> 00:10:41.325 +nada, anotamos su raíz que sería f. Ya + +00:10:41.325 --> 00:10:44.205 +tenemos la izquierda, ya tenemos la derecha, vamos + +00:10:44.205 --> 00:10:48.540 +a la raíz que sería c y si + +00:10:48.540 --> 00:10:51.820 +analizamos ya tenemos toda la izquierda, ya tenemos + +00:10:51.820 --> 00:10:55.600 +toda la parte derecha solo nos queda anotar + +00:10:56.300 --> 00:11:01.020 +la raíz y con esto hemos terminado lo + +00:11:01.020 --> 00:11:03.345 +que es el recorrido de árboles, vemos cómo + +00:11:03.345 --> 00:11:07.185 +cambia dependiendo del orden y de la prioridad + +00:11:07.185 --> 00:11:09.425 +que yo le dé a la raíz, al + +00:11:09.425 --> 00:11:13.185 +hijo izquierdo y al hijo derecho, esto nos + +00:11:13.185 --> 00:11:17.070 +servirá para interpretar estos códigos, estos árboles y + +00:11:17.070 --> 00:11:19.950 +pasarlos al lenguaje de máquina que seguramente lo + +00:11:19.950 --> 00:11:22.910 +utilizarás en tus proyectos y en todo lo + +00:11:22.910 --> 00:11:26.990 +que tengas pensado programar. Vamos a la siguiente + +00:11:26.990 --> 00:11:27.490 +clase. diff --git "a/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/06-Resumen.html" "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/06-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..bc8eadca5df349aa5e886ca4e422a440a1aa44de --- /dev/null +++ "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/06-Resumen.html" @@ -0,0 +1,99 @@ + + + + + + + Recorridos de Árboles: Preorden, Inorden y Posorden + + + +
+
+

Resumen

Al momento de representar un árbol debemos elegir el orden en el cual vamos a recorrer dicho árbol. Dependiendo de qué orden se elija será la forma en que se va a representar el árbol.

+

Existen tres formas de recorrer un árbol:

+

• Pre orden: se inicia leyendo el nodo raíz, luego se pasa al hijo izquierdo y por ultimo al derecho.
+• In orden: inicia leyendo el hijo izquierdo, luego la raíz y por último el hijo derecho.
+• Pos orden: comienza por el hijo izquierdo para posteriormente ir al hijo derecho y por último al nodo raíz.

+
+
+ + \ No newline at end of file diff --git "a/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/07-Resumen.html" "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/07-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..2717512f4c60b0abcaf93c2e9dbd1b6508cc935f --- /dev/null +++ "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/07-Resumen.html" @@ -0,0 +1,102 @@ + + + + + + + Árboles Binarios para Expresiones Aritméticas + + + +
+
+

Resumen

Los árboles también nos sirven para representar expresiones aritméticas, para ello debe cumplir con las siguientes condiciones:

+

• Los vértices terminales son operandos.
+• Los vértices internos son operadores.
+• La raíz siempre debe ser un operador.

+

Así como vimos las diferentes formas para recorrer un árbol, las expresiones aritméticas tienen también sus propias formas:

+

• Pre fijo: raíz-izquierda-derecha
+• In fijo: izquierda-raíz-derecha
+• Pos fijo: izquierda-derecha-raíz

+
+
+ + \ No newline at end of file diff --git "a/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/07-\303\201rboles Binarios para Expresiones Aritm\303\251ticas.mp4" "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/07-\303\201rboles Binarios para Expresiones Aritm\303\251ticas.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..acbc31c3909b85c7449072d948e8687e8ea68cd1 --- /dev/null +++ "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/07-\303\201rboles Binarios para Expresiones Aritm\303\251ticas.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10ca7dcd8f644ae72266d46ed439b58c52044cd7a1f1e07556bb55b2e9fd2f21 +size 139188912 diff --git "a/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/07-\303\201rboles Binarios para Expresiones Aritm\303\251ticas.vtt" "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/07-\303\201rboles Binarios para Expresiones Aritm\303\251ticas.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..c9d21f94c64bd53399881bed1504a70a7ed7ad6b --- /dev/null +++ "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/07-\303\201rboles Binarios para Expresiones Aritm\303\251ticas.vtt" @@ -0,0 +1,631 @@ +WEBVTT + +00:00:03.919 --> 00:00:06.399 +Ya vimos que los árboles binarios son estructuras + +00:00:06.399 --> 00:00:09.360 +recursivas que nos permiten simplificar un problema muy + +00:00:09.360 --> 00:00:12.740 +grande en problemas chiquitos porque todos siguen manteniendo + +00:00:12.880 --> 00:00:14.960 +la misma estructura y se puede llamar a + +00:00:14.960 --> 00:00:18.555 +sí mismo. También aprendimos que podemos recorrer los + +00:00:18.555 --> 00:00:22.735 +árboles de diferente forma, preorden, intraorden y posorden, + +00:00:23.275 --> 00:00:26.395 +para pasarlo a código. Ahora vamos a ver + +00:00:26.395 --> 00:00:29.310 +lo que son las expresiones aritméticas. Así es, + +00:00:29.310 --> 00:00:33.330 +los árboles también nos sirven para representar expresiones + +00:00:33.550 --> 00:00:37.790 +aritméticas. Y para tener este tema súper claro, + +00:00:37.790 --> 00:00:40.450 +vamos a aclarar primero las reglas del juego. + +00:00:40.910 --> 00:00:44.575 +Supongamos que esta es nuestra expresión aritmética. Las + +00:00:44.575 --> 00:00:47.455 +reglas que debes conocer es que, primero, los + +00:00:47.455 --> 00:00:50.815 +vértices terminales, es decir, los vértices que están + +00:00:50.815 --> 00:00:52.415 +al final de mi árbol y que no + +00:00:52.415 --> 00:00:55.215 +tienen hijos, recordemos que esta es la definición + +00:00:55.215 --> 00:00:57.715 +de una hoja o de un vértice terminal. + +00:00:58.890 --> 00:01:01.570 +Estos vértices van a ser los operandos, van + +00:01:01.570 --> 00:01:03.530 +a ser los números con los cuales yo + +00:01:03.530 --> 00:01:06.810 +voy a hacer esas operaciones. Nuestra segunda regla + +00:01:06.810 --> 00:01:09.530 +es que los vértices internos van a ser + +00:01:09.530 --> 00:01:12.815 +esos operadores, esas operaciones que yo voy a + +00:01:12.815 --> 00:01:17.795 +realizar entre esos números para llegar a mi + +00:01:18.015 --> 00:01:22.335 +expresión final. Los vértices internos, recordemos, son aquellos + +00:01:22.335 --> 00:01:26.130 +que tienen hijos dentro del árbol. La raíz + +00:01:26.270 --> 00:01:30.270 +siempre debe ser un operador. Esa raíz siempre + +00:01:30.270 --> 00:01:31.789 +debe ser un operador y va a ser + +00:01:31.789 --> 00:01:34.670 +el operador con más relevancia dentro de nuestra + +00:01:34.670 --> 00:01:38.350 +expresión aritmética. ¿Y qué es esa relevancia de + +00:01:38.350 --> 00:01:41.685 +nuestra expresión aritmética? Pues bien, cuando nosotros tenemos + +00:01:41.685 --> 00:01:45.065 +las diferentes operaciones como suma, resta, multiplicación, dimensión, + +00:01:45.285 --> 00:01:48.885 +potencia, cada una tiene un orden y el + +00:01:48.885 --> 00:01:52.485 +orden es el siguiente. Siempre vamos a tener + +00:01:52.485 --> 00:01:55.660 +como prioridad las cosas que estén entre paréntesis, + +00:01:56.280 --> 00:02:01.340 +entre corchetes, entre estos símbolos que vemos allí. + +00:02:01.640 --> 00:02:04.120 +Como segundo nivel de prioridad vamos a tener + +00:02:04.120 --> 00:02:08.565 +en cuenta las raíces, las potencias. Luego pasaremos + +00:02:08.565 --> 00:02:11.925 +a lo que es la multiplicación y la + +00:02:11.925 --> 00:02:14.565 +división, y por último la suma y la + +00:02:14.565 --> 00:02:16.645 +resta. Este es el nivel de prioridad que + +00:02:16.645 --> 00:02:18.965 +tenemos que tener en cuenta cuando analizamos una + +00:02:18.965 --> 00:02:21.685 +expresión, no solo en árboles, sino a nivel + +00:02:21.685 --> 00:02:25.640 +general en la matemática. Ahora, estos árboles de + +00:02:25.640 --> 00:02:29.640 +expresiones aritméticas también tienen una notación, al igual + +00:02:29.640 --> 00:02:32.239 +que vimos que podíamos recorrer los árboles de + +00:02:32.239 --> 00:02:36.200 +diferentes formas, las las expresiones aritméticas también las + +00:02:36.200 --> 00:02:39.665 +podemos recorrer de diferentes formas. D, una forma + +00:02:39.665 --> 00:02:42.385 +prefija, en la cual vamos a mencionar primero + +00:02:42.385 --> 00:02:45.445 +la raíz, después la izquierda y después la + +00:02:45.665 --> 00:02:50.305 +derecha, una forma entrefija, izquierda, raíz, derecha, y + +00:02:50.305 --> 00:02:54.430 +una forma posfija, izquierda, derecha, raíz, de la + +00:02:54.430 --> 00:02:58.050 +misma forma que era el orden preorden inorden + +00:02:58.190 --> 00:03:01.069 +y posorden en el recorrido de árboles. Vamos + +00:03:01.069 --> 00:03:05.890 +al tablero para entender perfectamente este tema. Si + +00:03:06.110 --> 00:03:11.395 +tenemos la siguiente expresión aritmética nosotros podemos también + +00:03:11.395 --> 00:03:14.835 +representarla a través de un árbol y más + +00:03:14.835 --> 00:03:16.755 +allá de eso podemos hacer que un programa + +00:03:16.755 --> 00:03:20.755 +informático interprete ese árbol a través de una + +00:03:20.755 --> 00:03:23.849 +notación y con base en eso hacer operaciones + +00:03:24.069 --> 00:03:26.949 +a través de diferentes lenguajes de programación, por + +00:03:26.949 --> 00:03:32.090 +ejemplo. Pero, ¿cómo cómo podemos pasar esta esta + +00:03:32.150 --> 00:03:36.525 +expresión aritmética a un árbol? Pues bien, vamos + +00:03:36.525 --> 00:03:39.765 +a empezar analizando ese orden de prioridad que + +00:03:39.765 --> 00:03:43.605 +vimos en nuestra en nuestra clase y allí + +00:03:43.605 --> 00:03:45.365 +vimos que lo primero que hay que tomar + +00:03:45.365 --> 00:03:48.805 +en cuenta son los paréntesis, los corchetes, lo + +00:03:48.805 --> 00:03:52.160 +que tengamos agrupado. En este caso vemos que + +00:03:52.160 --> 00:03:57.120 +tenemos una agrupación acá en corchetes, tenemos otra + +00:03:57.120 --> 00:04:00.580 +agrupación acá en corchetes y otra agrupación en + +00:04:00.720 --> 00:04:03.760 +paréntesis, y nos fijamos que la más pequeña, + +00:04:03.760 --> 00:04:06.595 +la agrupación más pequeña que podemos obtener es + +00:04:06.595 --> 00:04:10.815 +esta que encontramos en paréntesis acá, así que + +00:04:10.835 --> 00:04:15.735 +lo que tendríamos es mis dos nuevos terminales, + +00:04:15.955 --> 00:04:18.035 +recordemos que una de las reglas que vimos + +00:04:18.035 --> 00:04:21.335 +es que las hojas o los nuevos terminales + +00:04:21.550 --> 00:04:24.750 +serán esos números, esas letras o esos operandos + +00:04:24.750 --> 00:04:26.830 +que yo tengo. En este caso los operandos + +00:04:26.830 --> 00:04:29.070 +son letras y son la d y la + +00:04:29.070 --> 00:04:33.550 +e, y están combinados por una operación que + +00:04:33.550 --> 00:04:36.445 +va a ser un vértice interno. En este + +00:04:36.445 --> 00:04:40.525 +caso tenemos que es el menos, así que + +00:04:40.525 --> 00:04:44.545 +lo anotamos aquí. Y esa será la representación + +00:04:44.845 --> 00:04:47.005 +a través de un árbol de esta primera + +00:04:47.005 --> 00:04:50.610 +operación que yo tengo acá, que sería d + +00:04:50.610 --> 00:04:53.890 +menos c. Ahora vamos a analizar lo que + +00:04:53.890 --> 00:04:57.730 +sería el corchete. Esta parte de acá que + +00:04:57.730 --> 00:05:00.450 +tenemos en un corchete vemos que es c + +00:05:00.450 --> 00:05:03.975 +multiplicado por este esta parte que acabamos de + +00:05:03.975 --> 00:05:09.474 +analizar. Entonces ponemos nuestro operando acá c y + +00:05:10.615 --> 00:05:16.550 +vemos que la operación que que une o + +00:05:16.550 --> 00:05:20.330 +que conecta estas dos partes es la multiplicación. + +00:05:20.870 --> 00:05:24.070 +Así que la representaríamos a través de esta + +00:05:24.070 --> 00:05:28.169 +forma. Observemos que seguimos cumpliendo todas las reglas + +00:05:28.630 --> 00:05:31.205 +porque CDYE son mis nodos terminales y van + +00:05:31.205 --> 00:05:33.365 +a ser las la los operandos de mi + +00:05:33.365 --> 00:05:37.365 +operación aritmética. Ahora pasemos al siguiente corchete, que + +00:05:37.365 --> 00:05:41.705 +sería a más b. Podemos colocar simplemente nuestros + +00:05:41.845 --> 00:05:45.900 +operandos como vértices terminales y la operación que + +00:05:45.900 --> 00:05:50.400 +los une es el más. Y ya tendríamos + +00:05:51.500 --> 00:05:55.180 +las diferentes partes de mi estructura representadas a + +00:05:55.180 --> 00:05:58.154 +través de un árbol. Solo nos queda colocar + +00:05:58.154 --> 00:06:00.635 +el signo de división, que es el que + +00:06:00.635 --> 00:06:04.354 +tenemos uniendo ambos corchetes en este caso, y + +00:06:04.354 --> 00:06:08.775 +simplemente lo que haremos es colocar la división + +00:06:10.035 --> 00:06:12.830 +de ambas partes. Y hemos completado lo que + +00:06:12.830 --> 00:06:16.850 +es la representación gráfica, la estructura de esa + +00:06:16.950 --> 00:06:20.430 +expresión aritmética. Pero, ¿cómo puede un lenguaje de + +00:06:20.430 --> 00:06:23.950 +programación leer esa estructura? Pues bien, ahí es + +00:06:23.950 --> 00:06:26.770 +cuando vamos a recurrir al tipo de notación + +00:06:27.365 --> 00:06:30.105 +de los árboles, que es, si se fijan, + +00:06:31.205 --> 00:06:33.685 +es es como recorremos un árbol. Recordemos que + +00:06:33.685 --> 00:06:37.045 +para recordar que recordemos que para recorrer un + +00:06:37.045 --> 00:06:41.199 +árbol tenemos preorden, inorden y posorden. En este + +00:06:41.199 --> 00:06:44.900 +caso, para recorrer una expresión animética, tenemos prefija, + +00:06:45.520 --> 00:06:47.840 +infija y posfija, que son los tipos de + +00:06:47.840 --> 00:06:52.340 +notaciones, y que el orden se es es + +00:06:53.335 --> 00:06:56.134 +es igual al que manteníamos en el recorrido + +00:06:56.134 --> 00:06:58.534 +de árboles. Vamos a ver cómo sería la + +00:06:58.534 --> 00:07:02.854 +anotación de esta expresión aritmética a través del + +00:07:02.854 --> 00:07:08.310 +prefijo. Si recordamos el prefijo primero vamos a + +00:07:08.310 --> 00:07:11.190 +anotar la raíz, después la izquierda y después + +00:07:11.190 --> 00:07:14.150 +la derecha y nos servirá para refrescar los + +00:07:14.150 --> 00:07:16.949 +conceptos de el recorrido de árboles y ver + +00:07:16.949 --> 00:07:20.414 +un poco más a fondo este tema. Nuestra + +00:07:20.414 --> 00:07:23.694 +primera raíz es el es la división, como + +00:07:23.694 --> 00:07:26.495 +en el prefija vamos a anotar primero la + +00:07:26.495 --> 00:07:29.935 +raíz, entonces anotamos la división, nos vamos al + +00:07:29.935 --> 00:07:33.775 +nodo izquierdo que se convierte nuevamente en raíz, + +00:07:33.775 --> 00:07:37.539 +por lo tanto lo anotamos, vamos ahora al + +00:07:37.539 --> 00:07:40.020 +nodo izquierdo que se convierte en ese nodo + +00:07:40.020 --> 00:07:43.620 +izquierdo que vamos a anotar, y después de + +00:07:43.620 --> 00:07:45.860 +anotar el nodo izquierdo anotamos el derecho, que + +00:07:45.860 --> 00:07:48.099 +es derecho nato porque no tiene más hijos, + +00:07:48.099 --> 00:07:52.955 +así que lo escribimos. Y ahora vamos a + +00:07:52.955 --> 00:07:55.995 +la parte derecha, ya tenemos la raíz, la + +00:07:55.995 --> 00:07:59.675 +izquierda y vamos a la derecha que se + +00:07:59.675 --> 00:08:02.235 +convierte en raíz, por lo tanto no lo + +00:08:02.235 --> 00:08:05.855 +anotamos y vamos a la raíz, al hijo + +00:08:05.915 --> 00:08:11.730 +izquierdo. Ah no, vamos al derecho que se + +00:08:11.730 --> 00:08:15.570 +convierte en raíz, entonces sí lo escribimos porque + +00:08:15.570 --> 00:08:18.470 +primero vamos a anotar la raíz, luego anotamos + +00:08:18.690 --> 00:08:21.825 +el nodo hijo izquierdo que sería este c + +00:08:21.825 --> 00:08:24.225 +que vemos acá, y pasamos a la parte + +00:08:24.225 --> 00:08:27.425 +derecha. En la parte derecha, este menos se + +00:08:27.425 --> 00:08:32.784 +convierte en raíz, luego vamos al hijo izquierdo, + +00:08:32.784 --> 00:08:36.240 +y luego iríamos al hijo derecho. Y si + +00:08:36.240 --> 00:08:38.520 +analizamos en la estructura de datos, lo que + +00:08:38.520 --> 00:08:43.020 +tenemos es mi raíz, todo mi hijo izquierdo + +00:08:43.400 --> 00:08:47.480 +y todo mi hijo derecho. Ahora vamos a + +00:08:47.480 --> 00:08:54.615 +ver lo que sería la anotación infija. Vamos + +00:08:54.615 --> 00:08:56.855 +a ver qué es la anotación infija. En + +00:08:56.855 --> 00:09:00.215 +la anotación infija vamos a ir primero al + +00:09:00.215 --> 00:09:03.700 +hijo izquierdo, después a la raíz y después + +00:09:03.700 --> 00:09:06.579 +a la derecha. ¿Cómo sería la anotación infija + +00:09:06.579 --> 00:09:09.300 +de este árbol que tenemos en pantalla? Vamos + +00:09:09.300 --> 00:09:12.920 +a buscar primero esa ese hijo izquierdo nato, + +00:09:13.140 --> 00:09:15.620 +entonces tenemos la raíz, vamos a la izquierda, + +00:09:15.620 --> 00:09:19.324 +vemos que tiene más hijos, seguimos así hasta + +00:09:19.324 --> 00:09:21.324 +que lleguemos a esta a, porque ya no + +00:09:21.324 --> 00:09:22.925 +tiene más hijos, así que es el hijo + +00:09:22.925 --> 00:09:25.884 +izquierdo. Vamos ahora a la raíz de ese + +00:09:25.884 --> 00:09:29.500 +hijo, que fue s más, y vamos al + +00:09:29.500 --> 00:09:31.899 +hijo derecho que se convierte en hijo derecho + +00:09:31.899 --> 00:09:34.560 +porque no tiene más hijos y ya tendríamos + +00:09:35.259 --> 00:09:38.699 +toda mi parte izquierda. Como ya tenemos la + +00:09:38.699 --> 00:09:41.819 +izquierda vamos a la raíz que la vamos + +00:09:41.819 --> 00:09:44.380 +a notar y ahora vamos a la parte + +00:09:44.380 --> 00:09:48.185 +derecha. Este nodo se convierte en raíz, por + +00:09:48.185 --> 00:09:50.825 +lo tanto no lo anotamos y vamos primero + +00:09:50.825 --> 00:09:53.945 +a su izquierda. Su izquierda que, como no + +00:09:53.945 --> 00:09:55.865 +tiene más hijos, es izquierda, así que la + +00:09:55.865 --> 00:09:59.570 +escribimos, anotamos la raíz de esa izquierda y + +00:09:59.950 --> 00:10:02.270 +vamos a la parte derecha. En la parte + +00:10:02.270 --> 00:10:04.830 +derecha, este se convierte en raíz, no la + +00:10:04.830 --> 00:10:08.510 +escribimos. Primero escribimos la izquierda, después la raíz + +00:10:08.510 --> 00:10:15.485 +y después izquierda, raíz y después escribimos su + +00:10:15.485 --> 00:10:18.324 +derecha. Y como vemos en la estructura total + +00:10:18.324 --> 00:10:21.165 +de datos, primero lo que tenemos es mi + +00:10:21.165 --> 00:10:25.645 +rama izquierda, mi raíz y después toda mi + +00:10:25.645 --> 00:10:29.350 +parte derecha, así que nos quedó completamente bien. + +00:10:29.730 --> 00:10:32.390 +Por último vamos a mirar lo que es + +00:10:33.890 --> 00:10:37.970 +la anotación pos fija. Si miramos nuestro tablero + +00:10:37.970 --> 00:10:39.970 +en la pos fija lo primero que anotamos + +00:10:39.970 --> 00:10:43.195 +es la izquierda, después la derecha y después + +00:10:43.654 --> 00:10:47.595 +la raíz. Vamos nuevamente a nuestro árbol, raíz, + +00:10:49.175 --> 00:10:56.300 +raíz, izquierda, por lo tanto lo anotamos. Analizamos + +00:10:56.440 --> 00:10:59.500 +esta que es derecha neta, entonces izquierda, derecha + +00:11:00.760 --> 00:11:04.040 +y su raíz, que sería más. Y ya + +00:11:04.040 --> 00:11:06.680 +tenemos toda mi parte izquierda. Después de la + +00:11:06.680 --> 00:11:09.180 +izquierda vamos a ir a la parte derecha. + +00:11:10.565 --> 00:11:13.685 +Este vemos que se convierte nuevamente en raíz + +00:11:13.685 --> 00:11:15.845 +por lo tanto vamos a su izquierda, esta + +00:11:15.845 --> 00:11:18.965 +sí se convierte en izquierda así que la + +00:11:18.965 --> 00:11:23.250 +anotamos y vamos a la parte derecha. Esta + +00:11:23.250 --> 00:11:26.209 +parte derecha se convierte en raíz, por lo + +00:11:26.209 --> 00:11:30.529 +tanto vamos a su izquierda, vamos a su + +00:11:30.529 --> 00:11:37.055 +derecha, vamos a la raíz, ya tenemos izquierda + +00:11:37.055 --> 00:11:43.375 +derecha ahora vamos a la raíz y ya + +00:11:43.375 --> 00:11:47.795 +tenemos izquierda derecha y vamos a la raíz + +00:11:48.330 --> 00:11:50.890 +y es así como si analizamos en la + +00:11:50.890 --> 00:11:56.430 +estructura posfija tenemos mi izquierda, tenemos mi derecha + +00:11:58.090 --> 00:12:03.495 +y tenemos mi raíz y es así como + +00:12:03.495 --> 00:12:08.935 +podemos expresar expresiones aritméticas a través de un + +00:12:08.935 --> 00:12:13.095 +lenguaje de código, de un lenguaje máquina y + +00:12:13.095 --> 00:12:16.240 +vemos como dependiendo del orden o de la + +00:12:16.240 --> 00:12:19.199 +secuencia que elijamos la estructura de datos puede + +00:12:19.199 --> 00:12:23.731 +cambiar totalmente. Ya sabes qué es un árbol, + +00:12:23.731 --> 00:12:26.291 +cómo lo puedes utilizar, que también te sirve + +00:12:26.291 --> 00:12:29.431 +para representar, no solo datos, sino también expresiones + +00:12:29.491 --> 00:12:32.951 +aritméticas. Vamos a la siguiente clase. diff --git "a/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/08-Resumen.html" "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/08-Resumen.html" new file mode 100644 index 0000000000000000000000000000000000000000..fd51b65a2afa192f99e4b9fde60e00ad8cd851a8 --- /dev/null +++ "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/08-Resumen.html" @@ -0,0 +1,157 @@ + + + + + + + Transformación de Expresiones Aritméticas en Árboles Binarios + + + +
+
+

Resumen

¿Cómo podemos representar expresiones aritméticas usando árboles?

+

Los árboles son una herramienta esencial en el mundo de la informática y las matemáticas. Permiten una representación clara y estructurada de expresiones aritméticas, lo que facilita su manipulación y comprensión. En particular, las expresiones posfijas, también conocidas como notación postfija o RPN (Reverse Polish Notation), son ideales para este tipo de representación debido a su orden predeterminado: izquierda, derecha, raíz.

+

¿Cómo se desglosa una expresión posfija en un árbol?

+

Para empezar, recordemos que el principio fundamental de la notación posfija es que siempre se evalúa desde las hojas del árbol hacia arriba:

+
    +
  1. +

    Identificar los operandos y operadores. Los operandos (números o variables) se colocan primero. Cada operando será una hoja en nuestro árbol.

    +
  2. +
  3. +

    Determinar la estructura: izquierda, derecha, raíz. La estructura debe respetar este orden:

    +
      +
    • Comenzamos colocando los operandos en la parte más profunda de la izquierda.
    • +
    • Continuamos hacia la derecha con el próximo operando.
    • +
    • Finalmente, el operador que une estos operandos se coloca como raíz.
    • +
    +
  4. +
  5. +

    Construir el árbol de acuerdo a la posfija. Siguiendo la regla anterior, vamos ensamblando el árbol:

    +
      +
    • Si dividimos una operación, el operador que está más a la derecha generalmente funciona como una raíz, debajo del cual se situarán sus operandos (que ya podrían ser subárboles por su cuenta).
    • +
    +
  6. +
+

¿Cómo convertir de notación posfija a prefija e infija?

+

Una vez construido el árbol de una expresión posfija, podemos hallar su equivalente en notación prefija e infija.

+

Notación prefija (raíz, izquierda, derecha)

+

La notación prefija facilita el procesamiento de las expresiones antes de su evaluación:

+
    +
  1. +

    Iniciar con la raíz principal. Se trata del nodo superior en el árbol, el cual será un operador.

    +
  2. +
  3. +

    Desplazarse siguiendo el orden raíz, izquierda, derecha.

    +
      +
    • Comenzamos colocando en la representación todos los operadores y variables conforme se encuentren al progresar de la raíz hacia las hojas.
    • +
    • Los operadores se ubican al inicio, seguidos por sus respectivos operandos.
    • +
    +
  4. +
+

Notación infija (izquierda, raíz, derecha)

+

Esta notación es la más intuitiva para los humanos, ya que se parece a la manera convencional en la que escribimos operaciones:

+
    +
  1. +

    Comenzar desde la raíz sin escribirla primero, avanzar hacia la izquierda.

    +
  2. +
  3. +

    Escribir en el orden izquierda, raíz, derecha. Esto implica:

    +
      +
    • Al llegar a un nodo que es totalmente una hoja a la izquierda, se escribe.
    • +
    • Continua hacia la raíz (el operador) y lo incorpora.
    • +
    • Termina con la parte derecha de la estructura del árbol.
    • +
    +
  4. +
+

¿Cómo aplicar estos conceptos en proyectos?

+

El uso de árboles en la representación de expresiones aritméticas no es solo un ejercicio académico. Tiene aplicaciones prácticas en informática, como en la construcción de compiladores y el análisis de código, que convierten expresiones en un formato que las máquinas pueden procesar:

+
    +
  • Optimización de código: Los árboles permiten identificar subexpresiones innecesarias que pueden simplificarse.
  • +
  • Evaluación de expresiones: Facilita la conversión y evaluación de expresiones en tiempo de ejecución.
  • +
  • Construcción de sistemas algorítmicos: Permite optimizar búsquedas y ordenar procesos.
  • +
+

Continuaremos explorando este importante tema en módulos futuros, donde aprenderemos a recorrer estos árboles eficientemente. ¡Sigue cultivando tu conocimiento en estructuras de datos y algoritmos para ampliar tus habilidades en el campo de la programación!

+

Mantente motivado y sigue aprendiendo, ¡la práctica hará que domines estos conceptos en poco tiempo!

+
+
+ + \ No newline at end of file diff --git "a/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/08-Transformaci\303\263n de Expresiones Aritm\303\251ticas en \303\201rboles Binarios.mp4" "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/08-Transformaci\303\263n de Expresiones Aritm\303\251ticas en \303\201rboles Binarios.mp4" new file mode 100644 index 0000000000000000000000000000000000000000..6ef7234c22dd393bbc432a9d7db59fb77de5ea38 --- /dev/null +++ "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/08-Transformaci\303\263n de Expresiones Aritm\303\251ticas en \303\201rboles Binarios.mp4" @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:336fab57b49efe4456a7514e0a05496da7e49f66444372246d4b081c90f8552e +size 80268472 diff --git "a/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/08-Transformaci\303\263n de Expresiones Aritm\303\251ticas en \303\201rboles Binarios.vtt" "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/08-Transformaci\303\263n de Expresiones Aritm\303\251ticas en \303\201rboles Binarios.vtt" new file mode 100644 index 0000000000000000000000000000000000000000..d3a880065e4118f9a71392762ddf279b6f6a6653 --- /dev/null +++ "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/08-Transformaci\303\263n de Expresiones Aritm\303\251ticas en \303\201rboles Binarios.vtt" @@ -0,0 +1,325 @@ +WEBVTT + +00:00:04.240 --> 00:00:07.060 +Hemos aprendido que los árboles también nos sirven + +00:00:07.359 --> 00:00:11.280 +para representar expresiones aritméticas. En esta clase veremos + +00:00:11.280 --> 00:00:14.825 +cómo pasar de una expresión pos fija a + +00:00:14.825 --> 00:00:18.445 +su respectivo árbol, a su respectiva representación gráfica. + +00:00:19.145 --> 00:00:23.005 +Recordemos que el ejercicio nos dice que tenemos + +00:00:24.185 --> 00:00:28.445 +la expresión en posfija y si recordamos posfija + +00:00:28.985 --> 00:00:36.650 +es izquierda, derecha, raíz. Esto va a ser + +00:00:36.650 --> 00:00:39.950 +lo que necesitamos como base para construir nuestro + +00:00:40.410 --> 00:00:45.070 +nuestro gráfico, nuestro árbol. Así que empecemos a + +00:00:45.129 --> 00:00:47.635 +desglosar este árbol y miremos cómo sería su + +00:00:47.635 --> 00:00:52.035 +representación. Siempre nos dice que empezamos por la + +00:00:52.035 --> 00:00:54.195 +izquierda, en la post fija, así que sabemos + +00:00:54.195 --> 00:00:57.175 +que esta a va a estar en algún + +00:00:57.235 --> 00:01:00.934 +punto a la izquierda de mi árbol, ¿verdad? + +00:01:01.630 --> 00:01:04.030 +Luego seguiríamos por la derecha y luego por + +00:01:04.030 --> 00:01:07.210 +la raíz, pero observemos que si fuera izquierda, + +00:01:07.229 --> 00:01:10.670 +derecha, raíz, esta se quedaría como raíz, y + +00:01:10.670 --> 00:01:14.590 +nosotros ya sabemos que unas un operando, un + +00:01:14.590 --> 00:01:16.725 +número o una letra no puede ser un + +00:01:16.725 --> 00:01:20.405 +vértice terminal, por lo tanto, nos adelantaríamos un + +00:01:20.405 --> 00:01:23.525 +poco más y miraríamos que el b también + +00:01:23.525 --> 00:01:27.445 +sería una izquierda. Entonces, coloquemos nuestro b por + +00:01:27.445 --> 00:01:30.869 +acá, sería una izquierda. Si tenemos b como + +00:01:30.869 --> 00:01:36.329 +izquierda, tendríamos izquierda derecha raíz. Cumpliríamos la condición + +00:01:36.950 --> 00:01:40.470 +de que BYC serían vértices terminales y que + +00:01:40.470 --> 00:01:42.375 +m y más sería uno operando y quedaría + +00:01:42.595 --> 00:01:46.994 +como un vértice interno. Entonces, eso sí lo + +00:01:46.994 --> 00:01:52.055 +podemos hacer. Entonces, tengo izquierda, derecha y raíz, + +00:01:52.755 --> 00:01:55.979 +y tengo ya una parte de mi gráfico. + +00:01:57.000 --> 00:02:00.940 +La estructura de la de la expresión posfija + +00:02:01.080 --> 00:02:04.220 +siempre se tiene que cumplir, izquierda, derecha, raíz, + +00:02:04.440 --> 00:02:08.925 +así que ahora tendríamos izquierda, derecha, izquierda, derecha + +00:02:09.465 --> 00:02:12.584 +y seguiríamos con la raíz que sería este + +00:02:12.584 --> 00:02:17.005 +dividido que vemos allí. Y nuevamente estaríamos cumpliendo + +00:02:17.065 --> 00:02:20.444 +la estructura de la anotación posfija, mi izquierda, + +00:02:21.060 --> 00:02:25.320 +mi derecha y mi raíz. Como ya tenemos + +00:02:26.660 --> 00:02:28.420 +esta estructura, nosotros podemos saber que esta es + +00:02:28.420 --> 00:02:31.780 +la izquierda de mi árbol más grande. Entonces, + +00:02:31.780 --> 00:02:36.265 +tendríamos izquierda, derecha, todo esto estaría en una + +00:02:36.265 --> 00:02:40.205 +rama derecha y nuevamente en esta rama iniciaríamos + +00:02:40.345 --> 00:02:44.265 +por la izquierda. Entonces, esta b estaría en + +00:02:44.265 --> 00:02:49.100 +un punto nuevamente a mi izquierda, Izquierda, derecha, + +00:02:49.100 --> 00:02:51.980 +raíz. Vemos que la condición se cumple, por + +00:02:51.980 --> 00:02:56.860 +lo tanto, la podemos colocar izquierda, derecha y + +00:02:56.860 --> 00:03:02.075 +raíz, y ya tendríamos esta parte hemigráfica. Nuevamente, + +00:03:02.295 --> 00:03:04.935 +el algoritmo se tiene que cumplir para todas + +00:03:04.935 --> 00:03:06.615 +las partes de mi gráfica, así que yo + +00:03:06.615 --> 00:03:10.935 +tendría una izquierda, una derecha y solo me + +00:03:10.935 --> 00:03:14.855 +faltaría colocar una raíz, que sería el último + +00:03:14.855 --> 00:03:19.370 +signo que nosotros tenemos acá. Y con esto + +00:03:19.370 --> 00:03:22.190 +hemos completado lo que es la representación gráfica + +00:03:23.370 --> 00:03:26.890 +de la expresión posfija que nosotros teníamos al + +00:03:26.890 --> 00:03:32.855 +principio. Observemos que tenemos izquierda, derecha, raíz, izquierda, + +00:03:32.995 --> 00:03:36.455 +derecha, raíz, y hemos cumplido con nuestro objetivo. + +00:03:36.835 --> 00:03:40.275 +Pero, ¿cómo sería la notación prefija o la + +00:03:40.275 --> 00:03:46.350 +notación entrefija? Entonces, vamos a mirar, primero que + +00:03:46.350 --> 00:03:54.110 +todo, cómo sería la notación prefija. Recordemos que + +00:03:54.110 --> 00:04:00.724 +mi notación prefija va de la forma raíz + +00:04:00.724 --> 00:04:07.204 +izquierda y derecha. Así que empezaríamos, en este + +00:04:07.204 --> 00:04:10.084 +caso, con nuestra raíz principal, que sería la + +00:04:10.084 --> 00:04:14.920 +raíz principal de mi árbol, tendríamos menos, nos + +00:04:14.920 --> 00:04:18.520 +iríamos a la izquierda, a la izquierda se + +00:04:18.520 --> 00:04:23.320 +convertirían nuevamente en raíz, así que tendríamos, la + +00:04:23.320 --> 00:04:26.395 +escribiríamos, iríamos a la izquierda, es una izquierda + +00:04:26.395 --> 00:04:29.294 +porque ya no tiene más hijos. Entonces, raíz + +00:04:29.675 --> 00:04:35.035 +izquierda la escribimos, a y derecha. Esta derecha + +00:04:35.035 --> 00:04:39.260 +pasa a ser raíz, entonces, tendríamos más. Izquierda, + +00:04:39.800 --> 00:04:45.080 +raíz izquierda, derecha, BCY ya tenemos todo lo + +00:04:45.080 --> 00:04:47.560 +que es la raíz, la izquierda y simplemente + +00:04:47.560 --> 00:04:51.325 +nos falta la derecha, que sería, empezamos con + +00:04:51.325 --> 00:04:53.085 +esta que se vuelve raíz, por lo tanto + +00:04:53.085 --> 00:04:58.365 +la escribimos raíz, izquierda y derecha. Y ya + +00:04:58.365 --> 00:05:04.530 +tenemos la expresión prefija de mi árbol, que + +00:05:04.530 --> 00:05:07.090 +encontramos a partir de su expresión posfija. Por + +00:05:07.090 --> 00:05:11.730 +último, vamos a encontrar la expresión infija o + +00:05:11.730 --> 00:05:15.170 +entrefija, como lo hemos llamado, y que su + +00:05:15.170 --> 00:05:23.515 +orden va a ser izquierda raíz derecha. Recordemos + +00:05:23.515 --> 00:05:26.235 +que siempre vamos a empezar por nuestra raíz + +00:05:26.235 --> 00:05:29.915 +principal, pero no la vamos a escribir porque + +00:05:29.915 --> 00:05:32.520 +arrancamos siempre por la izquierda en este caso. + +00:05:33.560 --> 00:05:35.720 +Entonces, esta es una raíz, vamos a su + +00:05:35.720 --> 00:05:39.259 +izquierda, no la escribimos, vamos a la raíz, + +00:05:39.639 --> 00:05:42.220 +se convierte en raíz, vamos a su izquierda + +00:05:42.280 --> 00:05:44.780 +y como esta sí es una izquierda totalmente, + +00:05:45.319 --> 00:05:49.885 +esa sí la escribimos. Escribimos la izquierda, escribimos + +00:05:50.025 --> 00:05:53.705 +su raíz y vamos a la derecha. Como + +00:05:53.705 --> 00:05:57.005 +esta es nuevamente raíz, vamos a su izquierda, + +00:05:57.385 --> 00:06:03.620 +esta izquierda, izquierda, su raíz y su derecha. + +00:06:04.080 --> 00:06:07.440 +Y ya tenemos esta parte de mi árbol, + +00:06:07.440 --> 00:06:10.400 +que es la izquierda. Recordemos que siempre se + +00:06:10.400 --> 00:06:14.254 +tiene que cumplir la estructura de la del + +00:06:14.254 --> 00:06:16.895 +de la anotación para todas las partes de + +00:06:16.895 --> 00:06:18.835 +mi árbol. Entonces, ya tenemos toda la izquierda. + +00:06:19.694 --> 00:06:23.455 +Ahora, anotamos la raíz, que sería menos, y + +00:06:23.455 --> 00:06:27.060 +vamos a la derecha. Y en la derecha + +00:06:27.280 --> 00:06:30.800 +tenemos nuevamente una raíz, esta sí es izquierda + +00:06:30.800 --> 00:06:34.639 +total, entonces la escribimos, escribimos su raíz y + +00:06:34.639 --> 00:06:39.380 +escribimos la derecha. Y tenemos ya las tres + +00:06:41.764 --> 00:06:45.365 +formas de representar o de notar lo que + +00:06:45.365 --> 00:06:48.745 +es una expresión aritmética a través de un + +00:06:48.805 --> 00:06:52.425 +árbol. Y así es como diferentes podemos pasar + +00:06:52.660 --> 00:06:55.300 +de una expresión aritmética a un código máquina + +00:06:55.300 --> 00:06:57.620 +para que lo apliques a tus proyectos. Y + +00:06:57.620 --> 00:07:01.880 +con esto hemos concluido el módulo de árboles. + +00:07:02.580 --> 00:07:04.900 +Acompáñenme en el siguiente módulo donde empezaremos a + +00:07:04.900 --> 00:07:08.794 +ver algunos algoritmos para que podamos recorrer estos + +00:07:08.794 --> 00:07:11.834 +árboles y que lo puedan aplicar a sus + +00:07:11.834 --> 00:07:14.254 +proyectos. Nos vemos en el siguiente módulo. diff --git "a/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/09-\303\201rboles Altura Niveles y Recorridos Ordenados.mhtml" "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/09-\303\201rboles Altura Niveles y Recorridos Ordenados.mhtml" new file mode 100644 index 0000000000000000000000000000000000000000..d87f774e29e4dda059fcf5adb2f34b9be6d02c88 --- /dev/null +++ "b/a/Curso de Matem\303\241ticas Discretas/05-\303\201rboles/09-\303\201rboles Altura Niveles y Recorridos Ordenados.mhtml" @@ -0,0 +1,25187 @@ +From: +Snapshot-Content-Location: https://platzi.com/cursos/discretas/ejercicios-arboles/ +Subject: =?utf-8?Q?=C3=81rboles:=20Altura,=20Niveles=20y=20Recorridos=20Ordenados?= +Date: Sun, 9 Nov 2025 12:32:10 -0500 +MIME-Version: 1.0 +Content-Type: multipart/related; + type="text/html"; + boundary="----MultipartBoundary--rjGh8kYHAAhMUJotnHiYIkjzIZi4Rq7ZNO6heFdV70----" + + +------MultipartBoundary--rjGh8kYHAAhMUJotnHiYIkjzIZi4Rq7ZNO6heFdV70---- +Content-Type: text/html +Content-ID: +Content-Transfer-Encoding: quoted-printable +Content-Location: https://platzi.com/cursos/discretas/ejercicios-arboles/ + + =C3=81rboles: Altura, Niveles = +y Recorridos Ordenados<= +/head>

Confirmar tu correo

Enviamos un enlace de confirmaci=C3=B3n a tu correo elec= +tr=C3=B3nico tomalabecker68@gmail.com

3D"Curso= +

=C3=81rboles: Altura, Niveles y Recorridos Ordenados

Clase 33 de 40 =E2= +=80=A2 Curso de Matem=C3=A1ticas Discretas

<= +/div>
= +
<= +/header>

Ejemplo:

+

Determine la altura y el nivel del =C3=A1rbol considerando como ra=C3=AD= +z el v=C3=A9rtice c, grafique este nuevo =C3=A1rbol obtenido:

+
3D"Captur=
+

Soluci=C3=B3n

+
3D"Captur=
+

Niveles: 6 +Altura:7

+

Ejercicios de pr=C3=A1ctica:

+

Despu=C3=A9s de mirar el ejemplo, resuelve los siguientes ejercicios y c= +omenta en el sistema de discusiones tus respuestas.

+

1. Determine la altura y el nivel del =C3=A1rbol consid= +erando como ra=C3=ADz el v=C3=A9rtice d:

+
3D"Captur=
+

2. =C2=BFCu=C3=A1l es el =C3=A1rbol de expansi=C3=B3n m= +=C3=ADnima del siguiente =C3=A1rbol y cu=C3=A1l es el coste total?

+
3D"Captur=
+

Ejemplo:

+

Cu=C3=A1l es el recorrido del siguiente =C3=A1rbol en pre orden, in orde= +n y pos orden:

+
3D"Captur=
+

Soluci=C3=B3n

+

PREORDEN: B D E H I +INORDEN: D B H E I +POSORDEN: D H I E B

+

Ejercicios de pr=C3=A1ctica:

+

Despu=C3=A9s de mirar el ejemplo, resuelve el siguiente ejercicio y come= +nta en el sistema de discusiones tus respuestas.

+

1. Cu=C3=A1l es el recorrido del siguiente =C3=A1rbol e= +n preorden, inorden y pos orden:

+
3D"Captur=
+

Ejemplo:

+

Grafique el =C3=A1rbol obtenido de la siguiente expresi=C3=B3n teniendo = +en cuenta que fue escrita en POSFIJA Y su forma prefija y entre fija: +

3D"Captur=

+

Soluci=C3=B3n

+
3D"Captur=
+

Ejercicios de pr=C3=A1ctica

+

Despu=C3=A9s de mirar el ejemplo, resuelve los siguientes ejercicios y c= +omenta en el sistema de discusiones tus respuestas.

+

1. Grafique la siguiente expresi=C3=B3n aritm=C3=A9tica= + a trav=C3=A9s de un =C3=A1rbol:

3D"Captura

+

2. =C2=BFCu=C3=A1l es la expresi=C3=B3n matem=C3=A1tica= + del siguiente =C3=A1rbol?

+
3D"Captur=
= +
3D"Roc=C3=ADo
    = +

    Obtuve las mismas respuesta, genial!

    <= +/header>
3D"Marcos
<= +p class=3D"CommentHeader-module_CommentHeader__Name__lpA03">Marcos Chaile
stud= +ent=E2=80=A2= +
hace 7 a=C3=B1os
3D"Captura +

En este ejercicio =C2=BFLa =E2=80=9CX=E2=80=9D del final seria una multi= +plicaci=C3=B3n? porque en las respuestas vi un gr=C3=A1fico que la tenia y = +otro que no, y como no dijo nada sobre eso en la correci=C3=B3n, quede medi= +o confundido =F0=9F=98=A6

= +Responder
Reportar

    Yo obtuve el mismo resultado que @cardox95. Espero que s= +ea la respuesta correcta.

3D"Carlos

Carlos Andr=C3=A9s C= +ubillos =C3=81lvarez

student=E2=80=A2
hace 5 a=C3=B1os

la x es una expresi=C3=B3n

3D"Ivan
= +

Ivan Hern=C3=A1ndez Le=C3=B3n

<= +/div>
student= +=E2=80=A2hace 6 a=C3=B1os

Soluci=C3=B3n= + a los ejercicios

<= +img alt=3D"sln_1.png" loading=3D"lazy" width=3D"20" height=3D"20" decoding= +=3D"async" data-nimg=3D"1" src=3D"https://static.platzi.com/media/user_uplo= +ad/sln_1-3bd0707e-945c-42e7-934c-89866f3ea8ad.jpg" style=3D"color: transpar= +ent;">

3D"Moises

Moises Hern= +andez

student=E2=80=A2
h= +ace 4 a=C3=B1os

En jerarqu=C3=ADas de operaciones o signos cua= +l tiene mas prioridad multiplicaci=C3=B3n o el operador AND?

<= +/div>
    3D"Francisco

    Francis= +co Manuel Mier y Ter=C3=A1n

    student=E2=80=A2
    = +hace 4 a=C3= +=B1os

    Como en matem=C3=A1ticas se debe de leer de izquierda a = +derecha, adem=C3=A1s del PEMDAS. Lo que ocurra primero de izquierda a derec= +ha. Recuerda usar en tu c=C3=B3digo par=C3=A9ntesis.

    = +
+=3D"Alan

Alan Yahir Ju=C3=A1rez Rubio

student=E2=80=A2
hace 3 a=C3=B1os
3D"Ejercicios_pages-to-jpg-0001.jpg"
+
3D"Ejerci=
+
3D"Ejerci=
+
3D"Ejerci=
= +
<= +/article>
3D"=C3=81lvaro

=C3=81lvaro Nicol=C3=A1s Sarmiento Ospina

student=E2=80=A2
hace 3 a=C3=B1os
<= +div class=3D"Markdown_Markdown__m6wuK">
3D"Platzi
3D"Platzi
3D"Guillermo<= +header class=3D"CommentLayout-module_CommentLayout__Content__fCbVx">

Guillermo Jimenez

student=E2=80=A2
hace 4 a=C3=B1os= +
+
3D"12358
+
3D"12358
+
3D"12358
+
3D"12358
= +Responder
Reportar
3D"=

Paula Vallejo

student=E2=80=A2
hace 7 a=C3=B1os

Me enred=C3=A9 con el ejercicio de expresiones aritm=C3=A9ticas=E2= +=80=A6 ><

<= +article class=3D"CommentLayout-module_CommentLayout__CYa1n Comment-module_C= +omment__tcd1t Comment-module_Comment--has-replies__jacm7" style=3D"--last-i= +tem-height: 422px;">

DIEGO ALEXANDER ARISTIZABAL ARISTIZA

student=E2=80=A2hace 3 a=C3=B1os
= +
3D"taller
+
3D"taller=
    3D"DIEGO

    DIEGO ALEXANDER ARISTIZABAL ARISTIZA

    student=E2=80=A2
    hace 3 a=C3=B1os
    <= +div class=3D"Markdown_Markdown__m6wuK">

    Correcci=C3=B3n punto 2

    +
    3D"taller=
3D"Oscar

Oscar Moreno

student=E2=80=A2
hace 6 a=C3=B1os
    +
  1. +

    N=3D4 H=3D5

    +
  2. +
  3. +

    Pre Orden =3D abdehicfg +In Orden =3D dbheiafcg +Pos Orden =3D dhiebfgca

    +
  4. +
  5. +

    coste m=C3=ADnimo 32 (yo lo entiendo como la ruta critica) y para mi ser= +=C3=ADa el camino hdcbagfe

    +
  6. +
  7. +
    = + +<= +/span> + * * + x ^ * x + y 2 b + + x c
    +
  8. +
3D"Mar

Mar y Sol Bautista Alvarez

student=E2=80=A2
hace 5 a=C3=B1os
= +
3D"IMG_20201014_192921.jpg"
3D"IMG_20201014_192703=
+=3D"IMG_20201014_192728.jpg"
3D"IMG_20201014_192649.jpg"
3D"IMG_20201014_192803.j=
+=3D"IMG_20201014_192623.jpg"
Responder
Reportar
+=3D"Victor
= +

Victor Cerrite=C3=B1o

student=E2=80=A2
hace 7= + a=C3=B1os

Ejr 2) 37

+

Ejr 3) a,b,d,e,h,i,c,f,g
+d,b,h,e,i,a,f,c,g
+d,h,i,e,b,f,g,c,a

+

Ejr 5) (x/(a+b))-(b/c)

= +Responder
Reportar
    +=3D"Sergio

    Sergio Orduz

    teacher=E2=80=A2
    hace 7 a=C3=B1os

    super super victor. Me alegra que est=C3=A9s aprendiendo =F0=9F= +=98=84

<= +div style=3D"height: 200px;"><= +/div>