English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

guest
1 / ?
back to lessons

問題即空間

每個問題都勾勒出一個空間

問題不只是詢問單一事物。它開啟了一個可能答案的空間,而每個候選答案都是該空間中某處的一個點。

「選個地方吃飯」開啟了一個巨大的空間:地球上的每家餐廳、咖啡館、流動攤車與廚房。「選一個步行可達、現在營業、素食且低於十五美元的地方」則開啟了一個微小的空間:可能只有三個點。

意圖相同,幾何結構卻截然不同。第二個問題做了實質工作:它在任何人開始搜尋之前,就縮小了空間。

這整堂課可以用一句話概括:一個好問題,是將答案空間縮小至值得搜尋區域的問題。 模糊的問題會留下廣闊的空間,迫使搜尋變得緩慢且漫無目的。而精準的問題則會交給你一個小空間,讓你一眼就能掃描完畢。

我們將透過四個幾何概念來精確化這一點:分割空間、用約束條件切割空間,以及透過精心挑選的是/否問題將空間減半。

寬廣與狹窄

考慮兩種請求協助除錯程式的方式:

- Q1:「為什麼我的程式碼無法運作?」

- Q2:「為什麼這個迴圈在 Python 3.12 上,當清單有 10 個項目時,卻只印出 9 個項目?」

描述每個問題所開啟的答案空間,並從幾何角度解釋為什麼 Q2 是較好的問題。Q2 中額外的細節對空間的大小做了什麼?

將空間分割為區域

將大問題拆解為區域

當一個空間大到無法直接搜尋時,你可以劃分它:將其分割為互不重疊的區域,這些區域合起來涵蓋整個空間。回答一個子問題,意味著選取其中一個區域,並忽略其餘部分。

假設問題是「上個季度營收為何下降?」答案空間非常龐大。將其劃分:(a) 客戶數量減少,(b) 相同客戶消費減少,(c) 定價或計費變更,(d) 資料錯誤。這四個區域涵蓋了整個空間且互不重疊。每個區域都是一個你可以獨立處理的較小問題。

一個好的劃分具備兩個直接借鑒自幾何學的性質:這些區域覆蓋整個空間(沒有遺漏),且它們是互斥的(沒有重複計算)。若遺漏了空間的一部分,真正的答案可能就隱藏在缺口之中;若區域之間有重疊,則會浪費精力在同一塊領土上搜尋兩次。

每個子問題將你的注意力收束到一個區域。一旦回答它,你就排除了該區域之外的一切:這是一種大幅且低成本的搜尋空間縮減。

乾淨的劃分

某城市提出問題:「為什麼緊急應變反應時間正在上升?」

一位分析師建議將其拆解為:(a) 通話到派遣人員的時間變長,(b) 人員派遣後抵達現場的時間變長,以及 (c) 人員完成任務並釋放的時間變長。

請解釋為什麼這算是一個對問題答案空間的良好劃分。這些區域應具備哪兩個幾何性質?回答其中一個子問題如何能縮小搜尋範圍?

每個需求都切分空間

作為半平面的約束

想像答案空間是一個平坦的平面,每個點都是一個候選答案。約束就是一個需求,& 每個需求在平面上畫出一條線 & 只保留其中一側。在幾何學中,這個被保留的側面稱為半平面。

「低於十五美元」是一條線;保留便宜的那一側。「步行可達」是第二條線;保留較近的那一側。「現在營業中」是第三條。你每增加一個需求,就是多一次切割。

滿足所有需求的答案,位於所有保留側面的交集中。將足夠多的半平面取交集,你會得到一個小的有界區域:一個整齊的區域,裡面包含唯一正確的答案。

Constraints as half-planes with a bounded feasible region

兩種失敗模式

約束不足(切分太少):區域保持無界。它會延伸至無限遠,因此無限多個模糊的答案都「符合」條件。「給我一個好點子」就是無界的。你得到的是雜訊,因為沒有任何東西被排除在外。

約束過剩(切分太多,或相互矛盾):區域變為空集。這些半平面沒有共同點,因此沒有任何答案符合條件。「一個既是偶數又是奇數的數字」將空間切割至無物。

一個良定義的問題位於這兩者之間:有足夠的約束來界定區域,但不至於多到彼此矛盾並使區域變空。

有界、無界、空集

一位經理向設計師要求「一個標誌」。後來他們要求「一個標誌,必須是單個字母、單色、在 16 像素下可用,且同時使用至少四種顏色」。

利用半平面的圖示,描述每個請求的可行區域。哪一個是無界的,為什麼?哪一個是空集,為什麼?以及每種失敗對設計師能給出的答案意味著什麼?

