2999a commited on
Commit
e99b9e5
·
verified ·
1 Parent(s): 2c2b535

Upload via hfc (batch)

Browse files

Uploaded using hfc tool

Files changed (33) hide show
  1. .gitattributes +10 -0
  2. a/Curso de Matemáticas Discretas/05-Árboles/04-Resumen.html +0 -0
  3. a/Curso de Matemáticas Discretas/05-Árboles/05-Resumen.html +0 -0
  4. a/Curso de Matemáticas Discretas/05-Árboles/05-Tipos de Árboles Binarios y sus Características.mp4 +3 -0
  5. a/Curso de Matemáticas Discretas/05-Árboles/05-Tipos de Árboles Binarios y sus Características.vtt +310 -0
  6. a/Curso de Matemáticas Discretas/05-Árboles/06-Recorridos de Árboles Preorden Inorden y Posorden.mp4 +3 -0
  7. a/Curso de Matemáticas Discretas/05-Árboles/06-Recorridos de Árboles Preorden Inorden y Posorden.vtt +613 -0
  8. a/Curso de Matemáticas Discretas/05-Árboles/06-Resumen.html +0 -0
  9. a/Curso de Matemáticas Discretas/05-Árboles/07-Resumen.html +0 -0
  10. a/Curso de Matemáticas Discretas/05-Árboles/07-Árboles Binarios para Expresiones Aritméticas.mp4 +3 -0
  11. a/Curso de Matemáticas Discretas/05-Árboles/07-Árboles Binarios para Expresiones Aritméticas.vtt +631 -0
  12. a/Curso de Matemáticas Discretas/05-Árboles/08-Resumen.html +0 -0
  13. a/Curso de Matemáticas Discretas/05-Árboles/08-Transformación de Expresiones Aritméticas en Árboles Binarios.mp4 +3 -0
  14. a/Curso de Matemáticas Discretas/05-Árboles/08-Transformación de Expresiones Aritméticas en Árboles Binarios.vtt +325 -0
  15. a/Curso de Matemáticas Discretas/05-Árboles/09-Árboles Altura Niveles y Recorridos Ordenados.mhtml +0 -0
  16. a/Curso de Matemáticas Discretas/06-Algoritmos/01-Algoritmo de Prim Árbol de Expansión Mínimo en Grafos.mp4 +3 -0
  17. a/Curso de Matemáticas Discretas/06-Algoritmos/01-Algoritmo de Prim Árbol de Expansión Mínimo en Grafos.vtt +550 -0
  18. a/Curso de Matemáticas Discretas/06-Algoritmos/01-Resumen.html +0 -0
  19. a/Curso de Matemáticas Discretas/06-Algoritmos/02-Algoritmo de Dijkstra Ruta Óptima y Coste Mínimo.mp4 +3 -0
  20. a/Curso de Matemáticas Discretas/06-Algoritmos/02-Algoritmo de Dijkstra Ruta Óptima y Coste Mínimo.vtt +514 -0
  21. a/Curso de Matemáticas Discretas/06-Algoritmos/02-Resumen.html +0 -0
  22. a/Curso de Matemáticas Discretas/06-Algoritmos/03-Algoritmo de Kruskal.mp4 +3 -0
  23. a/Curso de Matemáticas Discretas/06-Algoritmos/03-Resumen.html +0 -0
  24. a/Curso de Matemáticas Discretas/06-Algoritmos/04-Algoritmo de Flury Encontrar Ciclos Eulerianos en Grafos.mp4 +3 -0
  25. a/Curso de Matemáticas Discretas/06-Algoritmos/04-Algoritmo de Flury Encontrar Ciclos Eulerianos en Grafos.vtt +427 -0
  26. a/Curso de Matemáticas Discretas/06-Algoritmos/04-Resumen.html +0 -0
  27. a/Curso de Matemáticas Discretas/06-Algoritmos/05-Algoritmo de Flujo Máximo en Redes Dirigidas.mp4 +3 -0
  28. a/Curso de Matemáticas Discretas/06-Algoritmos/05-Algoritmo de Flujo Máximo en Redes Dirigidas.vtt +640 -0
  29. a/Curso de Matemáticas Discretas/06-Algoritmos/05-Resumen.html +0 -0
  30. a/Curso de Matemáticas Discretas/06-Algoritmos/06-Algoritmos de Grafos Prim Dijkstra Kruskal y Fleury.mhtml +0 -0
  31. a/Curso de Matemáticas Discretas/07-Conclusiones/01-Repaso Final de Matemáticas Discretas Lógica Conjuntos y Algoritmos.mp4 +3 -0
  32. a/Curso de Matemáticas Discretas/07-Conclusiones/01-Repaso Final de Matemáticas Discretas Lógica Conjuntos y Algoritmos.vtt +58 -0
  33. a/Curso de Matemáticas Discretas/07-Conclusiones/01-Resumen.html +0 -0
.gitattributes CHANGED
@@ -669,3 +669,13 @@ a/Curso[[:space:]]de[[:space:]]Matemáticas[[:space:]]Discretas/05-Árboles/01-
669
  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
670
  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
671
  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
 
 
 
 
 
 
 
 
 
 
 
669
  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
670
  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
671
  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
