優化小插曲 下篇

contents

  1. 1. 2016・冬・續
  2. 2. 學校課業
    1. 2.1. 計算機圖學
    2. 2.2. 演算法設計與分析
      1. 2.2.1. 優化心情一覽
  3. 3. 實驗室雜談
    1. 3.1. 教授語錄
    2. 3.2. 白色聖誕前奏
    3. 3.3. 跨年尾牙

2016・冬・續

學校課業

畢業門檻共計二十四學分,每堂課原則上都是三學分,意即要修八堂課,其中一部分可以選修外系碩班課,而我卻傻傻地全選資工碩班的課。大部分的人都是每學期修三到四門課,最後一學期專心做論文,前提指導教授派發的助教工作夠輕鬆,而不是每週都來亂的情況。

而這學期一開始有打算修英文課,開給碩班的英文課不外乎有很多系來修,對於我這種渣渣而言還稍微困難了些,但沒想到第一堂課的互動,在互動過程中回答問題時,讓我的人生增添了 黑歷史 ,隨後的分組成了邊緣人,於是我,退了。

計算機圖學

這裡只描述過程中的心情,實作細節有機會再發文

之前在大學時,課程中 GameMaker 這套軟體上弄遊戲就快崩潰,靠著小夥伴編寫劇本,自己兜弄 UI 設計與美工,討論如何做出適當的效果,反覆地測試運行流程,那時用了一整個學期,請參考 Github,那門課可說是我唯三拿到低於九十分的系上課程 (其中兩個是專題,也許是我嗆老師不懂設計、太過古板)。

第二個作業使用 Unity3D 開發,拉個 GUI 弄得昏天暗地。在物理引擎設定上,質量大小、推力反應、空氣阻力、碰撞動量 … 等,這些估計數據的感覺全還給老師,瞬間覺得自己是個蠢貨,怎麼調都不對。搞了幾天都弄不定,還好有小夥伴古古教我怎麼用,不然還真的會崩潰一陣子。

《田中君總是如此慵懶》

期末專案跟小夥伴古古一組,著手渲染技術之一的 Radiosity Github,用各式優化技巧和 WebGL、OpenGL 呈現作品,有機會我們再來談談大量的優化技術吧,將老師給的程序利用編譯器優化到極致!隨後再平行它!

演算法設計與分析

雖然沒修這門課,看著學弟去修這門課的作業,又知道助教是之前修平行的古耕竹同學,追求效能極限的對手!有對手就會成長,永不滿足!

其中一個作業是計算 0/1 背包的最佳解,課程中使用 branch-and-bound 算法,可想而知這種搜索法還是會還是會退化的。不管哪種寫法都是 NP-Complete,因此只能做常數優化,如何加速背包問題請參考《淺談背包問題 (0/1 Knapsack Problem) 優化那些事》那篇。花了好幾天加速他們的作業,用優化後的 DP 計算就能完爆他們早期的剪枝版本,在數據範圍小的時候,剪枝版本仍然比較好。

為了加速應用,使用了 DP 達到理想最佳解,為了加速這個 DP 計算,額外使用了 DP 優化計算,又為了優化 … 不斷地遞迴下去,最後達到貪心收斂?

「但我的愛和努力都還不成熟」- 斯特拉的魔法

還有另一個 TSP 銷售員旅遊問題的實作優化,有空我再來跟大家說說吧。

優化心情一覽

摸遍上百人的 Code,還原所有學過的知識,偷學技術並變成自己的招式,Gate of Codeylon!

「Gate of Bootylon」

連續幾週都在高喊加速!你怎麼改,我就怎麼追。當成功加速時,就擺上切嗣大叔

「固有時制御 二倍數 Time Alter Double Accel」- Fate/Zero

隔日發現第一名被奪走時,高喊奪回誓言「妹子被暴搜搶走!不行,我一定要攻下她。」

斯特拉的魔法

反反覆覆地,每天心情有如三溫暖般地洗禮,時時刻刻都無法鬆懈,我們越來越逼近真理,內心相當雀躍。古助教看著我與學弟們的競爭,也加入討論,感覺相當地不錯。

M <<「我在追求真理」
K >>「好好栽培學弟,學弟就是你的真理」
M <<「?」
K >>「真理還分性別嗎?」
M <<「…」

學弟們最後加速剪枝到優化後的 DP 無法追到。深感可惜,在沒有滿足鴿籠原理的情況下,我找不太到卡暴搜的測資。相反地,若很容易做到鴿籠原理,莫名其妙可以快個十幾倍。他們加速剪枝,我利用減少計算量加速,彼此都獲得更進一步的討論,有人討論果然可以走得更遠更快。

「想要走得更遠」- 吹響吧!上低音號

最後這些題目被我們放在批改娘系統上,測資有卡實作邊界處理不好程序。雖然我不是最強,但在這第一學府就要成為最強,任何亂來的解法見一個斬一個,動用腦中所有的智慧生出最強的測資!啊,好像把別門課的作業弄壞掉了。當然作業只求計算正確,速度不要太離譜,這一點我們還是無法違背課程需求,要求每位同學與我們一起加速和探討似乎都錯了什麼。

實驗室雜談

教授語錄

「實作細節一點也不重要,根本沒人想聽」
「別太相信論文」
「理論都正確,但你做的有什麼用?」

紀錄心中的困惑

