All language subtitles for 病毒为何不停变异?旅行推销员问题和遗传算法

af Afrikaans
ak Akan
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bem Bemba
bn Bengali
bh Bihari
bs Bosnian
br Breton
bg Bulgarian
km Cambodian
ca Catalan
ceb Cebuano
chr Cherokee
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English Download
eo Esperanto
et Estonian
ee Ewe
fo Faroese
tl Filipino
fi Finnish
fr French
fy Frisian
gaa Ga
gl Galician
ka Georgian
de German
el Greek
gn Guarani
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ia Interlingua
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
rw Kinyarwanda
rn Kirundi
kg Kongo
ko Korean
kri Krio (Sierra Leone)
ku Kurdish
ckb Kurdish (Soranî)
ky Kyrgyz
lo Laothian
la Latin
lv Latvian
ln Lingala
lt Lithuanian
loz Lozi
lg Luganda
ach Luo
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mfe Mauritian Creole
mo Moldavian
mn Mongolian
my Myanmar (Burmese)
sr-ME Montenegrin
ne Nepali
pcm Nigerian Pidgin
nso Northern Sotho
no Norwegian
nn Norwegian (Nynorsk)
oc Occitan
or Oriya
om Oromo
ps Pashto
fa Persian
pl Polish
pt-BR Portuguese (Brazil)
pt Portuguese (Portugal)
pa Punjabi
qu Quechua
ro Romanian
rm Romansh
nyn Runyakitara
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
sh Serbo-Croatian
st Sesotho
tn Setswana
crs Seychellois Creole
sn Shona
sd Sindhi
si Sinhalese
sk Slovak
sl Slovenian
so Somali
es Spanish
es-419 Spanish (Latin American)
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
tt Tatar
te Telugu
th Thai
ti Tigrinya
to Tonga
lua Tshiluba
tum Tumbuka
tr Turkish
tk Turkmen
tw Twi
ug Uighur
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
wo Wolof
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:00,340 --> 00:00:01,260 各位同學大家好 2 00:00:01,260 --> 00:00:02,340 我是李永樂老師 3 00:00:02,440 --> 00:00:03,300 最近一段時間 4 00:00:03,320 --> 00:00:06,579 新冠病毒奧密克戎變異毒株依然在全世界肆虐 5 00:00:06,659 --> 00:00:09,000 這種病毒相比於兩年前剛出現的時候 6 00:00:09,019 --> 00:00:10,579 傳染性有了很大增強 7 00:00:10,659 --> 00:00:13,119 而致病性 病死率都有所降低 8 00:00:13,119 --> 00:00:15,119 這是符合病毒遺傳學規律的 9 00:00:15,139 --> 00:00:17,480 因為更強的傳染性和更低的致病性 10 00:00:17,500 --> 00:00:19,239 更有利於病毒的傳播 11 00:00:19,340 --> 00:00:22,380 但是奧密克戎一定不是新冠病毒變異的終點 12 00:00:22,380 --> 00:00:25,219 未來依然有可能會出現新型的變異病毒 13 00:00:25,539 --> 00:00:27,199 其實不僅僅是病毒 14 00:00:27,219 --> 00:00:30,400 細菌 真菌等微生物 植物 動物等高等生物 15 00:00:30,420 --> 00:00:32,440 也都始終處於變異之中 16 00:00:32,558 --> 00:00:33,840 有小朋友就問我說 17 00:00:33,840 --> 00:00:35,920 生命為什麼會發生變異呢 18 00:00:35,920 --> 00:00:37,320 這是一個生物學問題 19 00:00:37,320 --> 00:00:39,500 但它背後也蘊藏著數學的原理 20 00:00:39,599 --> 00:00:41,880 今天我就想通過一個數學問題 21 00:00:41,880 --> 00:00:43,199 旅行推銷員問題 22 00:00:43,199 --> 00:00:46,760 給大家介紹一下生物界遺傳和變異的重要意義 23 00:00:47,119 --> 00:00:49,300 我們首先來描述一下這個問題 24 00:00:49,599 --> 00:00:58,280 這個問題叫做旅行的推銷員 旅行的推銷員 25 00:00:59,599 --> 00:01:00,440 意思是說 26 00:01:00,559 --> 00:01:03,780 有一個推銷員要到許多個城市推銷自己的產品 27 00:01:03,800 --> 00:01:06,099 推銷完了還要回到出發的城市 28 00:01:06,199 --> 00:01:08,559 那麼每兩個城市之間都有機票 29 00:01:08,559 --> 00:01:10,519 而且機票的價格是不一樣的 30 00:01:10,599 --> 00:01:11,300 我們舉個例子 31 00:01:11,400 --> 00:01:14,260 比如說這個推銷員他出發點叫A 32 00:01:14,619 --> 00:01:18,559 他想到B C D這三個城市進行推銷 33 00:01:18,579 --> 00:01:21,440 那麼每兩個城市之間都有機票 34 00:01:21,539 --> 00:01:23,159 可以坐飛機過去 35 00:01:23,320 --> 00:01:26,320 那麼這個機票的價格它也是很容易查到的 36 00:01:26,320 --> 00:01:29,619 比如說A和B這兩個城市機票價格是3元 37 00:01:29,900 --> 00:01:31,219 來回都是3元 38 00:01:31,300 --> 00:01:33,380 B和C價格貴一點 是7元 39 00:01:33,380 --> 00:01:34,940 C到D是20元 40 00:01:34,940 --> 00:01:36,780 A和D之間是5元 41 00:01:36,780 --> 00:01:38,679 B和D之間是6元 42 00:01:38,699 --> 00:01:40,800 而A和C之間是10元 43 00:01:40,820 --> 00:01:42,599 好 假如我們已經知道了 44 00:01:42,619 --> 00:01:44,320 所有城市之間的機票價格了 45 00:01:44,340 --> 00:01:46,480 而且去和回價格是一樣的 46 00:01:46,599 --> 00:01:47,300 我們現在就問 47 00:01:47,320 --> 00:01:52,000 那麼什麼樣的路線 什麼樣的一個路線 48 00:01:52,000 --> 00:01:55,360 這個路線是從A出發 最終又回到A 49 00:01:55,519 --> 00:02:01,659 那麼總共的價格最低 總共的價格最低 50 00:02:01,860 --> 00:02:04,739 那這個問題就稱之為旅行推銷員問題 51 00:02:04,739 --> 00:02:07,139 當然了 它的城市可能不只有3個 52 00:02:07,139 --> 00:02:08,699 可能是10個 可能是100個 53 00:02:08,699 --> 00:02:09,979 甚至有可能會更多 54 00:02:09,979 --> 00:02:11,739 我們看起來好像這個問題並不復雜 55 00:02:11,760 --> 00:02:13,400 你看C D之間價格是20 56 00:02:13,480 --> 00:02:15,380 所以我們盡量不走它就好了 對不對 57 00:02:15,400 --> 00:02:16,820 但是城市一旦多起來 58 00:02:16,960 --> 00:02:18,460 這個算法可能就會比較複雜 59 00:02:18,579 --> 00:02:22,400 比如說我們有一種算法 一種顯而易見的算法 60 00:02:22,400 --> 00:02:23,800 那就是暴力搜索 61 00:02:24,059 --> 00:02:28,699 我們可以把所有的路線都把它列出來 62 00:02:28,699 --> 00:02:30,699 然後看一下這個 63 00:02:30,699 --> 00:02:33,260 每一個路線中它的價格是多少 是吧 64 00:02:33,260 --> 00:02:35,360 比較一下 找到最優價格就可以了 65 00:02:35,480 --> 00:02:37,920 比如說這個推銷員不是從A出發嗎 66 00:02:38,000 --> 00:02:39,579 那麼他面臨幾條路啊 67 00:02:39,599 --> 00:02:41,559 它可以走B 對吧 68 00:02:41,559 --> 00:02:44,519 你也可以走C 你也可以走D 69 00:02:44,519 --> 00:02:47,159 這是第一次你出發的時候可以走路徑 70 00:02:47,320 --> 00:02:49,800 然後你如果到了B之後你還可以去哪 71 00:02:49,880 --> 00:02:52,840 你還可以去C 你還可以去D 對不對 72 00:02:52,840 --> 00:02:55,039 如果你去了C 那最後一站只能是D 73 00:02:55,039 --> 00:02:56,719 如果你去了D 最後一站只能是C 74 00:02:56,719 --> 00:02:58,320 然後你再回到A 對不對 75 00:02:58,719 --> 00:03:00,300 這是你的兩條路 76 00:03:00,300 --> 00:03:01,820 當然你要是走C的話 77 00:03:02,099 --> 00:03:04,820 你也可以去B或者去D 78 00:03:04,920 --> 00:03:06,539 然後我們把它補齊 是吧 79 00:03:07,239 --> 00:03:09,059 這樣的話又有兩個路徑 80 00:03:09,280 --> 00:03:10,639 當然還有 是吧 81 00:03:10,659 --> 00:03:12,639 如果你先走D的話也是一樣 82 00:03:12,659 --> 00:03:17,179 B C C B最後你再回到A 83 00:03:17,260 --> 00:03:19,719 好 這一共就是6條路徑 84 00:03:19,739 --> 00:03:23,000 我們可以計算每一條路徑所花費的機票總價 85 00:03:23,139 --> 00:03:25,699 比如說A B C D A這一條路徑 86 00:03:25,699 --> 00:03:30,260 價格就是3+7+20+5 對吧 87 00:03:30,260 --> 00:03:31,460 一共加起來是多少 88 00:03:31,460 --> 00:03:34,079 是 35元 對不對 89 00:03:34,099 --> 00:03:36,400 仿照這樣的寫法我就把所有的都列好 90 00:03:36,840 --> 00:03:39,619 好 6種情況的機票價格咱們都列出來了 91 00:03:39,639 --> 00:03:41,099 我們顯而易見地發現 92 00:03:41,639 --> 00:03:44,039 有兩條路價格是最低的 是28元 93 00:03:44,039 --> 00:03:45,980 而且你有沒有發現這6種情況 94 00:03:45,980 --> 00:03:47,340 好像分為3組 對吧 95 00:03:47,340 --> 00:03:50,980 35 35 39 39 28 28 96 00:03:50,980 --> 00:03:51,739 為什麼呢 97 00:03:51,739 --> 00:03:54,920 你看你順著走有一條路A B C D A 98 00:03:54,940 --> 00:03:57,039 你反著走叫A D C B A 99 00:03:57,059 --> 00:03:58,739 那不就是這條路嗎 對不對 100 00:03:58,739 --> 00:04:01,179 所以這兩條路它實際上是一正一反 101 00:04:01,179 --> 00:04:02,219 它是對稱的 102 00:04:02,440 --> 00:04:04,820 因為機票價格跟你去和返沒有關係 103 00:04:04,820 --> 00:04:07,980 所以這兩條路其實應該算是一種情況 對吧 104 00:04:07,980 --> 00:04:09,420 那麼按照這樣的方法 105 00:04:09,420 --> 00:04:12,199 我們就可以暴力搜索出每一種情況 106 00:04:12,219 --> 00:04:13,280 找到最優解了 107 00:04:13,519 --> 00:04:15,760 如果我們只有四個城市 這個事好辦 108 00:04:15,780 --> 00:04:17,099 但是如果城市多了 109 00:04:17,380 --> 00:04:19,579 假如咱們有n個城市的話 110 00:04:19,639 --> 00:04:23,199 你看一看需要多少個路徑呢 111 00:04:23,219 --> 00:04:25,420 咱們思考一下 如果你有n個城市的話 112 00:04:25,420 --> 00:04:27,059 你從其中一個城市出發 113 00:04:27,139 --> 00:04:30,219 你第一次面臨著n-1種選擇 114 00:04:31,300 --> 00:04:34,320 第二次 你又面臨著n-2種選擇 115 00:04:34,539 --> 00:04:36,599 第三次n-3 第四次n-4 116 00:04:36,619 --> 00:04:39,559 一直到最後一次 應該是面臨著一種選擇 117 00:04:39,639 --> 00:04:42,480 但是因為一正一反 兩條路價格是一樣的 118 00:04:42,480 --> 00:04:44,000 所以我們可以把它除以2 119 00:04:44,079 --> 00:04:46,139 也就是說剛才我算了6種情況 120 00:04:46,139 --> 00:04:47,539 它其實對應的是3組 121 00:04:47,559 --> 00:04:48,659 我應該把它除以2 122 00:04:48,679 --> 00:04:51,179 把它寫成一個階乘的形式 123 00:04:51,260 --> 00:04:54,820 就是(n-1)!/2 124 00:04:54,900 --> 00:04:57,039 階乘的意思就是1×2×3×4×... 125 00:04:57,059 --> 00:04:58,679 一直乘到n-1 對不對 126 00:04:58,699 --> 00:05:00,480 所以如果你有n個城市的話 127 00:05:00,500 --> 00:05:04,480 你的搜索的次數應該至少是這麼多次 對不對 128 00:05:04,480 --> 00:05:06,039 好 咱們來算一算這有多少 129 00:05:06,159 --> 00:05:09,360 假如說你有10個城市 130 00:05:09,480 --> 00:05:11,619 那麼你所搜索的次數f 131 00:05:12,039 --> 00:05:15,659 應該是181440次 132 00:05:15,880 --> 00:05:17,780 看起來好像還不太多 對不對 133 00:05:17,860 --> 00:05:20,199 但是如果你有30個城市 134 00:05:20,300 --> 00:05:22,119 你知道搜索多少次嗎 135 00:05:22,139 --> 00:05:27,119 它需要搜索4.4×10³⁰這麼多 136 00:05:27,260 --> 00:05:30,400 現在的超級計算機一秒鐘可以計算1萬億次 137 00:05:30,420 --> 00:05:31,320 咱們假如說 138 00:05:31,340 --> 00:05:34,079 超級計算機一秒鐘可以搜索一條路徑的話 139 00:05:34,099 --> 00:05:35,519 你要搜索這麼多路徑 140 00:05:35,539 --> 00:05:37,800 超級計算機需要算1400億年 141 00:05:37,880 --> 00:05:41,280 可見30個城市暴力求解已經不現實了 142 00:05:41,280 --> 00:05:42,860 那如果你要是有100個城市 143 00:05:43,360 --> 00:05:44,500 100個城市的話 144 00:05:44,519 --> 00:05:48,900 你就要搜索4.7×10¹⁵⁵ 145 00:05:48,920 --> 00:05:49,820 這麼多條路徑 146 00:05:49,840 --> 00:05:51,420 就算宇宙中所有的原子 147 00:05:51,440 --> 00:05:53,179 每個原子都變成一個超級計算機 148 00:05:53,199 --> 00:05:55,420 從宇宙誕生之初算到現在 149 00:05:55,420 --> 00:05:56,079 你也不可能 150 00:05:56,079 --> 00:05:58,559 把100個城市的旅行推銷員問題算完 151 00:05:59,159 --> 00:06:01,559 所以暴力搜索這種方法 152 00:06:01,559 --> 00:06:04,239 理論上來講是可以找到最優解的 153 00:06:04,239 --> 00:06:05,340 我們稱之為準 154 00:06:05,599 --> 00:06:07,800 但是它實際上是不可行的 155 00:06:08,039 --> 00:06:09,599 因為它不夠快 156 00:06:10,239 --> 00:06:12,440 它的搜索複雜度太高 157 00:06:12,440 --> 00:06:14,559 以至於稍微問題複雜一點 158 00:06:14,559 --> 00:06:16,519 我們就沒有辦法得到最優解了 159 00:06:16,519 --> 00:06:19,059 所以這種方法基本上在現實中是不可以的 160 00:06:19,320 --> 00:06:20,059 是不可行的 161 00:06:20,260 --> 00:06:21,860 那麼有什麼更好的方法嗎 162 00:06:21,880 --> 00:06:23,980 比如說咱們換一個更快的方法 163 00:06:24,099 --> 00:06:29,139 這個方法人們叫它貪心算法 貪心算法 164 00:06:29,559 --> 00:06:30,820 之所以叫貪心算法 165 00:06:31,000 --> 00:06:31,900 是因為這種算法 166 00:06:32,039 --> 00:06:34,659 就非常像一個鼠目寸光的貪心的人 167 00:06:34,679 --> 00:06:36,260 他只能看到眼前的利益 168 00:06:36,699 --> 00:06:38,639 這個貪心算法的意思是什麼呢 169 00:06:38,659 --> 00:06:40,719 就是它每一次 170 00:06:41,159 --> 00:06:46,260 每一次都去這個機票最便宜的城市 171 00:06:46,780 --> 00:06:50,079 機票最低的城市 172 00:06:50,559 --> 00:06:53,760 每一次你面對著幾個城市去哪個呢 173 00:06:53,760 --> 00:06:56,280 你就去那個機票價格最便宜的城市 174 00:06:56,360 --> 00:06:58,920 也就是說每一次我都怎麼樣 175 00:06:58,920 --> 00:07:00,960 都找到了最優解 176 00:07:00,960 --> 00:07:03,639 我們每一次每一個步驟 177 00:07:03,739 --> 00:07:05,260 都是最優的 178 00:07:06,840 --> 00:07:09,260 我們看一下會發生什麼 179 00:07:09,380 --> 00:07:09,880 舉個例子 180 00:07:10,099 --> 00:07:12,119 你看 假如說我們從A出發 181 00:07:12,139 --> 00:07:13,920 那麼第一步你應該往哪走呢 182 00:07:13,940 --> 00:07:15,480 你往B走是3塊錢 183 00:07:15,500 --> 00:07:16,800 你往C走10塊 184 00:07:16,820 --> 00:07:17,880 你往D走5塊 185 00:07:17,900 --> 00:07:19,039 走誰 走B 186 00:07:19,139 --> 00:07:20,440 那麼因為你是貪心的 187 00:07:20,780 --> 00:07:22,760 你非常短視 所以你就走到B了 188 00:07:22,780 --> 00:07:25,400 因此這個貪心算法你應該從A 189 00:07:25,579 --> 00:07:28,039 第一步先到B 就花了3塊錢 190 00:07:28,139 --> 00:07:29,780 那麼到了B之後你往哪走呢 191 00:07:29,780 --> 00:07:30,539 你不會回A 192 00:07:30,860 --> 00:07:32,019 你會走C或者D 193 00:07:32,019 --> 00:07:33,980 一個6塊 一個7塊 選D 194 00:07:34,380 --> 00:07:36,099 因為D比較便宜 195 00:07:36,099 --> 00:07:37,420 他花了6塊錢 196 00:07:37,619 --> 00:07:40,280 到D了之後你面臨著只能走C了 197 00:07:40,300 --> 00:07:43,099 那因為你還要走所有的路徑再回去 198 00:07:43,300 --> 00:07:45,480 所以你要到C去 到C要花20 199 00:07:45,559 --> 00:07:46,760 這個時候沒有辦法 200 00:07:47,199 --> 00:07:48,760 因為你只剩一個C了 201 00:07:48,760 --> 00:07:49,719 最後C走完了 202 00:07:49,719 --> 00:07:51,360 你回到出發點就回到了A 203 00:07:52,199 --> 00:07:54,559 回到了A 那最後是花了10塊 204 00:07:54,639 --> 00:07:57,059 咱們來算一算這總共的價格是多少 205 00:07:57,079 --> 00:08:00,179 總共的價格是3+6+20+10 206 00:08:00,280 --> 00:08:02,639 一共是39元 207 00:08:03,440 --> 00:08:05,559 我每一步都是最優解 208 00:08:05,559 --> 00:08:07,039 但最終的結果是什麼 209 00:08:07,039 --> 00:08:10,360 我反而選了一個價格最高的路線 210 00:08:10,579 --> 00:08:11,880 這說明了什麼道理 211 00:08:11,960 --> 00:08:14,639 這說明在局部有最優解 212 00:08:14,639 --> 00:08:16,800 整體這個問題不一定是最優解 213 00:08:16,800 --> 00:08:18,600 一個精緻的利己主義者 214 00:08:18,600 --> 00:08:21,479 不一定會獲得一個成功的人生 對不對 215 00:08:21,560 --> 00:08:23,979 所以這種方法它很快 216 00:08:24,159 --> 00:08:26,739 你很快就能找到你想要走的方法 217 00:08:26,760 --> 00:08:27,939 但是它不准 218 00:08:28,260 --> 00:08:31,760 在某些情況下貪心算法也許是合理的 219 00:08:31,779 --> 00:08:33,079 但是也有很多問題 220 00:08:33,179 --> 00:08:35,719 用貪心算法基本上是得不到最優解的 221 00:08:35,859 --> 00:08:38,539 那我們能不能把這兩種方法稍微結合一下 222 00:08:38,539 --> 00:08:41,300 找到一種又快又準的方法 223 00:08:41,720 --> 00:08:43,500 可能準沒有暴力搜索準 224 00:08:43,520 --> 00:08:45,220 快也沒有貪心算法快 225 00:08:45,220 --> 00:08:46,619 但是它又快又準 226 00:08:46,640 --> 00:08:47,899 有沒有這樣的方法呢 227 00:08:47,979 --> 00:08:52,100 有 人們模仿生物的進化找到了一種遺傳算法 228 00:08:52,100 --> 00:08:53,220 咱們來擦一下黑板 229 00:08:53,640 --> 00:08:54,800 好黑板擦完了 230 00:08:54,800 --> 00:08:56,039 為了了解遺傳算法 231 00:08:56,199 --> 00:08:58,920 我們首先先來簡單的說一說 232 00:08:59,279 --> 00:09:04,119 生物學上的遺傳和變異到底是怎麼回事 233 00:09:04,420 --> 00:09:06,399 然後我們再來說一說這個遺傳算法 234 00:09:06,420 --> 00:09:08,800 是怎麼模擬這個生物的遺傳和變異的 235 00:09:09,500 --> 00:09:13,479 說到遺傳變異 我們得從達爾文說起 236 00:09:13,880 --> 00:09:16,520 達爾文以及其他的一些科學家 237 00:09:16,520 --> 00:09:18,479 提出了自然選擇的學說 238 00:09:18,960 --> 00:09:23,939 自然選擇或者我們也可以管它叫進化論 239 00:09:24,659 --> 00:09:26,220 這個自然選擇是怎麼回事呢 240 00:09:26,220 --> 00:09:29,600 它說生物有一個基本需求 那就是繁殖 241 00:09:29,720 --> 00:09:32,300 而且生物總是傾向於過度繁殖 242 00:09:32,720 --> 00:09:36,340 吃飽了就想生孩子 過度繁殖 243 00:09:36,680 --> 00:09:40,140 但問題是這個自然資源是有限的 244 00:09:40,159 --> 00:09:44,340 所以過度繁殖的結果就是會存在生存的鬥爭 245 00:09:44,760 --> 00:09:47,260 可能是種群內部的鬥爭 246 00:09:47,500 --> 00:09:50,979 也可能是種群之間甚至是生物與自然的鬥爭 247 00:09:51,060 --> 00:09:53,539 那麼這種生存鬥爭的結果是什麼呢 248 00:09:53,539 --> 00:09:56,979 就是有的生物會存留下來 有的生物會滅絕 249 00:09:56,979 --> 00:10:00,520 這是因為它們具有遺傳和變異 250 00:10:01,119 --> 00:10:01,920 遺傳和變異 251 00:10:01,920 --> 00:10:05,279 比如說有一些鹿它的脖子變長了 252 00:10:05,279 --> 00:10:07,159 有一些鹿脖子變短了 253 00:10:07,239 --> 00:10:10,100 脖子變長的就能夠吃到樹葉就活了 254 00:10:10,119 --> 00:10:12,220 脖子變短了 吃不到樹葉就死了 255 00:10:12,239 --> 00:10:17,979 所以就有了自然的選擇 自然的選擇 256 00:10:18,220 --> 00:10:23,340 那麼我們中國把它翻譯成物競天擇 對不對 257 00:10:23,340 --> 00:10:26,819 這個生物生存鬥爭 然後最後自然選擇 258 00:10:26,899 --> 00:10:28,899 選擇完了剩下的這些生物怎麼樣 259 00:10:28,899 --> 00:10:31,479 繼續過度繁殖 然後繼續生存鬥爭 260 00:10:31,500 --> 00:10:33,020 如此形成一個循環 261 00:10:33,020 --> 00:10:36,720 那麼在這個循環中遺傳和變異是非常重要的 262 00:10:36,920 --> 00:10:40,000 遺傳保證了子代都會長得像親代 263 00:10:40,000 --> 00:10:41,199 兒子長得像父母 264 00:10:41,199 --> 00:10:43,199 但是他又跟父母不完全一樣 265 00:10:43,659 --> 00:10:45,439 遺傳和變異究竟是怎麼發生的 266 00:10:45,579 --> 00:10:47,039 達爾文其實並不清楚 267 00:10:47,199 --> 00:10:50,140 這件事是由後來的孟德爾還有摩爾根 268 00:10:50,560 --> 00:10:51,739 他最早發現的 269 00:10:51,760 --> 00:10:55,439 孟德爾就是種豌豆的那個 孟德爾 270 00:10:56,119 --> 00:10:58,359 還有摩爾根就是養果蠅的 271 00:10:58,920 --> 00:11:00,960 這個在我們的生物書上 272 00:11:00,960 --> 00:11:03,680 都有提到他們兩個發現的規律 273 00:11:03,760 --> 00:11:08,140 我們都可以稱之為基因的重組 基因重組 274 00:11:08,340 --> 00:11:12,000 基因重組它也是變異的一種方式 275 00:11:12,100 --> 00:11:13,680 那麼孟德爾究竟發現了什麼 276 00:11:13,779 --> 00:11:15,359 如果用我們現在的話來說 277 00:11:15,579 --> 00:11:17,279 就是我們人有很多條染色體 278 00:11:17,300 --> 00:11:19,439 而且都是成對的 23對46條 279 00:11:20,060 --> 00:11:23,119 比如說父親他有一對染色體 280 00:11:23,279 --> 00:11:27,260 這是一對染色體叫做同源染色體 281 00:11:27,960 --> 00:11:29,800 在一個細胞之中 是不是 282 00:11:29,819 --> 00:11:33,319 然後這個母親也有同源染色體 283 00:11:33,460 --> 00:11:36,060 也有同源的染色體 284 00:11:36,420 --> 00:11:38,500 也是在一個細胞之中 285 00:11:38,500 --> 00:11:40,859 然後當他們進行繁殖的時候 286 00:11:40,859 --> 00:11:44,140 首先這些個細胞會復制一次 然後分裂兩次 287 00:11:44,140 --> 00:11:45,100 這叫減數分裂 288 00:11:45,659 --> 00:11:48,159 於是就會形成配子 形成配子 289 00:11:48,340 --> 00:11:50,779 父親形成的配子相當於是 290 00:11:50,779 --> 00:11:53,220 把這個同源染色體給分開了 291 00:11:53,300 --> 00:11:56,000 形成了這兩種不同的配子 292 00:11:56,020 --> 00:11:58,560 母親也是把同源染色體分開了 293 00:11:58,720 --> 00:12:01,260 形成了兩種不同的配子 294 00:12:02,119 --> 00:12:03,619 形成了兩種不同的配子 295 00:12:03,619 --> 00:12:05,619 然後這些個配子又可以怎麼樣 296 00:12:05,779 --> 00:12:08,060 又可以自由的組合 297 00:12:08,140 --> 00:12:10,680 也就是說孩子可以選擇父母各一條配子 298 00:12:10,699 --> 00:12:12,159 這個和這個合到一塊 299 00:12:12,500 --> 00:12:15,640 這個孩子他的這個基因就變成了這樣 300 00:12:15,659 --> 00:12:17,079 於是我們通常就說 301 00:12:17,380 --> 00:12:20,319 這個孩子一半的基因來自於父親 302 00:12:20,340 --> 00:12:22,479 一半的基因來自於母親 303 00:12:22,619 --> 00:12:24,100 孩子長得像父母 304 00:12:24,100 --> 00:12:26,579 但是又跟父母不完全一樣 對不對 305 00:12:26,579 --> 00:12:29,579 這個就是孟德爾發現的就是基因的分離 306 00:12:30,359 --> 00:12:33,779 自由分離和組合的規律 307 00:12:34,979 --> 00:12:39,420 所以父母他的基因會有一部分傳遞給孩子 308 00:12:39,619 --> 00:12:41,340 後來摩爾根又發現了什麼呢 309 00:12:41,420 --> 00:12:42,180 摩爾根又發現 310 00:12:42,340 --> 00:12:45,500 這個孩子的這一條染色體雖然來源於母親 311 00:12:45,500 --> 00:12:47,819 但是他很有可能跟母親也不完全一樣 312 00:12:47,920 --> 00:12:48,659 為什麼呢 313 00:12:48,680 --> 00:12:50,979 因為在染色體複製的過程之中 314 00:12:51,279 --> 00:12:54,659 這個兩條同源染色體它有可能會互相交換 315 00:12:54,680 --> 00:12:57,380 當然實際上是在四分體時候互相交換的 316 00:12:57,600 --> 00:12:59,039 我們可以大體這麼理解 317 00:12:59,060 --> 00:13:01,359 就是母親為了形成配子 318 00:13:01,380 --> 00:13:02,800 它的這個染色體要復制 319 00:13:02,819 --> 00:13:04,439 而在復制的過程中 320 00:13:04,460 --> 00:13:07,159 有可能同源染色體交換了一部分 321 00:13:07,260 --> 00:13:08,739 比如說我中間切開 322 00:13:08,819 --> 00:13:11,220 這一條跑這來了 這一條跑這來了 323 00:13:11,220 --> 00:13:13,939 於是母親形成的兩個配子是這樣的 324 00:13:14,920 --> 00:13:18,119 是這個樣子的 這個樣子的 325 00:13:18,340 --> 00:13:20,300 就是在形成配子的過程之中 326 00:13:20,659 --> 00:13:23,779 這個母親產生了兩條新的染色體 327 00:13:23,859 --> 00:13:26,460 這兩條新的染色體的每一個部分 328 00:13:26,460 --> 00:13:27,819 都來源於原來的染色體 329 00:13:27,819 --> 00:13:29,579 但它們因為彼此交換了 330 00:13:29,699 --> 00:13:31,479 所以長得跟母親是不一樣的 331 00:13:31,560 --> 00:13:34,439 然後假如說孩子從父親這繼承了一個染色體 332 00:13:34,439 --> 00:13:36,960 又和母親這個變了之後的染色體合起來了 333 00:13:37,420 --> 00:13:39,539 那麼它就會形成一個新的孩子 334 00:13:39,539 --> 00:13:42,460 而這個新的孩子裡邊他的染色體 335 00:13:42,899 --> 00:13:44,939 就和母親不完全一樣了 336 00:13:44,939 --> 00:13:47,899 因為它是母親經過互換 337 00:13:47,899 --> 00:13:49,979 染色體經過互換得到的 338 00:13:50,579 --> 00:13:52,000 這個就是第一個子女 339 00:13:52,020 --> 00:13:53,800 這就是第二個子女 340 00:13:53,800 --> 00:13:57,239 那摩爾根就發現了基因連鎖互換定律 341 00:13:58,039 --> 00:14:01,800 不管是分離和自由組合還是基因連鎖互換 342 00:14:01,800 --> 00:14:04,239 孩子的基因都跟父母不完全一樣 343 00:14:04,239 --> 00:14:05,760 這就稱之為基因重組 344 00:14:05,859 --> 00:14:08,699 基因重組的時候生物體就發生了變異 345 00:14:08,699 --> 00:14:10,819 可以把有利的基因積攢下來 346 00:14:11,439 --> 00:14:13,319 但同時基因除了重組之外 347 00:14:13,319 --> 00:14:15,800 其實還有一條叫做基因的變異 348 00:14:16,600 --> 00:14:19,279 就算你不考慮重組 基因也會存在變異 349 00:14:19,279 --> 00:14:22,199 變異的意思是我們都知道染色體上有DNA 350 00:14:22,199 --> 00:14:23,960 而DNA上面有基因 351 00:14:23,960 --> 00:14:25,920 基因就是鹼基序列 352 00:14:25,920 --> 00:14:30,800 比如說ATCGAT等等一系列基因序列 353 00:14:30,819 --> 00:14:34,760 變異的意思就是比如說這個T和C這兩個鹼基 354 00:14:34,779 --> 00:14:36,920 它們交換了位置變成CT了 355 00:14:37,340 --> 00:14:38,520 複製的時候出錯了 356 00:14:38,539 --> 00:14:42,119 或者中間有一個鹼基G它跑了 357 00:14:42,420 --> 00:14:45,439 或者這個A和T中間它又多複制的一個A 358 00:14:45,460 --> 00:14:46,680 重複了 對吧 359 00:14:46,680 --> 00:14:49,439 這些情況也會造成染色體的變異 360 00:14:49,439 --> 00:14:52,279 當然相比來講在我們人類身上變異比較少 361 00:14:52,279 --> 00:14:55,960 主要是這種基因的分離組合以及互換 362 00:14:56,399 --> 00:14:57,159 不管怎麼說 363 00:14:57,159 --> 00:14:59,800 人們從分子的角度理解了遺傳和變異 364 00:14:59,819 --> 00:15:01,039 究竟是怎麼發生的 365 00:15:01,060 --> 00:15:02,279 自然界就是這樣 366 00:15:02,300 --> 00:15:04,319 從一個原始的地球 原始的生命 367 00:15:04,340 --> 00:15:06,640 經過不斷的遺傳變異和自然選擇 368 00:15:06,659 --> 00:15:08,520 形成了今天豐富多彩的世界 369 00:15:08,520 --> 00:15:10,220 而我們的遺傳變異算法 370 00:15:10,220 --> 00:15:13,020 其實就是模仿了生物的這個過程 371 00:15:13,100 --> 00:15:18,380 我們來說說遺傳算法究竟怎麼樣解決 372 00:15:18,800 --> 00:15:20,199 旅行推銷員問題 373 00:15:20,840 --> 00:15:22,380 它和遺傳過程非常像 374 00:15:22,399 --> 00:15:25,260 首先你先要把這個問題初始化 375 00:15:25,380 --> 00:15:28,920 初始化的意思就是設置一個原始的生物 376 00:15:29,340 --> 00:15:31,960 初始化 有一個原始的種群 377 00:15:33,159 --> 00:15:34,359 初始化了之後 378 00:15:35,079 --> 00:15:39,279 下一步我們就要求個體的適應度 379 00:15:39,380 --> 00:15:42,539 個體的適應度 380 00:15:42,539 --> 00:15:46,060 就是看你這個個體它適不適合環境的生存 381 00:15:46,500 --> 00:15:48,300 如果你更加的適應了 382 00:15:48,300 --> 00:15:49,100 你怎麼樣 383 00:15:49,100 --> 00:15:51,060 你就發生遺傳 384 00:15:51,420 --> 00:15:52,579 你就發生遺傳 385 00:15:52,739 --> 00:15:56,819 然後你還有可能會發生變異 變異 386 00:15:57,140 --> 00:15:59,659 發生了遺傳和變異之後 怎麼樣呢 387 00:15:59,659 --> 00:16:02,819 我們要繼續去考察你的個體適應度 388 00:16:02,819 --> 00:16:03,859 適不適應環境 389 00:16:04,220 --> 00:16:05,819 然後繼續遺傳 繼續變異 390 00:16:05,819 --> 00:16:07,659 然後再繼續考察你的適應度 391 00:16:07,819 --> 00:16:10,699 最終我們認為你這個適應度已經足夠好了 392 00:16:10,699 --> 00:16:12,500 你這個解已經是我們所需的 393 00:16:12,500 --> 00:16:13,859 那麼我們就結束 394 00:16:13,939 --> 00:16:17,060 我們就找到了一個最優的路線 395 00:16:17,140 --> 00:16:18,260 那具體是怎麼回事呢 396 00:16:18,260 --> 00:16:19,020 我們舉個例子 397 00:16:19,020 --> 00:16:21,300 比如說一共有6個城市 398 00:16:21,779 --> 00:16:24,659 有一個旅行商他要去6個城市 399 00:16:24,659 --> 00:16:27,859 那麼你首先6個城市應該是有60種算法 400 00:16:28,140 --> 00:16:30,539 我們5!/2等於60 401 00:16:30,539 --> 00:16:31,779 你只要遍歷這60種 402 00:16:31,779 --> 00:16:33,579 你就能找到那個最好的方式了 403 00:16:33,579 --> 00:16:34,859 但是我現在不想那麼幹 404 00:16:34,859 --> 00:16:36,979 我想用這種遺傳算法 怎麼做呢 405 00:16:37,079 --> 00:16:38,880 我可以先設置一個種群 406 00:16:38,880 --> 00:16:40,880 比如說我先設置4個個體 407 00:16:40,880 --> 00:16:43,079 這4個個體其實就是4個路徑 408 00:16:43,079 --> 00:16:46,020 S₁等於比如1 2 3 4 5 6 409 00:16:46,039 --> 00:16:47,199 然後最後又回到1了 410 00:16:47,720 --> 00:16:51,680 第二個路徑是132654 411 00:16:51,939 --> 00:16:52,880 這也是一個路徑 412 00:16:53,279 --> 00:16:54,739 第三個路徑S₃ 413 00:16:54,760 --> 00:16:58,100 比如說是什麼142635 414 00:16:58,439 --> 00:16:59,579 第四個路徑 415 00:16:59,600 --> 00:17:03,659 比如說是什麼162534 416 00:17:04,039 --> 00:17:06,560 不管 反正我們隨機的設這幾個路徑 417 00:17:06,579 --> 00:17:08,880 這就好像世界上的原始生命一樣 418 00:17:08,979 --> 00:17:10,699 然後我們就要計算它的個體適應度 419 00:17:10,699 --> 00:17:12,579 我們到底想考察什麼 420 00:17:12,579 --> 00:17:14,939 我們是想考察哪條路最短 對不對 421 00:17:14,939 --> 00:17:16,339 哪條路價格最便宜 422 00:17:16,339 --> 00:17:19,358 那麼我們把價格把它列出來 423 00:17:19,479 --> 00:17:23,859 價格 比如說第一條路價格是10元 424 00:17:24,239 --> 00:17:26,579 第二條路總票價是20 425 00:17:26,680 --> 00:17:28,880 第三條路總票價是20 426 00:17:28,880 --> 00:17:31,479 第四條路總票價是50 427 00:17:31,579 --> 00:17:34,640 我們看起來好像第一條路它價格是最低的 428 00:17:34,739 --> 00:17:37,340 但是你也不能確定它是不是最好的 對不對 429 00:17:37,340 --> 00:17:40,039 而且如果有一天兩個城市之間調了價格 430 00:17:40,060 --> 00:17:41,760 那第一條路很有可能變成最壞的 431 00:17:42,159 --> 00:17:45,100 那我們能不能去改進一下 找到更好的呢 432 00:17:45,340 --> 00:17:46,260 我們找它的適應度 433 00:17:46,439 --> 00:17:48,560 適應度就是價格越低越適應 434 00:17:49,020 --> 00:17:54,520 所以我們可以把這個適應度寫成f等於1/d 435 00:17:54,960 --> 00:17:57,840 我們把它叫做適應度 1/d 436 00:17:57,960 --> 00:17:59,760 就價格越低 適應度就越高 437 00:17:59,760 --> 00:18:01,260 所以第一個適應度是多少 438 00:18:01,279 --> 00:18:04,319 第一個路線適應度應該是0.1 439 00:18:04,319 --> 00:18:07,180 第二個適應度是0.05 440 00:18:07,319 --> 00:18:10,119 第三個適應度是0.05 441 00:18:10,220 --> 00:18:12,600 第四個適應度是0.02 442 00:18:13,180 --> 00:18:15,020 還是第一條路是最好的 443 00:18:15,340 --> 00:18:17,500 找到適應度之後下一步幹什麼呢 444 00:18:17,600 --> 00:18:19,079 根據遺傳學的規律 445 00:18:19,079 --> 00:18:22,960 適應自然界的就更有可能遺傳 對不對 446 00:18:22,960 --> 00:18:24,880 更有可能有下一代 447 00:18:24,960 --> 00:18:29,260 所以我們說適應度越高的越有可能會遺傳 448 00:18:29,520 --> 00:18:32,180 我們就讓它根據概率進行遺傳 449 00:18:32,340 --> 00:18:35,460 這個遺傳的概率怎麼算呢 450 00:18:35,840 --> 00:18:36,779 我們可以這樣算 451 00:18:36,779 --> 00:18:40,260 我們可以用每一個路徑的適應度 452 00:18:40,500 --> 00:18:43,399 再除以所有的適應度之和 453 00:18:43,600 --> 00:18:47,500 這就表示你的適應度在總體中所佔的比例 454 00:18:47,500 --> 00:18:50,119 你比例越高你就越有可能遺傳 對不對 455 00:18:50,119 --> 00:18:52,239 當然越有可能遺傳 他也不見得遺傳 456 00:18:52,640 --> 00:18:53,640 有很多優秀的人 457 00:18:53,640 --> 00:18:55,439 比如牛頓他就沒有後代 是不是 458 00:18:55,439 --> 00:18:56,260 這是有可能的 459 00:18:56,520 --> 00:18:58,159 那我們怎麼樣才能夠 460 00:18:58,260 --> 00:19:00,920 把這個問題用概率的觀點解釋一下呢 461 00:19:00,939 --> 00:19:01,840 我們可以這麼做 462 00:19:01,859 --> 00:19:04,239 畫一個圓盤 463 00:19:04,359 --> 00:19:06,340 在這個圓盤上標出一些區域 464 00:19:06,359 --> 00:19:09,260 比如說這個f₁這個概率是最大的 465 00:19:09,260 --> 00:19:10,180 適應度最高的 466 00:19:10,199 --> 00:19:12,619 那麼它的面積也就相應的是最大 467 00:19:13,079 --> 00:19:15,439 這個f₂和f₃的面積要小一點 468 00:19:15,439 --> 00:19:19,539 所以在這個盤子上 它的面積也就會小一些 469 00:19:19,659 --> 00:19:20,800 f₂和f₃ 470 00:19:20,819 --> 00:19:22,720 這個f₄它是最小的 471 00:19:22,960 --> 00:19:25,039 所以在這個盤子上它的面積也是最小的 472 00:19:25,180 --> 00:19:27,319 然後我就用一個指針 473 00:19:27,420 --> 00:19:29,380 然後轉動這個指針 474 00:19:29,399 --> 00:19:31,100 讓這個指針在這個盤子上去轉 475 00:19:31,279 --> 00:19:34,699 轉的時候 一停下來 我就看它指向誰 476 00:19:34,779 --> 00:19:36,819 就是選擇誰進行遺傳 477 00:19:37,180 --> 00:19:38,979 指向誰就是選擇誰進行遺傳 478 00:19:39,000 --> 00:19:41,899 大家想一想那是不就是你的適應度越高 479 00:19:41,920 --> 00:19:43,579 你所佔的比例越大 480 00:19:43,680 --> 00:19:45,020 你越適合自然環境 481 00:19:45,020 --> 00:19:46,560 你就越有可能被選中 482 00:19:46,760 --> 00:19:48,140 當然這也不是百分百的 483 00:19:48,479 --> 00:19:49,859 像牛頓它就沒有後代 484 00:19:49,880 --> 00:19:51,380 像特斯拉它也沒有後代 485 00:19:51,840 --> 00:19:53,579 好 那麼我們假如說 486 00:19:53,760 --> 00:19:56,479 我第一次轉的時候我就選中了S₁ 487 00:19:56,500 --> 00:20:00,079 那我選中了S₁ 選中了S₁ 488 00:20:00,079 --> 00:20:01,539 我第二次又轉了一圈 489 00:20:01,560 --> 00:20:03,260 我就選中了s₂ 490 00:20:03,279 --> 00:20:04,760 選完了之後怎麼樣呢 491 00:20:04,760 --> 00:20:05,840 進入下一個環節 492 00:20:05,840 --> 00:20:07,359 下一個環節叫變異 493 00:20:07,359 --> 00:20:08,920 我需要讓它進行變異 494 00:20:09,000 --> 00:20:10,000 變異分兩種 495 00:20:10,000 --> 00:20:12,260 第一種我們可以是交叉變異 496 00:20:12,279 --> 00:20:13,600 什麼叫交叉變異呢 497 00:20:13,600 --> 00:20:15,600 就是S₁和S₂這不是已經有了嗎 498 00:20:15,600 --> 00:20:17,359 相當於它的DNA片段 499 00:20:17,359 --> 00:20:19,539 我可以在中間某個部位我進行截斷 500 00:20:19,560 --> 00:20:22,119 比如說在中間3這個部位進行截斷 501 00:20:22,119 --> 00:20:25,479 然後讓它模仿摩爾根的這種基因互換 502 00:20:25,479 --> 00:20:27,680 讓這個片段和這個片段互換 503 00:20:27,760 --> 00:20:28,579 換完了之後 504 00:20:28,920 --> 00:20:32,939 這個 S₁'它就變成了123 505 00:20:32,960 --> 00:20:35,460 然後接下一段654 506 00:20:36,000 --> 00:20:38,960 然後S₂它就變成了什麼呢 507 00:20:39,180 --> 00:20:42,380 132 然後接上一段456 508 00:20:42,380 --> 00:20:45,020 這就是交叉變異 509 00:20:45,020 --> 00:20:47,699 當然了我們現在子代比親代少 510 00:20:47,720 --> 00:20:48,300 這個不行 511 00:20:48,520 --> 00:20:50,380 我們至少得保證子代和親代一樣多 512 00:20:50,399 --> 00:20:52,199 要不然傳幾代就沒人了 是不是 513 00:20:52,199 --> 00:20:53,720 所以我可能要再轉兩次 514 00:20:53,720 --> 00:20:55,239 比如說我又轉了兩次 515 00:20:55,239 --> 00:20:58,600 我們選出了S₁和S₄ 516 00:20:58,600 --> 00:21:01,119 然後我們再進行交叉變異 517 00:21:01,199 --> 00:21:04,760 找到新的S₃'和S₄' 518 00:21:04,760 --> 00:21:06,840 當然在交叉變異的過程中 519 00:21:06,840 --> 00:21:07,779 有可能會有重複的 520 00:21:07,800 --> 00:21:08,840 我們要稍微處理一下 521 00:21:09,000 --> 00:21:10,220 具體過程我們就不講了 522 00:21:10,220 --> 00:21:12,760 所以我們通過這種辦法選出更加優秀的父母 523 00:21:12,760 --> 00:21:14,260 然後讓他們生出孩子 524 00:21:14,260 --> 00:21:16,779 而生出孩子之後還要進行基因的互換 525 00:21:17,220 --> 00:21:20,420 換完了之後我們再做一步就是變異 526 00:21:20,960 --> 00:21:21,960 變異是什麼呢 527 00:21:21,960 --> 00:21:24,039 就是模仿生物的DNA的變異 528 00:21:24,039 --> 00:21:25,220 我們可以舉個例子 529 00:21:25,279 --> 00:21:26,279 比如說這S₁' 530 00:21:26,479 --> 00:21:30,500 我們可以讓這個365我調個個 531 00:21:30,800 --> 00:21:31,699 讓它變成什麼呢 532 00:21:31,720 --> 00:21:36,260 S₁''變成12 然後5634 533 00:21:36,260 --> 00:21:38,260 就是把365這三個我調個個 534 00:21:38,500 --> 00:21:40,060 這是可以的一種變異方法 535 00:21:40,060 --> 00:21:41,140 還有什麼變異方法呢 536 00:21:41,140 --> 00:21:42,739 比如說我也可以讓兩個數交換 537 00:21:42,739 --> 00:21:44,300 比如說我讓3和6交換 538 00:21:44,800 --> 00:21:50,039 S₂''等於162453 539 00:21:50,239 --> 00:21:51,899 這也是一種方式交換 540 00:21:51,920 --> 00:21:53,220 或者是什麼其他的方式 541 00:21:53,239 --> 00:21:54,739 總而言之我做一點變異 542 00:21:54,880 --> 00:21:58,300 同樣S₃'' S₄''我們也做了 543 00:21:58,399 --> 00:22:01,319 這就是我們首先選擇了優秀的父母 544 00:22:01,319 --> 00:22:04,079 然後我們讓她生出的孩子進行一點變異 545 00:22:04,159 --> 00:22:06,359 變異完了之後變成什麼呢 546 00:22:06,359 --> 00:22:09,039 下一步重新計算個體適應度 547 00:22:09,039 --> 00:22:10,239 我要重新計算 548 00:22:10,239 --> 00:22:13,319 我得到的這些子代它的價格是多少 549 00:22:13,319 --> 00:22:14,800 以及它的適應度是多少 550 00:22:14,800 --> 00:22:18,220 然後我再進入這個輪盤重新進行迭代 551 00:22:18,220 --> 00:22:21,420 只要我最開始設置的種群數量足夠多 552 00:22:21,439 --> 00:22:23,340 我迭代的次數足夠多 553 00:22:23,340 --> 00:22:24,640 那麼我們就應該能找到 554 00:22:24,640 --> 00:22:26,600 那個接近於最優解的解了 555 00:22:26,600 --> 00:22:30,100 說到這大家是不是明白了我到底在講些什麼呢 556 00:22:30,180 --> 00:22:32,239 就是因為計算的資源是有限的 557 00:22:32,260 --> 00:22:33,960 所以對於這個旅行推銷員問題呢 558 00:22:33,979 --> 00:22:35,479 我們不可能暴力搜索 559 00:22:35,619 --> 00:22:38,239 所以我們就先隨機生成一些路徑 560 00:22:38,260 --> 00:22:39,800 然後通過計算適應度 561 00:22:39,819 --> 00:22:42,279 讓更好的路徑有更大的概率留存 562 00:22:42,359 --> 00:22:45,079 然後再通過適當的交叉變異一點點變化 563 00:22:45,079 --> 00:22:46,279 尋找更好的路徑 564 00:22:46,520 --> 00:22:48,319 相比於這個精確的暴力搜索 565 00:22:48,319 --> 00:22:49,920 這種算法效率要高得多 566 00:22:49,920 --> 00:22:51,560 而相比於這種貪心的算法 567 00:22:52,020 --> 00:22:53,840 這種方法的準確率又高得多 568 00:22:53,939 --> 00:22:56,560 最重要的事是即便是兩個城市之間 569 00:22:56,579 --> 00:22:58,000 機票價格發生了變化 570 00:22:58,020 --> 00:22:59,079 由於我有變異 571 00:22:59,100 --> 00:23:00,880 所以我還是能夠快速迭代 572 00:23:00,899 --> 00:23:01,960 找出更好的路線 573 00:23:01,979 --> 00:23:04,199 而不至於鎖死在某一條路徑上 574 00:23:04,279 --> 00:23:06,600 那麼這種算法具有自我更新的能力 575 00:23:06,600 --> 00:23:08,000 所以遺傳算法 576 00:23:08,000 --> 00:23:10,239 不僅僅是只能用在旅行者推銷問題上 577 00:23:10,239 --> 00:23:12,239 幾乎所有的多步驟複雜問題 578 00:23:12,239 --> 00:23:13,760 都是可以使用這種方法的 579 00:23:13,760 --> 00:23:15,359 我們回到生物學的問題上 580 00:23:15,439 --> 00:23:16,979 在地球剛剛形成的時候 581 00:23:17,079 --> 00:23:18,739 環境的變化是非常劇烈的 582 00:23:18,760 --> 00:23:21,819 自然界也不知道到底什麼樣的基因最適合環境 583 00:23:21,920 --> 00:23:25,239 於是自然界就設立了遺傳和變異的法則 584 00:23:25,239 --> 00:23:26,239 在這個法則下 585 00:23:26,399 --> 00:23:28,800 許多原始的生命在有限的自然資源下 586 00:23:28,800 --> 00:23:29,880 展開了競爭 587 00:23:29,979 --> 00:23:33,060 具有競爭優勢的基因就更容易遺傳 繁衍 588 00:23:33,060 --> 00:23:35,159 這就是物競天擇 適者生存 589 00:23:35,159 --> 00:23:36,699 當自然條件發生變化的時候 590 00:23:36,699 --> 00:23:37,979 多數生物會滅絕 591 00:23:37,979 --> 00:23:41,140 但是各種變異保證了生物體具有多樣性 592 00:23:41,140 --> 00:23:42,659 總會有少量的生物 593 00:23:42,659 --> 00:23:45,899 因為基因更適合環境而生存下來繼續繁衍 594 00:23:45,979 --> 00:23:46,899 病毒是這樣 595 00:23:46,899 --> 00:23:48,439 人類其實也是如此 596 00:23:48,539 --> 00:23:50,340 自然界正是通過這樣的方法 597 00:23:50,340 --> 00:23:52,380 才能保證生命的生生不息 598 00:23:52,659 --> 00:23:53,479 大家如果喜歡我的視頻 599 00:23:53,479 --> 00:23:55,319 可以在YouTube賬號李永樂老師裡訂閱我 600 00:23:55,319 --> 00:23:57,399 點擊小鈴鐺可以第一時間獲得更新信息 41925

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.