概念地圖・穩定配對
分類:經濟
這一頁不只是把一個概念解釋一遍——一張自己畫的結構圖,加上拿台灣情境從頭走一次的實例演練、這個框架什麼時候會騙你,以及它接回 P.A.I.N. 之後長什麼樣。一頁必須交付的三層 →
穩定配對:一輪一輪提親,配到沒人想私奔
白蝦收成前六週,三張契作意向書同一週寄出,其中兩張落在同一間加工廠的桌上。那位廠長把兩張並排看,心裡早有順序——這家蝦體型穩、那家去年出過事。三家蝦場那邊也各自排好了名次。兩邊都在排隊,卻都不知道對方怎麼排。Gale-Shapley 這套演算法做的事很土:讓其中一邊一輪一輪去提,另一邊只暫留、不簽字,被更好的來敲門就換手。三輪跑完,你拿到的是一個很硬的保證——找不到任何一對,是彼此都更想要對方、卻沒配在一起。
三家蝦場、三間加工廠,三輪各發生了什麼
把三輪拆開來看,每一輪只有兩件事:誰開口,以及對方手上正握著誰。
| 輪次 | 這一輪誰開口 | 對方怎麼回 | 結束時誰握著誰 |
|---|---|---|---|
| 第 1 輪 | A 提甲、B 提乙、C 提甲 | 甲手上是 A,而甲的順位是 B>A>C,C 被退回 | 甲暫留 A、乙暫留 B,C 空手 |
| 第 2 輪 | 只剩 C 還在動,轉頭提乙 | 乙手上是 B,而乙的順位是 A>B>C,C 再被退回 | 配對沒動,C 還是空手 |
| 第 3 輪 | C 提丙 | 丙手上沒人,先接下 | A 配甲、B 配乙、C 配丙 |
| 終局 | 沒有人再開口 | 不需要回應 | 配對定住,但 C 與丙都只拿到第 3 志願 |
整局只發生五次提親——上限是九次(三乘三),實際用掉五次。真正吃掉輪數的是 C:它的名次表跟 A 一模一樣,卻在三間廠的名單上都排最後,所以它注定要把前兩個志願都撞過一遍才落地。表格裡「暫留」這兩個字是整套演算法的引擎——甲在第一輪就握住 A,可是那不叫成交,只要 B 掉頭來提,甲就會放手。沒有這個「握著但撤得回」的動作,這件事會退化成先搶先贏。
什麼樣的事情才輪得到這套演算法
四個自問,任何一個答不出來,這套演算法就先別套上去。
一、兩邊都在挑人,而且都排得出名次。價高者得的場子用不到這套——那是拍賣。要用它,你得先確定對面那一排人也在心裡排你,而且排得出前三名,不只是「有就好」。自問:我這一行的對造,真的排得出前三名嗎?還是誰先來就給誰?
二、名額是一對一的硬約束。三家蝦場、三間廠,一家只能配一家,這個限制才讓「配不上」變成一個問題。如果產量可以拆單、一家蝦場同時餵兩間廠,那你要的是分配演算法,配對這套用不上。自問:我的量能不能拆開來給兩家?拆得動的話,這題就換人管了。
三、暫留不算成交,而且撤得回來。整套演算法靠的就是「先握著、有更好的再換手」。契作季裡如果口頭答應等同定案、撤回等於毀信譽,那第一輪就會凍住,後面兩輪根本不會發生。自問:這一行的口頭承諾,在更好的對象敲門時撤得掉嗎?撤不掉就只剩先搶先贏。
四、跑完之前,兩邊的名次不會翻盤。課本假設偏好是固定的。可是三輪走下來要兩個月,中間可能有人爆池、有人被檢出藥殘、有人臨時擴廠。名次一翻,前面跑的全部作廢。自問:從寄出意向書到簽約那天,我的排序真的撐得住嗎?
三家蝦場的契作季,三輪提親走一遍
- 先把兩張名次表攤開:蝦場 A 排甲>乙>丙,B 排乙>甲>丙,C 排甲>乙>丙;加工廠甲排 B>A>C,乙排 A>B>C,丙排 A>B>C。兩邊都排得出完整名次
- 第一輪,三家同時開口:A 提甲、B 提乙、C 也提甲。甲手上握著 A,而甲自己的名次是 B>A>C——C 排最後,當場退回。退件來得早
- 第二輪,只有 C 還在動:C 轉頭提乙。乙握著 B,而乙的名次是 A>B>C——C 又排最後,再退一次。兩間好廠都把它擺末位
- 第三輪,落到丙:丙手上空著,先接下。沒有人再開口,三條線定住:A 配甲、B 配乙、C 配丙。五次提親跑完
- 收工前驗一次穩不穩:把六組沒配在一起的組合逐一問過——A 想不想換乙、乙想不想換 A……六組裡沒有一組是兩邊都想換。一分鐘的笨功夫
- 換加工廠先開口,重跑一次:終局變成甲配 B、乙配 A、丙配 C。甲、乙各升到第一志願,A、B 各掉到第二志願,C 和丙原地不動。同一組名次,兩個都合格
三輪跑完,紙上的答案很漂亮:找不到任何一對想私奔。可是蝦場 C 拿到的是它排第三的那間廠,加工廠丙拿到的也是它排第三的那家蝦場——這兩家被演算法判定為「穩定」,心裡卻一點也不穩。契作真正會出事的地方就在這裡:C 明年很可能不再寄意向書,丙也早就在外面打聽別人。演算法保證的是「沒有一對能私下更好」,它保證不了「每一對都想長久」。所以跑完之後還有一步是機器不做的——去看那兩家停在第三志願的,值不值得你多給一點什麼把人留下來。以上為說明結構用的示意情境,僅供理解框架之用。文中數字僅供理解框架之用,不構成任何投資建議。
這套演算法什麼時候會騙你
- 「穩定」是個否定詞,不等於「好」。它只說沒有一對能私下更好,對「大家整體滿不滿意」一個字都沒說。這一局裡 C 和丙都停在第三志願,而這個結果完全合格。真實的契作季裡,被判為穩定的那條線,可能只是雙方都沒有更好的選擇——把它讀成「配得好」,明年就會被解約打臉。
- 接受方有謊報的空間,提親方沒有。這是這套演算法最常被忽略的一面。先開口的那一邊,照實排序永遠不吃虧;被追求的那一邊,把某些對象假裝排到很後面,有機會逼出更好的結果。所以當你發現對方的順序表年年在變、而且變得剛剛好,那多半不是偏好變了,是策略變了。
- 現實裡沒有主持人,也沒有整齊的三輪。課本版本假設有人喊開始、大家同時交出名次表、輪次結束才動作。契作季不長這樣——有人五月就簽了、有人拖到七月,還有人一邊談一邊改條件。沒有主持人的時候,這套演算法退化成一句很樸素的建議:先開口、被拒了立刻往下一家走、拿到的先握著別鬆手。
誰先開口,決定了誰比較不甘心
穩定配對交出來的,是一句否定句。
它說:找不到任何一對,是互相偏好卻沒配在一起。這句話很硬,也很窄——它管的是「會不會有人跳船」,管不到「跳不了船的人願不願意划」。蝦場 C 沒有私奔的誘因,因為兩間好廠都不要它;丙也一樣。這叫穩定,可是《痛點》要接著問的是:那個停在第三志願的人,痛在哪裡?他明年還會不會寄意向書?這張圖畫得出誰配給誰、畫得出配對線在第幾輪不再動,畫不出簽完約之後那半年裡,誰在半夜盤算著換人。P.A.I.N. 的四格裡,這套演算法只答得出「誰跟誰」,答不出「誰在痛、痛到會不會走」。所以下一季契作,把第一個決定留給一件小事:誰先寄出那封意向書。先開口的那一邊不會更差——這一局裡,A 和 B 各因此往上升了一格。
關於穩定配對,常見問題
穩定配對的「穩定」到底在保證什麼?我怎麼自己驗?
保證只有一句:找不到任何一對,是彼此都更想要對方、卻沒配在一起。驗法是笨功夫——把每一組「沒配在一起」的組合抓出來,問兩個問題:他更想要她嗎?她更想要他嗎?兩個都成立,這一對就會私奔,這組配對不穩定;只要每一組都至少有一方否定,就穩定。三對三只要檢查六組,一分鐘的事。家數變大時,這一步反而比跑演算法更值得花時間,因為它是唯一能拿去說服人的證據。
先提親的那一邊,是不是一定比較有利?
不能講成「一定比較好」。準確的講法是:先開口的那一邊不會更差。這一局換成加工廠先提,甲拿到第一志願、乙也拿到第一志願,兩家各升一格;可是丙前後都是第三志願,蝦場 C 也一樣兩邊都停在第三——先開口對它們一點幫助都沒有。誰真的升格,取決於名次表本身長什麼樣;先開口只保證你不會因為晚開口而掉下去。所以爭「誰先提」有意義,但別把它當成勝負的全部。
家數變多,這套還跑得完嗎?
跑得完,而且很快。提親次數的上限是家數的平方:三對三最多九次,我們這一局只用了五次;三十對三十的上限是九百次,用手算都算得完,何況電腦。真正的瓶頸長在別的地方——那兩張名次表。要三十家蝦場對三十間廠排出完整順序,光是把資料問齊就會拖垮整件事。多數配對專案卡住的那一關,都在資料收集這一段。
台灣哪裡看得到這套東西?
只要是「兩邊都排志願、名額一對一」的場合,數學骨架就是同一副:大學的分發與繁星、住院醫師的配對、公費生的分派,都是這一族。但每一套制度的實作規則都不一樣——誰算提親方、能不能同時保留多個名額、有沒有加權與保障名額,差一條規則結果就不同。所以想知道自己那一年怎麼跑,去看主管機關當年度的簡章,別拿課本版本的三輪推演直接套上去。
兩側怎麼互相吸引,是雙邊市場的題目;人都到齊之後怎麼配,才輪到這張圖。至於位置該擺在哪一段路上,答案在霍特林線性城市。
喜歡這篇文章嗎?
每週幫你拆二本好書,把判斷力、好書金句、好問題,直送你的信箱。
不適合你可隨時退訂 · 每週兩封,陪你把書讀進生活。
送出即表示同意我們依隱私權政策使用你的 email。