創作內容

59 GP

【閒聊】讓複雜問題變簡單的方法 ─ 「分而治之」

作者:JiJIkopo│2014-02-22 20:46:38│巴幣:210│人氣:4191



分而治之


前言:

在日常生活中,我們時常碰到許多問題。在學校時,大部分的問題在瞭解原理的情況下,再加上一些練習便可迎刃而解,選擇題和填充題容易、證明題和申論題稍難,但掌握了絕竅和專業知識的話,難度也不高,是有規律、有接近正確解的問題。然而,現實生活中的問題並不僅此而已,有更多面向,問題也趨近於複雜化,我們很難用單一方法去解決。

這裡舉一個例子,假設我今天為一個籃球初學者,我想要學會「帶球上籃」這件事。粗淺來切割問題,就是要學會「運球流暢」和「拋投」技巧吧?同時達到「運球流暢」、「拋投」兩件事對一個初學者來說,難度可能太高,那先針對「運球流暢」來下功夫,「運球流暢」這件事可分為「原地運球」、「跑動運球」和「跑動時護球」。而其中仍可以再細分下去,這其中的精神即為─Divide and conquer.

啊,標題的名字是我直接拿成語來延伸的,原本的意思請參照wikipediaMBA

內文

Divide and conquer為解決問題的基礎。將一個問題(problem)分成許多子問題(subproblem),其過程像細胞分裂,特別是減數分裂(meiosis),將一個較大的問題,切割成許多相關的子問題,若問題仍太複雜,就繼續切割成更小的問題。分割問題、予以各個擊破,再合併為原來問題的解,這就是Divide and conquer的精神。



而著重的點就在於要如何切割問題,如何將問題切得簡單,並且容易解決,這得依靠自己的經驗和接受過的訓練,在處理繁複的問題時,若有幸能發現問題是彼此相關連,則可以運用到recurrence來創造出一套公式,稱為遞迴公式( recurrence formula )或遞迴關係( recurrence relation ) 。

Example:
輾轉相除法(Euclidean algorithm)

由於兩數必為最大公因數(greatest common divisor)的倍數,故其差值也必定是GCD的整數倍所構成,不論兩數如何輾轉相減或輾轉得到餘數,那餘數皆為GCD的倍數。在觀察步驟後發現這過程不僅切個成較小的數字,且不斷地重覆同一個動作。



