What's an algorithm? - David J. Malan

여러분의 뇌는 알고리즘을 풀 수 있습니다 - 데이비드 J. 말란 (David J. Malan)

2,570,249 views

2013-05-20 ・ TED-Ed


New videos

What's an algorithm? - David J. Malan

여러분의 뇌는 알고리즘을 풀 수 있습니다 - 데이비드 J. 말란 (David J. Malan)

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

TED-Ed


아래 영문자막을 더블클릭하시면 영상이 재생됩니다.

00:00
Translator: Andrea McDonough Reviewer: Jessica Ruby
0
0
7000
번역: Junbum Lee 검토: Jungmin Naomi Lee
00:15
What's an algorithm?
1
15483
1348
알고리즘이란 무엇일까요?
00:16
In computer science,
2
16831
831
컴퓨터공학에서
00:17
an algorithm is a set of instructions
3
17662
1754
알고리즘이란 순서대로 문제를 풀기 위한
00:19
for solving some problem, step-by-step.
4
19416
2689
지시 절차의 모음입니다.
00:22
Typically, algorithms are executed by computers,
5
22105
2272
일반적으로 알고리즘은 컴퓨터에 의해 실행됩니다.
00:24
but we humans have algorithms as well.
6
24377
2167
하지만 우리 인간도 알고리즘을 갖고 있습니다.
00:26
For instance, how would you go about counting
7
26544
1853
예를 들어,
00:28
the number of people in a room?
8
28397
1820
방에 있는 사람들의 수를 어떻게 세나요?
00:30
Well, if you're like me,
9
30217
1215
음, 만약에 여러분이 저와 같다면
00:31
you probably point at each person,
10
31432
1496
여러분은 아마도 각각의 사람들 가리키며
00:32
one at a time,
11
32928
960
한 번에 한 명씩,
00:33
and count up from 0:
12
33888
1837
0부터 세기 시작할 것입니다.
00:35
1, 2, 3, 4 and so forth.
13
35725
2873
1,2,3,4...처럼요.
00:38
Well, that's an algorithm.
14
38598
1113
음, 이게 바로 알고리즘입니다.
00:39
In fact, let's try to express it
15
39711
1134
자, 이제 조금 더 공식적으로
00:40
a bit more formally in pseudocode,
16
40845
2229
유사 부호에 관해 이야기 해볼게요.
00:43
English-like syntax
17
43074
831
00:43
that resembles a programming language.
18
43905
2124
유사 부호는 프로그래밍 언어와 유사한
영어와 같은 문법 언어입니다.
00:46
Let n equal 0.
19
46029
1767
n을 0과 같다고 둬봅시다.
00:47
For each person in room, set n = n + 1.
20
47796
4792
방 안에 있는 각각의 사람에 대해 n=n+1이라 설정합니다.
00:52
How to interpret this pseudocode?
21
52588
1497
어떻게 이 기호를 해석할까요?
00:54
Well, line 1 declares, so to speak,
22
54085
1836
첫 줄이 나타내는 것을 보면
00:55
a variable called n
23
55921
1416
n이라 불리는 변수를 정하고
00:57
and initializes its value to zero.
24
57337
2379
그 초기값을 0으로 설정합니다.
00:59
This just means that at the beginning of our algorithm,
25
59716
2335
이는 이 알고리즘에서
01:02
the thing with which we're counting
26
62051
1584
우리가 처음으로 셀 것은
01:03
has a value of zero.
27
63635
1668
0의 값을 갖고 있다는 겁니다.
01:05
After all, before we start counting,
28
65303
1336
결국, 숫자를 세기 전에는
01:06
we haven't counted anything yet.
29
66639
1669
아직 아무것도 세지 않은 셈이지요.
01:08
Calling this variable n is just a convention.
30
68308
2248
이 변수를 n이라 부르는 것은 관례일 뿐입니다.
01:10
I could have called it almost anything.
31
70556
2005
이것은 어떤 다른 것으로도 부를 수 있습니다.
01:12
Now, line 2 demarks the start of loop,
32
72561
2086
두 번째 줄은 루프(순환)의 시작을 나타내는데
01:14
a sequence of steps that will repeat some number of times.
33
74647
3044
루프(순환)란 연속적인 절차를 여러 번 반복하는 것입니다.
01:17
So, in our example, the step we're taking
34
77691
1794
그래서, 위의 예시에서, 우리가 택하는 단계는
01:19
is counting people in the room.
35
79485
1734
방 안의 사람을 세는 것이지요.
01:21
Beneath line 2 is line 3,
36
81219
1763
둘 째 줄 밑에 세 번째 줄이 있는데
01:22
which describes exactly how we'll go about counting.
37
82982
2511
이것이 우리가 수를 어떻게 세어 나갈 것인지 정확히 설명해줍니다.
01:25
The indentation implies that it's line 3
38
85493
2250
이 들여쓰기는 세 번째 줄이
01:27
that will repeat.
39
87743
1222
반복될 것임을 의미하지요.
01:28
So, what the pseudocode is saying
40
88965
1219
따라서 이 유사 부호가 의미하는 바는
01:30
is that after starting at zero,
41
90184
2066
0에서 시작하여
01:32
for each person in the room,
42
92250
1710
방 안에 있는 각각의 사람들에 대하여
01:33
we'll increase n by 1.
43
93960
2218
n을 1씩 증가시킨다는 것이지요.
01:36
Now, is this algorithm correct?
44
96178
2329
이 알고리즘은 정확한가요?
01:38
Well, let's bang on it a bit.
45
98507
1608
자, 계속 탐구해 봅시다.
01:40
Does it work if there are 2 people in the room?
46
100115
2826
방에 두 사람이 있을 때에도 이 알고리즘이 적용될까요?
01:42
Let's see.
47
102941
780
한 번 봅시다.
01:43
In line 1, we initialize n to zero.
48
103721
2085
첫 줄에서 n을 0으로 두고
01:45
For each of these two people,
49
105806
1302
두 사람 각각에 대해
01:47
we then increment n by 1.
50
107108
2168
n을 1씩 증가시킵니다.
01:49
So, in the first trip through the loop,
51
109276
1582
순환 고리의 첫 번째 과정에서
01:50
we update n from zero to 1,
52
110858
2005
우리는 n을 0에서 1로 업데이트 하지요.
01:52
on the second trip through that same loop,
53
112863
1655
같은 순환의 두 번째 과정에서
01:54
we update n from 1 to 2.
54
114518
2249
우리는 n을 1에서 2로 업데이트합니다.
01:56
And so, by this algorithm's end, n is 2,
55
116767
3341
그래서 이 알고리즘의 마지막 값은 n=2가 됩니다.
02:00
which indeed matches the number of people in the room.
56
120108
2113
이 숫자 2는 방 안의 사람의 수와 일치합니다.
02:02
So far, so good.
57
122221
1223
지금까지는 괜찮지요.
02:03
How about a corner case, though?
58
123444
1752
그렇다면 특이한 경우라면 어떤가요?
02:05
Suppose that there are zero people in the room,
59
125196
1964
방 안에 한 사람도 없다고 가정해봅시다.
02:07
besides me, who's doing the counting.
60
127160
2347
수를 세는 저를 제외하고요.
02:09
In line 1, we again initialize n to zero.
61
129507
3010
첫 줄에서 n을 역시 0으로 시작합니다.
02:12
This time, though, line 3 doesn't execute at all
62
132517
2522
이번에는, 세 번째 줄이 전혀 실행되지 않아요.
02:15
since there isn't a person in the room,
63
135039
1880
이는 방 안에 사람이 아무도 없어서
02:16
and so, n remains zero,
64
136919
1624
n은 여전히 0으로 남아있기 때문이지요.
02:18
which indeed matches the number of people in the room.
65
138543
2359
0은 방 안의 사람 수와 여전히 정확히 일치합니다.
02:20
Pretty simple, right?
66
140902
906
꽤 간단합니다. 그렇죠?
02:21
But counting people one a time is pretty inefficient, too, no?
67
141808
3216
하지만, 한 번에 한 명씩 세어나가는 것은 꽤 비효율적이지요?
02:25
Surely, we can do better!
68
145024
1568
물론, 좀 더 나은 방법이 있습니다!
02:26
Why not count two people at a time?
69
146592
1866
한 번에 두 명씩 세어 보는건 어떤가요?
02:28
Instead of counting 1, 2, 3, 4, 5, 6, 7, 8, and so forth,
70
148458
5099
1,2,3,4,5,6,7.8.... 이렇게 세는 것 대신에
02:33
why not count
71
153557
918
이렇게는 어때요?
02:34
2, 4, 6, 8, and so on?
72
154475
2127
2,4,6,8...등 으로요.
02:36
It even sounds faster, and it surely is.
73
156602
2418
언뜻 보기에도 훨씬 빨라보이는데, 확실히 빠릅니다.
02:39
Let's express this optimization in pseudocode.
74
159020
2835
그럼 이 최적화를 유사 부호로 나타내 볼까요?
02:41
Let n equal zero.
75
161855
1462
n을 0이라 둡시다.
02:43
For each pair of people in room,
76
163317
1997
방 안에 있는 사람들 각각의 쌍에 대하여
02:45
set n = n + 2.
77
165314
2588
n = n+2로 설정합니다.
02:47
Pretty simple change, right?
78
167902
1673
꽤 단순한 변화네요. 그렇죠?
02:49
Rather than count people one at a time,
79
169575
1791
한 번에 한 명을 세는 것 대신에
02:51
we instead count them two at a time.
80
171366
2343
한 번에 두 명씩 세어 보겠습니다.
02:53
This algorithm's thus twice as fast as the last.
81
173709
2815
따라서 이 알고리즘은 이전 것보다 두 배나 빠르네요.
02:56
But is it correct?
82
176524
1346
하지만, 이게 정확할까요?
02:57
Let's see.
83
177870
794
한 번 봅시다.
02:58
Does it work if there are 2 people in the room?
84
178664
2125
만약 방 안에 두 사람이 있다면 이 알고리즘이 적용될까요?
03:00
In line 1, we initialize n to zero.
85
180789
2342
첫 줄에서 n을 0이라 둡시다.
03:03
For that one pair of people, we then increment n by 2.
86
183131
3268
한 쌍(두 명)의 사람들이므로 n을 2씩 증가시켰습니다.
03:06
And so, by this algorithm's end, n is 2,
87
186399
2522
결과적으로 이 알고리즘의 마지막 값은
03:08
which indeed matches the number of people in the room.
88
188921
2382
n=2가 되고 이것은 방 안의 사람 수와 일치하네요.
03:11
Suppose next that there are zero people in the room.
89
191303
2412
다음으로 방 안에 사람이 한 명도 없다고 가정해 봅시다.
03:13
In line 1, we initialize n to zero.
90
193715
2587
첫 줄에서 n을 0으로 둡시다.
03:16
As before, line 3 doesn't execute at all
91
196302
2080
그래서 세 번째 줄은 전혀 실행되지 않습니다.
03:18
since there aren't any pairs of people in the room,
92
198382
2342
방 안에 남은 사람이 없어서
03:20
and so, n remains zero,
93
200724
1686
n은 여전히 0으로 남기 때문이지요.
03:22
which indeed matches the number of people in the room.
94
202410
2773
여전히 방 안의 사람 수와 같군요.
03:25
But what if there are 3 people in the room?
95
205183
2372
그런데 방 안에 3명의 사람이 있으면 어떻게 될까요?
03:27
How does this algorithm fair?
96
207555
1937
이 알고리즘은 적용될까요?
03:29
Let's see.
97
209492
829
살펴 봅시다.
03:30
In line 1, we initialize n to zero.
98
210321
2670
첫 줄을 n을 0으로 시작합니다.
03:32
For a pair of those people,
99
212991
1290
한 쌍의 사람들에 대해
03:34
we then increment n by 2,
100
214281
1916
n을 2만큼 증가시킵니다.
03:36
but then what?
101
216197
992
하지만 그 다음은요?
03:37
There isn't another full pair of people in the room,
102
217189
2262
방 안에 또 다른 한 쌍(두 명)의 사람이 없기 때문에,
03:39
so line 2 no longer applies.
103
219451
2210
더이상 두 번째 줄은 적용될 수 없지요.
03:41
And so, by this algorithm's end,
104
221661
1669
그래서 이 알고리즘의 마지막 값인
03:43
n is still 2, which isn't correct.
105
223330
2596
n은 여전히 2가 됩니다. 즉, 방 안의 사람 수와는 같지 않게 되네요.
03:45
Indeed this algorithm is said to be buggy
106
225926
2332
사실, 이 알고리즘에는 결함이 있습니다.
03:48
because it has a mistake.
107
228258
1148
왜냐하면 실수가 있었기 때문이지요.
03:49
Let's redress with some new pseudocode.
108
229406
1896
그럼, 새로운 유사 코드로 바로 잡아봅시다.
03:51
Let n equal zero.
109
231302
1793
n을 0으로 놓고
03:53
For each pair of people in room,
110
233095
2123
방 안에 있는 사람 한 쌍에 대해
03:55
set n = n + 2.
111
235218
2422
n = n+2로 둡시다.
03:57
If 1 person remains unpaired,
112
237640
2459
만약에 쌍을 이루지 못한 한 사람이 남으면,
04:00
set n = n + 1.
113
240099
2376
n을 n+1로 설정합니다.
04:02
To solve this particular problem,
114
242475
1507
이 특정한 문제를 해결하기 위해
04:03
we've introduced in line 4 a condition,
115
243982
2249
네 번째 줄에 하나의 조건을 도입했습니다.
04:06
otherwise known as a branch,
116
246231
1835
다른 표현으로 곁가지(branch)라고 하는데,
04:08
that only executes if there is one person
117
248066
2253
쌍을 이루지 못한 한 사람이 있을 때에만 실행되는
04:10
we could not pair with another.
118
250319
1876
조건이지요.
04:12
So now, whether there's 1 or 3
119
252195
2065
그럼 이제, 1명이 있든 3명이 있든,
04:14
or any odd number of people in the room,
120
254260
2273
혹은 다른 홀수의 사람들이 있든,
04:16
this algorithm will now count them.
121
256533
2288
이 알고리즘은 그 사람들을 셀 수 있을 것입니다.
04:18
Can we do even better?
122
258821
1345
좀 더 낫게 만들 수 있을까요?
04:20
Well, we could count in 3's or 4's or even 5's and 10's,
123
260166
3294
글쎄요, 우리는 3, 4, 5, 10의 배수로 셀 수 있을 것입니다.
04:23
but beyond that it's going to get
124
263460
1300
하지만, 그 이상의 수로는
04:24
a little bit difficult to point.
125
264760
1870
숫자를 세기에 약간 힘든 점이 있지요.
04:26
At the end of the day,
126
266630
937
결국 가장 중요한 것은
04:27
whether executed by computers or humans,
127
267567
2264
컴퓨터나 사람에 의해 알고리즘이 실행되면
04:29
algorithms are just a set of instructions
128
269831
1960
알고리즘은 단지
04:31
with which to solve problems.
129
271791
1838
문제를 풀기 위한 지시의 모임이라는 것입니다.
04:33
These were just three.
130
273629
1743
이는 단지 세 가지 뿐이지요.
04:35
What problem would you solve with an algorithm?
131
275372
2982
여러분은 알고리즘으로 어떤 문제를 해결하고 싶으신가요?
이 웹사이트 정보

이 사이트는 영어 학습에 유용한 YouTube 동영상을 소개합니다. 전 세계 최고의 선생님들이 가르치는 영어 수업을 보게 될 것입니다. 각 동영상 페이지에 표시되는 영어 자막을 더블 클릭하면 그곳에서 동영상이 재생됩니다. 비디오 재생에 맞춰 자막이 스크롤됩니다. 의견이나 요청이 있는 경우 이 문의 양식을 사용하여 문의하십시오.

https://forms.gle/WvT1wiN1qDtmnspy7