最佳切割將空間一分为二

二分搜尋:每個是/否問題將空間減半

有些問題是是非題。從幾何角度來看,一個是非題畫出一條線,並告訴你答案在哪一側:它一筆就丟棄整個區域。

最佳的是能將空間切成兩等份的是/否問題,因為無論得到哪個答案,你都恰好排除了剩餘的一半。不斷問「它在上半部嗎?」,空間便會以幾何級數的速度迅速收斂。

這就是二分搜尋。從 N 個候選開始。提出一個好的問題後,剩餘 N/2 個。兩次後,剩餘 N/4。經過 k 次提問後,剩餘 N / 2^k。當只剩下一個候選時便完成,因此你需要找到最小的 k,使得 2^k 至少為 N。

這個最小的 k 是 log2(N) 的上整數(ceil)。對於一千個候選:2^9 = 512(不夠)& 2^10 = 1024(足夠),因此 log2(1000) 約為 9.97,你需要 10 個問題。十億個候選呢?十億的 log2 約為 30。二分法的力量如此強大,從一千增加到十億,僅需多問約二十個問題。

提問的啟示:一個精準的是/否問題,在將剩餘空間均勻分割時價值最大。一個偏頗的問題若只能排除極小部分,便浪費了這次提問機會。

確保找到目標

你正在玩一個猜數遊戲。某人從 1 到 1000 中選取一個整數。你只能提問是/否問題,且你以最佳策略進行(每個問題都將剩餘候選盡可能均勻分割)。

在最壞情況下,保證你能識別出該數字所需的最少是/否問題數是多少?請給出最終數字,並解釋背後的二分 / log2 推理。

當答案變得廉價,切割便顯得珍貴

提問即是工作

將這四個部分結合起來。一個問題開啟了一個空間。分解將其劃分。約束條件將其切割為有界的可行區域。好的「是/否」問題將其減半。這些每一個都是在尋找答案之前縮小搜尋範圍的行為。

在歷史的大部分時間裡,答案才是昂貴的部分。你需要付費請專家、進行實驗、翻閱檔案。因此,我們重視那些能產出答案的人。

這種平衡已經被顛覆。自動化系統現在能以極低的成本,批量生成大量看似合理的回答。當回答變得廉價且充裕時,再多產出一個已不再是成就。真正稀缺的,是知道哪一個回答值得擁有:這是一項提問的技能,而非產出回答的技能。

從幾何學的角度來看:機器會樂意提供空間中的任何一點。你所增加的價值,在於繪製那些將空間切割至「好答案必然存在」之特定區域的約束條件。若約束不足,你將淹沒在看似合理的雜訊中(一個無界區域);若約束過多,則什麼都得不到(一個空區域)。提出恰當的切割,使區域大小剛好合適,才是那項稀缺的、屬人的技能。

因此,槓桿點不在於「獲得一個答案」,而在於「提出約束條件,使答案空間小到足以讓其中的任何一點都值得擁有」。

價值轉移之處

分析師現在可以在幾分鐘內,以幾乎零成本生成一百份策略草稿。

運用本課的搜尋空間幾何學,解釋為何分析師的價值已從「產出答案」轉向「構架問題」。分析師實際上是對答案空間做了什麼?為何約束不足或約束過多都會導致失敗?

問題幾何學:總結

你學到了什麼

問題不是對單一答案的請求。它是一個空間,包含各種可能的答案,而提問的藝術就是縮小這個空間的藝術:

- 搜尋空間: 每個問題都開啟了一組候選答案。精準的問題開啟一個小集合;模糊的問題則開啟一個龐大集合,讓你在其中漫無目的地遊蕩。

- 分解即劃分: 將一個大空間分割成互不重疊且完全覆蓋該空間的區域;每個子問題將你引導至其中一個區域。

- 約束即邊界: 每個需求都是一個半平面;答案位於它們的交集之中。切割過少會留下無界區域(無限的模糊答案);相互矛盾的切割則會留下空區域(無解)。

- 二分法縮小範圍: 一個精心設計的是/否問題,能將搜尋空間一分为二。要在 1 到 1000 之間鎖定一個數字,需要 ceil(log2(1000)) = 10 個問題;而鎖定十億個數字,也只需要大約 30 個問題。

而其中的回報在於:當自動化系統讓獲取答案變得廉價時,稀缺的技能不再是「生產答案」,而是提出能將空間切割至唯一值得擁有之區域的約束條件。學會畫出這些切割線,你便能將漫無邊際的漫遊式搜尋,轉化為短小精悍的搜尋過程。