陳全忠
2013年1月13日,小來和小谷將籌劃已久的一項地鐵極客行動付諸實踐:買一張兩元錢的地鐵通票,不出站,計劃17個小時內(nèi)通過北京所有的地鐵站點(除機場線)。他們于當(dāng)天清晨5點15分出發(fā),晚上10點40分結(jié)束,歷經(jīng)319站次,560公里,用17個小時25分鐘完成了這次挑戰(zhàn),比數(shù)學(xué)建模預(yù)計的時間僅僅多了25分鐘。
數(shù)學(xué)建模畫出路線
小來是中科院的在讀博士生,專攻計算機軟件。有一次,小來在微博上看到一道好玩的面試題,要求在盡可能短的時間內(nèi)走一遍北京的地鐵站,并且只在地鐵內(nèi)換乘,不出站。這個題目也引起了很多計算機算法控迷們的討論。
小來覺得這個題目很有意思。2012年年底,他找了幾個朋友,在計算機編程的圈子里搞了一個“算法控”馬拉松程序設(shè)計競賽,以微博上的那道面試題為藍本,提供相鄰站之間的行駛時間,以及各換乘站之間的換乘時間,要求結(jié)果給出一條能經(jīng)過所有站點的最優(yōu)線路。
為了讓更多的人參與,小來和朋友們安排了兩個組,一個是提交算法代碼的,另一個是手工安排路線。結(jié)果參與的高手還真不少。算法組冠軍提交的代碼是歐拉圖(通過無向圖或有向圖中所有邊,一次且僅一次行遍圖中所有頂點的通路稱為歐拉通路(回路),具有歐拉回路的圖稱為歐拉圖)的模型,把歐拉圖遍歷一遍,在某個路口如有多重走法,按照不換乘,換乘時間少的走法的順序選擇。由于算法有一定的隨機性,把它循環(huán)運行n遍后,再選擇用時最短的輸出。
根據(jù)這個模型,小來對照地鐵線路圖估算了一下,覺得可以在一天之內(nèi)走完北京全部地鐵站點,于是更堅定了他親身實踐的信心:“以前坐地鐵只是為了抵達目的地,這次換種方式坐地鐵,本身就很好玩。更重要的是,通過實地體驗,還可以衡量出算法模型的精準(zhǔn)度,給比賽留一個完美的紀(jì)念?!?/p>
小來的同學(xué)小谷對這個行動也非常感興趣,于是加入了進來。他們最終規(guī)劃的線路是直接使用比賽冠軍的代碼計算出來的?!笆遣皇亲顑?yōu)我也不確定,但是至少看起來重復(fù)路線特別少,應(yīng)該很接近最優(yōu)路線。在預(yù)算2元的限制下,我們的路線將經(jīng)過北京地鐵除機場線外(票價25元,所以不作考慮)的所有站點?!?/p>
出發(fā)前,小來和小谷又花了好幾天,對計劃時間表和路線圖進行了反復(fù)的核算,這可是保證這次行動成功的關(guān)鍵。他們先在網(wǎng)上查到之前地鐵粉絲做出的換乘時間的統(tǒng)計,然后打算按地鐵發(fā)車班次的先后順序進行,從5時15分坐上房山線開始,每條線路坐幾站,在哪里換乘,行車換乘各用多久時間,都精確到了分鐘。比如9點12分,乘坐10號線從西局出發(fā)朝六里橋方向坐到公主墳;10時42分,乘坐1號線從蘋果園出發(fā)向古城方向坐到四惠東;17點30分,乘坐8號線從回龍觀東大街出發(fā)朝霍營方向坐到鼓樓大街,并計劃在21時55分到達亦莊線終點站次渠,趕上末班車結(jié)束挑戰(zhàn),整一圈走下來接近17個小時,將總共經(jīng)過319站次,換乘19次,其中重復(fù)經(jīng)過的站點有99個。
但精確到分鐘還不夠,就在出發(fā)前兩天,他們發(fā)現(xiàn)了一個很大的失誤?!霸诠浪懔熊囆旭倳r間時,我們是通過首末班車來估計的。比如一號線首班車復(fù)興門5:15,西單5:17,這兩站之間的行駛時間就是2分鐘。但是看末班車時間表時發(fā)現(xiàn)復(fù)興門23:24,西單23:27,行駛時間要3分鐘。我和小谷在分別核算的時候發(fā)現(xiàn)按首班車時刻表和按末班車時刻表算出來的總時間不一致,最多相差將近一小時,再深入分析才發(fā)現(xiàn)是因為忽略了時刻表分鐘后的秒。發(fā)現(xiàn)這個問題后,我們決定全部使用末班車的時間表,這樣一來估算就更準(zhǔn)確了?!?/p>
僅僅多了25分鐘
2013年1月12日晚,小來和小谷在房山線蘇莊站附近的一個旅館提前安頓了下來。1月13日,天還沒亮,他們就收拾好背包,帶著手機、資料出發(fā)了。
5時15分,挑戰(zhàn)開始了。要完成理論上17個小時走完全程的目標(biāo),還是相當(dāng)有難度的。由于每站留給他們的時間都很緊迫,小來和小谷既要拿著路線圖和時間表保證不出錯,還要拍照發(fā)微博,喝點水上個廁所什么的,為了盡可能節(jié)省時間,一路上,他們都是以“快步走”的速度換乘。除了記錄下各個地鐵站的特色文化,他們還忠實地記錄下每個地鐵站換乘花費的時間,希望為其他的乘客提供參考?!?號線呼家樓站,換乘10號線用時1分20秒;5號線宋家莊站,換乘亦莊線需1分24秒;10號線公主墳站,換乘1號線需要2分10秒?!?/p>
八九點后,人流漸漸多了起來,兩人的步伐也加快了。正當(dāng)小來和小谷慶幸挑戰(zhàn)還算順利的時候,突然出了狀況,6號線臨時停車5分鐘。9點多時,又等來了10號線的區(qū)間車。10號線在開通后一直采用區(qū)間車和全線車并存的運營模式,區(qū)間車的終點站是車道溝站,兩人只好在車道溝下車等候下一班車,這樣就相當(dāng)于多等了一次車?!盀榱藢⑦@些計劃外多花的時間補回來,我們不得不繃緊神經(jīng),在換乘時停止拍照發(fā)微博,也停止了交談,各自在車廂內(nèi)整理、記錄好站點的資料,下車就加快腳步趕路。就連上洗手間,也是在等車和換乘間隙,分秒必爭地到車站的衛(wèi)生間完成的?!?/p>
上午,他們總共換乘了8條地鐵線。緊湊的行程讓小來和小谷忘了時間,直到肚子咕咕叫起來。下午1點半,他們利用在天宮院等車的時間吃了巧克力和面包,算是中餐了。
直到21時55分順利到達終點站次渠,兩人這才松了口氣。簡單估算一下,最終完成時間大約比預(yù)計時間多了半小時?!俺ヒ驗檐囕v臨時停車、坐了10號線區(qū)間車、臨時更換移動電源多花費的15分鐘,我們這次所用時間和預(yù)測模型的誤差約為10分鐘,還是比較精確的。
想要成功挑戰(zhàn)地鐵,需要具備一定的數(shù)學(xué)功底和計算機編程、計算能力,如果你同樣也是地鐵迷,那也不妨一試哦!小來建議:“如果以后有人還想挑戰(zhàn)的話,建議盡量避免上下班高峰、預(yù)留就餐和上洗手間時間、帶足移動電源?!?/p>
責(zé)任編輯:曹曉晨
Tips:地鐵挑戰(zhàn)
地鐵挑戰(zhàn)是從國外興起的一項運動,最早始于紐約地鐵,甚至為此紐約還成立了一個名為Amateur New York Subway Riding Committee的部門,專門規(guī)范地鐵挑戰(zhàn)。他們規(guī)定的挑戰(zhàn)有三種:A.所有區(qū)間、所有站點都乘遍;B.所有站點都去遍;C.所有站點都經(jīng)過(包括不停車的經(jīng)過)。吉尼斯紀(jì)錄對挑戰(zhàn)紐約地鐵也有定義,他們在規(guī)則B的基礎(chǔ)上,允許挑戰(zhàn)者乘坐公共地面交通(不包括的士)擺渡。按這套規(guī)則看來,小來和同學(xué)小谷挑戰(zhàn)的是B項。
在國內(nèi)也有類似的挑戰(zhàn)。對上海地鐵的挑戰(zhàn),早在2009年就已經(jīng)有了。上海八號線南段開通后,有兩位學(xué)生在一天內(nèi)乘完了所有區(qū)間,花費了13小時9分18秒。2011年有挑戰(zhàn)者耗時18小時26分11秒成功乘遍包括新開通的7號線北延伸段在內(nèi)的上海地鐵全網(wǎng)所有區(qū)間、所有車站。由于上海地鐵郊區(qū)線特別多,挑戰(zhàn)者都使用了公交車或者的士作為中間過渡。
就在小來挑戰(zhàn)北京的地鐵的第二天,華南理工大學(xué)電子商務(wù)大四學(xué)生陸松萬購買了“廣州地鐵一日票”,從大學(xué)城南進站,歷經(jīng)204個站點、335公里,總用時12小時13分,完成了“一日票走遍羊角”的挑戰(zhàn)計劃。網(wǎng)友笑笑卡樂貓也預(yù)告即將嘗試坐遍廣州地鐵的所有區(qū)間和站。