一、工具人
前陣子看到有人在討論徵友,讓我想起大學時的學妹,小香,清新脫俗,香氣四溢,每天排隊給她帶三餐的工具男多到「罄竹難書」,而我也是其一。我相信有試有機會,畢竟我爸開保時捷,我媽開法拉利,我開玩笑...
事實上,我家境平凡,還只是個騎車的二輪仔,到底如何和我的
賽道王者 一起擄獲學妹芳心,是我每天睡前的唯一思考。
示意圖 feat. SYM Jet SR (來源: Instagram @sym.taiwan)
有天早上,夢還沒清醒,手機突然響起,竟然是小香,我不禁驚呼,
「มันหอมมาก tuscany ที่รักของฉัน!」
奇怪怎麼說起了泰文?明明沒學過,連什麼意思都不知道,大概是最近看太多泰國片的關係。算了不重要,趕緊接起手機...
怎麼了呀? 「幫我買早餐好嗎」
想吃什麼呢? 「都可啊」
蛋餅好嗎? 「不想耶」
煎餃呢? 「有點油耶」
仙女紅茶? 「可以唷」
顧不得無厘頭又反覆的對話,也顧不得小香找上我的原因,身為工具人,使命必達才是最重要的,這樣才會有下次,對吧。總之,從那次起,小香越來越常找我幫忙,我們也越來越熟。後來才知道,原來我是少數有耐心能包容她優柔寡斷、反覆無常個性的人。
二、奇怪的要求
數個月後,我們的關係進展到偶爾會一起逛街、用餐、聊心事,雖然日子總是簡單過,但這已令我十足感恩,畢竟人貴自知,主動權從不在我這,因此我也早已習慣被動等待的日子。
總算等到。
某次週五晚上,小香打來找我討論隔天行程,
「JN、JN,明天週末想跟你做好多事喔,畫畫、爬山、游泳、購物、電影、聽歌、唱歌、看書、用餐,我全都要,幫我排一下行程吧~」 電話那頭的她,一如往常,無厘頭的講著。
「也太多了吧,平凡一點不好嗎」 我好氣又好笑地埋怨。
霎時電話那頭傳來一句,
「平凡,讓人厭煩。」
正經的口氣讓我愣了一下,隨即小香又恢復平常傻呼呼的樣子,
「哈哈,開玩笑的,你不是最會開玩笑。」
小香緊接著又說,
「認真聽喔,剛剛講的那些行程,請記得,不管間隔幾個行程都可,爬山要排在用餐後,游泳要排在用餐、聽歌、購物、畫畫後,購物要排在爬山、電影、看書後,電影要排在看書後,聽歌要排在畫畫後,唱歌要排在看書、聽歌後,看書也要排在聽歌後。就這樣,明天見囉!」
哇,這...,我腦袋彷彿突然打結,
「好...好啊,我幫妳規劃一下,明...明天見。」
高興的心情不過三秒,隨之而來的是我緊皺的眉頭,掛上電話,腦海重複默念,
「這個之前要做那個,那個之前還要做那個,這個之前...那個之前...」
诶!?
難道這是...
三、解題
我在紙上寫下小香的要求,並整理成條列式清單:
- 用餐 之前: (無)
- 畫畫 之前: (無)
- 爬山 之前: 用餐
- 游泳 之前: 用餐、聽歌、購物、畫畫
- 購物 之前: 爬山、電影、看書
- 電影 之前: 看書
- 聽歌 之前: 畫畫
- 唱歌 之前: 看書、聽歌
- 看書 之前: 聽歌
然後將各行程按照先後順序,逐一畫成流程圖。例如:
爬山之前要完成用餐,
游泳之前要完成用餐、聽歌、購物、畫畫,
以此類推,把清單上的行程都畫完。
果然沒錯!這就是計算機科學中典型的
有向無環圖 (DAG)。
幫小香規劃行程,可以轉化為:「為 DAG 圖上的每個行程,找出一個合理的執行順序,使任一行程都能符合箭頭所規定的先後關係。」 而這個符合先後關係的順序就稱作
拓撲排序 (Topological Sort)。
找出拓樸排序常用的
演算法 是
深度優先搜尋,它主要的精神是:「照著圖上的箭頭走到最深處,將
最深處的行程排在
最後做。」
以下演示一遍,如何使用深度優先搜尋找出拓樸排序。
1. 隨意找個行程起點,以用餐為例,順著箭頭走到最深處是游泳,所以把游泳排在行程表中的最後一個空位,行程九,並將游泳改成淡黃色,才不會忘記已經排過。
2. 繼續以用餐為起點 (直到能走的路線都走完),順著箭頭走到最深處是購物,所以把購物排在行程表中最後一個空位,行程八,並將購物改成淡黃色,才不會忘記已經排過。
3. 再來最深處是爬山,將爬山排在行程七,並改為淡黃色。
4. 以用餐為起點的路線都走過了,只剩用餐本身,因此最深處即為用餐,所以就將用餐排在行程表中最後一個空位,行程六,並改為淡黃色。
5. 從還未排進行程表中的行程(淺藍色),選一個當新的起點,這邊以畫畫為例,順著箭頭走到最深處是電影,所以把電影排在行程表中的最後一個空位,行程五,並將電影改成淡黃色。
6. 再來最深處是唱歌,排在行程四,並改成淡黃色。
7. 再來最深處是看書,排在行程三,並改成淡黃色。
8. 再來最深處是聽歌,排在行程二,並改成淡黃色。
9. 最後是畫畫,排在行程一,並改成淡黃色。
大功告成,全部都排完了。
約會時只要依序從 行程一 執行到 行程九,就能完成小香學妹全部的要求了!
四、約會之後
游完泳,看著小香心滿意足的表情,我知道這題得分了。一起走回宿舍的路上,小香看著我說,「謝謝你,我下次還要。」
「不客氣,我也還想要。」 我亂回一通。
心跳還來不及加速,小香就迫不及待的問,
「下次我們來一日北高吧,101到龍虎塔,我騎車載你!」
「可是妳陽光吉祥號的油耗...」 我不太放心。
「沒關係,我知道妳會幫忙規劃的。」 小香興致勃勃的說著。
我心想,不知道這次又是什麼題目,雖然沒什麼把握得分,但我現在只想把握當下。輕靠著小香的肩慢慢散步,我靜靜地享受週末的最後時光。而腦中又響起那句正經八百的聲音:
「平凡,讓人厭煩。」
下一集,
「通往妳心底的最短路徑」
待續..