「因為……」
堆積局部最優解,達到全局最優。
在意識到自己的思路就是貪心算法後,李林腦子裡開始反覆迴響著剛才第一個男生說的這句話。
起初他不懂。
但現在結合自己剛才一步步推導出來的思路,這句看似抽象的概括,開始在他腦海中緩慢地解構。
「分析lv1」正在悄無聲息地全速運轉。
為什麼?
憑什麼?
每一步都只看眼前,選擇局部最優,為什麼最終不會把路走歪?
李林的大腦瘋狂轉動著,甚至忙碌到連呼吸都快要忘記。
他一直在思考。
十秒,二十秒,三十秒——
直到一分鐘。
時間長到讓旁邊的劉筱雨攥緊了手心,為他捏了一把汗。
前排站得有些腳酸的幾個學生也搖了搖頭,交換了一個「果然沒戲」的眼神。
胡云程微微嘆了口氣,轉過身,拿起粉筆準備在黑板上寫些什麼時——
李林開口了。
胡云程的手頓住了,沒回頭,但粉筆已經不再挪動。
「因為……如果這道題存在一個最優解,那麼在最優解里,一定存在一種方案,是把最小的那塊餅乾,分給了胃口最小的那個孩子。」
李林一邊說,一邊思考。
聲音起初還有些試探,但越往後越穩,思路逐漸順滑起來,
「假如在最優解里,最小的餅乾a沒有分給胃口最小的孩子,而是分給了一個胃口更大的孩子,那就一定存在另一塊更大的餅乾b,被分給了胃口最小的孩子。」
胡云程轉過身,屏氣凝神。
李林還在說,
「這時候,把a和b的分配對象交換一下,胃口最小的孩子拿到了更小的餅乾,胃口更大的那個拿到了更大的餅乾,所有人依然能被滿足。交換之後,最優解的性質沒有被破壞。所以,總是可以做到讓最小的餅乾匹配胃口最小的孩子。這一步是安全的,不會偏離最優解。」
胡云程眼前猛地一亮,他甚至顧不上開口點評,轉頭就在黑板上哐哐哐寫下了幾個大字——
「貪心選擇性質」。
台下傳來一陣喧譁,被胡云程抬手壓下。
【叮——】
【思維方式習得,「高中數學」相性+1%。】
腦海中系統提示音清亮醒目,但李林卻無暇顧及。
因為胡云程甚至都沒意識到自己連呼吸都開始變得有些粗重,還在目光灼灼地盯著李林,
「還有呢?只滿足這一個條件就夠了嗎?就能放心大膽地用貪心算法了嗎?」
「不對,」
李林搖了搖頭,終於在胡云程近乎灼熱的目光中否定了自己,
「光有這個應該還不夠。」
「嗯!」
胡云程的笑意更甚,
「怎麼不夠?」
「因為……」
見李林有些卡殼,胡云程反而比他表現的更焦急,旁敲側擊道,
「你剛才說,分配完最小餅乾之後,剩下的問題依然是同類型的——是嗎?」
胡云程不等他回到,在黑板上飛快地畫了一組示例,
「如果我們不只有餅乾,還有一沓香蕉呢?如果我們不只有小朋友,還有一組大朋友……」
儘管高強度的思考,已經讓李林開始感覺有些頭痛。
但腦海中的思路,一下一下地被胡云程點撥著,根本停不下來。
他還在思考。
「不對,不夠。」
「說……說出來!」
「原問題的最優解,必然是在子問題的最優解基礎上,加上剛才滿足的那個孩子得到的。如果子問題不是最優的,比如浪費了餅乾,那麼原問題也不可能達到最優。」
李林深吸一口氣,終於把腦子裡最後一點混亂給釐清,
「也就是說,貪心算法每次做選擇後,剩下的問題必須依然是同類型的、同樣能用貪心算法解決的子問題。」
「好!」
胡云程沒等他說完最後一個字,已經轉身在黑板上「貪心選擇性質」的旁邊,又寫下了五個大字——
「最優子結構」。
【叮——】
【思維方式習得,「高中數學」相性+2%。】
李林終於得以喘息,鬆了口氣。
【「高中數學」相性:9%(+3%)->12%】
寫下最後幾個字,粉筆被毫不留情地扔進了粉筆槽里。
胡云程轉回身,此刻臉上是毫不掩飾的痛快。
只見他抬起手——
「啪,啪,啪。」
清脆的掌聲在機房裡響起來。
其餘人愣了幾秒,然後前排幾個學生也反應過來了,跟著鼓掌。
掌聲從稀稀拉拉逐漸匯成一片,把剛才那將近窒息的緊張氣氛一掃而空。
劉筱雨是真心替李林感到開心,所以拍得尤其用力,一雙小手都紅彤彤的,臉上甚至還掛著殘餘的緊張……和懵逼。
其實她有點沒聽懂。
肯定也有不少人,和她是一樣的想法。
但他們可能不相信李林,但都毫無例外地相信胡云程。
旁邊幾個高三的「回鍋肉」自然也在鼓掌,但臉上的表情卻多了幾分複雜。
畢竟,被一個數學三十分的普通班學生解了他們沒答上來的問題。
這感覺實在是有點微妙。
李林站在那片掌聲里,腦子還沉浸在剛才的思維中,沒有完全回神。
其實直到被叫起來回答問題之前,他還覺得算法這種東西離自己很遠,是數學好到一定程度的人才有資格觸碰的。
可現在他忽然發現,所謂算法,其實不過是一層一層地追問「為什麼」,直到找到一個再也不能拆解的道理。
這和他學語文的感覺,好像也沒什麼區別?
胡云程在自己盡興後,終於收回目光,掃了一圈機房裡還沒完全消化剛才那場「二人轉」的學生們。
「我現在需要收回我的話,『三十分』這個蔑稱,我不配用。因為李林同學,剛才完成了別說你們,連我都很難完成的任務。」
全班抬起頭,似乎有些不明所以,
「他沒有用到任何學界定義的詞彙,而僅僅用自然語言,描述了一個經典算法。有人可能會說,證明這些經典算法有什麼用?直接拿來用不就好了?就比如一開始那位男同學——」
沒想到自己還會被點名「鞭屍」,趙哲羞愧地低下了頭。
「但我要說的是,用算法的人多如牛毛,懂算法的卻是鳳毛麟角。而能夠征服信奧的,偏偏就是鳳毛麟角。」
這也是胡云程在去年失敗的帶隊經驗後,痛定思痛,決定轉型的路線。
他本來已經預料到了這段路的艱難,但沒想到——
李林。
竟然真的讓他碰上了。
這下,胡云程終於確認,自己的確是挖到寶了。
他不想輕易說那兩個字,但是——
一定會竭盡全力把李林往那兩個字培養。
「好了,這個算法問題,到此就圓滿解決了。」
學生們該坐的坐下,總算鬆了口氣。
然而,一個不留神,胡云程又恢復成了一開始那副似笑非笑的表情,
「那麼接下來就要正式開始做題了,進行貪心算法的實現!」
「欸——」