如此一來,不僅能有系統的解決,問題也能變簡單很多。不過許多問題的recurrence 經常是難以發現的,有句話說「To iterate is human, to recurse is divine.」通常得靠經年累月的經驗,以及自己的智慧和靈感才有辦法達成。其他的例子還有傅利葉分析和十分逼近法等,不過這裡不著墨於數學和直覺培養的介紹,所以就直接跳過去了,改天有興趣再來敲鍵盤吧(喂

簡單問題的應用:

1.我想要認識他人
將問題分為「我想認識他人」、「他人想認識的我」,「我想認識他人」分為「他人的興趣」、「他人的習慣」。「他人想認識的我」分為「我的優勢」、「我待改善的缺點」。「他人的興趣」分為「廣而淺的範圍」、「窄而深的範圍」,「他人的習慣」分為「常見的習慣」、「特殊的習慣」,「我的優勢」分為「易展現和易分享」、「不易展現卻易分享」、「易展現但不易分享」、「不易展現且不易分享」,「我待改善的缺點」分為「顯而易見且討厭」、「顯而易見但無妨」、「隱性且討厭」、「隱性但無妨」...

再細分下去的話,遲早能得到更細部的結論,例如簡單的微笑和招呼,主動的詢問和聊天,積極地處理共同問題。雖然這過程因人而異,但這樣簡單的分析下,不僅能簡單地瞭解自己,處理起來也會乾淨俐落。



2.我想要學業進步
可分為「擅長的學科」、「不擅長的學科」,「擅長的學科」就不談了,這不是進步的主因,只可能是附加的的動力(例:心情隨著考高分而變得更好,連帶其他科的信心也提升。)「不擅長的學科」可分為解題的部分,「不擅長題型」、「不擅長敘述」、「不擅長推導」;讀書的部分,「不擅長定義」、「不擅長記憶」、「不擅長閱讀」、「不擅長時間分配」;心態的部分,「考試緊張」等。

「不擅長題型」和「不擅長敘述」,通常就是對題型不熟悉,就多練習吧,在有時間壓力的模擬下,考古題或模擬考多作幾次。另外,敘述問題通常是無法抓到題目的重點,在解題時也必須著重於抓重點的部分。

「不擅長推導」要練習的就是抓題目字裡行間的關鍵句,數理科就回歸定義來思考;文科則利用題目來反推;社會科就利用有印象的年代和史實來找關聯,一樣可藉由練習來加強。



「不擅長定義」和「不擅長記憶」就牽扯到記憶和理解的問題,盡量將生冷的文字轉換成圖型、故事、勤做筆記或是練習自己解釋一遍來加深印象,都是很不錯的記憶方法。主動學習會比被動學習來得更有效率。

「不擅長閱讀」、「不擅長時間分配」這就是習慣問題,不擅長閱讀,那可藉由聽CD、朗誦或藉由多向師長同學發問,來提升理解和記憶,此外,找尋與有興趣的事物的關聯來記憶,也是一大利多。時間分配的干擾因素很多,擬訂一個嚴謹但有彈性的計畫表,盡量維持正常作息,其中的損益評估,自己滿意即可。

如果都把上述弱點克服大部分了,那
「考試緊張」就是多餘項了。有時解決單一問題,也會一併解決其他問題,或是一口氣將整個問題給搞定。雖然是件幸運的結果,不過不是什麼神奇的事情,因為原本就是彼此關聯的子問題。



結論:

這話題是趁今年的春節時,在Carnegie Mellon參觀,我和其中一名教授在對話中的啟發,那時我們談到divide and conquer,今天剛好想到類似的東西,就借部分觀念來使用了。我們時常忽略看起來自然而然的細節,或錯將好運當成慣例,造成在解決問題時漏洞百出,自然以上的想法並不是最佳解,更不是萬靈丹,只能說是一種概念。

「複雜的問題用複雜的方法解決,我們稱為研究;複雜的問題用簡單的方法解決,我們稱為創意。」雖然這樣的定義不嚴謹,不過制式的想法和處理過程,一定不是創意的手法。多接觸不同領域,不同性格的人,能使自己的思考活化。雖然是很簡單的想法,不過也能將問題簡單化,在解決特別棘手的問題時,也別將自己逼得太緊,試著切割問題。今天比昨天做得好一些,明天比今天更好一些,這樣踏踏實實地活著,才是充實的生活。




引用網址:https://home.gamer.com.tw/TrackBack.php?sn=2353870
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:jijikopo

留言共 20 篇留言

紅燒小牛肉>:O
感覺好複雜的感覺

02-22 20:51

JiJIkopo
不會啦~其實是很簡單的概念呢XD02-23 18:26
貝吉原
雖然不明白但好像很厲害的樣子

02-22 20:56

JiJIkopo
其實還蠻初階的XD02-23 18:29
咲死朕了
寫程式時很常用到呢

02-22 21:01

JiJIkopo
一種algorithm,是coding的一部分呢~02-23 18:28
唯我獨尊
那麼將簡單的問題用複雜的方法解決叫什麼? ((誤

02-22 21:26

JiJIkopo
嗯..應該叫蠢方法吧XD02-23 18:30
刀劍冷眼看莫名
不明覺厲,我都靠第六感

02-22 21:26

JiJIkopo
其實只是將平常的習慣寫成文字而已><02-23 18:31
香菇™
哈真的讓我回憶起演算法+1 XDD
看似簡單的道理,不過人們往往會被最初的問題給難倒
但是仔細去思考,把問題切割後,就也沒啥大不了的了

02-22 21:43

JiJIkopo
divide and conquer應該是演算法的入門技巧吧XD02-23 18:32
Schwarzes
這雖然很多人知道 但是不會認真去思考 實行

分化 理解 了解 熟悉 運用 一環一環的將事情做好

02-22 22:58

JiJIkopo
將簡單的技巧化為習慣,這也需要時間來培養呢02-23 18:36
YEE是桐人
人類是一種喜歡把簡單的問題給複雜化的生物wwww
某種意義上是自找麻煩就是了(笑)

02-23 20:13

JiJIkopo
有時煩惱是自己的習慣造成的呢XDD02-23 21:15
放課後樂團
太深奧惹
我也都是靠第六感[e15]

02-24 01:03

JiJIkopo
當嗅、視、味、聽、觸都無法反應時,只能靠第六感了!(誤03-26 20:10
A_HA(暫停の呼吸)
我想到三個傻瓜這部電影,也想到我在學校唸過的書...
學校很多課本都喜歡把簡單的事情,用很複雜的方式表達、敘述...
不過可能是因為人本來就是滿複雜的生物,所以喜歡把事情複雜化XDDDD

02-24 03:50

JiJIkopo
嗯嗯,其實因為語言是個複雜的系統。而同一段話,每個人各自理解的結果也可能不同,因為背景、環境或經歷等,會造成歧異(不懂對方的意思)、含混(無精確的使用方法)和開放(允許新的解釋)。所以簡單的方法(通常是直覺),是無法清楚表達,喪失溝通這一塊,也很難達到合作的加乘,自然也很難達到效率化,所以我覺得真理本來就很難深入淺出就是了。

打完才發現...好像又複雜化了,也許正是如此吧XD
03-26 20:17
真紅控
從理性兼哲學的方式去探討人類對問題或事件的處理方式

這才是有內容的文章 感謝啟迪智慧

02-25 00:23

JiJIkopo
額額,不會,感謝你喜歡喔XD03-26 20:18
巴哈姆特小管家
親愛的勇者:

感謝您對勇者小屋的支持,
我們會將此篇設定在首頁的精選閣樓中增加曝光。

--
巴哈小屋管家 敬上

02-25 14:19

JiJIkopo
耶?辛苦了,謝謝管家~ya03-26 20:25
兼職伴唱
divide and conquer這個名詞有中文的翻譯嗎?

這門理論隸屬哪門學科?

02-26 06:57

JiJIkopo
分治法?分而治之?這兩個應該都翻得通。
computer science裡的重要科目 ─ algorithm.03-26 20:20
JiJIkopo
樓下有版友回答了[e19]03-26 20:25
穢羽
有問題我就會去請教筆仙

02-26 12:15

JiJIkopo
神秘力量www03-26 20:21
チョコラネコ
這可是一個很實用的coding技巧

02-26 17:39

JiJIkopo
很棒的技巧呢!03-26 20:23
清崧萊
同樓上 感謝分享
可以藉分享嗎 很好的文章
想讓更多人知道

02-26 18:41

JiJIkopo
謝謝你喜歡喔~
OK的~歡迎轉貼、分享或引用XD03-26 20:23
林十七
各個擊破法回答樓上上上上(好累XD)的問題
大問題化小問題再結合

02-27 04:37

JiJIkopo
沒錯啊!感謝回答!03-26 20:24
阿銀
是先分解在各個擊破嗎??這好像跟寫程式有關??

有同學在竹科打工.....

03-26 23:45

JiJIkopo
很基礎的程式技巧呢~04-19 20:54
兼職伴唱
這跟學記裡面講的學習方法很類似

善問者,如攻堅木,先其易者,後其節目,及其久也,相說以解;不善問者反此。

善於發問的人,好比砍伐堅硬的木頭,先從容易下手的軟處開始,慢慢的擴及較硬的節目,時間久了,木頭自然分解脫落;不善發問的人,使用的方法剛好相反。

中外很多觀念仔細品味都有相似之處

04-14 09:47

JiJIkopo
對的!想法確實十分相似。

畢竟學習的方法是一種通用的概念,只是要學的東西有些許的不同罷了XD04-19 21:00
兼職伴唱
computer science跟algorithm.的中文名稱是什麼?

04-14 09:49

JiJIkopo
computer science:電腦科學、計算機科學、資訊科學。(三種譯法都有人用)
algorithm:演算法。04-19 21:02
我要留言提醒:您尚未登入,請先登入再留言

59喜歡★jijikopo 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:[達人專欄] 這份最重要... 後一篇:【閒聊】淺談太陽花學運...

追蹤私訊切換新版閱覽

作品資料夾

hayashi0807各位
小屋四格漫畫更新了快來看唷看更多我要大聲說昨天18:32


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】