這一年,我越來越不能理解這奇怪的要求。當不想講細節的時候,又被問要怎麼做,細節大多都沒有乾淨的理論描述,完全依賴在計算機架構上,不同的架構又是另一套參數,講起來沒完沒了。

當被質疑報告的論文正確性時,偏偏那一篇還是 tier-1 conference (曾經最高的國際會議) 來的論文,到底是信還是不信呢?那我們被要求投那個國際會議時,又要秉持什麼樣的態度才合適。從研究論文開始,我也明白很多論文的部分成果有瑕疵。無妨地,我們可以理論推測那是很簡單的,但礙於篇幅有限。

當想做出一篇很有用的論文時,我覺得這困難到想休學不讀,根本沒有機會遇到有用的且可以寫出論文的機緣。所以當時跟老師談論到想休學,老師卻說論文隨便寫就發一篇,這樣隨便發一篇真的有用嗎?這麼說起來,我的人生好沒用呢。

「不是都怪你太弱嗎」- 3 月的獅子

白色聖誕前奏

公司的大哥大姐打算在聖誕節辦活動,要來個交換禮物又是卡拉歌唱比賽,櫃檯姊姊和其他 AE 姊姊談論這事情時,恰好就在旁邊聽著。

A >>「打算辦交換禮物活動,妳覺得如何」
B >>「我覺得交換禮物不錯呀」
Morris 思考中
A >>「妳看看 Morris 好像不太行耶,主管 X 是打算換成卡拉歌唱比賽」
A >>「他們是不是不太願意花時間去挑禮物,他們工程師都這樣」
Morris 思考中
B >>「Morris 好像撐不住了」
A >>「比賽這種就不是每個人都能參與,有輸有贏的,好好的聖誕節為什麼要這樣?」

咱只是在思考這些活動的複雜度而已,行不行也不是我能決定的,喜歡估算的心錯了嗎?對於我來說負擔太大,不僅不會唱歌,連買禮物的品味都成問題。最後耗費一個週末只思考禮物要買些什麼。

「是從什麼時候開始的呢 會感覺聖誕好痛苦」- 3 月的獅子

這學期在學校大大小小的事物都跟古同學有關,學弟常常要跟我描述是古學長 (演算法設計助教) 還是古學姊 (物聯網助教和計算機圖學一起修課),同時他們兩位又有在我當平行助教的時候一起修平行課,稱呼方法搞得我好混亂,但跟這群有趣的傢伙同一屆不容易也很幸運。

跟學弟們討論到底要買什麼禮物作為交換,並抱怨著自己聖誕節魯到不行。此時,學弟突然說「你不是在追古學姊嗎?」當下的我愣了一下,學弟馬上補一刀「難道是追古學長嗎?」等等,這聽起來越來越不對勁,看來這兒已經沒我說話的餘地,學弟們的這套想法讓我不知所措。

「嗯 我會努力的」- 斯特拉的魔法

週末買公司要求的禮物時,學弟學長們再三交代「不買給『她』嗎」?心想「她」到底是誰,在旁人的催促下,內心相當煎熬,我不懂的事情太多,對於沒有錯過的問題,完全不知如何下手解決,行動與常識近乎零,類似當機地直接跳過無法執行的部分。於是在聖誕的前一週,跑了數間店買了數個禮物準備。

不管送給誰,送不出去就在聖誕節自己拆,自己買的禮物自己拆,做好邊緣人的心理建設。同時,週末也順便補實驗室另一個女生生日蛋糕,請學弟騎車帶我去買蛋糕,畢竟去年她們替我慶生,這回有學弟們一起在實驗室,買蛋糕也不尷尬,這週末真是忙碌呀。

從此之後,學弟問任何話題,一提到「學姊」總要特別小心地回答,他們總是在刺探我的心意,無意也變有意。在一旁的實驗室「學姊」看著我慌忙地回答與再三確認不時在一旁偷笑。「也許,他們把你的潛意思說出來了。」在這陣子,我想我回答什麼都不是。

隨著聖誕逼近,學長學弟一直在催促我何時要送「很多人週一就開始送了,你怎麼還不送」我只能再三地反問「到底是想要我送給誰啦」想著適合自己品味的禮物,若要與眾不同,肯定是朝著送記憶卡內附程序,並留言到「這是我加速三倍快的程序,拜託了,請回禮追我」的那種。

「要我故意輸掉嗎?」- 3 月的獅子

最後在聖誕前幾天,也就去公司上班的前一天把禮物送出去,這下你們就不會再撈叨我了吧?至於在聖誕節前一日,因為被要求上台唱中文歌而內心受創好幾天,有必要把聖誕節搞得如此繁複嗎?

跨年尾牙

實驗室尾牙總會問跨年打算怎麼過

M「反正沒人約,應該在實驗室過吧!」
A「學長,不用擔心,我們都在實驗室」
B「實驗室由我們守護,你放膽出去約吧,記得遊戲角色開著幫我放輪」
聽起來有點感動又有點頹廢是怎麼回事 …
M「約誰?」
B「當然是學姊」
… … …
M「你們認真的嗎?」
B「當然」
一群在旁邊偷笑
實驗室學姊對 M 說「你是認真的嗎?」
… …. … …. .. …
M「嗯,失敗了,跟你們過吧」

「明天早上能陪我一下嗎」- 吹響吧!上低音號


2016・冬・終