What's an algorithm? - David J. Malan

Tu cerebro puede hacer algoritmos - David J. Malan

2,570,249 views ・ 2013-05-20

TED-Ed


Haga doble clic en los subtítulos en inglés para reproducir el vídeo.

00:00
Translator: Andrea McDonough Reviewer: Jessica Ruby
0
0
7000
Traductor: Pablo Castelo Revisor: Emma Gon
00:15
What's an algorithm?
1
15483
1348
¿Qué es un algoritmo?
00:16
In computer science,
2
16831
831
En informática,
00:17
an algorithm is a set of instructions
3
17662
1754
un algoritmo es una serie de instrucciones
00:19
for solving some problem, step-by-step.
4
19416
2689
para solucionar algún problema, paso a paso.
00:22
Typically, algorithms are executed by computers,
5
22105
2272
Típicamente, los algoritmos son ejecutados exclusivamente por computadoras,
00:24
but we humans have algorithms as well.
6
24377
2167
pero los humanos también tenemos algoritmos.
00:26
For instance, how would you go about counting
7
26544
1853
Por ejemplo, ¿cómo harías para contar
00:28
the number of people in a room?
8
28397
1820
el número de personas en una habitación?
00:30
Well, if you're like me,
9
30217
1215
Bueno, si tú eres como yo,
00:31
you probably point at each person,
10
31432
1496
probablemente señales a cada persona,
00:32
one at a time,
11
32928
960
de una por una,
00:33
and count up from 0:
12
33888
1837
y cuentas desde 0:
00:35
1, 2, 3, 4 and so forth.
13
35725
2873
1, 2, 3, 4 y así sucesivamente.
00:38
Well, that's an algorithm.
14
38598
1113
Bueno, eso es un algoritmo.
00:39
In fact, let's try to express it
15
39711
1134
De hecho, tratemos de expresarlo
00:40
a bit more formally in pseudocode,
16
40845
2229
un poco más formalmente en pseudocódigo,
00:43
English-like syntax
17
43074
831
00:43
that resembles a programming language.
18
43905
2124
es como la sintaxis en el idioma,
que se asemeja a un lenguaje de programación.
00:46
Let n equal 0.
19
46029
1767
Fijemos "n" igual a 0.
00:47
For each person in room, set n = n + 1.
20
47796
4792
Para cada persona en la habitación fijemos n = n + 1.
00:52
How to interpret this pseudocode?
21
52588
1497
¿Cómo interpretamos este pseudocódigo?
00:54
Well, line 1 declares, so to speak,
22
54085
1836
Bueno, la línea 1 declara, por así decirlo,
00:55
a variable called n
23
55921
1416
una variable llamada "n"
00:57
and initializes its value to zero.
24
57337
2379
e inicia su valor a cero.
00:59
This just means that at the beginning of our algorithm,
25
59716
2335
Esto solo significa que al principio de nuestro algoritmo,
01:02
the thing with which we're counting
26
62051
1584
la cosa con la que estamos contando
01:03
has a value of zero.
27
63635
1668
tiene un valor de cero.
01:05
After all, before we start counting,
28
65303
1336
Después de todo, antes de empezar a contar,
01:06
we haven't counted anything yet.
29
66639
1669
no habíamos contado nada.
01:08
Calling this variable n is just a convention.
30
68308
2248
Llamar a esta variable "n" es solo una convención.
01:10
I could have called it almost anything.
31
70556
2005
Pude haberla llamado prácticamente de cualquier forma.
01:12
Now, line 2 demarks the start of loop,
32
72561
2086
Ahora, la línea 2 indica el inicio de un ciclo,
01:14
a sequence of steps that will repeat some number of times.
33
74647
3044
una secuencia de pasos que se repetirán un cierto número de veces.
01:17
So, in our example, the step we're taking
34
77691
1794
Entonces, en nuestro ejemplo, el paso que tomamos
01:19
is counting people in the room.
35
79485
1734
es contar a las personas en la habitación.
01:21
Beneath line 2 is line 3,
36
81219
1763
Debajo de la línea 2 está la línea 3,
01:22
which describes exactly how we'll go about counting.
37
82982
2511
la cual describe exactamente cómo vamos a ir contando.
01:25
The indentation implies that it's line 3
38
85493
2250
La sangría implica que es la línea 3
01:27
that will repeat.
39
87743
1222
la que vamos a repetir.
01:28
So, what the pseudocode is saying
40
88965
1219
Entonces, lo que el pseudocódigo dice
01:30
is that after starting at zero,
41
90184
2066
es que después de empezar en cero,
01:32
for each person in the room,
42
92250
1710
para cada persona en la habitación,
01:33
we'll increase n by 1.
43
93960
2218
incrementaremos el valor de "n" en 1.
01:36
Now, is this algorithm correct?
44
96178
2329
Ahora, ¿está correcto este algoritmo?
01:38
Well, let's bang on it a bit.
45
98507
1608
Bueno, pongámoslo a prueba.
01:40
Does it work if there are 2 people in the room?
46
100115
2826
¿Funciona si hay dos personas en la habitación?
01:42
Let's see.
47
102941
780
Veamos.
01:43
In line 1, we initialize n to zero.
48
103721
2085
En la línea 1, iniciamos el valor de "n" a cero.
01:45
For each of these two people,
49
105806
1302
Para cada una de las dos personas,
01:47
we then increment n by 1.
50
107108
2168
incrementamos el valor de "n" en 1.
01:49
So, in the first trip through the loop,
51
109276
1582
Entonces, en el primer viaje a través del ciclo,
01:50
we update n from zero to 1,
52
110858
2005
actualizamos "n" de cero a 1,
01:52
on the second trip through that same loop,
53
112863
1655
en el segundo viaje por el mismo ciclo,
01:54
we update n from 1 to 2.
54
114518
2249
actualizamos "n" de 1 a 2.
01:56
And so, by this algorithm's end, n is 2,
55
116767
3341
Entonces, para los fines de este algoritmo,"n" es igual a 2,
02:00
which indeed matches the number of people in the room.
56
120108
2113
lo que en efecto coincide con el número de personas que hay en la habitación.
02:02
So far, so good.
57
122221
1223
Hasta ahora, todo bien.
02:03
How about a corner case, though?
58
123444
1752
¿Qué tal un caso atípico?
02:05
Suppose that there are zero people in the room,
59
125196
1964
Supón que hay cero personas en la habitación,
02:07
besides me, who's doing the counting.
60
127160
2347
sin incluirme a mí porque yo hago el conteo.
02:09
In line 1, we again initialize n to zero.
61
129507
3010
En la línea 1, de nuevo iniciamos el valor de "n" a cero.
02:12
This time, though, line 3 doesn't execute at all
62
132517
2522
Pero esta vez, la línea 3 no se ejecuta
02:15
since there isn't a person in the room,
63
135039
1880
porque no hay personas en la habitación,
02:16
and so, n remains zero,
64
136919
1624
así que, "n" continúa siendo cero,
02:18
which indeed matches the number of people in the room.
65
138543
2359
lo cual efectivamente coincide con el número de personas en la habitación.
02:20
Pretty simple, right?
66
140902
906
Muy simple, ¿cierto?
02:21
But counting people one a time is pretty inefficient, too, no?
67
141808
3216
Pero, contar personas de una por una es muy ineficiente ¿no?
02:25
Surely, we can do better!
68
145024
1568
Seguro, podemos hacerlo mejor.
02:26
Why not count two people at a time?
69
146592
1866
¿Por qué no contamos de dos personas a la vez?
02:28
Instead of counting 1, 2, 3, 4, 5, 6, 7, 8, and so forth,
70
148458
5099
En vez de contar 1, 2, 3, 4, 5, 6, 7, 8, y así sucesivamente,
02:33
why not count
71
153557
918
¿por qué no contamos
02:34
2, 4, 6, 8, and so on?
72
154475
2127
2, 4, 6, 8, y así sucesivamente?
02:36
It even sounds faster, and it surely is.
73
156602
2418
Incluso suena más rápido, y de seguro lo es.
02:39
Let's express this optimization in pseudocode.
74
159020
2835
Expresemos esta optimización en pseudocódigo.
02:41
Let n equal zero.
75
161855
1462
Fijemos "n" igual a cero.
02:43
For each pair of people in room,
76
163317
1997
Para cada par de personas en la habitación,
02:45
set n = n + 2.
77
165314
2588
hagamos n = n + 2.
02:47
Pretty simple change, right?
78
167902
1673
Un cambio muy sencillo ¿cierto?
02:49
Rather than count people one at a time,
79
169575
1791
En vez de contar personas de una por una,
02:51
we instead count them two at a time.
80
171366
2343
vamos a contar dos a la vez.
02:53
This algorithm's thus twice as fast as the last.
81
173709
2815
Por lo tanto, este algoritmo es el doble de rápido.
02:56
But is it correct?
82
176524
1346
Pero, ¿es correcto?
02:57
Let's see.
83
177870
794
Veamos.
02:58
Does it work if there are 2 people in the room?
84
178664
2125
¿Funciona si hay dos personas en la habitación?
03:00
In line 1, we initialize n to zero.
85
180789
2342
En la línea 1, iniciamos el valor de "n" a cero.
03:03
For that one pair of people, we then increment n by 2.
86
183131
3268
Para este par de personas, incrementamos el valor de "n" en 2.
03:06
And so, by this algorithm's end, n is 2,
87
186399
2522
Y así, para los fines de este algoritmo el valor de "n" es 2,
03:08
which indeed matches the number of people in the room.
88
188921
2382
Que es efectivamente el número de personas en la habitación.
03:11
Suppose next that there are zero people in the room.
89
191303
2412
Ahora supongamos que hay cero personas en la habitación.
03:13
In line 1, we initialize n to zero.
90
193715
2587
En la línea 1, iniciamos el valor de "n" a cero.
03:16
As before, line 3 doesn't execute at all
91
196302
2080
Como antes, la línea 3 no se ejecuta
03:18
since there aren't any pairs of people in the room,
92
198382
2342
ya que no hay ningún par de personas en la habitación,
03:20
and so, n remains zero,
93
200724
1686
por lo tanto, "n" continúa siendo cero,
03:22
which indeed matches the number of people in the room.
94
202410
2773
lo que en efecto coincide con el número de personas en la habitación.
03:25
But what if there are 3 people in the room?
95
205183
2372
Pero, ¿qué pasa si hay 3 personas en la habitación?
03:27
How does this algorithm fair?
96
207555
1937
¿Cómo le va a este algoritmo?
03:29
Let's see.
97
209492
829
Veamos.
03:30
In line 1, we initialize n to zero.
98
210321
2670
En la línea 1, iniciamos el valor de "n" a cero.
03:32
For a pair of those people,
99
212991
1290
Para un par de estas personas,
03:34
we then increment n by 2,
100
214281
1916
incrementamos el valor de "n" en 2,
03:36
but then what?
101
216197
992
y después ¿qué?
03:37
There isn't another full pair of people in the room,
102
217189
2262
No hay otro par completo de personas en la habitación,
03:39
so line 2 no longer applies.
103
219451
2210
así que la línea 2 ya no aplica.
03:41
And so, by this algorithm's end,
104
221661
1669
Entonces, para los fines de este algoritmo,
03:43
n is still 2, which isn't correct.
105
223330
2596
"n" es otra vez 2, lo cual no es correcto.
03:45
Indeed this algorithm is said to be buggy
106
225926
2332
De hecho, este algoritmo tiene un "bug"
03:48
because it has a mistake.
107
228258
1148
porque contiene un error.
03:49
Let's redress with some new pseudocode.
108
229406
1896
Tratemos otra vez con pseudocódigo nuevo.
03:51
Let n equal zero.
109
231302
1793
Fijemos "n" igual a cero.
03:53
For each pair of people in room,
110
233095
2123
Para cada par de personas en la habitación,
03:55
set n = n + 2.
111
235218
2422
haz n = n + 2.
03:57
If 1 person remains unpaired,
112
237640
2459
Si una persona queda sin par,
04:00
set n = n + 1.
113
240099
2376
haz n = n + 1.
04:02
To solve this particular problem,
114
242475
1507
Para solucionar este problema en particular,
04:03
we've introduced in line 4 a condition,
115
243982
2249
hemos insertado en la línea 4 una condición,
04:06
otherwise known as a branch,
116
246231
1835
también llamada como ramificación,
04:08
that only executes if there is one person
117
248066
2253
que solo se ejecuta si hay una persona
04:10
we could not pair with another.
118
250319
1876
que no tiene pareja.
04:12
So now, whether there's 1 or 3
119
252195
2065
Ahora, sin importar si hay 1 o 3
04:14
or any odd number of people in the room,
120
254260
2273
o cualquier número impar de personas en la habitación,
04:16
this algorithm will now count them.
121
256533
2288
este algoritmo los contará.
04:18
Can we do even better?
122
258821
1345
¿Lo podremos mejorar?
04:20
Well, we could count in 3's or 4's or even 5's and 10's,
123
260166
3294
Bueno, podríamos contar de 3, o de 4, hasta de 5 o 10,
04:23
but beyond that it's going to get
124
263460
1300
pero se volvería
04:24
a little bit difficult to point.
125
264760
1870
un poco difícil de direccionar.
04:26
At the end of the day,
126
266630
937
Al final de cuentas,
04:27
whether executed by computers or humans,
127
267567
2264
ya sea que los ejecuten computadoras o humanos,
04:29
algorithms are just a set of instructions
128
269831
1960
los algoritmos solo son una serie de instrucciones
04:31
with which to solve problems.
129
271791
1838
que solucionan problemas.
04:33
These were just three.
130
273629
1743
Estos solo fueron tres.
04:35
What problem would you solve with an algorithm?
131
275372
2982
¿Qué problema solucionarías usando un algoritmo?
Acerca de este sitio web

Este sitio le presentará vídeos de YouTube útiles para aprender inglés. Verá lecciones de inglés impartidas por profesores de primera categoría de todo el mundo. Haz doble clic en los subtítulos en inglés que aparecen en cada página de vídeo para reproducir el vídeo desde allí. Los subtítulos se desplazan en sincronía con la reproducción del vídeo. Si tiene algún comentario o petición, póngase en contacto con nosotros mediante este formulario de contacto.

https://forms.gle/WvT1wiN1qDtmnspy7