What's an algorithm? - David J. Malan

Your brain can solve algorithms - David J. Malan

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

TED-Ed


Proszę kliknąć dwukrotnie na poniższe angielskie napisy, aby odtworzyć film.

00:00
Translator: Andrea McDonough Reviewer: Jessica Ruby
0
0
7000
Tłumaczenie: Marcin Doszko Korekta: Rysia Wand
00:15
What's an algorithm?
1
15483
1348
Czym jest algorytm?
00:16
In computer science,
2
16831
831
W informatyce
00:17
an algorithm is a set of instructions
3
17662
1754
algorytm to zestaw instrukcji
00:19
for solving some problem, step-by-step.
4
19416
2689
potrzebnych do rozwiązania danego problemu.
00:22
Typically, algorithms are executed by computers,
5
22105
2272
Algorytmy są zwykle wykonywane przez komputer,
00:24
but we humans have algorithms as well.
6
24377
2167
ale my, ludzie, też ich używamy.
00:26
For instance, how would you go about counting
7
26544
1853
Na przykład, w jaki sposób
00:28
the number of people in a room?
8
28397
1820
policzyłbyś wszystkie osoby w pokoju?
00:30
Well, if you're like me,
9
30217
1215
Pewnie tak jak ja,
00:31
you probably point at each person,
10
31432
1496
czyli wskazałbyś na każdą osobę
00:32
one at a time,
11
32928
960
i liczył od zera:
00:33
and count up from 0:
12
33888
1837
i liczył od zera:
00:35
1, 2, 3, 4 and so forth.
13
35725
2873
1,2,3,4 i tak dalej.
00:38
Well, that's an algorithm.
14
38598
1113
To jest właśnie algorytm.
00:39
In fact, let's try to express it
15
39711
1134
Wyraźmy to bardziej formalnie,
00:40
a bit more formally in pseudocode,
16
40845
2229
za pomocą pseudokodu
00:43
English-like syntax
17
43074
831
00:43
that resembles a programming language.
18
43905
2124
ze składnią jak w języku angielskim,
podobną do języka programowania.
00:46
Let n equal 0.
19
46029
1767
Niech n równa się 0.
00:47
For each person in room, set n = n + 1.
20
47796
4792
Dla każdej osoby n = n + 1.
00:52
How to interpret this pseudocode?
21
52588
1497
Co oznacza ten pseudokod?
00:54
Well, line 1 declares, so to speak,
22
54085
1836
Wiersz 1 określa tak zwaną
00:55
a variable called n
23
55921
1416
zmienną n
00:57
and initializes its value to zero.
24
57337
2379
i nadaje jej wartość początkową 0.
00:59
This just means that at the beginning of our algorithm,
25
59716
2335
To znaczy, że na początku algorytmu
01:02
the thing with which we're counting
26
62051
1584
narzędzie, którym liczymy
01:03
has a value of zero.
27
63635
1668
ma wartość 0.
01:05
After all, before we start counting,
28
65303
1336
Nie zdążyliśmy jeszcze przecież
01:06
we haven't counted anything yet.
29
66639
1669
nic policzyć.
01:08
Calling this variable n is just a convention.
30
68308
2248
Nazywanie tej zmiennej n to tylko konwencja.
01:10
I could have called it almost anything.
31
70556
2005
Można ją nazwać dowolnie.
01:12
Now, line 2 demarks the start of loop,
32
72561
2086
Wiersz 2 oznacza początek pętli,
01:14
a sequence of steps that will repeat some number of times.
33
74647
3044
serii kroków, które zostaną wykonane kilka razy.
01:17
So, in our example, the step we're taking
34
77691
1794
W tym przypadku krokiem jest
01:19
is counting people in the room.
35
79485
1734
liczenie osób w pokoju.
01:21
Beneath line 2 is line 3,
36
81219
1763
Wiersz 3 opisuje szczegółowo,
01:22
which describes exactly how we'll go about counting.
37
82982
2511
sposób liczenia.
01:25
The indentation implies that it's line 3
38
85493
2250
Wcięcie oznacza,
01:27
that will repeat.
39
87743
1222
że wiersz 3 będzie powtarzany.
01:28
So, what the pseudocode is saying
40
88965
1219
Tak więc pseudokod mówi,
01:30
is that after starting at zero,
41
90184
2066
że zaczynając od zera
01:32
for each person in the room,
42
92250
1710
przy każdej osobie w pokoju
01:33
we'll increase n by 1.
43
93960
2218
n wzrośnie o 1.
01:36
Now, is this algorithm correct?
44
96178
2329
Czy algorytm jest poprawny?
01:38
Well, let's bang on it a bit.
45
98507
1608
Sprawdźmy.
01:40
Does it work if there are 2 people in the room?
46
100115
2826
Czy zadziała, jeśli w pokoju będą 2 osoby?
01:42
Let's see.
47
102941
780
Czy zadziała, jeśli w pokoju będą 2 osoby?
01:43
In line 1, we initialize n to zero.
48
103721
2085
W wierszu 1 n wynosi zero.
01:45
For each of these two people,
49
105806
1302
Potem dla każdej osoby
01:47
we then increment n by 1.
50
107108
2168
zwiększamy n o 1.
01:49
So, in the first trip through the loop,
51
109276
1582
W pierwszej pętli
01:50
we update n from zero to 1,
52
110858
2005
n wzrasta do 1,
01:52
on the second trip through that same loop,
53
112863
1655
a w drugiej pętli, identycznej,
01:54
we update n from 1 to 2.
54
114518
2249
n wzrasta do 2.
01:56
And so, by this algorithm's end, n is 2,
55
116767
3341
Na końcu algorytmu n wynosi 2,
02:00
which indeed matches the number of people in the room.
56
120108
2113
i tyle jest osób w pokoju.
02:02
So far, so good.
57
122221
1223
Na razie wszystko gra.
02:03
How about a corner case, though?
58
123444
1752
Może jakiś nietypowy przykład?
02:05
Suppose that there are zero people in the room,
59
125196
1964
Załóżmy, że w pokoju jest zero osób,
02:07
besides me, who's doing the counting.
60
127160
2347
poza mną, ja liczę.
02:09
In line 1, we again initialize n to zero.
61
129507
3010
W wierszu 1 n znowu wynosi 0.
02:12
This time, though, line 3 doesn't execute at all
62
132517
2522
Tym razem jednak wiersz 3 nie jest wykonany,
02:15
since there isn't a person in the room,
63
135039
1880
bo w pokoju nie ma nikogo.
02:16
and so, n remains zero,
64
136919
1624
N pozostaje 0,
02:18
which indeed matches the number of people in the room.
65
138543
2359
co zgadza się z liczbą osób.
02:20
Pretty simple, right?
66
140902
906
Proste, prawda?
02:21
But counting people one a time is pretty inefficient, too, no?
67
141808
3216
Ale liczenie każdej osoby oddzielnie jest mozolne.
02:25
Surely, we can do better!
68
145024
1568
Zróbmy to lepiej!
02:26
Why not count two people at a time?
69
146592
1866
Policzmy po dwie osoby na raz.
02:28
Instead of counting 1, 2, 3, 4, 5, 6, 7, 8, and so forth,
70
148458
5099
Zamiast 1,2,3,4,5,6,7,8, itd.,
02:33
why not count
71
153557
918
można policzyć
02:34
2, 4, 6, 8, and so on?
72
154475
2127
2,4,6,8 i tak dalej.
02:36
It even sounds faster, and it surely is.
73
156602
2418
Będzie dużo szybciej.
02:39
Let's express this optimization in pseudocode.
74
159020
2835
Wyraźmy to za pomocą pseudokodu.
02:41
Let n equal zero.
75
161855
1462
Niech n równa się zero.
02:43
For each pair of people in room,
76
163317
1997
Dla każdej pary osób w pokoju
02:45
set n = n + 2.
77
165314
2588
n = n + 2.
02:47
Pretty simple change, right?
78
167902
1673
Prosta zmiana.
02:49
Rather than count people one at a time,
79
169575
1791
Zamiast liczyć pojedynczo,
02:51
we instead count them two at a time.
80
171366
2343
liczymy po dwie osoby na raz.
02:53
This algorithm's thus twice as fast as the last.
81
173709
2815
Algorytm jest więc dwa razy szybszy.
02:56
But is it correct?
82
176524
1346
Algorytm jest więc dwa razy szybszy.
02:57
Let's see.
83
177870
794
Ale czy jest poprawny?
02:58
Does it work if there are 2 people in the room?
84
178664
2125
Czy działa, jeśli w pokoju są 2 osoby?
03:00
In line 1, we initialize n to zero.
85
180789
2342
W wierszu 1 n równa się zero.
03:03
For that one pair of people, we then increment n by 2.
86
183131
3268
Dla tej pary zwiększamy n o 2.
03:06
And so, by this algorithm's end, n is 2,
87
186399
2522
I na koniec otrzymujemy 2,
03:08
which indeed matches the number of people in the room.
88
188921
2382
czyli rzeczywistą liczbę osób.
03:11
Suppose next that there are zero people in the room.
89
191303
2412
Teraz załóżmy, że w pokoju jest zero osób.
03:13
In line 1, we initialize n to zero.
90
193715
2587
W wierszu 1 n to zero.
03:16
As before, line 3 doesn't execute at all
91
196302
2080
Jak poprzednio wiersz 3 zostanie ominięty,
03:18
since there aren't any pairs of people in the room,
92
198382
2342
bo w pokoju nie ma żadnej pary.
03:20
and so, n remains zero,
93
200724
1686
N pozostaje zero,
03:22
which indeed matches the number of people in the room.
94
202410
2773
co równa się liczbie osób.
03:25
But what if there are 3 people in the room?
95
205183
2372
A jeśli w pokoju będą 3 osoby?
03:27
How does this algorithm fair?
96
207555
1937
Co zrobi algorytm?
03:29
Let's see.
97
209492
829
Sprawdźmy.
03:30
In line 1, we initialize n to zero.
98
210321
2670
W wierszu 1 n równa się 0.
03:32
For a pair of those people,
99
212991
1290
Dla tej pary
03:34
we then increment n by 2,
100
214281
1916
zwiększymy n o 2,
03:36
but then what?
101
216197
992
i co potem?
03:37
There isn't another full pair of people in the room,
102
217189
2262
Nie ma już pełnej pary w pokoju,
03:39
so line 2 no longer applies.
103
219451
2210
więc wiersz 2 nie jest użyty.
03:41
And so, by this algorithm's end,
104
221661
1669
Na koniec algorytmu
03:43
n is still 2, which isn't correct.
105
223330
2596
n wciąż wynosi 2, co jest błędem.
03:45
Indeed this algorithm is said to be buggy
106
225926
2332
Algorytm jest wadliwy,
03:48
because it has a mistake.
107
228258
1148
ma błąd.
03:49
Let's redress with some new pseudocode.
108
229406
1896
Poprawmy to nowym kodem.
03:51
Let n equal zero.
109
231302
1793
Niech n równa się zero.
03:53
For each pair of people in room,
110
233095
2123
Dla każdej pary w pokoju,
03:55
set n = n + 2.
111
235218
2422
n = n + 2.
03:57
If 1 person remains unpaired,
112
237640
2459
Jeśli 1 osoba zostaje bez pary,
04:00
set n = n + 1.
113
240099
2376
n = n + 1.
04:02
To solve this particular problem,
114
242475
1507
By rozwiązać ten problem
04:03
we've introduced in line 4 a condition,
115
243982
2249
wprowadziliśmy w wierszu 4 warunek,
04:06
otherwise known as a branch,
116
246231
1835
znany jako rozgałęzienie.
04:08
that only executes if there is one person
117
248066
2253
Będzie wykonany tylko wtedy,
04:10
we could not pair with another.
118
250319
1876
kiedy ktoś zostanie bez pary.
04:12
So now, whether there's 1 or 3
119
252195
2065
Teraz algorytm policzy wszystkie osoby,
04:14
or any odd number of people in the room,
120
254260
2273
czy będzie ich 1 czy 3
04:16
this algorithm will now count them.
121
256533
2288
albo każda inna ilość.
04:18
Can we do even better?
122
258821
1345
Da się to poprawić?
04:20
Well, we could count in 3's or 4's or even 5's and 10's,
123
260166
3294
Można na przykład liczyć po 3, 4, 5
04:23
but beyond that it's going to get
124
263460
1300
albo nawet 10 osób,
04:24
a little bit difficult to point.
125
264760
1870
ale trudno byłoby je wskazać.
04:26
At the end of the day,
126
266630
937
Algorytmy, niezależnie od tego,
04:27
whether executed by computers or humans,
127
267567
2264
czy wykonywane przez komputery czy ludzi,
04:29
algorithms are just a set of instructions
128
269831
1960
to zestawy instrukcji
04:31
with which to solve problems.
129
271791
1838
do rozwiązywania problemów.
04:33
These were just three.
130
273629
1743
Pokazaliśmy tylko trzy.
04:35
What problem would you solve with an algorithm?
131
275372
2982
A ty jaki problem rozwiążesz za pomocą algorytmu?
O tej stronie

Na tej stronie poznasz filmy z YouTube, które są przydatne do nauki języka angielskiego. Zobaczysz lekcje angielskiego prowadzone przez najlepszych nauczycieli z całego świata. Kliknij dwukrotnie na angielskie napisy wyświetlane na stronie każdego filmu, aby odtworzyć film od tego miejsca. Napisy przewijają się synchronicznie z odtwarzaniem filmu. Jeśli masz jakieś uwagi lub prośby, skontaktuj się z nami za pomocą formularza kontaktowego.

https://forms.gle/WvT1wiN1qDtmnspy7