672
+ 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
673
+ 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
674
+ 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
675
+ 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
676
+ 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
677
+ 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
678
+ 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
679
+ 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
680
+ 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
681
+ 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
a/Curso de Matemáticas Discretas/05-Árboles/04-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Matemáticas Discretas/05-Árboles/05-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Matemáticas Discretas/05-Árboles/05-Tipos de Árboles Binarios y sus Características.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:410f69d183ac4e2f0813bf5cf5ac5a39e299a74790163a6f1b2dbc5914bcaad7
3
+ size 61250064
a/Curso de Matemáticas Discretas/05-Árboles/05-Tipos de Árboles Binarios y sus Características.vtt ADDED
@@ -0,0 +1,310 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:04.000 --> 00:00:06.819
4
+ Un árbol binario es un árbol donde máximo
5
+
6
+ 00:00:07.120 --> 00:00:10.000
7
+ tenemos dos hijos por cada uno de los
8
+
9
+ 00:00:10.000 --> 00:00:13.440
10
+ vértices. En la siguiente imagen podemos apreciar lo
11
+
12
+ 00:00:13.440 --> 00:00:17.035
13
+ que sería un árbol binario. Vemos que ninguno
14
+
15
+ 00:00:17.035 --> 00:00:20.075
16
+ de esos nodos, por ejemplo, tiene más de
17
+
18
+ 00:00:20.075 --> 00:00:21.995
19
+ dos hijos. Vemos que el nodo b, por
20
+
21
+ 00:00:21.995 --> 00:00:24.075
22
+ ejemplo, tiene dos hijos, que el nodo g
23
+
24
+ 00:00:24.075 --> 00:00:26.735
25
+ tiene dos hijos, y que los otros tienen
26
+
27
+ 00:00:26.955 --> 00:00:30.190
28
+ un solo hijo. A esto le denominamos un
29
+
30
+ 00:00:30.190 --> 00:00:33.150
31
+ árbol binario, bi, que viene de dos. Cuando
32
+
33
+ 00:00:33.150 --> 00:00:36.590
34
+ hablamos de árbol binario, tenemos que tener en
35
+
36
+ 00:00:36.590 --> 00:00:40.370
37
+ cuenta nuevamente la anotación, donde el nodo que
38
+
39
+ 00:00:40.510 --> 00:00:43.070
40
+ esté por el mayor nivel lo vamos a
41
+
42
+ 00:00:43.070 --> 00:00:47.574
43
+ denominar padre Y vamos a utilizar, no solo
44
+
45
+ 00:00:47.574 --> 00:00:50.055
46
+ hijos, sino que como solo tenemos dos posibles
47
+
48
+ 00:00:50.055 --> 00:00:53.175
49
+ opciones, vamos a tener o hijo izquierdo o
50
+
51
+ 00:00:53.175 --> 00:00:57.254
52
+ hijo derecho, ¿de acuerdo? Y es necesario que
53
+
54
+ 00:00:57.254 --> 00:00:59.820
55
+ cada nodo, si tiene hijos, pues cada nodo
56
+
57
+ 00:00:59.820 --> 00:01:03.660
58
+ puede ser padre nuevamente. Por ejemplo, este nodo
59
+
60
+ 00:01:03.660 --> 00:01:07.180
61
+ b que vemos allí es hijo izquierdo de
62
+
63
+ 00:01:07.180 --> 00:01:10.560
64
+ ese nodo a, que es el padre, ¿verdad?
65
+
66
+ 00:01:11.180 --> 00:01:14.155
67
+ Pero ese nodo b también es padre, también
68
+
69
+ 00:01:14.155 --> 00:01:17.115
70
+ es padre y también puede ser raíz de
71
+
72
+ 00:01:17.115 --> 00:01:19.115
73
+ el nodo d, que en este caso sería
74
+
75
+ 00:01:19.115 --> 00:01:22.475
76
+ su hijo izquierdo y el e que sería
77
+
78
+ 00:01:22.475 --> 00:01:25.595
79
+ su hijo derecho. De la misma manera el
80
+
81
+ 00:01:25.595 --> 00:01:28.230
82
+ nodo c, por ejemplo, también podría ser padre
83
+
84
+ 00:01:28.230 --> 00:01:30.630
85
+ del nodo f y el nodo f es
86
+
87
+ 00:01:30.630 --> 00:01:33.670
88
+ padre del nodo g. Y así es como
89
+
90
+ 00:01:33.670 --> 00:01:36.790
91
+ nos vamos a identificar, cómo vamos a poder
92
+
93
+ 00:01:36.790 --> 00:01:41.325
94
+ recorrer los árboles más adelante. Antes de iniciar
95
+
96
+ 00:01:41.325 --> 00:01:43.085
97
+ lo que es el recorrido de árboles, quiero
98
+
99
+ 00:01:43.085 --> 00:01:46.605
100
+ que observemos algunos tipos de árboles binarios que
101
+
102
+ 00:01:46.605 --> 00:01:50.365
103
+ podemos encontrar cuando nosotros trabajamos. El primero de
104
+
105
+ 00:01:50.365 --> 00:01:53.430
106
+ ellos es el árbol binario completo. Y ¿por
107
+
108
+ 00:01:53.430 --> 00:01:56.549
109
+ qué se le llama completo? Porque este árbol
110
+
111
+ 00:01:56.549 --> 00:01:59.590
112
+ tiene o dos hijos, es decir sus dos
113
+
114
+ 00:01:59.590 --> 00:02:02.009
115
+ ramas bien definidas o no tiene ninguna. Como
116
+
117
+ 00:02:02.710 --> 00:02:05.689
118
+ vemos allí en pantallas, el nodo d tiene
119
+
120
+ 00:02:05.990 --> 00:02:09.215
121
+ cero, el nodo e tiene dos, el nodo
122
+
123
+ 00:02:09.215 --> 00:02:11.335
124
+ f tiene cero, y el nodo g tiene
125
+
126
+ 00:02:11.335 --> 00:02:13.895
127
+ cero. Esas son las dos opciones. O el
128
+
129
+ 00:02:13.895 --> 00:02:16.695
130
+ nodo no tiene hijos o tiene sus dos
131
+
132
+ 00:02:16.695 --> 00:02:19.335
133
+ hijos completos, ¿de acuerdo? Y a eso le
134
+
135
+ 00:02:19.335 --> 00:02:22.350
136
+ vamos a llamar un árbol binario completo. Hay
137
+
138
+ 00:02:22.350 --> 00:02:24.190
139
+ otro tipo de árbol que se llama un
140
+
141
+ 00:02:24.190 --> 00:02:27.150
142
+ árbol binario lleno. Lo podemos ver allí en
143
+
144
+ 00:02:27.150 --> 00:02:30.270
145
+ pantallas. Y tú dirás, bueno, pero yo los
146
+
147
+ 00:02:30.270 --> 00:02:33.470
148
+ veo exactamente iguales, o tienen dos hijos o
149
+
150
+ 00:02:33.470 --> 00:02:36.735
151
+ tienen cero hijos. Sí, en parte tienes razón.
152
+
153
+ 00:02:36.875 --> 00:02:39.755
154
+ La diferencia es que todos llegan hasta un
155
+
156
+ 00:02:39.755 --> 00:02:42.795
157
+ mismo nivel. Como podemos ver, en el árbol
158
+
159
+ 00:02:42.795 --> 00:02:46.155
160
+ binario completo, el nodo b tiene un nivel
161
+
162
+ 00:02:46.155 --> 00:02:50.260
163
+ más de hijos, mientras que los otros nodos
164
+
165
+ 00:02:50.260 --> 00:02:53.980
166
+ DFYG se quedaron más atrás. En el árbol
167
+
168
+ 00:02:53.980 --> 00:02:57.940
169
+ binario lleno todos los nodos llegan hasta un
170
+
171
+ 00:02:57.940 --> 00:03:00.819
172
+ mismo punto y al final todas sus ramas
173
+
174
+ 00:03:00.819 --> 00:03:03.814
175
+ o todas sus hojas son terminales. Esa es
176
+
177
+ 00:03:03.814 --> 00:03:07.515
178
+ la principal diferencia. Y tenemos el árbol degenerado
179
+
180
+ 00:03:08.135 --> 00:03:10.935
181
+ que, si lo analizamos, pues, no tiene mucho
182
+
183
+ 00:03:10.935 --> 00:03:13.015
184
+ de árbol y es porque la mayoría de
185
+
186
+ 00:03:13.015 --> 00:03:15.995
187
+ sus hijos están compuestos por una sola conexión.
188
+
189
+ 00:03:16.300 --> 00:03:18.780
190
+ Es decir, la mayoría de sus nodos solo
191
+
192
+ 00:03:18.780 --> 00:03:21.600
193
+ tienen un hijo. Y por eso es como
194
+
195
+ 00:03:22.620 --> 00:03:27.420
196
+ se le llama degenerado. Cuando tú vas a
197
+
198
+ 00:03:27.420 --> 00:03:31.285
199
+ programar, o si estás trabajando en tu proyecto,
200
+
201
+ 00:03:31.285 --> 00:03:34.165
202
+ es necesario que tengas muy en cuenta los
203
+
204
+ 00:03:34.165 --> 00:03:36.325
205
+ árboles binarios porque te van a ayudar a
206
+
207
+ 00:03:36.325 --> 00:03:39.845
208
+ solucionar muchos problemas. ¿Y por qué? Porque el
209
+
210
+ 00:03:39.845 --> 00:03:43.650
211
+ árbol binario es una estructura recursiva. Y cuando
212
+
213
+ 00:03:43.650 --> 00:03:46.370
214
+ hablamos de que es una estructura recursiva, nos
215
+
216
+ 00:03:46.370 --> 00:03:49.670
217
+ referimos a que puede llamarse a sí misma.
218
+
219
+ 00:03:50.050 --> 00:03:52.610
220
+ Es decir, tú puedes descomponer un árbol muy
221
+
222
+ 00:03:52.610 --> 00:03:56.985
223
+ grande en problemas o iteraciones muy pequeñas. Por
224
+
225
+ 00:03:56.985 --> 00:03:59.784
226
+ ejemplo, supongamos que tenemos el árbol que vemos
227
+
228
+ 00:03:59.784 --> 00:04:03.845
229
+ en pantalla. Tú puedes descomponer este árbol en
230
+
231
+ 00:04:03.864 --> 00:04:08.185
232
+ tres partes, que es un árbol raíz, un
233
+
234
+ 00:04:08.185 --> 00:04:12.850
235
+ sub árbol izquierdo, ¿verdad? Que en este caso
236
+
237
+ 00:04:12.910 --> 00:04:15.490
238
+ sería esa parte que hemos de b. Recordemos
239
+
240
+ 00:04:15.710 --> 00:04:17.630
241
+ que no vamos a tener en cuenta lo
242
+
243
+ 00:04:17.630 --> 00:04:19.570
244
+ que está arriba sino nos vamos a basar
245
+
246
+ 00:04:20.270 --> 00:04:22.510
247
+ a tener en cuenta ese nodo como raíz
248
+
249
+ 00:04:22.510 --> 00:04:24.965
250
+ y desprender lo que hay abajo. Y también
251
+
252
+ 00:04:25.425 --> 00:04:28.145
253
+ tenemos un sub árbol derecho que en este
254
+
255
+ 00:04:28.145 --> 00:04:34.225
256
+ caso sería CFYB. Pero si nosotros analizamos nuevamente
257
+
258
+ 00:04:34.225 --> 00:04:37.525
259
+ ese sub árbol izquierdo, ese sub árbol izquierdo
260
+
261
+ 00:04:37.720 --> 00:04:41.960
262
+ puede nuevamente ser descompuesto, ¿en qué? En una
263
+
264
+ 00:04:41.960 --> 00:04:45.720
265
+ raíz, en un sub árbol izquierdo y en
266
+
267
+ 00:04:45.720 --> 00:04:48.460
268
+ un sub árbol derecho y esto lo podemos
269
+
270
+ 00:04:48.520 --> 00:04:51.485
271
+ aplicar para todos los árboles y cada uno
272
+
273
+ 00:04:51.485 --> 00:04:53.965
274
+ de esos nuevos nodos los podemos volver a
275
+
276
+ 00:04:53.965 --> 00:04:56.765
277
+ descomponer. Entonces, los podemos volver a llamar a
278
+
279
+ 00:04:56.765 --> 00:05:00.125
280
+ sí mismo y podemos utilizar una mismo un
281
+
282
+ 00:05:00.125 --> 00:05:02.845
283
+ mismo código que utilizamos para una parte muy
284
+
285
+ 00:05:02.845 --> 00:05:06.500
286
+ pequeña, utilizarlo para problemas mucho más complejos o
287
+
288
+ 00:05:06.500 --> 00:05:12.259
289
+ mucho más grandes, más complejos. Y viene un
290
+
291
+ 00:05:12.259 --> 00:05:15.560
292
+ tema súper importante y es el recorrido de
293
+
294
+ 00:05:15.620 --> 00:05:17.700
295
+ árboles, que nos va a permitir expresar todo
296
+
297
+ 00:05:17.700 --> 00:05:20.020
298
+ esto que estamos viendo a través de código.
299
+
300
+ 00:05:20.020 --> 00:05:23.675
301
+ ¿Cómo podemos denominar este código? En la próxima
302
+
303
+ 00:05:23.854 --> 00:05:26.315
304
+ clase aprenderemos lo que es recorrer un árbol
305
+
306
+ 00:05:26.615 --> 00:05:30.375
307
+ en preorden, en entreorden y en posorden. No
308
+
309
+ 00:05:30.375 --> 00:05:31.755
310
+ te la pierdas, vamos.
a/Curso de Matemáticas Discretas/05-Árboles/06-Recorridos de Árboles Preorden Inorden y Posorden.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9d8ea5525a7ff7930a9ab84a2602d189fa4412605993d59702b1557bc9b779bf
3
+ size 127120757
a/Curso de Matemáticas Discretas/05-Árboles/06-Recorridos de Árboles Preorden Inorden y Posorden.vtt ADDED
@@ -0,0 +1,613 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:04.000 --> 00:00:06.560
4
+ Lo que vemos en el tablero es un
5
+
6
+ 00:00:06.560 --> 00:00:09.540
7
+ árbol a los cuales ya hemos estado acostumbrados,
8
+
9
+ 00:00:10.160 --> 00:00:13.280
10
+ este árbol puede representar muchas cosas entre ellas
11
+
12
+ 00:00:13.280 --> 00:00:15.834
13
+ datos y el tema que vamos a ver
14
+
15
+ 00:00:15.834 --> 00:00:18.154
16
+ en esta clase es súper importante, el recorrido
17
+
18
+ 00:00:18.154 --> 00:00:22.074
19
+ de árboles, ¿por qué? Porque como vimos dependiendo
20
+
21
+ 00:00:22.074 --> 00:00:24.314
22
+ de la estructura, del orden en que yo
23
+
24
+ 00:00:24.314 --> 00:00:27.195
25
+ tome estos datos, todo mi árbol, todo mi
26
+
27
+ 00:00:27.195 --> 00:00:30.880
28
+ sistema puede cambiar, por lo tanto, la estructura
29
+
30
+ 00:00:30.880 --> 00:00:34.360
31
+ y el orden en que yo conozca estos
32
+
33
+ 00:00:34.360 --> 00:00:37.360
34
+ nodos, estos vértices y estas conexiones me va
35
+
36
+ 00:00:37.360 --> 00:00:39.379
37
+ a alterar todo el sistema. Entonces, es importante
38
+
39
+ 00:00:39.440 --> 00:00:41.780
40
+ que yo tenga un orden y una estructura
41
+
42
+ 00:00:42.000 --> 00:00:44.945
43
+ clara de los datos. Por ejemplo, si estamos
44
+
45
+ 00:00:44.945 --> 00:00:48.925
46
+ hablando de las carpetas en tu computador, ¿cómo
47
+
48
+ 00:00:48.925 --> 00:00:52.145
49
+ accedes tú a una carpeta donde están tus
50
+
51
+ 00:00:52.145 --> 00:00:54.945
52
+ videojuegos, donde están tus imágenes? Siempre tiene que
53
+
54
+ 00:00:54.945 --> 00:00:57.870
55
+ haber un orden estructurado donde tus imágenes están
56
+
57
+ 00:00:57.870 --> 00:01:00.350
58
+ en una carpeta que se llama imágenes y
59
+
60
+ 00:01:00.350 --> 00:01:02.190
61
+ esa está en una carpeta que se llama
62
+
63
+ 00:01:02.190 --> 00:01:05.630
64
+ equipo, entonces todo tiene una secuencia, todo tiene
65
+
66
+ 00:01:05.630 --> 00:01:09.410
67
+ una estructura de datos. El recorrido de árboles
68
+
69
+ 00:01:09.470 --> 00:01:12.990
70
+ nos va a permitir pasar esto que tenemos
71
+
72
+ 00:01:12.990 --> 00:01:15.365
73
+ aquí a un código, a una estructura de
74
+
75
+ 00:01:15.365 --> 00:01:17.338
76
+ datos que se pueda leer y por el
77
+
78
+ 00:01:17.338 --> 00:01:19.765
79
+ cual tú puedas identificar, por ejemplo, que acá
80
+
81
+ 00:01:19.765 --> 00:01:22.645
82
+ está tu carpeta de imágenes y el recorrido
83
+
84
+ 00:01:22.645 --> 00:01:24.485
85
+ de árboles nos va a permitir llegar de
86
+
87
+ 00:01:24.485 --> 00:01:27.765
88
+ la manera más óptima a esa carpeta. Entonces
89
+
90
+ 00:01:27.765 --> 00:01:31.360
91
+ vamos a ver cómo puede un programa recorrer
92
+
93
+ 00:01:31.420 --> 00:01:35.740
94
+ un árbol, recorrer una estructura de árboles. Y
95
+
96
+ 00:01:35.740 --> 00:01:38.640
97
+ existen tres formas que son las más conocidas,
98
+
99
+ 00:01:38.860 --> 00:01:42.405
100
+ las más las principales que se usan en
101
+
102
+ 00:01:42.725 --> 00:01:46.265
103
+ informática. La primera de ellas es preorden. ¿Qué
104
+
105
+ 00:01:46.485 --> 00:01:51.205
106
+ nos dice el preorden? Que yo primero leo
107
+
108
+ 00:01:51.205 --> 00:01:54.725
109
+ la raíz de un árbol, yo después me
110
+
111
+ 00:01:54.725 --> 00:01:56.805
112
+ voy a mi nodo izquierdo y después a
113
+
114
+ 00:01:56.805 --> 00:02:00.680
115
+ mi nodo derecho. Si recordamos la anotación en
116
+
117
+ 00:02:00.680 --> 00:02:04.680
118
+ los árboles, mi nuevo raíz va a ser
119
+
120
+ 00:02:04.680 --> 00:02:06.920
121
+ siempre el que esté en un nivel. Por
122
+
123
+ 00:02:06.920 --> 00:02:09.199
124
+ ejemplo en este caso el nuevo raíz de
125
+
126
+ 00:02:09.199 --> 00:02:11.720
127
+ este árbol es esta a que vemos aquí.
128
+
129
+ 00:02:11.720 --> 00:02:15.025
130
+ Esta sería mi raíz o mi padre. Y
131
+
132
+ 00:02:15.725 --> 00:02:18.845
133
+ los hijos serían BYC. Pero cuando hablamos de
134
+
135
+ 00:02:18.845 --> 00:02:21.725
136
+ árboles binarios, es muy importante tener en cuenta
137
+
138
+ 00:02:21.725 --> 00:02:26.430
139
+ que este será el hijo izquierdo y que
140
+
141
+ 00:02:26.430 --> 00:02:31.310
142
+ este será el hijo derecho. De la misma
143
+
144
+ 00:02:31.310 --> 00:02:33.810
145
+ forma yo puedo ir bajando por cada nivel
146
+
147
+ 00:02:34.190 --> 00:02:35.870
148
+ y después decir que este es mi nuevo
149
+
150
+ 00:02:35.870 --> 00:02:38.670
151
+ raíz y por lo tanto d es el
152
+
153
+ 00:02:38.670 --> 00:02:41.175
154
+ hijo izquierdo de BYE es el hijo derecho
155
+
156
+ 00:02:41.415 --> 00:02:45.115
157
+ y puedo repetir esta secuencia para cada uno
158
+
159
+ 00:02:45.135 --> 00:02:48.635
160
+ de los niveles que encuentro en mi árbol.
161
+
162
+ 00:02:49.095 --> 00:02:53.355
163
+ Entonces empecemos a analizar el recorrido de árboles
164
+
165
+ 00:02:54.295 --> 00:02:59.280
166
+ por el preorden, preorden, que nos dice que
167
+
168
+ 00:02:59.280 --> 00:03:03.299
169
+ primero vamos a tener en cuenta la raíz,
170
+
171
+ 00:03:03.680 --> 00:03:06.400
172
+ después el hijo izquierdo y después el hijo
173
+
174
+ 00:03:06.400 --> 00:03:11.405
175
+ derecho. Siempre empezamos por arriba, siempre empecemos por
176
+
177
+ 00:03:11.405 --> 00:03:14.845
178
+ la raíz principal de todo mi sistema, empecemos
179
+
180
+ 00:03:14.845 --> 00:03:17.885
181
+ por el nodo a, el nodo a es
182
+
183
+ 00:03:17.885 --> 00:03:20.125
184
+ mi nodo raíz y si yo voy al
185
+
186
+ 00:03:20.125 --> 00:03:22.740
187
+ pre orden lo primero que yo voy a
188
+
189
+ 00:03:23.060 --> 00:03:26.200
190
+ analizar es la raíz, así que yo la
191
+
192
+ 00:03:26.660 --> 00:03:29.940
193
+ escribo. Después me voy a mi a mi
194
+
195
+ 00:03:29.940 --> 00:03:32.520
196
+ hijo izquierdo, que en este caso es b
197
+
198
+ 00:03:32.820 --> 00:03:35.140
199
+ y este b se vuelve a convertir en
200
+
201
+ 00:03:35.140 --> 00:03:37.395
202
+ una raíz porque vemos que tiene más hijos,
203
+
204
+ 00:03:37.875 --> 00:03:40.115
205
+ como se convierte en raíz y como lo
206
+
207
+ 00:03:40.115 --> 00:03:43.155
208
+ que yo anoto es la raíz, yo voy
209
+
210
+ 00:03:43.155 --> 00:03:48.035
211
+ a notar ese nodo b. Nuevamente repito me
212
+
213
+ 00:03:48.035 --> 00:03:52.030
214
+ voy por la izquierda, esa izquierda no tiene
215
+
216
+ 00:03:52.030 --> 00:03:54.690
217
+ hijos, es un no, es un vértice terminal,
218
+
219
+ 00:03:55.470 --> 00:03:58.430
220
+ por lo tanto es la izquierda, así que
221
+
222
+ 00:03:58.430 --> 00:04:00.750
223
+ la noto porque después de la raíz viene
224
+
225
+ 00:04:00.750 --> 00:04:05.005
226
+ la izquierda y después de la izquierda vendría
227
+
228
+ 00:04:05.005 --> 00:04:08.045
229
+ a la derecha que sería esta e que
230
+
231
+ 00:04:08.045 --> 00:04:11.885
232
+ tenemos aquí, pero ese e se convierte en
233
+
234
+ 00:04:11.885 --> 00:04:15.510
235
+ una nueva raíz así que el pre orden
236
+
237
+ 00:04:15.510 --> 00:04:18.089
238
+ nos dice que anotamos la raíz nuevamente, entonces
239
+
240
+ 00:04:18.310 --> 00:04:21.670
241
+ la anotamos. Luego de esto viene el hijo
242
+
243
+ 00:04:21.670 --> 00:04:27.510
244
+ izquierdo, que sería g, efectivamente es un hijo
245
+
246
+ 00:04:27.510 --> 00:04:30.945
247
+ izquierdo porque ya no tiene más más hijos,
248
+
249
+ 00:04:31.005 --> 00:04:34.385
250
+ así que lo anotamos g y después pasaríamos
251
+
252
+ 00:04:34.845 --> 00:04:37.565
253
+ al hijo derecho. El hijo derecho efectivamente en
254
+
255
+ 00:04:37.565 --> 00:04:40.285
256
+ este caso es el hijo derecho porque ya
257
+
258
+ 00:04:40.285 --> 00:04:43.005
259
+ no tiene más más más hijos, por lo
260
+
261
+ 00:04:43.005 --> 00:04:45.165
262
+ tanto no se convierte en raíz, entonces lo
263
+
264
+ 00:04:45.165 --> 00:04:49.300
265
+ anotamos. Y si nos damos cuenta, hemos anotado
266
+
267
+ 00:04:49.320 --> 00:04:51.960
268
+ la raíz y todo lo que tendríamos en
269
+
270
+ 00:04:51.960 --> 00:04:55.800
271
+ el hijo izquierdo. Ahora pasaríamos al hijo derecho,
272
+
273
+ 00:04:55.800 --> 00:04:59.160
274
+ que empezaría con este nodo c que tenemos
275
+
276
+ 00:04:59.160 --> 00:05:02.375
277
+ aquí. Ese c se vuelve a convertir en
278
+
279
+ 00:05:02.375 --> 00:05:06.435
280
+ una raíz porque tiene hijos detrás de él,
281
+
282
+ 00:05:06.615 --> 00:05:08.715
283
+ anotamos la raíz porque es lo primero que
284
+
285
+ 00:05:08.815 --> 00:05:12.775
286
+ vemos en el preorden, luego pasaríamos al hijo
287
+
288
+ 00:05:12.775 --> 00:05:15.095
289
+ izquierdo, en este caso no tiene ningún hijo
290
+
291
+ 00:05:15.095 --> 00:05:18.970
292
+ izquierdo y pasaríamos al hijo derecho que se
293
+
294
+ 00:05:19.190 --> 00:05:22.470
295
+ convierte en raíz, raíz que anotamos porque es
296
+
297
+ 00:05:22.470 --> 00:05:26.390
298
+ lo primero que vemos. Ahora pasamos a la
299
+
300
+ 00:05:26.390 --> 00:05:29.755
301
+ izquierda y vemos que acá no hay nada
302
+
303
+ 00:05:29.755 --> 00:05:31.435
304
+ más, por lo tanto si es mi izquierda
305
+
306
+ 00:05:31.435 --> 00:05:35.515
307
+ así que anotamos. Y hemos completado lo que
308
+
309
+ 00:05:35.515 --> 00:05:38.715
310
+ sería, hemos recorrido este árbol a través de
311
+
312
+ 00:05:38.715 --> 00:05:41.050
313
+ lo que sería el pre orden, ¿de acuerdo?
314
+
315
+ 00:05:41.050 --> 00:05:45.530
316
+ Ya lo hemos conseguido. Vamos a ver cómo
317
+
318
+ 00:05:45.530 --> 00:05:49.949
319
+ sería el recorrido de este árbol ahora utilizando
320
+
321
+ 00:05:51.050 --> 00:05:55.435
322
+ el inorden, que como vemos tiene como principal
323
+
324
+ 00:05:55.435 --> 00:05:58.255
325
+ elemento la izquierda, después iría a la raíz
326
+
327
+ 00:05:58.634 --> 00:06:01.675
328
+ y después iría a la derecha, analicémoslo con
329
+
330
+ 00:06:01.675 --> 00:06:09.430
331
+ el ejemplo, vamos con el in orden. Primero
332
+
333
+ 00:06:09.430 --> 00:06:12.950
334
+ voy por la izquierda empecemos desde nuestra raíz
335
+
336
+ 00:06:12.950 --> 00:06:16.070
337
+ tengo mi raíz a como es raíz no
338
+
339
+ 00:06:16.070 --> 00:06:18.230
340
+ la voy a anotar porque primero va a
341
+
342
+ 00:06:18.230 --> 00:06:21.290
343
+ notaría la izquierda, me voy a mi izquierda
344
+
345
+ 00:06:21.910 --> 00:06:25.135
346
+ esta se me vuelve nuevamente una raíz por
347
+
348
+ 00:06:25.135 --> 00:06:28.815
349
+ lo tanto no la voy a anotar, sigo
350
+
351
+ 00:06:28.815 --> 00:06:31.215
352
+ bajando hasta que encuentre un vértice que sea
353
+
354
+ 00:06:31.215 --> 00:06:33.935
355
+ netamente izquierdo como en este caso es el
356
+
357
+ 00:06:33.935 --> 00:06:37.295
358
+ vértice d, este efectivamente si es un hijo
359
+
360
+ 00:06:37.295 --> 00:06:39.639
361
+ izquierdo ya no tiene más hijos por lo
362
+
363
+ 00:06:39.639 --> 00:06:42.680
364
+ tanto lo puedo anotar porque yo empiezo por
365
+
366
+ 00:06:42.680 --> 00:06:46.759
367
+ mi izquierda. Después de esto voy a mi
368
+
369
+ 00:06:46.759 --> 00:06:50.039
370
+ nuevo raíz que lo voy a anotar que
371
+
372
+ 00:06:50.039 --> 00:06:53.815
373
+ sería en este caso b, lo anotó porque
374
+
375
+ 00:06:53.815 --> 00:06:55.495
376
+ es la raíz de mi hijo izquierdo que
377
+
378
+ 00:06:55.495 --> 00:06:59.575
379
+ ya he notado y ahora voy a mi
380
+
381
+ 00:06:59.575 --> 00:07:02.975
382
+ parte derecha, ya tengo izquierdo raíz voy a
383
+
384
+ 00:07:02.975 --> 00:07:05.680
385
+ mi derecha que sería esta e, pero esa
386
+
387
+ 00:07:05.680 --> 00:07:08.000
388
+ e se convierte en mi nuevo raíz porque
389
+
390
+ 00:07:08.000 --> 00:07:10.560
391
+ tiene hijos, por lo tanto no la noto
392
+
393
+ 00:07:10.560 --> 00:07:13.060
394
+ y me voy a su izquierda. Como este
395
+
396
+ 00:07:13.200 --> 00:07:17.780
397
+ nuevamente es un nodo netamente izquierdo lo escribo
398
+
399
+ 00:07:18.160 --> 00:07:21.395
400
+ y escribo la raíz del que viene y
401
+
402
+ 00:07:22.335 --> 00:07:24.895
403
+ ahora sí puedo escribir esta derecha que es
404
+
405
+ 00:07:24.895 --> 00:07:29.075
406
+ netamente derecha, por lo tanto esa sí va
407
+
408
+ 00:07:29.695 --> 00:07:31.855
409
+ aquí y si observamos la estructura de los
410
+
411
+ 00:07:31.855 --> 00:07:38.540
412
+ datos que hemos escrito fue izquierda, raíz y
413
+
414
+ 00:07:38.540 --> 00:07:41.500
415
+ toda esta parte derecha. Como ya tenemos toda
416
+
417
+ 00:07:41.500 --> 00:07:44.620
418
+ esta parte izquierda, podemos escribir la raíz de
419
+
420
+ 00:07:44.620 --> 00:07:48.300
421
+ donde viene toda esta parte izquierda. Y ahora
422
+
423
+ 00:07:48.300 --> 00:07:51.514
424
+ vamos a analizar la parte derecha que vendría
425
+
426
+ 00:07:52.294 --> 00:07:55.514
427
+ siendo toda esta línea y empezamos por acá.
428
+
429
+ 00:07:56.375 --> 00:07:59.194
430
+ Pero esta es una raíz porque tiene hijos
431
+
432
+ 00:07:59.495 --> 00:08:01.655
433
+ y no la notamos porque primero vamos a
434
+
435
+ 00:08:01.655 --> 00:08:05.230
436
+ la izquierda. Notamos que esta no tiene izquierda,
437
+
438
+ 00:08:05.370 --> 00:08:08.410
439
+ por lo tanto vamos a la raíz que
440
+
441
+ 00:08:08.410 --> 00:08:12.250
442
+ sería c y vamos al hijo derecho que
443
+
444
+ 00:08:12.250 --> 00:08:15.370
445
+ sería f. Este se convierte en raíz, por
446
+
447
+ 00:08:15.370 --> 00:08:17.950
448
+ lo tanto vamos a su izquierda que sería
449
+
450
+ 00:08:18.010 --> 00:08:20.875
451
+ I y vamos a su raíz que sería
452
+
453
+ 00:08:21.735 --> 00:08:25.815
454
+ f y hemos completado el recorrido de este
455
+
456
+ 00:08:25.815 --> 00:08:28.715
457
+ árbol a través de la estructura de datos
458
+
459
+ 00:08:28.775 --> 00:08:31.740
460
+ en orden. Vemos cómo puede variar y cómo
461
+
462
+ 00:08:32.220 --> 00:08:35.260
463
+ una simple alteración de algún nuevo vértice te
464
+
465
+ 00:08:35.260 --> 00:08:39.260
466
+ haría un árbol completamente diferente. Vamos por último
467
+
468
+ 00:08:39.260 --> 00:08:43.339
469
+ a analizar lo que sería el posorden, que
470
+
471
+ 00:08:43.339 --> 00:08:47.565
472
+ como vemos empieza por el hijo izquierdo, va
473
+
474
+ 00:08:47.565 --> 00:08:50.225
475
+ al hijo derecho y termina en la raíz.
476
+
477
+ 00:08:51.324 --> 00:08:57.324
478
+ Entonces anotemos acá, post orden y empecemos a
479
+
480
+ 00:08:57.324 --> 00:09:02.460
481
+ analizar. Partamos nuevamente de nuestra raíz, de nuestra
482
+
483
+ 00:09:02.460 --> 00:09:05.980
484
+ raíz a, es raíz así que no la
485
+
486
+ 00:09:05.980 --> 00:09:08.400
487
+ anotamos porque vamos a iniciar por la izquierda,
488
+
489
+ 00:09:08.940 --> 00:09:12.140
490
+ vamos al nodo b, es raíz no lo
491
+
492
+ 00:09:12.140 --> 00:09:15.815
493
+ anotamos, seguimos bajando por la izquierda y vemos
494
+
495
+ 00:09:15.815 --> 00:09:18.454
496
+ que esta efectivamente sí es una raíz izquierda
497
+
498
+ 00:09:18.454 --> 00:09:20.454
499
+ porque ya no tiene más hijos así que
500
+
501
+ 00:09:20.454 --> 00:09:23.495
502
+ la vamos a escribir. Sin embargo en este
503
+
504
+ 00:09:23.495 --> 00:09:25.815
505
+ caso no vamos a anotar la raíz sino
506
+
507
+ 00:09:25.815 --> 00:09:27.810
508
+ que nos vamos a ir a la derecha,
509
+
510
+ 00:09:28.210 --> 00:09:31.250
511
+ a la derecha de mi árbol, pero este
512
+
513
+ 00:09:31.250 --> 00:09:33.730
514
+ es un nuevo raíz porque tiene hijos, así
515
+
516
+ 00:09:33.730 --> 00:09:36.370
517
+ que nos vamos a su izquierda y este
518
+
519
+ 00:09:36.370 --> 00:09:39.010
520
+ es una izquierda efectivamente así que lo vamos
521
+
522
+ 00:09:39.010 --> 00:09:43.565
523
+ a anotar. Una vez tenemos este, nos vamos
524
+
525
+ 00:09:43.565 --> 00:09:46.524
526
+ es a la derecha y como este es
527
+
528
+ 00:09:46.524 --> 00:09:50.204
529
+ totalmente derecha, no tiene hijos, lo podemos anotar
530
+
531
+ 00:09:50.204 --> 00:09:54.125
532
+ que sería h y una vez tengo ya
533
+
534
+ 00:09:54.125 --> 00:09:57.200
535
+ la izquierda, la derecha, en ese caso sí
536
+
537
+ 00:09:57.200 --> 00:10:01.360
538
+ anotó la raíz, la raíz. Ahora ya tengo
539
+
540
+ 00:10:01.360 --> 00:10:05.700
541
+ la izquierda, la derecha, ya puedo anotar esta
542
+
543
+ 00:10:05.840 --> 00:10:10.615
544
+ raíz. Ya tengo toda esta izquierda, ahora vamos
545
+
546
+ 00:10:10.615 --> 00:10:14.135
547
+ a analizar toda esta derecha. En esta derecha
548
+
549
+ 00:10:14.135 --> 00:10:17.095
550
+ vemos que tenemos una raíz que no vamos
551
+
552
+ 00:10:17.095 --> 00:10:19.655
553
+ a anotar porque tenemos es que anotar la
554
+
555
+ 00:10:19.655 --> 00:10:22.910
556
+ izquierda, no hay izquierda, vamos a su derecha,
557
+
558
+ 00:10:23.850 --> 00:10:26.170
559
+ esta derecha se convierte en raíz, por lo
560
+
561
+ 00:10:26.170 --> 00:10:29.210
562
+ tanto no la anotamos, así que anotamos la
563
+
564
+ 00:10:29.210 --> 00:10:33.530
565
+ izquierda que sería I. Y ya tenemos la
566
+
567
+ 00:10:33.530 --> 00:10:36.225
568
+ izquierda, ahora vamos a la derecha, no hay
569
+
570
+ 00:10:36.605 --> 00:10:41.325
571
+ nada, anotamos su raíz que sería f. Ya
572
+
573
+ 00:10:41.325 --> 00:10:44.205
574
+ tenemos la izquierda, ya tenemos la derecha, vamos
575
+
576
+ 00:10:44.205 --> 00:10:48.540
577
+ a la raíz que sería c y si
578
+
579
+ 00:10:48.540 --> 00:10:51.820
580
+ analizamos ya tenemos toda la izquierda, ya tenemos
581
+
582
+ 00:10:51.820 --> 00:10:55.600
583
+ toda la parte derecha solo nos queda anotar
584
+
585
+ 00:10:56.300 --> 00:11:01.020
586
+ la raíz y con esto hemos terminado lo
587
+
588
+ 00:11:01.020 --> 00:11:03.345
589
+ que es el recorrido de árboles, vemos cómo
590
+
591
+ 00:11:03.345 --> 00:11:07.185
592
+ cambia dependiendo del orden y de la prioridad
593
+
594
+ 00:11:07.185 --> 00:11:09.425
595
+ que yo le dé a la raíz, al
596
+
597
+ 00:11:09.425 --> 00:11:13.185
598
+ hijo izquierdo y al hijo derecho, esto nos
599
+
600
+ 00:11:13.185 --> 00:11:17.070
601
+ servirá para interpretar estos códigos, estos árboles y
602
+
603
+ 00:11:17.070 --> 00:11:19.950
604
+ pasarlos al lenguaje de máquina que seguramente lo
605
+
606
+ 00:11:19.950 --> 00:11:22.910
607
+ utilizarás en tus proyectos y en todo lo
608
+
609
+ 00:11:22.910 --> 00:11:26.990
610
+ que tengas pensado programar. Vamos a la siguiente
611
+
612
+ 00:11:26.990 --> 00:11:27.490
613
+ clase.
a/Curso de Matemáticas Discretas/05-Árboles/06-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Matemáticas Discretas/05-Árboles/07-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Matemáticas Discretas/05-Árboles/07-Árboles Binarios para Expresiones Aritméticas.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:10ca7dcd8f644ae72266d46ed439b58c52044cd7a1f1e07556bb55b2e9fd2f21
3
+ size 139188912
a/Curso de Matemáticas Discretas/05-Árboles/07-Árboles Binarios para Expresiones Aritméticas.vtt ADDED
@@ -0,0 +1,631 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:03.919 --> 00:00:06.399
4
+ Ya vimos que los árboles binarios son estructuras
5
+
6
+ 00:00:06.399 --> 00:00:09.360
7
+ recursivas que nos permiten simplificar un problema muy
8
+
9
+ 00:00:09.360 --> 00:00:12.740
10
+ grande en problemas chiquitos porque todos siguen manteniendo
11
+
12
+ 00:00:12.880 --> 00:00:14.960
13
+ la misma estructura y se puede llamar a
14
+
15
+ 00:00:14.960 --> 00:00:18.555
16
+ sí mismo. También aprendimos que podemos recorrer los
17
+
18
+ 00:00:18.555 --> 00:00:22.735
19
+ árboles de diferente forma, preorden, intraorden y posorden,
20
+
21
+ 00:00:23.275 --> 00:00:26.395
22
+ para pasarlo a código. Ahora vamos a ver
23
+
24
+ 00:00:26.395 --> 00:00:29.310
25
+ lo que son las expresiones aritméticas. Así es,
26
+
27
+ 00:00:29.310 --> 00:00:33.330
28
+ los árboles también nos sirven para representar expresiones
29
+
30
+ 00:00:33.550 --> 00:00:37.790
31
+ aritméticas. Y para tener este tema súper claro,
32
+
33
+ 00:00:37.790 --> 00:00:40.450
34
+ vamos a aclarar primero las reglas del juego.
35
+
36
+ 00:00:40.910 --> 00:00:44.575
37
+ Supongamos que esta es nuestra expresión aritmética. Las
38
+
39
+ 00:00:44.575 --> 00:00:47.455
40
+ reglas que debes conocer es que, primero, los
41
+
42
+ 00:00:47.455 --> 00:00:50.815
43
+ vértices terminales, es decir, los vértices que están
44
+
45
+ 00:00:50.815 --> 00:00:52.415
46
+ al final de mi árbol y que no
47
+
48
+ 00:00:52.415 --> 00:00:55.215
49
+ tienen hijos, recordemos que esta es la definición
50
+
51
+ 00:00:55.215 --> 00:00:57.715
52
+ de una hoja o de un vértice terminal.
53
+
54
+ 00:00:58.890 --> 00:01:01.570
55
+ Estos vértices van a ser los operandos, van
56
+
57
+ 00:01:01.570 --> 00:01:03.530
58
+ a ser los números con los cuales yo
59
+
60
+ 00:01:03.530 --> 00:01:06.810
61
+ voy a hacer esas operaciones. Nuestra segunda regla
62
+
63
+ 00:01:06.810 --> 00:01:09.530
64
+ es que los vértices internos van a ser
65
+
66
+ 00:01:09.530 --> 00:01:12.815
67
+ esos operadores, esas operaciones que yo voy a
68
+
69
+ 00:01:12.815 --> 00:01:17.795
70
+ realizar entre esos números para llegar a mi
71
+
72
+ 00:01:18.015 --> 00:01:22.335
73
+ expresión final. Los vértices internos, recordemos, son aquellos
74
+
75
+ 00:01:22.335 --> 00:01:26.130
76
+ que tienen hijos dentro del árbol. La raíz
77
+
78
+ 00:01:26.270 --> 00:01:30.270
79
+ siempre debe ser un operador. Esa raíz siempre
80
+
81
+ 00:01:30.270 --> 00:01:31.789
82
+ debe ser un operador y va a ser
83
+
84
+ 00:01:31.789 --> 00:01:34.670
85
+ el operador con más relevancia dentro de nuestra
86
+
87
+ 00:01:34.670 --> 00:01:38.350
88
+ expresión aritmética. ¿Y qué es esa relevancia de
89
+
90
+ 00:01:38.350 --> 00:01:41.685
91
+ nuestra expresión aritmética? Pues bien, cuando nosotros tenemos
92
+
93
+ 00:01:41.685 --> 00:01:45.065
94
+ las diferentes operaciones como suma, resta, multiplicación, dimensión,
95
+
96
+ 00:01:45.285 --> 00:01:48.885
97
+ potencia, cada una tiene un orden y el
98
+
99
+ 00:01:48.885 --> 00:01:52.485
100
+ orden es el siguiente. Siempre vamos a tener
101
+
102
+ 00:01:52.485 --> 00:01:55.660
103
+ como prioridad las cosas que estén entre paréntesis,
104
+
105
+ 00:01:56.280 --> 00:02:01.340
106
+ entre corchetes, entre estos símbolos que vemos allí.
107
+
108
+ 00:02:01.640 --> 00:02:04.120
109
+ Como segundo nivel de prioridad vamos a tener
110
+
111
+ 00:02:04.120 --> 00:02:08.565
112
+ en cuenta las raíces, las potencias. Luego pasaremos
113
+
114
+ 00:02:08.565 --> 00:02:11.925
115
+ a lo que es la multiplicación y la
116
+
117
+ 00:02:11.925 --> 00:02:14.565
118
+ división, y por último la suma y la
119
+
120
+ 00:02:14.565 --> 00:02:16.645
121
+ resta. Este es el nivel de prioridad que
122
+
123
+ 00:02:16.645 --> 00:02:18.965
124
+ tenemos que tener en cuenta cuando analizamos una
125
+
126
+ 00:02:18.965 --> 00:02:21.685
127
+ expresión, no solo en árboles, sino a nivel
128
+
129
+ 00:02:21.685 --> 00:02:25.640
130
+ general en la matemática. Ahora, estos árboles de
131
+
132
+ 00:02:25.640 --> 00:02:29.640
133
+ expresiones aritméticas también tienen una notación, al igual
134
+
135
+ 00:02:29.640 --> 00:02:32.239
136
+ que vimos que podíamos recorrer los árboles de
137
+
138
+ 00:02:32.239 --> 00:02:36.200
139
+ diferentes formas, las las expresiones aritméticas también las
140
+
141
+ 00:02:36.200 --> 00:02:39.665
142
+ podemos recorrer de diferentes formas. D, una forma
143
+
144
+ 00:02:39.665 --> 00:02:42.385
145
+ prefija, en la cual vamos a mencionar primero
146
+
147
+ 00:02:42.385 --> 00:02:45.445
148
+ la raíz, después la izquierda y después la
149
+
150
+ 00:02:45.665 --> 00:02:50.305
151
+ derecha, una forma entrefija, izquierda, raíz, derecha, y
152
+
153
+ 00:02:50.305 --> 00:02:54.430
154
+ una forma posfija, izquierda, derecha, raíz, de la
155
+
156
+ 00:02:54.430 --> 00:02:58.050
157
+ misma forma que era el orden preorden inorden
158
+
159
+ 00:02:58.190 --> 00:03:01.069
160
+ y posorden en el recorrido de árboles. Vamos
161
+
162
+ 00:03:01.069 --> 00:03:05.890
163
+ al tablero para entender perfectamente este tema. Si
164
+
165
+ 00:03:06.110 --> 00:03:11.395
166
+ tenemos la siguiente expresión aritmética nosotros podemos también
167
+
168
+ 00:03:11.395 --> 00:03:14.835
169
+ representarla a través de un árbol y más
170
+
171
+ 00:03:14.835 --> 00:03:16.755
172
+ allá de eso podemos hacer que un programa
173
+
174
+ 00:03:16.755 --> 00:03:20.755
175
+ informático interprete ese árbol a través de una
176
+
177
+ 00:03:20.755 --> 00:03:23.849
178
+ notación y con base en eso hacer operaciones
179
+
180
+ 00:03:24.069 --> 00:03:26.949
181
+ a través de diferentes lenguajes de programación, por
182
+
183
+ 00:03:26.949 --> 00:03:32.090
184
+ ejemplo. Pero, ¿cómo cómo podemos pasar esta esta
185
+
186
+ 00:03:32.150 --> 00:03:36.525
187
+ expresión aritmética a un árbol? Pues bien, vamos
188
+
189
+ 00:03:36.525 --> 00:03:39.765
190
+ a empezar analizando ese orden de prioridad que
191
+
192
+ 00:03:39.765 --> 00:03:43.605
193
+ vimos en nuestra en nuestra clase y allí
194
+
195
+ 00:03:43.605 --> 00:03:45.365
196
+ vimos que lo primero que hay que tomar
197
+
198
+ 00:03:45.365 --> 00:03:48.805
199
+ en cuenta son los paréntesis, los corchetes, lo
200
+
201
+ 00:03:48.805 --> 00:03:52.160
202
+ que tengamos agrupado. En este caso vemos que
203
+
204
+ 00:03:52.160 --> 00:03:57.120
205
+ tenemos una agrupación acá en corchetes, tenemos otra
206
+
207
+ 00:03:57.120 --> 00:04:00.580
208
+ agrupación acá en corchetes y otra agrupación en
209
+
210
+ 00:04:00.720 --> 00:04:03.760
211
+ paréntesis, y nos fijamos que la más pequeña,
212
+
213
+ 00:04:03.760 --> 00:04:06.595
214
+ la agrupación más pequeña que podemos obtener es
215
+
216
+ 00:04:06.595 --> 00:04:10.815
217
+ esta que encontramos en paréntesis acá, así que
218
+
219
+ 00:04:10.835 --> 00:04:15.735
220
+ lo que tendríamos es mis dos nuevos terminales,
221
+
222
+ 00:04:15.955 --> 00:04:18.035
223
+ recordemos que una de las reglas que vimos
224
+
225
+ 00:04:18.035 --> 00:04:21.335
226
+ es que las hojas o los nuevos terminales
227
+
228
+ 00:04:21.550 --> 00:04:24.750
229
+ serán esos números, esas letras o esos operandos
230
+
231
+ 00:04:24.750 --> 00:04:26.830
232
+ que yo tengo. En este caso los operandos
233
+
234
+ 00:04:26.830 --> 00:04:29.070
235
+ son letras y son la d y la
236
+
237
+ 00:04:29.070 --> 00:04:33.550
238
+ e, y están combinados por una operación que
239
+
240
+ 00:04:33.550 --> 00:04:36.445
241
+ va a ser un vértice interno. En este
242
+
243
+ 00:04:36.445 --> 00:04:40.525
244
+ caso tenemos que es el menos, así que
245
+
246
+ 00:04:40.525 --> 00:04:44.545
247
+ lo anotamos aquí. Y esa será la representación
248
+
249
+ 00:04:44.845 --> 00:04:47.005
250
+ a través de un árbol de esta primera
251
+
252
+ 00:04:47.005 --> 00:04:50.610
253
+ operación que yo tengo acá, que sería d
254
+
255
+ 00:04:50.610 --> 00:04:53.890
256
+ menos c. Ahora vamos a analizar lo que
257
+
258
+ 00:04:53.890 --> 00:04:57.730
259
+ sería el corchete. Esta parte de acá que
260
+
261
+ 00:04:57.730 --> 00:05:00.450
262
+ tenemos en un corchete vemos que es c
263
+
264
+ 00:05:00.450 --> 00:05:03.975
265
+ multiplicado por este esta parte que acabamos de
266
+
267
+ 00:05:03.975 --> 00:05:09.474
268
+ analizar. Entonces ponemos nuestro operando acá c y
269
+
270
+ 00:05:10.615 --> 00:05:16.550
271
+ vemos que la operación que que une o
272
+
273
+ 00:05:16.550 --> 00:05:20.330
274
+ que conecta estas dos partes es la multiplicación.
275
+
276
+ 00:05:20.870 --> 00:05:24.070
277
+ Así que la representaríamos a través de esta
278
+
279
+ 00:05:24.070 --> 00:05:28.169
280
+ forma. Observemos que seguimos cumpliendo todas las reglas
281
+
282
+ 00:05:28.630 --> 00:05:31.205
283
+ porque CDYE son mis nodos terminales y van
284
+
285
+ 00:05:31.205 --> 00:05:33.365
286
+ a ser las la los operandos de mi
287
+
288
+ 00:05:33.365 --> 00:05:37.365
289
+ operación aritmética. Ahora pasemos al siguiente corchete, que
290
+
291
+ 00:05:37.365 --> 00:05:41.705
292
+ sería a más b. Podemos colocar simplemente nuestros
293
+
294
+ 00:05:41.845 --> 00:05:45.900
295
+ operandos como vértices terminales y la operación que
296
+
297
+ 00:05:45.900 --> 00:05:50.400
298
+ los une es el más. Y ya tendríamos
299
+
300
+ 00:05:51.500 --> 00:05:55.180
301
+ las diferentes partes de mi estructura representadas a
302
+
303
+ 00:05:55.180 --> 00:05:58.154
304
+ través de un árbol. Solo nos queda colocar
305
+
306
+ 00:05:58.154 --> 00:06:00.635
307
+ el signo de división, que es el que
308
+
309
+ 00:06:00.635 --> 00:06:04.354
310
+ tenemos uniendo ambos corchetes en este caso, y
311
+
312
+ 00:06:04.354 --> 00:06:08.775
313
+ simplemente lo que haremos es colocar la división
314
+
315
+ 00:06:10.035 --> 00:06:12.830
316
+ de ambas partes. Y hemos completado lo que
317
+
318
+ 00:06:12.830 --> 00:06:16.850
319
+ es la representación gráfica, la estructura de esa
320
+
321
+ 00:06:16.950 --> 00:06:20.430
322
+ expresión aritmética. Pero, ¿cómo puede un lenguaje de
323
+
324
+ 00:06:20.430 --> 00:06:23.950
325
+ programación leer esa estructura? Pues bien, ahí es
326
+
327
+ 00:06:23.950 --> 00:06:26.770
328
+ cuando vamos a recurrir al tipo de notación
329
+
330
+ 00:06:27.365 --> 00:06:30.105
331
+ de los árboles, que es, si se fijan,
332
+
333
+ 00:06:31.205 --> 00:06:33.685
334
+ es es como recorremos un árbol. Recordemos que
335
+
336
+ 00:06:33.685 --> 00:06:37.045
337
+ para recordar que recordemos que para recorrer un
338
+
339
+ 00:06:37.045 --> 00:06:41.199
340
+ árbol tenemos preorden, inorden y posorden. En este
341
+
342
+ 00:06:41.199 --> 00:06:44.900
343
+ caso, para recorrer una expresión animética, tenemos prefija,
344
+
345
+ 00:06:45.520 --> 00:06:47.840
346
+ infija y posfija, que son los tipos de
347
+
348
+ 00:06:47.840 --> 00:06:52.340
349
+ notaciones, y que el orden se es es
350
+
351
+ 00:06:53.335 --> 00:06:56.134
352
+ es igual al que manteníamos en el recorrido
353
+
354
+ 00:06:56.134 --> 00:06:58.534
355
+ de árboles. Vamos a ver cómo sería la
356
+
357
+ 00:06:58.534 --> 00:07:02.854
358
+ anotación de esta expresión aritmética a través del
359
+
360
+ 00:07:02.854 --> 00:07:08.310
361
+ prefijo. Si recordamos el prefijo primero vamos a
362
+
363
+ 00:07:08.310 --> 00:07:11.190
364
+ anotar la raíz, después la izquierda y después
365
+
366
+ 00:07:11.190 --> 00:07:14.150
367
+ la derecha y nos servirá para refrescar los
368
+
369
+ 00:07:14.150 --> 00:07:16.949
370
+ conceptos de el recorrido de árboles y ver
371
+
372
+ 00:07:16.949 --> 00:07:20.414
373
+ un poco más a fondo este tema. Nuestra
374
+
375
+ 00:07:20.414 --> 00:07:23.694
376
+ primera raíz es el es la división, como
377
+
378
+ 00:07:23.694 --> 00:07:26.495
379
+ en el prefija vamos a anotar primero la
380
+
381
+ 00:07:26.495 --> 00:07:29.935
382
+ raíz, entonces anotamos la división, nos vamos al
383
+
384
+ 00:07:29.935 --> 00:07:33.775
385
+ nodo izquierdo que se convierte nuevamente en raíz,
386
+
387
+ 00:07:33.775 --> 00:07:37.539
388
+ por lo tanto lo anotamos, vamos ahora al
389
+
390
+ 00:07:37.539 --> 00:07:40.020
391
+ nodo izquierdo que se convierte en ese nodo
392
+
393
+ 00:07:40.020 --> 00:07:43.620
394
+ izquierdo que vamos a anotar, y después de
395
+
396
+ 00:07:43.620 --> 00:07:45.860
397
+ anotar el nodo izquierdo anotamos el derecho, que
398
+
399
+ 00:07:45.860 --> 00:07:48.099
400
+ es derecho nato porque no tiene más hijos,
401
+
402
+ 00:07:48.099 --> 00:07:52.955
403
+ así que lo escribimos. Y ahora vamos a
404
+
405
+ 00:07:52.955 --> 00:07:55.995
406
+ la parte derecha, ya tenemos la raíz, la
407
+
408
+ 00:07:55.995 --> 00:07:59.675
409
+ izquierda y vamos a la derecha que se
410
+
411
+ 00:07:59.675 --> 00:08:02.235
412
+ convierte en raíz, por lo tanto no lo
413
+
414
+ 00:08:02.235 --> 00:08:05.855
415
+ anotamos y vamos a la raíz, al hijo
416
+
417
+ 00:08:05.915 --> 00:08:11.730
418
+ izquierdo. Ah no, vamos al derecho que se
419
+
420
+ 00:08:11.730 --> 00:08:15.570
421
+ convierte en raíz, entonces sí lo escribimos porque
422
+
423
+ 00:08:15.570 --> 00:08:18.470
424
+ primero vamos a anotar la raíz, luego anotamos
425
+
426
+ 00:08:18.690 --> 00:08:21.825
427
+ el nodo hijo izquierdo que sería este c
428
+
429
+ 00:08:21.825 --> 00:08:24.225
430
+ que vemos acá, y pasamos a la parte
431
+
432
+ 00:08:24.225 --> 00:08:27.425
433
+ derecha. En la parte derecha, este menos se
434
+
435
+ 00:08:27.425 --> 00:08:32.784
436
+ convierte en raíz, luego vamos al hijo izquierdo,
437
+
438
+ 00:08:32.784 --> 00:08:36.240
439
+ y luego iríamos al hijo derecho. Y si
440
+
441
+ 00:08:36.240 --> 00:08:38.520
442
+ analizamos en la estructura de datos, lo que
443
+
444
+ 00:08:38.520 --> 00:08:43.020
445
+ tenemos es mi raíz, todo mi hijo izquierdo
446
+
447
+ 00:08:43.400 --> 00:08:47.480
448
+ y todo mi hijo derecho. Ahora vamos a
449
+
450
+ 00:08:47.480 --> 00:08:54.615
451
+ ver lo que sería la anotación infija. Vamos
452
+
453
+ 00:08:54.615 --> 00:08:56.855
454
+ a ver qué es la anotación infija. En
455
+
456
+ 00:08:56.855 --> 00:09:00.215
457
+ la anotación infija vamos a ir primero al
458
+
459
+ 00:09:00.215 --> 00:09:03.700
460
+ hijo izquierdo, después a la raíz y después
461
+
462
+ 00:09:03.700 --> 00:09:06.579
463
+ a la derecha. ¿Cómo sería la anotación infija
464
+
465
+ 00:09:06.579 --> 00:09:09.300
466
+ de este árbol que tenemos en pantalla? Vamos
467
+
468
+ 00:09:09.300 --> 00:09:12.920
469
+ a buscar primero esa ese hijo izquierdo nato,
470
+
471
+ 00:09:13.140 --> 00:09:15.620
472
+ entonces tenemos la raíz, vamos a la izquierda,
473
+
474
+ 00:09:15.620 --> 00:09:19.324
475
+ vemos que tiene más hijos, seguimos así hasta
476
+
477
+ 00:09:19.324 --> 00:09:21.324
478
+ que lleguemos a esta a, porque ya no
479
+
480
+ 00:09:21.324 --> 00:09:22.925
481
+ tiene más hijos, así que es el hijo
482
+
483
+ 00:09:22.925 --> 00:09:25.884
484
+ izquierdo. Vamos ahora a la raíz de ese
485
+
486
+ 00:09:25.884 --> 00:09:29.500
487
+ hijo, que fue s más, y vamos al
488
+
489
+ 00:09:29.500 --> 00:09:31.899
490
+ hijo derecho que se convierte en hijo derecho
491
+
492
+ 00:09:31.899 --> 00:09:34.560
493
+ porque no tiene más hijos y ya tendríamos
494
+
495
+ 00:09:35.259 --> 00:09:38.699
496
+ toda mi parte izquierda. Como ya tenemos la
497
+
498
+ 00:09:38.699 --> 00:09:41.819
499
+ izquierda vamos a la raíz que la vamos
500
+
501
+ 00:09:41.819 --> 00:09:44.380
502
+ a notar y ahora vamos a la parte
503
+
504
+ 00:09:44.380 --> 00:09:48.185
505
+ derecha. Este nodo se convierte en raíz, por
506
+
507
+ 00:09:48.185 --> 00:09:50.825
508
+ lo tanto no lo anotamos y vamos primero
509
+
510
+ 00:09:50.825 --> 00:09:53.945
511
+ a su izquierda. Su izquierda que, como no
512
+
513
+ 00:09:53.945 --> 00:09:55.865
514
+ tiene más hijos, es izquierda, así que la
515
+
516
+ 00:09:55.865 --> 00:09:59.570
517
+ escribimos, anotamos la raíz de esa izquierda y
518
+
519
+ 00:09:59.950 --> 00:10:02.270
520
+ vamos a la parte derecha. En la parte
521
+
522
+ 00:10:02.270 --> 00:10:04.830
523
+ derecha, este se convierte en raíz, no la
524
+
525
+ 00:10:04.830 --> 00:10:08.510
526
+ escribimos. Primero escribimos la izquierda, después la raíz
527
+
528
+ 00:10:08.510 --> 00:10:15.485
529
+ y después izquierda, raíz y después escribimos su
530
+
531
+ 00:10:15.485 --> 00:10:18.324
532
+ derecha. Y como vemos en la estructura total
533
+
534
+ 00:10:18.324 --> 00:10:21.165
535
+ de datos, primero lo que tenemos es mi
536
+
537
+ 00:10:21.165 --> 00:10:25.645
538
+ rama izquierda, mi raíz y después toda mi
539
+
540
+ 00:10:25.645 --> 00:10:29.350
541
+ parte derecha, así que nos quedó completamente bien.
542
+
543
+ 00:10:29.730 --> 00:10:32.390
544
+ Por último vamos a mirar lo que es
545
+
546
+ 00:10:33.890 --> 00:10:37.970
547
+ la anotación pos fija. Si miramos nuestro tablero
548
+
549
+ 00:10:37.970 --> 00:10:39.970
550
+ en la pos fija lo primero que anotamos
551
+
552
+ 00:10:39.970 --> 00:10:43.195
553
+ es la izquierda, después la derecha y después
554
+
555
+ 00:10:43.654 --> 00:10:47.595
556
+ la raíz. Vamos nuevamente a nuestro árbol, raíz,
557
+
558
+ 00:10:49.175 --> 00:10:56.300
559
+ raíz, izquierda, por lo tanto lo anotamos. Analizamos
560
+
561
+ 00:10:56.440 --> 00:10:59.500
562
+ esta que es derecha neta, entonces izquierda, derecha
563
+
564
+ 00:11:00.760 --> 00:11:04.040
565
+ y su raíz, que sería más. Y ya
566
+
567
+ 00:11:04.040 --> 00:11:06.680
568
+ tenemos toda mi parte izquierda. Después de la
569
+
570
+ 00:11:06.680 --> 00:11:09.180
571
+ izquierda vamos a ir a la parte derecha.
572
+
573
+ 00:11:10.565 --> 00:11:13.685
574
+ Este vemos que se convierte nuevamente en raíz
575
+
576
+ 00:11:13.685 --> 00:11:15.845
577
+ por lo tanto vamos a su izquierda, esta
578
+
579
+ 00:11:15.845 --> 00:11:18.965
580
+ sí se convierte en izquierda así que la
581
+
582
+ 00:11:18.965 --> 00:11:23.250
583
+ anotamos y vamos a la parte derecha. Esta
584
+
585
+ 00:11:23.250 --> 00:11:26.209
586
+ parte derecha se convierte en raíz, por lo
587
+
588
+ 00:11:26.209 --> 00:11:30.529
589
+ tanto vamos a su izquierda, vamos a su
590
+
591
+ 00:11:30.529 --> 00:11:37.055
592
+ derecha, vamos a la raíz, ya tenemos izquierda
593
+
594
+ 00:11:37.055 --> 00:11:43.375
595
+ derecha ahora vamos a la raíz y ya
596
+
597
+ 00:11:43.375 --> 00:11:47.795
598
+ tenemos izquierda derecha y vamos a la raíz
599
+
600
+ 00:11:48.330 --> 00:11:50.890
601
+ y es así como si analizamos en la
602
+
603
+ 00:11:50.890 --> 00:11:56.430
604
+ estructura posfija tenemos mi izquierda, tenemos mi derecha
605
+
606
+ 00:11:58.090 --> 00:12:03.495
607
+ y tenemos mi raíz y es así como
608
+
609
+ 00:12:03.495 --> 00:12:08.935
610
+ podemos expresar expresiones aritméticas a través de un
611
+
612
+ 00:12:08.935 --> 00:12:13.095
613
+ lenguaje de código, de un lenguaje máquina y
614
+
615
+ 00:12:13.095 --> 00:12:16.240
616
+ vemos como dependiendo del orden o de la
617
+
618
+ 00:12:16.240 --> 00:12:19.199
619
+ secuencia que elijamos la estructura de datos puede
620
+
621
+ 00:12:19.199 --> 00:12:23.731
622
+ cambiar totalmente. Ya sabes qué es un árbol,
623
+
624
+ 00:12:23.731 --> 00:12:26.291
625
+ cómo lo puedes utilizar, que también te sirve
626
+
627
+ 00:12:26.291 --> 00:12:29.431
628
+ para representar, no solo datos, sino también expresiones
629
+
630
+ 00:12:29.491 --> 00:12:32.951
631
+ aritméticas. Vamos a la siguiente clase.
a/Curso de Matemáticas Discretas/05-Árboles/08-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Matemáticas Discretas/05-Árboles/08-Transformación de Expresiones Aritméticas en Árboles Binarios.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:336fab57b49efe4456a7514e0a05496da7e49f66444372246d4b081c90f8552e
3
+ size 80268472
a/Curso de Matemáticas Discretas/05-Árboles/08-Transformación de Expresiones Aritméticas en Árboles Binarios.vtt ADDED
@@ -0,0 +1,325 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:04.240 --> 00:00:07.060
4
+ Hemos aprendido que los árboles también nos sirven
5
+
6
+ 00:00:07.359 --> 00:00:11.280
7
+ para representar expresiones aritméticas. En esta clase veremos
8
+
9
+ 00:00:11.280 --> 00:00:14.825
10
+ cómo pasar de una expresión pos fija a
11
+
12
+ 00:00:14.825 --> 00:00:18.445
13
+ su respectivo árbol, a su respectiva representación gráfica.
14
+
15
+ 00:00:19.145 --> 00:00:23.005
16
+ Recordemos que el ejercicio nos dice que tenemos
17
+
18
+ 00:00:24.185 --> 00:00:28.445
19
+ la expresión en posfija y si recordamos posfija
20
+
21
+ 00:00:28.985 --> 00:00:36.650
22
+ es izquierda, derecha, raíz. Esto va a ser
23
+
24
+ 00:00:36.650 --> 00:00:39.950
25
+ lo que necesitamos como base para construir nuestro
26
+
27
+ 00:00:40.410 --> 00:00:45.070
28
+ nuestro gráfico, nuestro árbol. Así que empecemos a
29
+
30
+ 00:00:45.129 --> 00:00:47.635
31
+ desglosar este árbol y miremos cómo sería su
32
+
33
+ 00:00:47.635 --> 00:00:52.035
34
+ representación. Siempre nos dice que empezamos por la
35
+
36
+ 00:00:52.035 --> 00:00:54.195
37
+ izquierda, en la post fija, así que sabemos
38
+
39
+ 00:00:54.195 --> 00:00:57.175
40
+ que esta a va a estar en algún
41
+
42
+ 00:00:57.235 --> 00:01:00.934
43
+ punto a la izquierda de mi árbol, ¿verdad?
44
+
45
+ 00:01:01.630 --> 00:01:04.030
46
+ Luego seguiríamos por la derecha y luego por
47
+
48
+ 00:01:04.030 --> 00:01:07.210
49
+ la raíz, pero observemos que si fuera izquierda,
50
+
51
+ 00:01:07.229 --> 00:01:10.670
52
+ derecha, raíz, esta se quedaría como raíz, y
53
+
54
+ 00:01:10.670 --> 00:01:14.590
55
+ nosotros ya sabemos que unas un operando, un
56
+
57
+ 00:01:14.590 --> 00:01:16.725
58
+ número o una letra no puede ser un
59
+
60
+ 00:01:16.725 --> 00:01:20.405
61
+ vértice terminal, por lo tanto, nos adelantaríamos un
62
+
63
+ 00:01:20.405 --> 00:01:23.525
64
+ poco más y miraríamos que el b también
65
+
66
+ 00:01:23.525 --> 00:01:27.445
67
+ sería una izquierda. Entonces, coloquemos nuestro b por
68
+
69
+ 00:01:27.445 --> 00:01:30.869
70
+ acá, sería una izquierda. Si tenemos b como
71
+
72
+ 00:01:30.869 --> 00:01:36.329
73
+ izquierda, tendríamos izquierda derecha raíz. Cumpliríamos la condición
74
+
75
+ 00:01:36.950 --> 00:01:40.470
76
+ de que BYC serían vértices terminales y que
77
+
78
+ 00:01:40.470 --> 00:01:42.375
79
+ m y más sería uno operando y quedaría
80
+
81
+ 00:01:42.595 --> 00:01:46.994
82
+ como un vértice interno. Entonces, eso sí lo
83
+
84
+ 00:01:46.994 --> 00:01:52.055
85
+ podemos hacer. Entonces, tengo izquierda, derecha y raíz,
86
+
87
+ 00:01:52.755 --> 00:01:55.979
88
+ y tengo ya una parte de mi gráfico.
89
+
90
+ 00:01:57.000 --> 00:02:00.940
91
+ La estructura de la de la expresión posfija
92
+
93
+ 00:02:01.080 --> 00:02:04.220
94
+ siempre se tiene que cumplir, izquierda, derecha, raíz,
95
+
96
+ 00:02:04.440 --> 00:02:08.925
97
+ así que ahora tendríamos izquierda, derecha, izquierda, derecha
98
+
99
+ 00:02:09.465 --> 00:02:12.584
100
+ y seguiríamos con la raíz que sería este
101
+
102
+ 00:02:12.584 --> 00:02:17.005
103
+ dividido que vemos allí. Y nuevamente estaríamos cumpliendo
104
+
105
+ 00:02:17.065 --> 00:02:20.444
106
+ la estructura de la anotación posfija, mi izquierda,
107
+
108
+ 00:02:21.060 --> 00:02:25.320
109
+ mi derecha y mi raíz. Como ya tenemos
110
+
111
+ 00:02:26.660 --> 00:02:28.420
112
+ esta estructura, nosotros podemos saber que esta es
113
+
114
+ 00:02:28.420 --> 00:02:31.780
115
+ la izquierda de mi árbol más grande. Entonces,
116
+
117
+ 00:02:31.780 --> 00:02:36.265
118
+ tendríamos izquierda, derecha, todo esto estaría en una
119
+
120
+ 00:02:36.265 --> 00:02:40.205
121
+ rama derecha y nuevamente en esta rama iniciaríamos
122
+
123
+ 00:02:40.345 --> 00:02:44.265
124
+ por la izquierda. Entonces, esta b estaría en
125
+
126
+ 00:02:44.265 --> 00:02:49.100
127
+ un punto nuevamente a mi izquierda, Izquierda, derecha,
128
+
129
+ 00:02:49.100 --> 00:02:51.980
130
+ raíz. Vemos que la condición se cumple, por
131
+
132
+ 00:02:51.980 --> 00:02:56.860
133
+ lo tanto, la podemos colocar izquierda, derecha y
134
+
135
+ 00:02:56.860 --> 00:03:02.075
136
+ raíz, y ya tendríamos esta parte hemigráfica. Nuevamente,
137
+
138
+ 00:03:02.295 --> 00:03:04.935
139
+ el algoritmo se tiene que cumplir para todas
140
+
141
+ 00:03:04.935 --> 00:03:06.615
142
+ las partes de mi gráfica, así que yo
143
+
144
+ 00:03:06.615 --> 00:03:10.935
145
+ tendría una izquierda, una derecha y solo me
146
+
147
+ 00:03:10.935 --> 00:03:14.855
148
+ faltaría colocar una raíz, que sería el último
149
+
150
+ 00:03:14.855 --> 00:03:19.370
151
+ signo que nosotros tenemos acá. Y con esto
152
+
153
+ 00:03:19.370 --> 00:03:22.190
154
+ hemos completado lo que es la representación gráfica
155
+
156
+ 00:03:23.370 --> 00:03:26.890
157
+ de la expresión posfija que nosotros teníamos al
158
+
159
+ 00:03:26.890 --> 00:03:32.855
160
+ principio. Observemos que tenemos izquierda, derecha, raíz, izquierda,
161
+
162
+ 00:03:32.995 --> 00:03:36.455
163
+ derecha, raíz, y hemos cumplido con nuestro objetivo.
164
+
165
+ 00:03:36.835 --> 00:03:40.275
166
+ Pero, ¿cómo sería la notación prefija o la
167
+
168
+ 00:03:40.275 --> 00:03:46.350
169
+ notación entrefija? Entonces, vamos a mirar, primero que
170
+
171
+ 00:03:46.350 --> 00:03:54.110
172
+ todo, cómo sería la notación prefija. Recordemos que
173
+
174
+ 00:03:54.110 --> 00:04:00.724
175
+ mi notación prefija va de la forma raíz
176
+
177
+ 00:04:00.724 --> 00:04:07.204
178
+ izquierda y derecha. Así que empezaríamos, en este
179
+
180
+ 00:04:07.204 --> 00:04:10.084
181
+ caso, con nuestra raíz principal, que sería la
182
+
183
+ 00:04:10.084 --> 00:04:14.920
184
+ raíz principal de mi árbol, tendríamos menos, nos
185
+
186
+ 00:04:14.920 --> 00:04:18.520
187
+ iríamos a la izquierda, a la izquierda se
188
+
189
+ 00:04:18.520 --> 00:04:23.320
190
+ convertirían nuevamente en raíz, así que tendríamos, la
191
+
192
+ 00:04:23.320 --> 00:04:26.395
193
+ escribiríamos, iríamos a la izquierda, es una izquierda
194
+
195
+ 00:04:26.395 --> 00:04:29.294
196
+ porque ya no tiene más hijos. Entonces, raíz
197
+
198
+ 00:04:29.675 --> 00:04:35.035
199
+ izquierda la escribimos, a y derecha. Esta derecha
200
+
201
+ 00:04:35.035 --> 00:04:39.260
202
+ pasa a ser raíz, entonces, tendríamos más. Izquierda,
203
+
204
+ 00:04:39.800 --> 00:04:45.080
205
+ raíz izquierda, derecha, BCY ya tenemos todo lo
206
+
207
+ 00:04:45.080 --> 00:04:47.560
208
+ que es la raíz, la izquierda y simplemente
209
+
210
+ 00:04:47.560 --> 00:04:51.325
211
+ nos falta la derecha, que sería, empezamos con
212
+
213
+ 00:04:51.325 --> 00:04:53.085
214
+ esta que se vuelve raíz, por lo tanto
215
+
216
+ 00:04:53.085 --> 00:04:58.365
217
+ la escribimos raíz, izquierda y derecha. Y ya
218
+
219
+ 00:04:58.365 --> 00:05:04.530
220
+ tenemos la expresión prefija de mi árbol, que
221
+
222
+ 00:05:04.530 --> 00:05:07.090
223
+ encontramos a partir de su expresión posfija. Por
224
+
225
+ 00:05:07.090 --> 00:05:11.730
226
+ último, vamos a encontrar la expresión infija o
227
+
228
+ 00:05:11.730 --> 00:05:15.170
229
+ entrefija, como lo hemos llamado, y que su
230
+
231
+ 00:05:15.170 --> 00:05:23.515
232
+ orden va a ser izquierda raíz derecha. Recordemos
233
+
234
+ 00:05:23.515 --> 00:05:26.235
235
+ que siempre vamos a empezar por nuestra raíz
236
+
237
+ 00:05:26.235 --> 00:05:29.915
238
+ principal, pero no la vamos a escribir porque
239
+
240
+ 00:05:29.915 --> 00:05:32.520
241
+ arrancamos siempre por la izquierda en este caso.
242
+
243
+ 00:05:33.560 --> 00:05:35.720
244
+ Entonces, esta es una raíz, vamos a su
245
+
246
+ 00:05:35.720 --> 00:05:39.259
247
+ izquierda, no la escribimos, vamos a la raíz,
248
+
249
+ 00:05:39.639 --> 00:05:42.220
250
+ se convierte en raíz, vamos a su izquierda
251
+
252
+ 00:05:42.280 --> 00:05:44.780
253
+ y como esta sí es una izquierda totalmente,
254
+
255
+ 00:05:45.319 --> 00:05:49.885
256
+ esa sí la escribimos. Escribimos la izquierda, escribimos
257
+
258
+ 00:05:50.025 --> 00:05:53.705
259
+ su raíz y vamos a la derecha. Como
260
+
261
+ 00:05:53.705 --> 00:05:57.005
262
+ esta es nuevamente raíz, vamos a su izquierda,
263
+
264
+ 00:05:57.385 --> 00:06:03.620
265
+ esta izquierda, izquierda, su raíz y su derecha.
266
+
267
+ 00:06:04.080 --> 00:06:07.440
268
+ Y ya tenemos esta parte de mi árbol,
269
+
270
+ 00:06:07.440 --> 00:06:10.400
271
+ que es la izquierda. Recordemos que siempre se
272
+
273
+ 00:06:10.400 --> 00:06:14.254
274
+ tiene que cumplir la estructura de la del
275
+
276
+ 00:06:14.254 --> 00:06:16.895
277
+ de la anotación para todas las partes de
278
+
279
+ 00:06:16.895 --> 00:06:18.835
280
+ mi árbol. Entonces, ya tenemos toda la izquierda.
281
+
282
+ 00:06:19.694 --> 00:06:23.455
283
+ Ahora, anotamos la raíz, que sería menos, y
284
+
285
+ 00:06:23.455 --> 00:06:27.060
286
+ vamos a la derecha. Y en la derecha
287
+
288
+ 00:06:27.280 --> 00:06:30.800
289
+ tenemos nuevamente una raíz, esta sí es izquierda
290
+
291
+ 00:06:30.800 --> 00:06:34.639
292
+ total, entonces la escribimos, escribimos su raíz y
293
+
294
+ 00:06:34.639 --> 00:06:39.380
295
+ escribimos la derecha. Y tenemos ya las tres
296
+
297
+ 00:06:41.764 --> 00:06:45.365
298
+ formas de representar o de notar lo que
299
+
300
+ 00:06:45.365 --> 00:06:48.745
301
+ es una expresión aritmética a través de un
302
+
303
+ 00:06:48.805 --> 00:06:52.425
304
+ árbol. Y así es como diferentes podemos pasar
305
+
306
+ 00:06:52.660 --> 00:06:55.300
307
+ de una expresión aritmética a un código máquina
308
+
309
+ 00:06:55.300 --> 00:06:57.620
310
+ para que lo apliques a tus proyectos. Y
311
+
312
+ 00:06:57.620 --> 00:07:01.880
313
+ con esto hemos concluido el módulo de árboles.
314
+
315
+ 00:07:02.580 --> 00:07:04.900
316
+ Acompáñenme en el siguiente módulo donde empezaremos a
317
+
318
+ 00:07:04.900 --> 00:07:08.794
319
+ ver algunos algoritmos para que podamos recorrer estos
320
+
321
+ 00:07:08.794 --> 00:07:11.834
322
+ árboles y que lo puedan aplicar a sus
323
+
324
+ 00:07:11.834 --> 00:07:14.254
325
+ proyectos. Nos vemos en el siguiente módulo.
a/Curso de Matemáticas Discretas/05-Árboles/09-Árboles Altura Niveles y Recorridos Ordenados.mhtml ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Matemáticas Discretas/06-Algoritmos/01-Algoritmo de Prim Árbol de Expansión Mínimo en Grafos.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:175c06165344bd95053799197d346fcd301b4ced07659661122acef2b74cbdfd
3
+ size 122312057
a/Curso de Matemáticas Discretas/06-Algoritmos/01-Algoritmo de Prim Árbol de Expansión Mínimo en Grafos.vtt ADDED
@@ -0,0 +1,550 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:04.640 --> 00:00:08.000
4
+ Bienvenidos a este módulo de algoritmos. Vamos a
5
+
6
+ 00:00:08.000 --> 00:00:10.639
7
+ aprender los algoritmos más importantes y que nos
8
+
9
+ 00:00:10.639 --> 00:00:13.845
10
+ permitirán tener un concepto claro sobre las gráficas,
11
+
12
+ 00:00:14.005 --> 00:00:16.725
13
+ ¿de acuerdo? El primer algoritmo con el que
14
+
15
+ 00:00:16.725 --> 00:00:20.085
16
+ vamos a comenzar es el algoritmo de Prim,
17
+
18
+ 00:00:20.085 --> 00:00:23.365
19
+ pero antes recordemos ¿qué es un algoritmo? Un
20
+
21
+ 00:00:23.365 --> 00:00:26.325
22
+ algoritmo es una serie de pasos que nosotros
23
+
24
+ 00:00:26.325 --> 00:00:28.680
25
+ seguimos de acuerdo a una lógica, que fue
26
+
27
+ 00:00:28.680 --> 00:00:31.240
28
+ lo que vimos en nuestro primer módulo. Y
29
+
30
+ 00:00:31.240 --> 00:00:36.140
31
+ si seguimos estos pasos consecutivamente lograremos el objetivo
32
+
33
+ 00:00:36.280 --> 00:00:39.080
34
+ que fue trazado con la lógica, el objetivo
35
+
36
+ 00:00:39.080 --> 00:00:42.445
37
+ del algoritmo. En este caso el algoritmo de
38
+
39
+ 00:00:42.445 --> 00:00:44.785
40
+ Prim lo que nos va a permitir es
41
+
42
+ 00:00:45.165 --> 00:00:48.525
43
+ encontrar el árbol de expansión mínimo que yo
44
+
45
+ 00:00:48.525 --> 00:00:52.445
46
+ puedo encontrar en una representación gráfica. Por ejemplo,
47
+
48
+ 00:00:52.445 --> 00:00:55.185
49
+ en esta representación gráfica que nosotros tenemos aquí,
50
+
51
+ 00:00:55.460 --> 00:00:58.580
52
+ si recordamos la teoría de gráficos, esto puede
53
+
54
+ 00:00:58.580 --> 00:01:01.860
55
+ ser una red de comunicación, una serie de
56
+
57
+ 00:01:01.860 --> 00:01:05.700
58
+ computadores, una serie de casas, ciudades que yo
59
+
60
+ 00:01:05.700 --> 00:01:08.505
61
+ trato de conectar a través de carreteras, computadores
62
+
63
+ 00:01:08.505 --> 00:01:11.405
64
+ que yo trato de comunicar a través de
65
+
66
+ 00:01:11.865 --> 00:01:15.065
67
+ redes o, por ejemplo, aeropuertos, que yo trato
68
+
69
+ 00:01:15.065 --> 00:01:17.785
70
+ de conectar a través de líneas aéreas. Y
71
+
72
+ 00:01:17.785 --> 00:01:20.285
73
+ esos números que vemos allí son los costes
74
+
75
+ 00:01:20.345 --> 00:01:22.800
76
+ asociados de comunicar un punto con el otro.
77
+
78
+ 00:01:22.880 --> 00:01:26.640
79
+ Por ejemplo a con b me cuesta cuatro,
80
+
81
+ 00:01:26.640 --> 00:01:30.660
82
+ ¿cuatro qué? Por ejemplo pueden ser cuatro kilómetros
83
+
84
+ 00:01:31.760 --> 00:01:34.580
85
+ de distancia, pueden ser cuatro horas de recorrido,
86
+
87
+ 00:01:34.640 --> 00:01:37.120
88
+ pueden ser cuatro aviones que yo puedo pasar
89
+
90
+ 00:01:37.120 --> 00:01:40.704
91
+ a través de ellos. Entonces, el algoritmo de
92
+
93
+ 00:01:40.704 --> 00:01:43.744
94
+ Print lo que me permite es encontrar el
95
+
96
+ 00:01:43.744 --> 00:01:46.804
97
+ coste mínimo mediante el cual yo pueda conectar
98
+
99
+ 00:01:47.424 --> 00:01:50.804
100
+ todos esos puntos, todos esos aeropuertos, esas casas,
101
+
102
+ 00:01:51.585 --> 00:01:54.020
103
+ esas ciudades con el mínimo coste. ¿Cuál es
104
+
105
+ 00:01:54.020 --> 00:01:57.000
106
+ el mínimo coste de conectar absolutamente todos los
107
+
108
+ 00:01:57.300 --> 00:01:59.460
109
+ puntos? Y nuestro algoritmo va a ser el
110
+
111
+ 00:01:59.460 --> 00:02:02.820
112
+ siguiente. Vamos a iniciar, vamos a seleccionar un
113
+
114
+ 00:02:02.820 --> 00:02:05.960
115
+ vértice al azar, no nos importa cuál vértice
116
+
117
+ 00:02:06.580 --> 00:02:11.834
118
+ seleccionemos. Luego vamos a seleccionar la conexión de
119
+
120
+ 00:02:11.834 --> 00:02:15.295
121
+ menor valor que este incidente en ese vértice
122
+
123
+ 00:02:16.795 --> 00:02:20.095
124
+ y en cada nueva interacción vamos a seleccionar
125
+
126
+ 00:02:20.395 --> 00:02:25.129
127
+ la conexión que esté que cueste menos, dependiendo
128
+
129
+ 00:02:25.549 --> 00:02:27.810
130
+ de esos vértices que yo ya tengo conectados,
131
+
132
+ 00:02:28.349 --> 00:02:30.989
133
+ y el algoritmo va a finalizar cuando yo
134
+
135
+ 00:02:30.989 --> 00:02:35.330
136
+ tenga todos mis vértices conectados con n menos
137
+
138
+ 00:02:35.390 --> 00:02:38.275
139
+ uno aristas o conexiones. ¿Qué es n? El
140
+
141
+ 00:02:38.275 --> 00:02:40.935
142
+ número de vértices. Vamos a ver un ejemplo
143
+
144
+ 00:02:41.234 --> 00:02:44.754
145
+ para tenerlo perfectamente claro. Lo que tenemos en
146
+
147
+ 00:02:44.754 --> 00:02:48.515
148
+ pantallas es un árbol de expansión, acá podemos
149
+
150
+ 00:02:48.515 --> 00:02:51.075
151
+ ver los vértices que están identificados con el
152
+
153
+ 00:02:51.075 --> 00:02:56.010
154
+ color rojo ABCD hasta ahí, tenemos nuestras conexiones
155
+
156
+ 00:02:56.010 --> 00:02:59.670
157
+ que están representadas con verde y el coste
158
+
159
+ 00:02:59.670 --> 00:03:03.510
160
+ asociadas entre ellas. Recordemos que esos vértices y
161
+
162
+ 00:03:03.510 --> 00:03:06.585
163
+ esas conexiones, por ejemplo, puede ser una red
164
+
165
+ 00:03:06.825 --> 00:03:09.645
166
+ de ciudades que tú quieres conectar entre ellas,
167
+
168
+ 00:03:10.265 --> 00:03:12.505
169
+ una red de aeropuertos entre los cuales te
170
+
171
+ 00:03:12.505 --> 00:03:16.285
172
+ estás comunicando, una red marítima, una conexión eléctrica,
173
+
174
+ 00:03:16.345 --> 00:03:18.265
175
+ por ejemplo haz de cuenta que son puntos
176
+
177
+ 00:03:18.265 --> 00:03:21.970
178
+ eléctricos que tú quieres conectar entre ellos Y
179
+
180
+ 00:03:21.970 --> 00:03:24.550
181
+ estos números que tú ves allí es el
182
+
183
+ 00:03:25.170 --> 00:03:27.410
184
+ coste de unir esas dos cosas. Por ejemplo,
185
+
186
+ 00:03:27.410 --> 00:03:29.890
187
+ si yo quisiera unir el nodo B con
188
+
189
+ 00:03:29.890 --> 00:03:32.804
190
+ el nodo B, me costaría siete unidades. Si
191
+
192
+ 00:03:32.804 --> 00:03:32.941
193
+ estamos hablando de un cableado eléctrico, por ejemplo,
194
+
195
+ 00:03:32.941 --> 00:03:39.005
196
+ necesitaría siete kilómetros de cable. O distancia, es
197
+
198
+ 00:03:39.005 --> 00:03:50.610
199
+ decir es un recurso una unidad, un coste
200
+
201
+ 00:03:50.670 --> 00:03:53.410
202
+ asociado unir a esa y si nos fijamos
203
+
204
+ 00:03:53.630 --> 00:03:56.910
205
+ saldría mucho más económico unir e con f
206
+
207
+ 00:03:56.910 --> 00:04:01.250
208
+ porque solo utilizaríamos dos unidades, solo dos recursos.
209
+
210
+ 00:04:01.955 --> 00:04:04.355
211
+ El algoritmo de Prim lo que nos permite
212
+
213
+ 00:04:04.355 --> 00:04:07.995
214
+ es identificar cómo yo puedo conectar todos los
215
+
216
+ 00:04:07.995 --> 00:04:10.755
217
+ puntos, todos los vértices, todas esas ciudades, todas
218
+
219
+ 00:04:10.755 --> 00:04:14.355
220
+ esas esos datos con el mínimo coste, cómo
221
+
222
+ 00:04:14.355 --> 00:04:16.680
223
+ yo puedo garantizar que sea el mínimo coste.
224
+
225
+ 00:04:17.240 --> 00:04:20.699
226
+ Vamos a ver en qué consiste este algoritmo.
227
+
228
+ 00:04:22.600 --> 00:04:25.259
229
+ Empieza diciéndonos que escojamos un vértice al azar,
230
+
231
+ 00:04:25.639 --> 00:04:27.880
232
+ en este caso yo voy a escoger el
233
+
234
+ 00:04:27.880 --> 00:04:30.515
235
+ vértice e porque es el centro de mi
236
+
237
+ 00:04:31.055 --> 00:04:34.575
238
+ estructura de datos. Y el algoritmo nos dice
239
+
240
+ 00:04:34.575 --> 00:04:38.415
241
+ que escoja la conexión que cueste menos y
242
+
243
+ 00:04:38.415 --> 00:04:41.315
244
+ que esté conectada a ese vértice que yo
245
+
246
+ 00:04:41.535 --> 00:04:44.500
247
+ he escogido, que he seleccionado. En este caso
248
+
249
+ 00:04:44.500 --> 00:04:47.060
250
+ vemos que está h con dos, que está
251
+
252
+ 00:04:47.060 --> 00:04:50.820
253
+ d con cinco, a con cuatro, b con
254
+
255
+ 00:04:50.820 --> 00:04:53.780
256
+ siete, f con dos, y I con cuatro,
257
+
258
+ 00:04:53.780 --> 00:04:57.300
259
+ y observamos que podría escoger el vértice h
260
+
261
+ 00:04:57.300 --> 00:04:58.995
262
+ con un coste de dos o el vértice
263
+
264
+ 00:04:58.995 --> 00:05:03.475
265
+ f con un coste de dos. Así que
266
+
267
+ 00:05:03.475 --> 00:05:06.035
268
+ yo puedo tomar esta decisión, puedo escoger entre
269
+
270
+ 00:05:06.035 --> 00:05:07.475
271
+ cualquiera de los dos y no me va
272
+
273
+ 00:05:07.475 --> 00:05:10.135
274
+ a afectar el algoritmo, ya veremos por qué.
275
+
276
+ 00:05:10.195 --> 00:05:12.195
277
+ En este caso me voy a ir por
278
+
279
+ 00:05:12.195 --> 00:05:15.480
280
+ este camino y voy a tener un coste
281
+
282
+ 00:05:15.480 --> 00:05:18.940
283
+ de dos donde ya tengo conectado mi nodo
284
+
285
+ 00:05:19.080 --> 00:05:22.280
286
+ f y mi nodo e. El algoritmo dice
287
+
288
+ 00:05:22.280 --> 00:05:26.380
289
+ que repitamos esta interacción sigamos eligiendo las conexiones
290
+
291
+ 00:05:26.680 --> 00:05:29.945
292
+ de menor valor teniendo en cuenta los vértices
293
+
294
+ 00:05:29.945 --> 00:05:32.425
295
+ que ya tengo conectados, es decir que ya
296
+
297
+ 00:05:32.425 --> 00:05:34.765
298
+ no se ya no solo tengo las opciones
299
+
300
+ 00:05:34.985 --> 00:05:37.945
301
+ que están asociadas a e, sino que ya
302
+
303
+ 00:05:37.945 --> 00:05:41.650
304
+ tengo las opciones que están asociadas AFY vemos
305
+
306
+ 00:05:41.650 --> 00:05:45.190
307
+ que el menor valor de todas ellas es
308
+
309
+ 00:05:45.330 --> 00:05:49.410
310
+ esta que tengo acá, este uno. Y ya
311
+
312
+ 00:05:49.410 --> 00:05:52.770
313
+ tengo conectados tres de mis nodos. Y ya
314
+
315
+ 00:05:52.770 --> 00:05:56.365
316
+ tengo abiertas ahora muchas más posibilidades, ya podría
317
+
318
+ 00:05:56.365 --> 00:06:00.905
319
+ elegir entre cuatro, dos, cinco, cuatro, siete, cinco,
320
+
321
+ 00:06:01.845 --> 00:06:05.385
322
+ cinco y vemos que la que el coste
323
+
324
+ 00:06:06.165 --> 00:06:09.069
325
+ de unir, que el coste menor de unir
326
+
327
+ 00:06:09.069 --> 00:06:12.350
328
+ otro vértice sería este h de acá con
329
+
330
+ 00:06:12.350 --> 00:06:16.530
331
+ este dos que tenemos acá y ya tenemos
332
+
333
+ 00:06:17.389 --> 00:06:22.845
334
+ cuatro vértices conectados EFHYI. En el algoritmo de
335
+
336
+ 00:06:22.845 --> 00:06:25.645
337
+ Print tenemos que tener mucho cuidado de no
338
+
339
+ 00:06:25.645 --> 00:06:29.005
340
+ formar ciclos, ya que los ciclos cancelarían el
341
+
342
+ 00:06:29.005 --> 00:06:31.725
343
+ algoritmo, no nos servirían. Es decir, yo no
344
+
345
+ 00:06:31.725 --> 00:06:34.785
346
+ podría unir e con I porque tendría un
347
+
348
+ 00:06:34.960 --> 00:06:37.840
349
+ un circuito cerrado, ni ya podría ir h
350
+
351
+ 00:06:37.840 --> 00:06:41.599
352
+ con I porque tendría un circuito cerrado. Además
353
+
354
+ 00:06:41.599 --> 00:06:44.560
355
+ que ya tenemos esos vértices conectados, entonces no
356
+
357
+ 00:06:44.560 --> 00:06:50.335
358
+ habría ningún ninguna valor agregado en en agregar
359
+
360
+ 00:06:50.335 --> 00:06:54.655
361
+ estos nodos. Vamos a elegir el siguiente vértice
362
+
363
+ 00:06:54.655 --> 00:06:57.315
364
+ con conexión de menor coste. En este caso
365
+
366
+ 00:06:57.615 --> 00:07:03.440
367
+ tenemos las opciones siete, cinco, cuatro, cinco y
368
+
369
+ 00:07:03.440 --> 00:07:07.920
370
+ seis. Vemos que la opción más indicada sería
371
+
372
+ 00:07:07.920 --> 00:07:12.580
373
+ unir esta a con un coste de cuatro,
374
+
375
+ 00:07:14.160 --> 00:07:18.025
376
+ de cuatro, y repetimos el proceso. Ahora cuál
377
+
378
+ 00:07:18.025 --> 00:07:21.965
379
+ será la conexión asociada con el menor coste.
380
+
381
+ 00:07:22.104 --> 00:07:25.544
382
+ Vemos que tenemos seis, cinco, por acá tenemos
383
+
384
+ 00:07:25.544 --> 00:07:29.400
385
+ seis, por arriba este cuatro es una muy
386
+
387
+ 00:07:29.400 --> 00:07:32.040
388
+ buena opción, así que esa es la mejor
389
+
390
+ 00:07:32.040 --> 00:07:38.840
391
+ opción. Tenemos que conectar este nodo b con
392
+
393
+ 00:07:38.840 --> 00:07:42.815
394
+ un coste de cuatro y solo nos quedarían
395
+
396
+ 00:07:42.955 --> 00:07:45.275
397
+ conectar estos nodos de acá y el nodo
398
+
399
+ 00:07:45.275 --> 00:07:48.395
400
+ C. Continuamos nuestro algoritmo y miramos cuál es
401
+
402
+ 00:07:48.395 --> 00:07:50.555
403
+ la opción que mejor se ajusta y que
404
+
405
+ 00:07:50.555 --> 00:07:53.035
406
+ nos representa un menor coste, y nos damos
407
+
408
+ 00:07:53.035 --> 00:07:55.139
409
+ cuenta que es el tres que tenemos arriba.
410
+
411
+ 00:07:55.840 --> 00:07:59.539
412
+ Es este tres que vemos acá para conectar
413
+
414
+ 00:07:59.759 --> 00:08:04.160
415
+ el nodo c, ¿de acuerdo? Y solo nos
416
+
417
+ 00:08:04.160 --> 00:08:08.255
418
+ quedan estos dos nodos, el g, el d
419
+
420
+ 00:08:08.875 --> 00:08:13.354
421
+ y el nodo g. Vemos que la mejor
422
+
423
+ 00:08:13.354 --> 00:08:16.555
424
+ opción entre seis y cinco viene siendo este
425
+
426
+ 00:08:16.555 --> 00:08:19.035
427
+ cinco de acá, y ya tenemos este nuevo
428
+
429
+ 00:08:19.035 --> 00:08:22.919
430
+ conectado, y solo nos faltaría el nodo g.
431
+
432
+ 00:08:22.919 --> 00:08:26.360
433
+ Cuando solo tenemos un nuevo faltante, no importa
434
+
435
+ 00:08:26.360 --> 00:08:30.440
436
+ que hayan opciones menores, por ejemplo, acá, porque
437
+
438
+ 00:08:30.440 --> 00:08:33.485
439
+ solo tenemos esas dos opciones. Así que nos
440
+
441
+ 00:08:33.485 --> 00:08:36.365
442
+ iremos por la de menor coste que tengamos
443
+
444
+ 00:08:36.365 --> 00:08:40.865
445
+ acá, que sería esta opción g con seis
446
+
447
+ 00:08:41.644 --> 00:08:46.125
448
+ y hemos logrado conectar todos nuestros vértices con
449
+
450
+ 00:08:46.125 --> 00:08:50.570
451
+ el coste mínimo. Vamos a graficar nuestro árbol
452
+
453
+ 00:08:50.570 --> 00:08:54.649
454
+ de expansión mínimo que hemos obtenido. Nosotros empezamos
455
+
456
+ 00:08:54.649 --> 00:08:57.370
457
+ el nodo g, el nodo e, tenemos acá
458
+
459
+ 00:08:57.370 --> 00:09:00.829
460
+ el nodo f, el nodo I con uno,
461
+
462
+ 00:09:01.014 --> 00:09:04.615
463
+ con dos. Acá tenemos el nodo h con
464
+
465
+ 00:09:04.615 --> 00:09:07.654
466
+ un coste de dos. Nos vinimos acá con
467
+
468
+ 00:09:07.654 --> 00:09:10.235
469
+ el nodo g con un coste de seis.
470
+
471
+ 00:09:10.774 --> 00:09:15.449
472
+ Nos vinimos acá al nodo d con un
473
+
474
+ 00:09:15.449 --> 00:09:18.970
475
+ coste de cinco, acá al nodo A con
476
+
477
+ 00:09:18.970 --> 00:09:24.649
478
+ cuatro, nos fuimos al nodo B con cuatro,
479
+
480
+ 00:09:24.649 --> 00:09:29.025
481
+ y el nodo C con tres. Y ese
482
+
483
+ 00:09:29.025 --> 00:09:32.265
484
+ es el árbol de expansión mínimo utilizando el
485
+
486
+ 00:09:32.265 --> 00:09:35.464
487
+ algoritmo de Prim para este para este gráfico
488
+
489
+ 00:09:35.464 --> 00:09:38.024
490
+ que analizamos al principio. Solo nos queda responder
491
+
492
+ 00:09:38.024 --> 00:09:40.524
493
+ una pregunta y es, ¿cuál fue el coste
494
+
495
+ 00:09:40.745 --> 00:09:43.706
496
+ total de unir todos esos vértices? De unir
497
+
498
+ 00:09:43.706 --> 00:09:47.280
499
+ todas esas ciudades, esas carreteras, esas conexiones, esos
500
+
501
+ 00:09:47.280 --> 00:09:50.540
502
+ datos. Pues bien, tenemos que sumar cada uno
503
+
504
+ 00:09:50.540 --> 00:09:55.280
505
+ de de las conexiones totales. Acá tenemos cuatro
506
+
507
+ 00:09:55.340 --> 00:09:59.945
508
+ más tres, siete, más dos, nueve, diez, catorce,
509
+
510
+ 00:10:02.005 --> 00:10:10.725
511
+ diecinueve, veinte, veintiuno y veintisiete. El coste total
512
+
513
+ 00:10:10.725 --> 00:10:15.440
514
+ si sumamos todas las aristas conectadas fue de
515
+
516
+ 00:10:16.600 --> 00:10:22.780
517
+ veintisiete unidades. Importante que el algoritmo de prime
518
+
519
+ 00:10:22.780 --> 00:10:25.900
520
+ nos dice que se termina cuando hemos conectado
521
+
522
+ 00:10:25.900 --> 00:10:29.075
523
+ todos los vértices con n menos uno aristas
524
+
525
+ 00:10:29.075 --> 00:10:31.415
526
+ conectados, donde n es el número de vértices.
527
+
528
+ 00:10:31.795 --> 00:10:34.995
529
+ Recordemos que teníamos uno, dos, tres, cuatro, cinco,
530
+
531
+ 00:10:34.995 --> 00:10:38.035
532
+ seis, siete, ocho, nueve, vértices, por lo tanto
533
+
534
+ 00:10:38.035 --> 00:10:41.730
535
+ tenemos que tener n menos uno conexiones, es
536
+
537
+ 00:10:41.730 --> 00:10:45.830
538
+ decir ocho conexiones. Vamos a anotarlas acá, uno,
539
+
540
+ 00:10:46.530 --> 00:10:52.905
541
+ dos, tres, cuatro, cinco, seis, siete y ocho.
542
+
543
+ 00:10:53.385 --> 00:10:56.585
544
+ Lo hemos conseguido, hemos completado el algoritmo de
545
+
546
+ 00:10:56.585 --> 00:10:59.005
547
+ print para encontrar el árbol de expansión mínimo.
548
+
549
+ 00:10:59.385 --> 00:11:00.925
550
+ Vamos con el siguiente algoritmo.
a/Curso de Matemáticas Discretas/06-Algoritmos/01-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Matemáticas Discretas/06-Algoritmos/02-Algoritmo de Dijkstra Ruta Óptima y Coste Mínimo.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7d9de80870251cd15294c6b1585fe7de51e1e305b358401b5c5c0b10462a86db
3
+ size 110547333
a/Curso de Matemáticas Discretas/06-Algoritmos/02-Algoritmo de Dijkstra Ruta Óptima y Coste Mínimo.vtt ADDED
@@ -0,0 +1,514 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:04.000 --> 00:00:07.839
4
+ El algoritmo de Gixtra. Ya aprendiste el algoritmo
5
+
6
+ 00:00:07.839 --> 00:00:10.179
7
+ de Print, que lo que nos permitía era
8
+
9
+ 00:00:11.120 --> 00:00:13.840
10
+ encontrar el coste mínimo de conectar todos los
11
+
12
+ 00:00:13.840 --> 00:00:18.185
13
+ puntos en una gráfica. El algoritmo de Gigstra,
14
+
15
+ 00:00:18.185 --> 00:00:20.105
16
+ a diferencia de ese, lo que va a
17
+
18
+ 00:00:20.105 --> 00:00:23.325
19
+ buscar es la ruta óptima o el coste
20
+
21
+ 00:00:23.785 --> 00:00:26.665
22
+ mínimo de conectar un punto inicial con un
23
+
24
+ 00:00:26.665 --> 00:00:29.460
25
+ punto final. ¿Cuál es esa ruta mínima? ¿Cómo
26
+
27
+ 00:00:29.460 --> 00:00:32.580
28
+ encuentro esa ruta óptima? Esto no solo es
29
+
30
+ 00:00:32.580 --> 00:00:35.540
31
+ aplicable para redes de comunicación o ciudades, también
32
+
33
+ 00:00:35.540 --> 00:00:37.860
34
+ puede ser para proyectos. Si tú tienes, por
35
+
36
+ 00:00:37.860 --> 00:00:41.380
37
+ ejemplo, diferentes rutas de tareas en tu proyecto,
38
+
39
+ 00:00:41.380 --> 00:00:43.914
40
+ ¿cuál es esa ruta crítica que tú necesitas
41
+
42
+ 00:00:43.914 --> 00:00:47.195
43
+ para tu proyecto. Entonces, en el ejemplo que
44
+
45
+ 00:00:47.195 --> 00:00:49.114
46
+ vamos a ver, vamos a tratar de conectar
47
+
48
+ 00:00:49.114 --> 00:00:51.835
49
+ el punto a con el punto f de
50
+
51
+ 00:00:51.835 --> 00:00:56.570
52
+ manera óptima, ¿de acuerdo? ¿En qué consiste este
53
+
54
+ 00:00:56.570 --> 00:01:00.570
55
+ algoritmo? Vamos a iniciar y a cada nodo
56
+
57
+ 00:01:00.570 --> 00:01:03.469
58
+ que no hayamos visitado le vamos a asignar
59
+
60
+ 00:01:03.610 --> 00:01:06.330
61
+ una distancia de infinito. Vamos a verlo como
62
+
63
+ 00:01:06.330 --> 00:01:08.970
64
+ que queda lejos, que nunca lo vamos a
65
+
66
+ 00:01:08.970 --> 00:01:11.725
67
+ alcanzar, Y vamos a mantener un registro de
68
+
69
+ 00:01:11.725 --> 00:01:14.925
70
+ los nodos no visitados. Como vamos a iniciar
71
+
72
+ 00:01:14.925 --> 00:01:17.325
73
+ en un en un nodo inicial, a este
74
+
75
+ 00:01:17.325 --> 00:01:20.385
76
+ le vamos a asignar una distancia de cero.
77
+
78
+ 00:01:21.485 --> 00:01:24.870
79
+ Vamos a calcular los nodos que estén conectados
80
+
81
+ 00:01:24.870 --> 00:01:27.530
82
+ con este vértice inicial y vamos a actualizar
83
+
84
+ 00:01:28.310 --> 00:01:31.270
85
+ las distancias, es decir, si es menor que
86
+
87
+ 00:01:31.270 --> 00:01:34.070
88
+ infinito lo vamos a reemplazar por este valor
89
+
90
+ 00:01:34.070 --> 00:01:36.435
91
+ y si no lo vamos a ignorar y
92
+
93
+ 00:01:36.435 --> 00:01:40.595
94
+ vamos a repetir esta alteración para cada nodo.
95
+
96
+ 00:01:40.595 --> 00:01:44.034
97
+ El algoritmo finalizará cuando se llegue al nodo
98
+
99
+ 00:01:44.034 --> 00:01:46.675
100
+ final. Sé que suena un poco enredado, pero
101
+
102
+ 00:01:46.675 --> 00:01:49.240
103
+ cuando veamos el ejemplo vamos a ver que
104
+
105
+ 00:01:49.240 --> 00:01:51.240
106
+ es muy sencillo y nos va a resultar
107
+
108
+ 00:01:51.240 --> 00:01:54.759
109
+ de mucha utilidad en muchas aplicaciones. Vamos a
110
+
111
+ 00:01:54.759 --> 00:01:58.119
112
+ ver cómo funciona el algoritmo de Jigstra. Vamos
113
+
114
+ 00:01:58.119 --> 00:02:01.285
115
+ a aplicar el algoritmo de Jigstra para el
116
+
117
+ 00:02:01.285 --> 00:02:05.545
118
+ gráfico, el árbol que tenemos en nuestras pantallas.
119
+
120
+ 00:02:06.085 --> 00:02:09.764
121
+ Observemos que es un árbol de expansión porque
122
+
123
+ 00:02:09.764 --> 00:02:14.709
124
+ tenemos un recurso o un coste asociado para
125
+
126
+ 00:02:14.709 --> 00:02:17.510
127
+ cada uno de los trayectos. Por ejemplo ir
128
+
129
+ 00:02:17.510 --> 00:02:20.790
130
+ de DAF me cuesta dos, me cuesta dos
131
+
132
+ 00:02:20.790 --> 00:02:25.370
133
+ horas, dos unidades, dos cantidades de un elemento
134
+
135
+ 00:02:26.230 --> 00:02:29.345
136
+ y a diferencia del algoritmo de Prim, donde
137
+
138
+ 00:02:29.345 --> 00:02:33.265
139
+ yo busco conectar todos los vértices con el
140
+
141
+ 00:02:33.265 --> 00:02:36.305
142
+ mínimo coste, en el algoritmo de Gixtal lo
143
+
144
+ 00:02:36.305 --> 00:02:37.985
145
+ que vamos a usar, lo que vamos a
146
+
147
+ 00:02:37.985 --> 00:02:41.620
148
+ tratar de hacer es conectar dos puntos con
149
+
150
+ 00:02:41.620 --> 00:02:44.599
151
+ el mínimo coste. Es decir, yo en este
152
+
153
+ 00:02:44.659 --> 00:02:46.599
154
+ caso voy a buscar ir de mi nodo
155
+
156
+ 00:02:46.739 --> 00:02:50.340
157
+ a al nodo f buscando la ruta óptima,
158
+
159
+ 00:02:50.340 --> 00:02:52.739
160
+ el mejor camino que me cueste menos y
161
+
162
+ 00:02:52.739 --> 00:02:57.905
163
+ que me permita completar mi trayecto completo. Para
164
+
165
+ 00:02:58.405 --> 00:03:01.045
166
+ empezar nuestro algoritmo de Jigstra, lo que vamos
167
+
168
+ 00:03:01.045 --> 00:03:04.165
169
+ a hacer es colocar nuestro nodo inicial en
170
+
171
+ 00:03:04.165 --> 00:03:07.765
172
+ ceros. Vamos a asignarle al nodo inicial donde
173
+
174
+ 00:03:07.765 --> 00:03:10.660
175
+ vamos a colocar un cero y para los
176
+
177
+ 00:03:10.660 --> 00:03:14.260
178
+ demás nodos que no hayamos visitado, vamos a
179
+
180
+ 00:03:14.260 --> 00:03:19.140
181
+ colocarle un infinito. Así va a ser como
182
+
183
+ 00:03:19.140 --> 00:03:26.105
184
+ nuestro algoritmo comienza. Vamos a asignar unas distancias
185
+
186
+ 00:03:26.105 --> 00:03:28.345
187
+ o un coste de infinito que vamos a
188
+
189
+ 00:03:28.345 --> 00:03:35.864
190
+ ir actualizando iteración tras iteración. Comencemos. Cuando tengo
191
+
192
+ 00:03:35.864 --> 00:03:38.519
193
+ mi vértice a, observo que este tiene tres
194
+
195
+ 00:03:38.519 --> 00:03:42.379
196
+ conexiones diferentes. Observamos que para ir a b
197
+
198
+ 00:03:43.160 --> 00:03:46.120
199
+ tenemos cuatro, que para ir a c tres
200
+
201
+ 00:03:46.120 --> 00:03:49.739
202
+ y para ir a e tenemos siete. Y
203
+
204
+ 00:03:50.205 --> 00:03:53.985
205
+ empecemos analizando b. Cuatro es menor que infinito,
206
+
207
+ 00:03:54.285 --> 00:03:58.224
208
+ por lo tanto yo actualizo esa ese infinito
209
+
210
+ 00:03:58.364 --> 00:04:01.165
211
+ y le coloco que ir a b tiene
212
+
213
+ 00:04:01.165 --> 00:04:04.540
214
+ una distancia de cuatro. Ir a c tiene
215
+
216
+ 00:04:04.540 --> 00:04:06.940
217
+ una distancia o un coste de tres que
218
+
219
+ 00:04:06.940 --> 00:04:10.379
220
+ es menor que infinito, por lo tanto esa
221
+
222
+ 00:04:10.379 --> 00:04:13.760
223
+ es mi nueva distancia al nodo cero. Y
224
+
225
+ 00:04:13.980 --> 00:04:17.500
226
+ por último el vértice e tiene un coste
227
+
228
+ 00:04:17.500 --> 00:04:20.775
229
+ de siete, así que es menor que infinito,
230
+
231
+ 00:04:20.775 --> 00:04:23.035
232
+ por lo tanto yo lo voy a cambiar.
233
+
234
+ 00:04:24.615 --> 00:04:27.575
235
+ Una vez ya tenemos las distancias de los
236
+
237
+ 00:04:27.575 --> 00:04:30.920
238
+ vértices más cercanos a mi vértice inicial, me
239
+
240
+ 00:04:30.920 --> 00:04:32.680
241
+ voy a ir por la menor ruta. En
242
+
243
+ 00:04:32.680 --> 00:04:35.660
244
+ este caso me voy a ir por este
245
+
246
+ 00:04:35.880 --> 00:04:38.120
247
+ tres que tengo acá y ya he visitado
248
+
249
+ 00:04:38.120 --> 00:04:41.640
250
+ este nodo c. Cuando visito este nodo c
251
+
252
+ 00:04:41.640 --> 00:04:47.064
253
+ veo que él tiene conexiones ABADYAE. Por lo
254
+
255
+ 00:04:47.064 --> 00:04:50.025
256
+ tanto vamos a revisar las distancias a esas
257
+
258
+ 00:04:50.025 --> 00:04:53.384
259
+ conexiones. Empecemos con el nodo b. Yo sé
260
+
261
+ 00:04:53.384 --> 00:04:56.664
262
+ que acá tengo tres y de ir y
263
+
264
+ 00:04:56.664 --> 00:05:00.319
265
+ de CAB tengo seis. Tres más seis tendría
266
+
267
+ 00:05:00.539 --> 00:05:03.900
268
+ nueve, pero nueve es mayor que cuatro, por
269
+
270
+ 00:05:03.900 --> 00:05:06.699
271
+ lo tanto, vamos a descartar esa ruta porque
272
+
273
+ 00:05:06.699 --> 00:05:09.020
274
+ ya tenemos una ruta más óptima a este
275
+
276
+ 00:05:09.020 --> 00:05:14.585
277
+ nodo. Vamos a ir TCAD, entonces ya tenemos
278
+
279
+ 00:05:14.585 --> 00:05:19.145
280
+ tres en este camino más once tendríamos catorce
281
+
282
+ 00:05:19.145 --> 00:05:23.145
283
+ para ir ADY catorce efectivamente es menor que
284
+
285
+ 00:05:23.145 --> 00:05:26.400
286
+ infinito, así que esa será por el momento
287
+
288
+ 00:05:26.400 --> 00:05:29.759
289
+ nuestra ruta óptima a d, por el momento
290
+
291
+ 00:05:29.759 --> 00:05:34.660
292
+ tenemos catorce. Y podemos visitar nuestro nodo e,
293
+
294
+ 00:05:36.080 --> 00:05:42.294
295
+ que tendríamos tres más ocho, tendríamos once y
296
+
297
+ 00:05:42.294 --> 00:05:44.535
298
+ once es mayor que siete, por lo tanto
299
+
300
+ 00:05:44.535 --> 00:05:48.135
301
+ también descartamos esa ruta. Una vez ya hayamos
302
+
303
+ 00:05:48.135 --> 00:05:51.975
304
+ visitado este camino de c, vamos con la
305
+
306
+ 00:05:51.975 --> 00:05:54.555
307
+ segunda opción que teníamos que era irnos por
308
+
309
+ 00:05:54.695 --> 00:05:56.760
310
+ el camino de b, que era este que
311
+
312
+ 00:05:56.760 --> 00:05:59.960
313
+ tenemos acá. Vemos que ya tenemos la distancia
314
+
315
+ 00:05:59.960 --> 00:06:02.120
316
+ de nuestro nuevo b y de b nos
317
+
318
+ 00:06:02.120 --> 00:06:07.880
319
+ podemos conectar ADYAC. Para llegar a d, tenemos
320
+
321
+ 00:06:07.880 --> 00:06:10.985
322
+ una distancia de cuatro y de cinco. Cuatro
323
+
324
+ 00:06:11.525 --> 00:06:15.125
325
+ más cinco tenemos nueve y nueve es menor
326
+
327
+ 00:06:15.125 --> 00:06:18.564
328
+ que catorce. Por lo tanto, podemos actualizar este
329
+
330
+ 00:06:18.564 --> 00:06:21.844
331
+ nuevo valor. Hay una ruta más óptima para
332
+
333
+ 00:06:21.844 --> 00:06:25.710
334
+ llegar acá, que sería nueve. Y para llegar
335
+
336
+ 00:06:25.710 --> 00:06:28.590
337
+ a seis tendríamos cuatro y seis, diez. Ya
338
+
339
+ 00:06:28.590 --> 00:06:31.950
340
+ sabemos que acá tenemos el tres, que es
341
+
342
+ 00:06:31.950 --> 00:06:34.030
343
+ nuestra ruta óptima por el momento al llegar
344
+
345
+ 00:06:34.030 --> 00:06:36.830
346
+ al nodo c. Y ya tenemos el nodo
347
+
348
+ 00:06:36.830 --> 00:06:40.604
349
+ d. Podemos ahora ir a nuestra tercera opción,
350
+
351
+ 00:06:41.544 --> 00:06:44.685
352
+ que era irnos por acá. Ya tenemos siete,
353
+
354
+ 00:06:44.824 --> 00:06:46.925
355
+ y vemos que de ahí nos podemos conectar
356
+
357
+ 00:06:47.065 --> 00:06:52.110
358
+ ADYAG. Siete más dos, nueve. Ya tenemos esa
359
+
360
+ 00:06:52.110 --> 00:06:56.350
361
+ ruta óptima, así que dejamos ese valor. Para
362
+
363
+ 00:06:56.350 --> 00:06:58.990
364
+ llegar a g todavía tenemos un infinito, así
365
+
366
+ 00:06:58.990 --> 00:07:03.325
367
+ que tenemos siete más cinco, tendríamos doce, que
368
+
369
+ 00:07:03.325 --> 00:07:08.305
370
+ es menor que infinito, y actualizamos nuestra ruta.
371
+
372
+ 00:07:09.805 --> 00:07:12.445
373
+ Y ya hemos visitado todos estos nodos, ya
374
+
375
+ 00:07:12.445 --> 00:07:15.245
376
+ hemos llegado hasta d y hasta g. Solo
377
+
378
+ 00:07:15.245 --> 00:07:19.970
379
+ nos queda mirar cómo podemos llegar a f.
380
+
381
+ 00:07:19.970 --> 00:07:22.290
382
+ ¿Cuál es la ruta más óptima? Si ya
383
+
384
+ 00:07:22.290 --> 00:07:25.410
385
+ tenemos esta ruta siete y cinco, para llegar
386
+
387
+ 00:07:25.410 --> 00:07:28.770
388
+ a f tendríamos siete cinco doce y tres
389
+
390
+ 00:07:28.770 --> 00:07:32.885
391
+ quince. Quince sería menor que infinito, así que
392
+
393
+ 00:07:32.885 --> 00:07:37.445
394
+ lo actualizamos como nuestra ruta óptima. Por otro
395
+
396
+ 00:07:37.445 --> 00:07:41.145
397
+ lado, si acá tenemos doce, ir a d,
398
+
399
+ 00:07:41.205 --> 00:07:44.485
400
+ nos saldría mucho más costoso, entonces dejamos nueve
401
+
402
+ 00:07:44.485 --> 00:07:48.050
403
+ como nuestra ruta óptima hasta ahí. Vámonos ahora
404
+
405
+ 00:07:48.590 --> 00:07:51.790
406
+ por nuestra la primera ruta que tomamos, la
407
+
408
+ 00:07:51.790 --> 00:07:55.150
409
+ segunda, cuatro más cinco, nueve, y llegar a
410
+
411
+ 00:07:55.150 --> 00:08:01.155
412
+ f nos costaría once. Y once es menor
413
+
414
+ 00:08:01.155 --> 00:08:04.354
415
+ que quince, por lo tanto, esa es nuestra
416
+
417
+ 00:08:04.354 --> 00:08:08.915
418
+ ruta óptima para llegar a este nodo f.
419
+
420
+ 00:08:08.915 --> 00:08:10.755
421
+ Y vemos que para llegar a nodo f
422
+
423
+ 00:08:10.755 --> 00:08:12.880
424
+ solo tenemos esas dos opciones, por lo tanto,
425
+
426
+ 00:08:12.880 --> 00:08:16.980
427
+ hemos encontrado nuestra ruta óptima, hemos encontrado la
428
+
429
+ 00:08:17.320 --> 00:08:20.640
430
+ ruta óptima con el coste mínimo para ir
431
+
432
+ 00:08:20.640 --> 00:08:23.120
433
+ de mi punto a a mi punto f.
434
+
435
+ 00:08:23.120 --> 00:08:26.014
436
+ Vamos a colocarlo acá para que observemos cuál
437
+
438
+ 00:08:26.014 --> 00:08:31.455
439
+ fue la ruta que tomamos y cuál es
440
+
441
+ 00:08:31.455 --> 00:08:38.835
442
+ el coste total. YFY el coste sería cuatro,
443
+
444
+ 00:08:41.600 --> 00:08:45.360
445
+ cinco y dos, para un total de once
446
+
447
+ 00:08:45.360 --> 00:08:48.740
448
+ unidades. Y así es como funciona el algoritmo
449
+
450
+ 00:08:48.800 --> 00:08:53.075
451
+ de JiExtra. Recordemos brevemente los pasos. Primero, inicio
452
+
453
+ 00:08:53.075 --> 00:08:55.275
454
+ mi nodo inicial en cero y le asigno
455
+
456
+ 00:08:55.275 --> 00:08:57.635
457
+ un valor de infinito a todos los nodos
458
+
459
+ 00:08:57.635 --> 00:09:01.235
460
+ que no haya visitado. Segundo, en cada interacción
461
+
462
+ 00:09:01.235 --> 00:09:04.835
463
+ yo voy a actualizar la distancia a cada
464
+
465
+ 00:09:04.835 --> 00:09:07.430
466
+ nodo cercano que yo tenga con mi nodo
467
+
468
+ 00:09:07.430 --> 00:09:10.470
469
+ inicial y vamos a repetir esto para cada
470
+
471
+ 00:09:10.470 --> 00:09:14.550
472
+ nueva interacción para cada nueva interacción asignando nuevos
473
+
474
+ 00:09:14.550 --> 00:09:19.290
475
+ valores a los nodos que vaya visitando continuamente.
476
+
477
+ 00:09:20.084 --> 00:09:23.012
478
+ Si la distancia que encontramos es menor que
479
+
480
+ 00:09:23.012 --> 00:09:26.324
481
+ la que teníamos actualmente, la reemplazamos. Si no,
482
+
483
+ 00:09:26.324 --> 00:09:30.185
484
+ ignoramos esa ruta hasta encontrar la ruta óptima
485
+
486
+ 00:09:30.564 --> 00:09:33.040
487
+ del punto a al punto f. El algoritmo
488
+
489
+ 00:09:33.100 --> 00:09:37.500
490
+ finalizará cuando lleguemos a nuestro punto final. Ya
491
+
492
+ 00:09:37.500 --> 00:09:40.060
493
+ sabes cómo funciona el algoritmo de Jigstra en
494
+
495
+ 00:09:40.060 --> 00:09:42.939
496
+ la teoría. Si te interesa saber cómo llevarlo
497
+
498
+ 00:09:42.939 --> 00:09:44.860
499
+ a la práctica y cómo llevarlo a tus
500
+
501
+ 00:09:44.860 --> 00:09:48.365
502
+ proyectos en un lenguaje de programación, te invito
503
+
504
+ 00:09:48.505 --> 00:09:50.745
505
+ a que veas el curso de algoritmos de
506
+
507
+ 00:09:50.745 --> 00:09:53.625
508
+ Platzi, donde encontrarás todo lo que necesitas para
509
+
510
+ 00:09:53.625 --> 00:09:56.905
511
+ llevar esto a la práctica. Nos vemos en
512
+
513
+ 00:09:56.905 --> 00:09:57.805
514
+ la siguiente clase.
a/Curso de Matemáticas Discretas/06-Algoritmos/02-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Matemáticas Discretas/06-Algoritmos/03-Algoritmo de Kruskal.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:725d5c9efb39c380d1f47d663eb62cedd406657bcf88bac677f561934ccdad6f
3
+ size 76789505
a/Curso de Matemáticas Discretas/06-Algoritmos/03-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Matemáticas Discretas/06-Algoritmos/04-Algoritmo de Flury Encontrar Ciclos Eulerianos en Grafos.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:51e6034bf54809eccd4493fb9190402c7ce85d90fecdd283e0a339b7e1cbce8c
3
+ size 107533589
a/Curso de Matemáticas Discretas/06-Algoritmos/04-Algoritmo de Flury Encontrar Ciclos Eulerianos en Grafos.vtt ADDED
@@ -0,0 +1,427 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:04.319 --> 00:00:06.580
4
+ En nuestro estudio de la teoría de gráficos
5
+
6
+ 00:00:06.720 --> 00:00:09.040
7
+ vimos lo que era un camino y un
8
+
9
+ 00:00:09.040 --> 00:00:13.759
10
+ ciclo euleriano. Recordemos que un ciclo euleriano nos
11
+
12
+ 00:00:13.759 --> 00:00:17.695
13
+ permite visitar todas las aristas, todas las conexiones
14
+
15
+ 00:00:18.074 --> 00:00:21.195
16
+ una y solo una vez pasando yo por
17
+
18
+ 00:00:21.195 --> 00:00:24.875
19
+ todos los vértices. Y vimos que es muy
20
+
21
+ 00:00:24.875 --> 00:00:28.154
22
+ fácil comprobar si había un ciclo euleriano en
23
+
24
+ 00:00:28.154 --> 00:00:30.790
25
+ una gráfica. Teníamos que analizar el grado de
26
+
27
+ 00:00:30.790 --> 00:00:33.030
28
+ cada uno de los vértices y si los
29
+
30
+ 00:00:33.030 --> 00:00:36.490
31
+ grados de todos los vértices eran par significaba
32
+
33
+ 00:00:36.790 --> 00:00:40.630
34
+ que existía un ciclo euleriano. El algoritmo de
35
+
36
+ 00:00:40.630 --> 00:00:42.965
37
+ Fluri lo que nos va a permitir es
38
+
39
+ 00:00:43.184 --> 00:00:46.144
40
+ encontrar un ciclo euleriano. Vamos a ver en
41
+
42
+ 00:00:46.144 --> 00:00:49.664
43
+ qué consiste. Primero tendremos que verificar el grado
44
+
45
+ 00:00:49.664 --> 00:00:52.245
46
+ de cada uno de los vértices para comprobar
47
+
48
+ 00:00:52.545 --> 00:00:55.204
49
+ si sí existe o no un ciclo euleriano.
50
+
51
+ 00:00:56.170 --> 00:00:58.429
52
+ Después de esto vamos a realizar un circuito
53
+
54
+ 00:00:59.370 --> 00:01:01.690
55
+ cerrado, no importa que no incluyamos todas las
56
+
57
+ 00:01:01.690 --> 00:01:04.890
58
+ aristas, todas las conexiones, lo importante es tener
59
+
60
+ 00:01:04.890 --> 00:01:08.905
61
+ un circuito cerrado y en cada nueva iteracion
62
+
63
+ 00:01:08.905 --> 00:01:12.665
64
+ agregar nuevos circuitos cerrados que incluyan conexiones que
65
+
66
+ 00:01:12.665 --> 00:01:15.785
67
+ no hemos tenido en cuenta, conexiones que no
68
+
69
+ 00:01:15.785 --> 00:01:20.185
70
+ hayan sido visitados. Vamos a reemplazar cada nuevo
71
+
72
+ 00:01:20.185 --> 00:01:22.445
73
+ circuito que yo esté haciendo en el circuito
74
+
75
+ 00:01:22.505 --> 00:01:26.640
76
+ inicial y así al final obtendremos nuestro ciclo
77
+
78
+ 00:01:26.780 --> 00:01:30.240
79
+ euleriano. Qué fácil suena, ¿verdad? Vamos a hacerlo
80
+
81
+ 00:01:30.539 --> 00:01:33.500
82
+ juntos. El algoritmo de Flury nos va a
83
+
84
+ 00:01:33.500 --> 00:01:39.305
85
+ permitir encontrar un ciclo euleriano. Recordemos rápidamente qué
86
+
87
+ 00:01:39.305 --> 00:01:42.825
88
+ es un ciclo euleriano. Es un ciclo donde
89
+
90
+ 00:01:42.825 --> 00:01:45.405
91
+ yo inicio y termino en el mismo punto
92
+
93
+ 00:01:45.465 --> 00:01:48.730
94
+ y he visitado todas las aristas o todas
95
+
96
+ 00:01:48.730 --> 00:01:53.290
97
+ las conexiones una y solo una vez. Ya
98
+
99
+ 00:01:53.290 --> 00:01:57.710
100
+ sabemos cómo identificar si existe un ciclo euleriano
101
+
102
+ 00:01:58.010 --> 00:02:00.410
103
+ basándonos en el grado de cada uno de
104
+
105
+ 00:02:00.410 --> 00:02:04.285
106
+ los vértices. Recordemos cómo es el grado de
107
+
108
+ 00:02:04.285 --> 00:02:05.805
109
+ un vértice y cuál es el grado de
110
+
111
+ 00:02:05.805 --> 00:02:08.145
112
+ los vértices que tenemos en la siguiente gráfica.
113
+
114
+ 00:02:08.685 --> 00:02:11.325
115
+ Miremos que en a tenemos dos conexiones, por
116
+
117
+ 00:02:11.325 --> 00:02:14.525
118
+ lo tanto, su grado es dos. Miremos que
119
+
120
+ 00:02:14.525 --> 00:02:17.345
121
+ el grado de f es uno, dos, tres,
122
+
123
+ 00:02:17.645 --> 00:02:21.360
124
+ cuatro, cuatro. En b, tenemos uno, dos, tres,
125
+
126
+ 00:02:21.633 --> 00:02:25.260
127
+ cuatro. Para g, tenemos cuatro aristas que inciden
128
+
129
+ 00:02:25.260 --> 00:02:28.880
130
+ en él. Por lo tanto, tendremos cuatro. Dos,
131
+
132
+ 00:02:29.020 --> 00:02:33.425
133
+ tres, cuatro. Un, dos, tres, cuatro. Y por
134
+
135
+ 00:02:33.425 --> 00:02:38.065
136
+ último en d tendremos dos. Si recordamos la
137
+
138
+ 00:02:38.065 --> 00:02:41.025
139
+ regla para que haya un ciclo euleriano es
140
+
141
+ 00:02:41.025 --> 00:02:45.025
142
+ que los vértices de todos los los grados
143
+
144
+ 00:02:45.025 --> 00:02:48.620
145
+ de todos mis vértices sean pares. Efectivamente vemos
146
+
147
+ 00:02:49.240 --> 00:02:52.540
148
+ que acá todos los vértices tienen grado par,
149
+
150
+ 00:02:52.600 --> 00:02:55.720
151
+ por lo tanto nosotros sabemos a ciencia cierta
152
+
153
+ 00:02:55.720 --> 00:03:00.055
154
+ que ahí podemos encontrar un ciclo heuleriano. ¿Cómo
155
+
156
+ 00:03:00.055 --> 00:03:02.775
157
+ lo podemos encontrar? Pues bien, el algoritmo de
158
+
159
+ 00:03:02.775 --> 00:03:06.375
160
+ Flury es la respuesta. El algoritmo de Flury
161
+
162
+ 00:03:06.375 --> 00:03:09.834
163
+ nos dice que empecemos hallando un circuito cerrado,
164
+
165
+ 00:03:10.295 --> 00:03:13.830
166
+ sin importar que no hayamos visitado todas las
167
+
168
+ 00:03:14.150 --> 00:03:18.170
169
+ aristas o conexiones, entonces hagamos ese primer paso.
170
+
171
+ 00:03:19.350 --> 00:03:22.550
172
+ Yo voy a elegir, por ejemplo, este camino
173
+
174
+ 00:03:22.550 --> 00:03:27.270
175
+ cerrado que tengo acá, ABYF. Entonces, lo voy
176
+
177
+ 00:03:27.270 --> 00:03:36.305
178
+ a describir acá, Camino1 o ciclo1, lo vamos
179
+
180
+ 00:03:36.305 --> 00:03:44.959
181
+ a llamar, y va a ser a, f,
182
+
183
+ 00:03:47.180 --> 00:03:56.299
184
+ por ejemplo, GYB, este ciclo que tenemos acá.
185
+
186
+ 00:03:56.299 --> 00:03:58.459
187
+ Y como es un ciclo, yo termino nuevamente
188
+
189
+ 00:03:58.459 --> 00:04:03.075
190
+ en AAY he obtenido un primer circuito cerrado
191
+
192
+ 00:04:03.935 --> 00:04:07.314
193
+ dentro de lo que sería mi grafo total.
194
+
195
+ 00:04:07.614 --> 00:04:10.515
196
+ El algoritmo de Flury nos dice que tenemos
197
+
198
+ 00:04:10.894 --> 00:04:14.254
199
+ que encontrar un circuito dos o un ciclo
200
+
201
+ 00:04:14.254 --> 00:04:17.550
202
+ dos que esté incluido dentro de mi gráfica
203
+
204
+ 00:04:18.329 --> 00:04:20.410
205
+ y que incluya conexiones o aristas que yo
206
+
207
+ 00:04:20.410 --> 00:04:22.889
208
+ no haya incluido. Por ejemplo, yo en este
209
+
210
+ 00:04:22.889 --> 00:04:26.169
211
+ caso voy a escoger el ciclo dos, va
212
+
213
+ 00:04:26.169 --> 00:04:37.305
214
+ a ser GECYGGECYGY lo que voy a hacer,
215
+
216
+ 00:04:37.305 --> 00:04:39.165
217
+ el paso que voy a hacer a continuación
218
+
219
+ 00:04:39.305 --> 00:04:42.120
220
+ es incluir este ciclo dos dentro de mi
221
+
222
+ 00:04:42.120 --> 00:04:45.160
223
+ ciclo uno que yo había escrito acá. Entonces
224
+
225
+ 00:04:45.160 --> 00:04:54.600
226
+ lo que tendríamos sería AFYG. Como partimos de
227
+
228
+ 00:04:54.600 --> 00:04:56.715
229
+ g para mi segundo ciclo, eso es lo
230
+
231
+ 00:04:56.715 --> 00:05:03.675
232
+ que yo voy a escribir acá. GECYGY continúo
233
+
234
+ 00:05:03.675 --> 00:05:06.974
235
+ con lo que tenía en el primer ciclo.
236
+
237
+ 00:05:08.474 --> 00:05:13.370
238
+ Y lo vamos a representar acá. Solo nos
239
+
240
+ 00:05:13.370 --> 00:05:16.830
241
+ faltará incluir más ciclos hasta que yo complete
242
+
243
+ 00:05:16.970 --> 00:05:19.610
244
+ todas las conexiones que no haya visitado. En
245
+
246
+ 00:05:19.610 --> 00:05:22.250
247
+ este caso vemos que yo puedo hacer otro
248
+
249
+ 00:05:22.250 --> 00:05:25.485
250
+ ciclo cerrado que incluya estos vértices de acá,
251
+
252
+ 00:05:27.004 --> 00:05:31.245
253
+ que son f, mi ciclo tres, va a
254
+
255
+ 00:05:31.245 --> 00:05:41.050
256
+ ser FEDCBYF. Es este ciclo que tenemos acá
257
+
258
+ 00:05:41.350 --> 00:05:44.470
259
+ en azul y con eso ya habré visitado
260
+
261
+ 00:05:44.470 --> 00:05:47.690
262
+ todas las aristas. ¿Y cuál será mi ciclo
263
+
264
+ 00:05:47.830 --> 00:05:52.095
265
+ euleriano? ¿Cuál será ese ciclo euleriano? Pues solo
266
+
267
+ 00:05:52.095 --> 00:05:55.175
268
+ tendremos que reemplazar este ciclo tres en lo
269
+
270
+ 00:05:55.175 --> 00:05:58.495
271
+ que obtuvimos al final y tendremos que es
272
+
273
+ 00:05:58.495 --> 00:06:04.255
274
+ lo siguiente. A, partimos de f para arrancar
275
+
276
+ 00:06:04.255 --> 00:06:14.800
277
+ este ciclo, así que colocamos FEDCBFY continuamos con
278
+
279
+ 00:06:14.800 --> 00:06:21.550
280
+ lo que teníamos en el ciclo pasado, GCGB,
281
+
282
+ 00:06:21.825 --> 00:06:29.185
283
+ ah y ese sería nuestro ciclo euleriano. Vamos
284
+
285
+ 00:06:29.185 --> 00:06:32.965
286
+ a distinguirlos con colores, este era el segundo
287
+
288
+ 00:06:33.105 --> 00:06:36.305
289
+ camino que tomamos y este era parte del
290
+
291
+ 00:06:36.305 --> 00:06:42.479
292
+ primero. Vamos a comprobar si efectivamente encontramos un
293
+
294
+ 00:06:42.479 --> 00:06:45.680
295
+ ciclo euleriano, vamos a ver si efectivamente pasamos
296
+
297
+ 00:06:45.680 --> 00:06:48.240
298
+ por todas las aristas una sola vez, para
299
+
300
+ 00:06:48.240 --> 00:06:51.360
301
+ ello vamos a borrar todo lo que tenemos
302
+
303
+ 00:06:51.360 --> 00:06:58.015
304
+ acá, todas las conexiones. Vamos a resetear nuestro
305
+
306
+ 00:06:59.435 --> 00:07:03.675
307
+ dibujo y vamos a ver si efectivamente pasamos
308
+
309
+ 00:07:03.675 --> 00:07:07.440
310
+ por todas las conexiones solo una vez, ¿de
311
+
312
+ 00:07:07.440 --> 00:07:13.840
313
+ acuerdo? Entonces, vamos a volver al principio y
314
+
315
+ 00:07:13.840 --> 00:07:15.940
316
+ vamos a seguir la ruta que hemos trazado.
317
+
318
+ 00:07:17.120 --> 00:07:29.338
319
+ Hemos empezado de AAFAAF, después vamos AEAB, después
320
+
321
+ 00:07:29.338 --> 00:07:33.944
322
+ a d, después a c, después a b,
323
+
324
+ 00:07:35.844 --> 00:07:45.000
325
+ después a f, después AF, después AE, después
326
+
327
+ 00:07:45.460 --> 00:07:52.264
328
+ AC, después AG, terminamos en b y terminamos
329
+
330
+ 00:07:52.264 --> 00:07:55.465
331
+ en a. Hemos visitado todas las aristas una
332
+
333
+ 00:07:55.465 --> 00:07:58.345
334
+ y solo una vez y hemos arrancado y
335
+
336
+ 00:07:58.345 --> 00:08:01.384
337
+ hemos terminado exactamente en el mismo punto, así
338
+
339
+ 00:08:01.384 --> 00:08:06.060
340
+ que hemos conseguido el ciclo eualeriano. Hay una
341
+
342
+ 00:08:06.360 --> 00:08:09.500
343
+ condición para saber si lo hemos hecho totalmente
344
+
345
+ 00:08:09.640 --> 00:08:12.120
346
+ bien y es que el número de veces
347
+
348
+ 00:08:12.120 --> 00:08:15.020
349
+ que los nodos aparecen debe ser la mitad
350
+
351
+ 00:08:15.480 --> 00:08:17.800
352
+ del grado que tenga cada uno de estos.
353
+
354
+ 00:08:17.800 --> 00:08:19.400
355
+ Por ejemplo, ¿a qué me refiero? Por ejemplo,
356
+
357
+ 00:08:19.400 --> 00:08:23.155
358
+ este nodo f tiene un grado de cuatro,
359
+
360
+ 00:08:23.155 --> 00:08:25.414
361
+ por lo tanto, en nuestro ciclo de oleeriano
362
+
363
+ 00:08:25.634 --> 00:08:28.194
364
+ debe aparecer la mitad, debe aparecer solo dos
365
+
366
+ 00:08:28.194 --> 00:08:31.315
367
+ veces, y vemos que aparece una y dos
368
+
369
+ 00:08:31.315 --> 00:08:35.569
370
+ veces. E aparece cuatro veces, tiene grado cuatro,
371
+
372
+ 00:08:35.569 --> 00:08:37.970
373
+ así que tiene que aparecer solo dos veces
374
+
375
+ 00:08:37.970 --> 00:08:42.850
376
+ la mitad. Una y dos. Mi nodo c
377
+
378
+ 00:08:42.850 --> 00:08:45.170
379
+ tiene grado cuatro, por lo tanto debe aparecer
380
+
381
+ 00:08:45.170 --> 00:08:50.085
382
+ la mitad solo dos veces, dos veces CYCD
383
+
384
+ 00:08:50.345 --> 00:08:53.385
385
+ tiene grado dos, debe aparecer la mitad, la
386
+
387
+ 00:08:53.385 --> 00:08:56.745
388
+ mitad solo debe aparecer una sola vez, que
389
+
390
+ 00:08:56.745 --> 00:09:00.605
391
+ lo vemos aquí, b tiene grado cuatro, debe
392
+
393
+ 00:09:01.225 --> 00:09:07.760
394
+ aparecer solo dos veces, BYBG tiene grado cuatro
395
+
396
+ 00:09:07.760 --> 00:09:11.360
397
+ debe aparecer solo dos veces, tenemos g y
398
+
399
+ 00:09:11.360 --> 00:09:15.360
400
+ tenemos g y obviamente la única parte donde
401
+
402
+ 00:09:15.360 --> 00:09:16.880
403
+ no se cumple es para a porque es
404
+
405
+ 00:09:16.880 --> 00:09:19.755
406
+ mi nodo inicial y mi nodo terminal que
407
+
408
+ 00:09:19.755 --> 00:09:22.394
409
+ vemos que se ha cumplido, y hemos aplicado
410
+
411
+ 00:09:22.394 --> 00:09:25.774
412
+ el algoritmo de Flury para encontrar un ciclo
413
+
414
+ 00:09:25.915 --> 00:09:29.834
415
+ heuleriano. Ya sabes que puedes identificar fácilmente si
416
+
417
+ 00:09:29.834 --> 00:09:33.181
418
+ un gráfico tiene un ciclo no heuleriano y
419
+
420
+ 00:09:33.181 --> 00:09:36.221
421
+ ya sabes cómo encontrarlo. En la siguiente clase
422
+
423
+ 00:09:36.221 --> 00:09:40.621
424
+ veremos otro algoritmo que será superinteresante. Vamos a
425
+
426
+ 00:09:40.621 --> 00:09:41.521
427
+ la siguiente clase.
a/Curso de Matemáticas Discretas/06-Algoritmos/04-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Matemáticas Discretas/06-Algoritmos/05-Algoritmo de Flujo Máximo en Redes Dirigidas.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:302ae674185ed524470a3cce2aeb57f5a1877b05c936158d32d06023f5bd9f72
3
+ size 145971780
a/Curso de Matemáticas Discretas/06-Algoritmos/05-Algoritmo de Flujo Máximo en Redes Dirigidas.vtt ADDED
@@ -0,0 +1,640 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:04.000 --> 00:00:06.100
4
+ En la imagen que tenemos en nuestras pantallas
5
+
6
+ 00:00:06.240 --> 00:00:08.960
7
+ vemos un gráfico y vemos que es un
8
+
9
+ 00:00:08.960 --> 00:00:12.400
10
+ árbol de expansión, tenemos un número asociado a
11
+
12
+ 00:00:12.400 --> 00:00:16.415
13
+ una conexión. Resulta que nosotros no siempre vamos
14
+
15
+ 00:00:16.475 --> 00:00:19.515
16
+ a querer el coste mínimo, a veces lo
17
+
18
+ 00:00:19.515 --> 00:00:22.175
19
+ que vamos a querer es el flujo máximo.
20
+
21
+ 00:00:22.875 --> 00:00:25.275
22
+ Por ejemplo, supongamos que esta es una red
23
+
24
+ 00:00:25.275 --> 00:00:27.915
25
+ de datos, una red de computadores y que
26
+
27
+ 00:00:27.915 --> 00:00:30.840
28
+ esos números que vemos allí es el número
29
+
30
+ 00:00:30.840 --> 00:00:33.280
31
+ de gigabytes que puede transmitir cada uno de
32
+
33
+ 00:00:33.280 --> 00:00:36.160
34
+ estos canales entre sí. O supongamos que es
35
+
36
+ 00:00:36.160 --> 00:00:41.200
37
+ una red de, por ejemplo, crudo, de petróleo
38
+
39
+ 00:00:41.200 --> 00:00:44.325
40
+ y queremos enviar el máximo flujo de un
41
+
42
+ 00:00:44.385 --> 00:00:47.504
43
+ punto A a un punto G. Entonces allí
44
+
45
+ 00:00:47.504 --> 00:00:49.425
46
+ no vamos a buscar el coste mínimo, sino
47
+
48
+ 00:00:49.425 --> 00:00:51.265
49
+ lo que vamos a buscar es el flujo
50
+
51
+ 00:00:51.265 --> 00:00:54.644
52
+ máximo. En esta clase vamos a ver el
53
+
54
+ 00:00:54.704 --> 00:00:57.504
55
+ algoritmo de flujo máximo y consiste en los
56
+
57
+ 00:00:57.504 --> 00:01:02.340
58
+ pasos que vemos allí. Primero tenemos que direccionar
59
+
60
+ 00:01:02.340 --> 00:01:05.360
61
+ todos los flujos, tenemos que tener consciencia de
62
+
63
+ 00:01:05.740 --> 00:01:08.220
64
+ exactamente de dónde a dónde están yendo cada
65
+
66
+ 00:01:08.220 --> 00:01:09.820
67
+ uno de los flujos para yo tener un
68
+
69
+ 00:01:09.820 --> 00:01:13.500
70
+ recorrido desde mi punto inicial hasta mi punto
71
+
72
+ 00:01:13.500 --> 00:01:18.935
73
+ final y vamos a iniciar en ceros. Vamos
74
+
75
+ 00:01:18.935 --> 00:01:21.814
76
+ a obtener cada una de las trayectorias buscando
77
+
78
+ 00:01:21.814 --> 00:01:26.555
79
+ siempre el mayor flujo entre los nodos. Después
80
+
81
+ 00:01:27.160 --> 00:01:30.460
82
+ vamos a escoger el menor flujo de la
83
+
84
+ 00:01:30.760 --> 00:01:33.960
85
+ trayectoria, vamos a actualizar el gráfico con las
86
+
87
+ 00:01:33.960 --> 00:01:37.420
88
+ capacidades mínimas y vamos a buscar una trayectoria
89
+
90
+ 00:01:37.800 --> 00:01:40.920
91
+ en aumento y repetir hasta que no existan
92
+
93
+ 00:01:40.920 --> 00:01:43.865
94
+ más y hasta que hayamos llegado a nuestro
95
+
96
+ 00:01:43.865 --> 00:01:47.545
97
+ punto final. Suena un poco complejo pero vamos
98
+
99
+ 00:01:47.545 --> 00:01:51.465
100
+ a hacerlo juntos para que nos quede completamente
101
+
102
+ 00:01:51.465 --> 00:01:54.025
103
+ claro, vamos al tablero. Lo que tenemos en
104
+
105
+ 00:01:54.025 --> 00:01:57.720
106
+ nuestras pantallas es un grafo dirigido que es
107
+
108
+ 00:01:57.720 --> 00:02:00.360
109
+ el que nos va a permitir hallar el
110
+
111
+ 00:02:00.360 --> 00:02:03.960
112
+ o aplicar el algoritmo del flujo máximo. A
113
+
114
+ 00:02:03.960 --> 00:02:07.640
115
+ diferencia de un grafo o un árbol de
116
+
117
+ 00:02:07.640 --> 00:02:11.420
118
+ expansión mínima donde buscamos conectar todos los vértices
119
+
120
+ 00:02:12.505 --> 00:02:15.385
121
+ con el mínimo coste, en el algoritmo del
122
+
123
+ 00:02:15.385 --> 00:02:17.865
124
+ flujo máximo, como su nombre lo indica, lo
125
+
126
+ 00:02:17.865 --> 00:02:21.305
127
+ que tratamos es de maximizar ese flujo que
128
+
129
+ 00:02:21.305 --> 00:02:24.685
130
+ tenemos desde un punto inicial a un punto
131
+
132
+ 00:02:24.825 --> 00:02:27.810
133
+ final. En este problema lo que vamos a
134
+
135
+ 00:02:27.810 --> 00:02:31.170
136
+ intentar realizar es enviar lo máximo que podamos
137
+
138
+ 00:02:31.170 --> 00:02:35.250
139
+ de AAG. Esto sirve, por ejemplo, si tú
140
+
141
+ 00:02:35.250 --> 00:02:39.090
142
+ tienes una red de datos que tú sabes
143
+
144
+ 00:02:39.090 --> 00:02:43.555
145
+ que ciertas conexiones transmiten a diferentes capacidades, entonces
146
+
147
+ 00:02:43.555 --> 00:02:46.435
148
+ tú quieres enviar lo máximo posible o si
149
+
150
+ 00:02:46.435 --> 00:02:50.275
151
+ por ejemplo estamos hablando de conexiones eléctricas, si
152
+
153
+ 00:02:50.275 --> 00:02:53.150
154
+ tú quieres enviar lo máximo de la máxima
155
+
156
+ 00:02:53.150 --> 00:02:56.590
157
+ potencia eléctrica de un punto a otro. Entonces,
158
+
159
+ 00:02:56.590 --> 00:02:58.670
160
+ a diferencia del otro que buscamos hallar el
161
+
162
+ 00:02:58.670 --> 00:03:00.830
163
+ coste mínimo, en este buscamos enviar lo más
164
+
165
+ 00:03:00.830 --> 00:03:04.925
166
+ que podamos hacia allá. Es importante que el
167
+
168
+ 00:03:04.925 --> 00:03:08.205
169
+ grafo sea dirigido, si tienes un grafo simple
170
+
171
+ 00:03:08.205 --> 00:03:10.925
172
+ lo lo más importante es primero establecer las
173
+
174
+ 00:03:10.925 --> 00:03:14.364
175
+ direcciones del flujo para que tengas idea de
176
+
177
+ 00:03:14.364 --> 00:03:17.565
178
+ cómo ese flujo puede llegar hasta mi punto
179
+
180
+ 00:03:17.565 --> 00:03:23.220
181
+ g Y es importante que establezcamos esa cantidad
182
+
183
+ 00:03:23.220 --> 00:03:26.340
184
+ de flujo que cada vértice puede dar. Por
185
+
186
+ 00:03:26.340 --> 00:03:29.700
187
+ ejemplo, el vértice a puede lanzar o puede
188
+
189
+ 00:03:29.700 --> 00:03:32.520
190
+ fluir con un caudal o con una capacidad
191
+
192
+ 00:03:32.580 --> 00:03:36.995
193
+ de seis. Y así es como iniciamos nuestro
194
+
195
+ 00:03:36.995 --> 00:03:40.534
196
+ algoritmo. Vamos a poner todos los puntos finales
197
+
198
+ 00:03:40.674 --> 00:03:42.754
199
+ en cero. Vamos a decir que acá tenemos
200
+
201
+ 00:03:42.754 --> 00:03:49.230
202
+ cero, cero, cero, cero, cero y cero. Y
203
+
204
+ 00:03:49.230 --> 00:03:51.790
205
+ queremos enviar el máximo de flujo de mi
206
+
207
+ 00:03:51.790 --> 00:03:54.109
208
+ punto a a mi punto g. Por lo
209
+
210
+ 00:03:54.109 --> 00:03:56.510
211
+ tanto, todo el sistema lo vamos a reiniciar
212
+
213
+ 00:03:56.510 --> 00:04:00.555
214
+ en cero. No hemos enviado absolutamente nada. Y
215
+
216
+ 00:04:00.555 --> 00:04:03.055
217
+ el algoritmo nos dice que tenemos que empezar
218
+
219
+ 00:04:03.114 --> 00:04:05.275
220
+ seleccionando un camino de mi punto a a
221
+
222
+ 00:04:05.275 --> 00:04:08.795
223
+ mi punto g. Entonces, vamos a seleccionar el
224
+
225
+ 00:04:08.795 --> 00:04:16.290
226
+ camino ACFG. Entonces, mi camino uno va a
227
+
228
+ 00:04:16.290 --> 00:04:24.310
229
+ ser ACFGY vamos a empezar analizando ese camino.
230
+
231
+ 00:04:25.170 --> 00:04:28.370
232
+ ¿Cómo qué tanto yo le puedo mandar de
233
+
234
+ 00:04:28.370 --> 00:04:32.165
235
+ por este camino de AAG? Lo que tenemos
236
+
237
+ 00:04:32.165 --> 00:04:35.125
238
+ que analizar ahí es el el el tubo
239
+
240
+ 00:04:35.125 --> 00:04:37.925
241
+ o la conexión que tenga menos capacidad, ya
242
+
243
+ 00:04:37.925 --> 00:04:40.165
244
+ que de nada le sirve a mi camino
245
+
246
+ 00:04:40.165 --> 00:04:42.005
247
+ si yo por acá le envío siete, ya
248
+
249
+ 00:04:42.005 --> 00:04:44.085
250
+ que este solo tiene la capacidad de enviar
251
+
252
+ 00:04:44.085 --> 00:04:47.150
253
+ cuatro. Entonces, en este caso tenemos siete, cuatro
254
+
255
+ 00:04:47.150 --> 00:04:50.110
256
+ y nueve, elegimos el menor que es este
257
+
258
+ 00:04:50.110 --> 00:04:54.270
259
+ cuatro y vamos a enviar cuatro unidades por
260
+
261
+ 00:04:54.270 --> 00:04:59.335
262
+ ese camino. Acá teníamos siete, mandamos cuatro, por
263
+
264
+ 00:04:59.335 --> 00:05:02.775
265
+ lo tanto nos quedan tres unidades que podemos
266
+
267
+ 00:05:02.775 --> 00:05:05.835
268
+ mandar a través de este camino. Acá arrancamos
269
+
270
+ 00:05:06.215 --> 00:05:10.935
271
+ con cero y le acabamos de mandar cuatro,
272
+
273
+ 00:05:10.935 --> 00:05:14.970
274
+ entonces acá tendríamos cuatro, de acá teníamos cuatro
275
+
276
+ 00:05:14.970 --> 00:05:19.050
277
+ y mandamos las cuatro, entonces tendríamos cero, en
278
+
279
+ 00:05:19.050 --> 00:05:22.490
280
+ este punto tendríamos cero y le mandamos cuatro,
281
+
282
+ 00:05:22.490 --> 00:05:27.495
283
+ tendríamos cuatro y acá partíamos con nueve, mandamos
284
+
285
+ 00:05:27.715 --> 00:05:31.474
286
+ cuatro, nos quedan cinco y por último llegamos
287
+
288
+ 00:05:31.474 --> 00:05:36.294
289
+ a cero y tenemos cuatro. Del camino uno
290
+
291
+ 00:05:36.354 --> 00:05:40.759
292
+ en total mandamos cuatro unidades y hemos terminado
293
+
294
+ 00:05:40.759 --> 00:05:43.160
295
+ lo que sería nuestro primer camino. Vamos a
296
+
297
+ 00:05:43.160 --> 00:05:47.160
298
+ seleccionar ahora un segundo camino que nos permita
299
+
300
+ 00:05:47.160 --> 00:05:49.400
301
+ llegar a g. En este caso vamos a
302
+
303
+ 00:05:49.400 --> 00:05:57.235
304
+ seleccionar el camino ABFGY vamos a ver qué
305
+
306
+ 00:05:57.235 --> 00:06:06.355
307
+ podemos obtener por allá, entonces sería ABFYGY observemos
308
+
309
+ 00:06:06.355 --> 00:06:09.255
310
+ cuál es el la conexión con menos capacidad,
311
+
312
+ 00:06:09.395 --> 00:06:14.720
313
+ tenemos seis, tenemos tres y por acá nos
314
+
315
+ 00:06:14.720 --> 00:06:19.280
316
+ quedan cinco, entonces nos queda tres, tres es
317
+
318
+ 00:06:19.280 --> 00:06:22.159
319
+ la cantidad que vamos a mandar. Por este
320
+
321
+ 00:06:22.159 --> 00:06:24.545
322
+ camino tenemos seis y mandamos tres, o sea,
323
+
324
+ 00:06:24.545 --> 00:06:27.745
325
+ que nos quedan tres acá. Tres que llegan
326
+
327
+ 00:06:27.745 --> 00:06:32.805
328
+ acá, tres que mandamos por acá serían cero.
329
+
330
+ 00:06:33.505 --> 00:06:37.285
331
+ Acá teníamos cero, lo vamos a colocar acá.
332
+
333
+ 00:06:37.830 --> 00:06:42.730
334
+ Ahora tenemos tres y de acá tenemos cinco.
335
+
336
+ 00:06:43.430 --> 00:06:47.910
337
+ Mandamos tres, nos quedan dos y cuatro, mandamos
338
+
339
+ 00:06:47.910 --> 00:06:52.245
340
+ tres, nos llegan siete. Ya hemos mandado por
341
+
342
+ 00:06:52.245 --> 00:06:56.085
343
+ este camino, hemos mandado tres unidades, es decir,
344
+
345
+ 00:06:56.085 --> 00:06:58.824
346
+ que acá tenemos un total ahora de siete.
347
+
348
+ 00:06:59.044 --> 00:07:02.324
349
+ Podemos ir corroborando, mirando cuándo cuánto mandamos por
350
+
351
+ 00:07:02.324 --> 00:07:06.030
352
+ cada camino y que efectivamente ese flujo llegue
353
+
354
+ 00:07:06.030 --> 00:07:09.229
355
+ a mi punto final. Vamos a elegir un
356
+
357
+ 00:07:09.229 --> 00:07:15.810
358
+ tercer camino, en este caso por ejemplo ADEYG,
359
+
360
+ 00:07:16.669 --> 00:07:25.205
361
+ entonces vamos con mi tercer camino, ADEYGY observemos
362
+
363
+ 00:07:25.205 --> 00:07:29.305
364
+ las cantidades que tenemos allí. Tenemos cuatro, siete
365
+
366
+ 00:07:29.604 --> 00:07:32.820
367
+ y seis. La menor de ellas es cuatro,
368
+
369
+ 00:07:32.900 --> 00:07:34.740
370
+ por lo tanto esa es la cantidad que
371
+
372
+ 00:07:34.740 --> 00:07:37.460
373
+ vamos a mandar. Vamos a mandar por acá
374
+
375
+ 00:07:37.460 --> 00:07:43.380
376
+ cuatro unidades y empezamos, mandamos cuatro, o sea
377
+
378
+ 00:07:43.380 --> 00:07:46.014
379
+ que nos quedan cero acá, acá llegamos con
380
+
381
+ 00:07:46.014 --> 00:07:49.455
382
+ cero y mandamos cuatro, tenemos cuatro, siete que
383
+
384
+ 00:07:49.455 --> 00:07:52.414
385
+ nos quedan acá, le quitamos cuatro, nos quedan
386
+
387
+ 00:07:52.414 --> 00:07:58.335
388
+ tres, mandamos cuatro, acá nos quedan cuatro, acá
389
+
390
+ 00:07:58.335 --> 00:08:02.440
391
+ teníamos seis, le quitamos cuatro, nos quedan dos.
392
+
393
+ 00:08:03.139 --> 00:08:07.220
394
+ Y acá tenemos siete, llegamos con cuatro y
395
+
396
+ 00:08:07.220 --> 00:08:12.100
397
+ tenemos once unidades ahora. Y ya hemos actualizado
398
+
399
+ 00:08:12.100 --> 00:08:15.145
400
+ nuestro gráfico. Nuevamente corroboramos, acá enviamos cuatro y
401
+
402
+ 00:08:15.145 --> 00:08:17.805
403
+ cuatro, ocho, nueve, diez, once y nos llegan
404
+
405
+ 00:08:17.945 --> 00:08:22.505
406
+ once unidades. Y vemos, analizamos nuestro gráfico y
407
+
408
+ 00:08:22.505 --> 00:08:24.925
409
+ vemos que acá por ejemplo todavía tenemos tres,
410
+
411
+ 00:08:25.065 --> 00:08:28.860
412
+ todavía podemos mandar acá otras tres y empezamos
413
+
414
+ 00:08:29.080 --> 00:08:31.639
415
+ a mirar cuál sería la ruta mediante la
416
+
417
+ 00:08:31.639 --> 00:08:35.080
418
+ cual la podríamos mandar. Como acá yo tengo
419
+
420
+ 00:08:35.080 --> 00:08:39.880
421
+ tres, los podría mandar por acá porque si
422
+
423
+ 00:08:39.880 --> 00:08:43.315
424
+ observamos, si nos vamos por arriba, tendríamos tres,
425
+
426
+ 00:08:43.315 --> 00:08:45.955
427
+ pero acá solo podríamos mandar una, porque por
428
+
429
+ 00:08:45.955 --> 00:08:47.795
430
+ este ya no tenemos nada y por este
431
+
432
+ 00:08:47.795 --> 00:08:50.695
433
+ solo tenemos una. Mientras que acá todavía podríamos
434
+
435
+ 00:08:50.835 --> 00:08:56.630
436
+ mandar cinco, cinco. Entonces vamos a hacer eso.
437
+
438
+ 00:08:56.690 --> 00:08:59.810
439
+ Acá tenemos dos y acá tenemos dos. Vamos
440
+
441
+ 00:08:59.810 --> 00:09:03.190
442
+ a elegir entonces, por acá no podemos llegar.
443
+
444
+ 00:09:03.490 --> 00:09:05.810
445
+ Entonces la única ruta que nos queda es
446
+
447
+ 00:09:05.810 --> 00:09:09.126
448
+ este e g que tenemos acá, porque ya
449
+
450
+ 00:09:09.126 --> 00:09:12.031
451
+ esta ruta está con cero y esta ruta
452
+
453
+ 00:09:12.031 --> 00:09:14.935
454
+ está con cero, solo tenemos esta ruta, así
455
+
456
+ 00:09:14.935 --> 00:09:17.840
457
+ que lo que vamos a hacer es enviar
458
+
459
+ 00:09:17.840 --> 00:09:22.196
460
+ de ACEGY esa va a ser nuestro camino
461
+
462
+ 00:09:22.196 --> 00:09:29.279
463
+ cuatro. ACEGY vamos a ver las capacidades de
464
+
465
+ 00:09:29.279 --> 00:09:32.640
466
+ esas conexiones. De acá nos quedan tres, de
467
+
468
+ 00:09:32.640 --> 00:09:36.900
469
+ CAE tenemos cinco, de EAG tenemos solo dos,
470
+
471
+ 00:09:37.185 --> 00:09:40.145
472
+ Por lo tanto, podemos mandar solo dos, así
473
+
474
+ 00:09:40.145 --> 00:09:43.025
475
+ que mandamos solo dos unidades a través de
476
+
477
+ 00:09:43.025 --> 00:09:46.165
478
+ ese camino. ¿Por dónde? Por aquí por a.
479
+
480
+ 00:09:46.305 --> 00:09:48.865
481
+ Teníamos tres, eso quiere decir que acá nos
482
+
483
+ 00:09:48.865 --> 00:09:52.325
484
+ queda una unidad, la mandamos acá por c,
485
+
486
+ 00:09:53.160 --> 00:09:56.120
487
+ y teníamos cinco, vamos a mandar dos, nos
488
+
489
+ 00:09:56.120 --> 00:10:01.800
490
+ quedan tres. Acá llegan esas dos unidades de
491
+
492
+ 00:10:01.800 --> 00:10:04.940
493
+ cero a dos, y estas dos que teníamos
494
+
495
+ 00:10:05.000 --> 00:10:08.665
496
+ acá las hemos agotado, nos llegan cero y
497
+
498
+ 00:10:08.665 --> 00:10:11.945
499
+ acá nos llegan dos y tenemos trece que
500
+
501
+ 00:10:11.945 --> 00:10:15.305
502
+ nos puede llegar. Si analizamos la gráfica, observamos
503
+
504
+ 00:10:15.305 --> 00:10:18.425
505
+ que solo hay dos posibles formas de llegar
506
+
507
+ 00:10:18.425 --> 00:10:21.225
508
+ a g, que es FYEY por e ya
509
+
510
+ 00:10:21.225 --> 00:10:24.480
511
+ no tenemos más capacidad. Y por f solo
512
+
513
+ 00:10:24.480 --> 00:10:26.960
514
+ tenemos la opción de llegar por c que
515
+
516
+ 00:10:26.960 --> 00:10:29.120
517
+ ya no tenemos nada y por b que
518
+
519
+ 00:10:29.120 --> 00:10:32.660
520
+ ya no nos queda a ningún ninguna capacidad,
521
+
522
+ 00:10:33.120 --> 00:10:36.480
523
+ por lo tanto hemos encontrado el flujo máximo
524
+
525
+ 00:10:36.480 --> 00:10:38.634
526
+ que podemos enviar de mi punto a a
527
+
528
+ 00:10:38.634 --> 00:10:42.235
529
+ mi punto g utilizando este algoritmo. Vamos a
530
+
531
+ 00:10:42.235 --> 00:10:46.074
532
+ ver cuál fue el resultado final. Vamos a
533
+
534
+ 00:10:46.074 --> 00:10:56.000
535
+ hacer nuestra gráfica ABC una, y colocamos acá.
536
+
537
+ 00:10:56.860 --> 00:11:00.139
538
+ Este fue nuestro nuevo final, este era nuestro
539
+
540
+ 00:11:00.139 --> 00:11:09.324
541
+ nuevo inicial, BCDEFY los caminos que teníamos eran
542
+
543
+ 00:11:09.324 --> 00:11:13.885
544
+ los siguientes, de acá a acá, acá, acá,
545
+
546
+ 00:11:13.885 --> 00:11:14.015
547
+ acá, acá, acá, acá, acá, acá, acá, acá,
548
+
549
+ 00:11:14.015 --> 00:11:22.339
550
+ acá, acá, acá, acá, acá, acá, acá, acá,
551
+
552
+ 00:11:22.339 --> 00:11:27.220
553
+ acá y acá. Y empecemos a analizar nodo
554
+
555
+ 00:11:27.220 --> 00:11:30.200
556
+ por nodo. Por mi camino de acá, enviamos
557
+
558
+ 00:11:30.675 --> 00:11:35.095
559
+ tres unidades, por este camino terminamos enviando seis,
560
+
561
+ 00:11:36.115 --> 00:11:42.035
562
+ y por este camino terminamos enviando cuatro, que
563
+
564
+ 00:11:42.035 --> 00:11:45.555
565
+ concuerda con las trece unidades que recibimos al
566
+
567
+ 00:11:45.555 --> 00:11:48.900
568
+ final. De estas tres vemos que todas se
569
+
570
+ 00:11:48.900 --> 00:11:53.860
571
+ fueron a través de este camino, de estas
572
+
573
+ 00:11:53.860 --> 00:11:56.180
574
+ seis vemos que se dividieron, si bien acá
575
+
576
+ 00:11:56.180 --> 00:11:58.580
577
+ miramos, por acá se fueron cuatro y por
578
+
579
+ 00:11:58.580 --> 00:12:01.275
580
+ acá se fueron dos y estas cuatro que
581
+
582
+ 00:12:01.275 --> 00:12:04.075
583
+ se llegaron por acá, se fueron cuatro por
584
+
585
+ 00:12:04.075 --> 00:12:08.095
586
+ acá, de acá vemos que llegamos con seis,
587
+
588
+ 00:12:09.275 --> 00:12:12.895
589
+ cuatro y dos, y por último en este
590
+
591
+ 00:12:13.035 --> 00:12:17.580
592
+ camino empezamos con nueve y terminamos con dos,
593
+
594
+ 00:12:17.800 --> 00:12:22.840
595
+ por lo tanto recibimos siete. Esas siete vemos
596
+
597
+ 00:12:22.840 --> 00:12:24.760
598
+ que llegaron tres por acá y cuatro por
599
+
600
+ 00:12:24.760 --> 00:12:28.440
601
+ acá para al final obtener mi flujo máximo
602
+
603
+ 00:12:28.440 --> 00:12:31.905
604
+ de tres. Y esta gráfica nos permite identificar
605
+
606
+ 00:12:31.905 --> 00:12:33.985
607
+ cómo se reparte el flujo en cada uno
608
+
609
+ 00:12:33.985 --> 00:12:36.545
610
+ de mis vértices, cómo yo llego acá, por
611
+
612
+ 00:12:36.545 --> 00:12:38.785
613
+ ejemplo, con seis, pero se divide en cuatro
614
+
615
+ 00:12:38.785 --> 00:12:41.105
616
+ por acá, dos por acá, y al final
617
+
618
+ 00:12:41.105 --> 00:12:46.000
619
+ me permiten recibir todo ese flujo máximo. Así
620
+
621
+ 00:12:46.000 --> 00:12:48.080
622
+ es, por ejemplo, cómo funciona una red de
623
+
624
+ 00:12:48.080 --> 00:12:51.440
625
+ alcantarillado, una red de distribución eléctrica, una red
626
+
627
+ 00:12:51.440 --> 00:12:54.375
628
+ de comunicaciones, los datos, por ejemplo, también se
629
+
630
+ 00:12:54.535 --> 00:12:57.255
631
+ entrelazan así a través de los vértices. Ahora
632
+
633
+ 00:12:57.255 --> 00:13:00.395
634
+ ya sabes cómo puedes encontrar el flujo máximo
635
+
636
+ 00:13:01.015 --> 00:13:05.035
637
+ de una gráfica y cómo puedes interpretar estos
638
+
639
+ 00:13:05.575 --> 00:13:09.115
640
+ sistemas. Nos vemos en la siguiente clase.
a/Curso de Matemáticas Discretas/06-Algoritmos/05-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Matemáticas Discretas/06-Algoritmos/06-Algoritmos de Grafos Prim Dijkstra Kruskal y Fleury.mhtml ADDED
The diff for this file is too large to render. See raw diff
 
