Can you solve the computer virus riddle? - James Tanton

1,242,456 views ・ 2021-10-19

TED-Ed


請雙擊下方英文字幕播放視頻。

譯者: Camila Lin 審譯者: Amanda Zhu
00:06
Your antivirus squad is up against a particularly sadistic bit
0
6788
4208
你的防毒小隊正在和 某個特別殘虐的位元對抗,
00:10
of malicious code that’s hijacked your mainframe.
1
10996
3208
它屬於一段正在駭入 你大型電腦主機的惡意程式。
00:14
What you’ve learned from other infected systems— right before they went dark—
2
14579
4292
你在其他被感染的系統 螢幕黑掉前發現,
00:18
is that it likes to toy with antivirus agents in a very peculiar way.
3
18871
5083
它喜歡以一種特定的方式 玩弄防毒特工。
00:24
It corrupts one of the 4 disks that run your mainframe,
4
24538
3625
它會毀損控制主機運作的 四個硬碟之一,
00:28
represented by lights showing which are on and which off.
5
28163
3625
並以燈的亮暗來表示硬碟的啟動狀態。
00:32
Then it selects one member of the antivirus squad— this’ll be you—
6
32412
4500
然後,它會選出一位防毒特工 ──就是你──
00:36
and brings them into the mainframe.
7
36912
2167
並將你帶進主機中。
00:39
It tells them which disk it corrupted,
8
39079
2375
它會告訴你它破壞了哪個硬碟,
00:41
allows the agent to switch a single disk on or off,
9
41454
4500
並允許你開啟或關閉一個硬碟,
00:45
then immediately de-rezzes the agent.
10
45954
3083
然後立刻將你從虛擬世界中消去。
00:49
Your squad can make an all-out attack to break into the mainframe
11
49579
3625
你的小隊能強硬地開出 通往主機的一條路,
00:53
and destroy one disk before they’re wiped out.
12
53204
3167
並在被消滅之前毀損一個硬碟。
00:56
If they destroy the corrupted one, the malware will be defeated.
13
56537
3584
如果他們毀去中毒的那個硬碟, 就能戰勝這個惡意軟體。
01:00
Any others, and the virus will erase the entire system.
14
60121
3708
如果毀去完好的硬碟, 整個系統就會被病毒化為烏有。
01:04
The lights are only visible within the mainframe,
15
64413
2708
你只能在主機內部看見燈,
01:07
so you won’t know until you get there which, if any, are on.
16
67121
4125
所以在還沒進入前, 你不知道哪些燈亮著。
01:11
How can you communicate, with your single action,
17
71621
3250
你該怎麼只靠一個動作, 就能告訴你的隊員,
01:14
which of the 4 disks has been corrupted?
18
74871
2583
這四個硬碟中的哪個已經中毒?
01:17
Pause here to figure it out for yourself. Answer in 3
19
77454
2709
[如欲自行解題,請在此按暫停, 答案揭曉倒數:3]
01:20
Answer in 2
20
80163
2500
[2]
01:22
Answer in 1
21
82663
2583
[1]
01:25
The setting is a big clue for one solution.
22
85329
3250
設定方式是一份重要的線索, 提示了一個解決辦法。
01:28
Using binary code— the base two numbering system that only uses 1s and 0s—
23
88579
5667
使用二元碼,也就是只用 1 和 0 的二進位數字系統,
01:34
we can represent each of the 4 disks with a 2-bit binary number
24
94538
4500
我們可以用兩位元的二元數字 來分別代表這四個硬碟:
01:39
ranging from 00 for zero to 11 for three.
25
99038
4416
從代表 0 的 00 到代表 3 的 11 。
01:44
What we’re looking for now is some sort of mathematical operation
26
104163
4041
我們現在想找出某種數學公式,
01:48
that can take the lit disks as input, and give the corrupted disk as an output.
27
108204
5709
其中亮燈的硬碟編號是輸入端資料, 而中毒的硬碟編號是輸出端資料。
01:54
Let’s consider one possibility.
28
114496
1917
讓我們想想這個可能性。
01:56
Say that the corrupted disk was this one,
29
116413
2708
假設這是中毒的硬碟,
01:59
and when you come in, no lights are on.
30
119121
2917
但你進來的時候,沒有一個燈是亮的,
02:02
You could turn 11 on to indicate that disk.
31
122288
4000
你就能打開 11 號的燈來標示它。
02:06
Okay, what if you came in and 11 was already on?
32
126954
4000
好,那如果你進來的時候, 發現 11 號的燈已經亮了呢?
02:11
You have to switch one light.
33
131329
1875
你就必須轉一個燈。
02:13
Which seems like the most innocuous to change?
34
133621
2875
哪個燈就算改變狀態也不要緊?
02:16
Probably 00, in that if you were to add 00 and 11,
35
136788
4916
應該是 00 ,
因為把 00 和 11 加起來,
02:21
you’d still get 11.
36
141704
1709
總和還是 11 。
02:24
So maybe the key is to think of addition of binary numbers,
37
144288
4333
所以,也許關鍵就是二元碼的加總,
02:28
with the sum of the lit disks communicating the corrupted disk number.
38
148621
4583
讓亮燈硬碟編號的加總 代表損壞硬碟的編號。
02:33
This works great, until we start with a different hypothetical.
39
153496
4000
這個理論運作得很成功, 直到我們用另一個不同的假設。
02:37
What if 00 was the corrupted disk, and 01 and 10 were on?
40
157496
5542
如果 00 是中毒硬碟的編號, 但 01 和 10 的燈卻亮著呢?
02:43
Here, the sum of the lit disks is 11.
41
163329
3459
這樣一來,亮燈的 硬碟編號總和是 11。
02:46
But we need to change this to a sum of 00 with the flip of one switch.
42
166788
5583
但我們必須靠著一個動作, 把總和改成 00。
02:53
We have four options: turning switch 00 on gives us 11.
43
173163
4750
我們有四個選擇: 打開 00,得到 11。
02:58
Turning 01 off takes us back to 10,
44
178121
3292
關掉 01,總和是 10。
03:01
and turning 10 off gives 01.
45
181413
3750
關掉 10 則會得到 01。
03:05
None of those work.
46
185163
1791
沒一個行的通。
03:06
Turning switch 11 on gives us 110 by standard binary addition.
47
186954
5834
根據標準二元進位法, 如果打開 11,我們會得到 110。
03:12
But we don’t really want three digit numbers.
48
192788
2750
但我們不想要三位數。
03:15
So what if— to keep the result a two digit number—
49
195621
3542
所以,為了讓結果保持在二位數,
03:19
we break the rules a bit and let this sum equal 22.
50
199163
4458
我們稍微更動一下規則, 讓它們的總數成為 22。
03:23
That’s not a binary number, but if we regard 2s as the same as 0s,
51
203829
4792
這不是個二元制數字, 但如果我們把 2 當成 0,
03:28
that does indicate the correct disk.
52
208621
2625
還是能指出中毒的硬碟。
03:31
So this suggests a strategy:
53
211871
2375
這讓我們想出一個策略:
03:34
look at the sum of all the lighted disks we see,
54
214246
3667
把亮燈的硬碟編號加起來,
03:37
regarding 2s as 0s.
55
217913
2375
並把 2 視為 0 。
03:40
If it’s already the correct result, flip 00,
56
220288
3458
如果這是正確答案, 就改變 00 的燈號,
03:43
and if not, find the switch that will make the sum correct.
57
223746
3917
如果不是,就選擇讓總數正確的硬碟。
03:48
You can see for yourself that any starting configuration
58
228079
3250
你會發現,不管初始配置為何,
03:51
can sum to any number from 00 to 11 with a flip of a switch.
59
231329
5334
只要開亮或關閉一盞燈,就能讓總和 變成 00 到 11 中的任何數字。
03:56
The reason this works is related to a concept called parity.
60
236871
4417
這個策略之所以有用, 和「奇偶性」這個觀念有關。
04:01
Parity tells you whether a given value is even or odd.
61
241663
4208
「奇偶性」能告訴你, 一個被給定的值是奇數還是偶數。
04:06
In this case, the values whose parity we’re considering
62
246538
3375
在這個案例中,我們考慮奇偶性的值
04:09
are the number of 1s in each digit place of our binary sums.
63
249913
4875
就是加總中兩個位數中 1 的個數。
04:14
And that’s why we can say that 2 and 0, both even numbers,
64
254996
4333
這也是我們能將 2 與 0 一視同仁的原因:
04:19
can be treated as equivalents.
65
259329
2417
它們都是偶數。
04:22
By adding or subtracting 00, 01, 10, or 11,
66
262329
5792
藉著加減 00、01、10、11,
04:28
we can change the parity of either, both, or neither digit,
67
268121
4667
我們就能改變其中一個或兩個位數的 奇偶性,也能讓它保持原樣,
04:32
and create the disk number we want.
68
272788
2625
來得到我們想要的硬碟編號。
04:36
What’s incredible about this solution is that it works for any mainframe
69
276121
4208
這個解法的驚人之處,
就是只要主機的硬碟數量 是 2 的次方就能適用。
04:40
whose disks are a power of two.
70
280329
2417
04:43
With 64 you could turn each activated disk into a 6-bit binary number
71
283163
5625
如果是有 64 個硬碟,
你可以將每個運作中的硬碟 以一個 6 位元的二元碼代表,
04:48
and sum the 1s in each column,
72
288788
2458
並加總每個區塊的 1,
04:51
regarding any even sum as the same as 0 and any odd sum as 1.
73
291246
5958
將總和中的所有偶數視為 0, 奇數則視為 1。
04:57
1,048,576 disks would be daunting, but entirely doable.
74
297621
6958
1,048,576 個硬碟是個難題, 但這方法仍然可行。
05:05
Luckily, your mainframe is much smaller.
75
305038
2500
幸運的是,你的主機沒那麼大。
05:07
You make the valiant sacrifice and your team rushes in,
76
307538
3500
你英勇犧牲,而你的小隊衝了進來,
05:11
destroying the corruption and freeing the system.
77
311038
3125
毀掉了中毒的硬碟, 讓系統重獲自由。
關於本網站

本網站將向您介紹對學習英語有用的 YouTube 視頻。 您將看到來自世界各地的一流教師教授的英語課程。 雙擊每個視頻頁面上顯示的英文字幕,從那裡播放視頻。 字幕與視頻播放同步滾動。 如果您有任何意見或要求,請使用此聯繫表與我們聯繫。

https://forms.gle/WvT1wiN1qDtmnspy7