a/Curso de Matemáticas Discretas/07-Conclusiones/01-Repaso Final de Matemáticas Discretas Lógica Conjuntos y Algoritmos.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8e7e82b237f136edd570d32b82e8ecc8991da6b23ab9ee837a3b38ed59090045
3
+ size 12623514
a/Curso de Matemáticas Discretas/07-Conclusiones/01-Repaso Final de Matemáticas Discretas Lógica Conjuntos y Algoritmos.vtt ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00:00.000 --> 00:00:08.320
4
+ Felicitaciones lo has conseguido has completado el curso
5
+
6
+ 00:00:08.320 --> 00:00:12.000
7
+ de matemáticas discretas vamos a hacer un breve
8
+
9
+ 00:00:12.000 --> 00:00:13.935
10
+ repaso de todos los temas que hemos visto
11
+
12
+ 00:00:14.095 --> 00:00:17.935
13
+ Arrancamos con un poco de lógica viendo cómo
14
+
15
+ 00:00:17.935 --> 00:00:22.895
16
+ la lógica nos permite diseñar o crear cosas
17
+
18
+ 00:00:22.895 --> 00:00:25.635
19
+ que tengan una estructura, que tengan una coherencia.
20
+
21
+ 00:00:26.350 --> 00:00:29.310
22
+ Vimos lo que fueron tablas de verdad, pasamos
23
+
24
+ 00:00:29.310 --> 00:00:32.190
25
+ a lo que fueron conjuntos donde vimos que
26
+
27
+ 00:00:32.190 --> 00:00:34.510
28
+ un conjunto es un grupo de elementos que
29
+
30
+ 00:00:34.510 --> 00:00:39.165
31
+ pertenecen y que tienen características afines, vimos lo
32
+
33
+ 00:00:39.165 --> 00:00:43.085
34
+ que fueron las gráficas, vimos los árboles y
35
+
36
+ 00:00:43.085 --> 00:00:47.325
37
+ vimos algunos algoritmos de mucha importancia para tus
38
+
39
+ 00:00:47.325 --> 00:00:50.765
40
+ proyectos. Espero que me haya explicado lo mejor
41
+
42
+ 00:00:50.765 --> 00:00:53.660
43
+ posible para mí fue un placer acompañarte en
44
+
45
+ 00:00:53.660 --> 00:00:56.300
46
+ todo este viaje y ahora te invito a
47
+
48
+ 00:00:56.300 --> 00:00:59.180
49
+ que tomes el examen que tenemos preparado para
50
+
51
+ 00:00:59.180 --> 00:01:02.300
52
+ ti donde pondrás a prueba tus conocimientos y
53
+
54
+ 00:01:02.300 --> 00:01:06.300
55
+ saldrás con un certificado exitoso. Nos vemos en
56
+
57
+ 00:01:06.300 --> 00:01:08.400
58
+ una próxima oportunidad, muchas gracias.
a/Curso de Matemáticas Discretas/07-Conclusiones/01-Resumen.html ADDED
The diff for this file is too large to render. See raw diff