3. 編程是如何用數(shù)學(xué)解決現(xiàn)實問題的?

- 圖靈機(jī)的優(yōu)勢?除了構(gòu)造簡單,容易實現(xiàn);還有就是讓問題的求解更容易:使用“數(shù)據(jù)+指令”的方式分析求解問題的時候,實際上用到了兩種強(qiáng)大的問題求解策略——分解與建模。
- 分解:分而治之是解決復(fù)雜問題最強(qiáng)大的方法之一,但是遇到問題如何拆,拆到什么程度,還原之后如何和原問題保持一致,都是要考慮的,而按照數(shù)據(jù)與指令的套路進(jìn)行分解到話,上面的很多問題就不是問題了
- 建模:建模則是另一個解決復(fù)雜問題的方法,即把現(xiàn)實世界中的問題投射到數(shù)學(xué)世界來解決,圖靈機(jī)就是提供了一種的建模思路,即把顯示世界的問題都抽象為數(shù)據(jù)與指令,好比給解決復(fù)雜問題提供了個通用的限定的套路,有效降低了解決問題的難度
- 具體該如何利用“數(shù)據(jù)+指令”的思維來求解問題呢?
- 什么該抽象為數(shù)據(jù)呢?數(shù)據(jù)的本質(zhì)是什么?數(shù)據(jù)的本質(zhì)是“不同”,所以一個實際問題中,任何不同的東西都可以投射成數(shù)據(jù)
- 如何對數(shù)據(jù)進(jìn)行投射呢?這個問題對于圖靈機(jī)也不是問題了,因為即使胡亂投射,后面也可以找出一組合適的操作讓邏輯符合現(xiàn)實情況,因為是圖靈完備的,所以在圖靈機(jī)中解決問題基本一定有解,知道這點(diǎn)就已經(jīng)對對解決問題完成了大大的一步
- 當(dāng)然首先把數(shù)據(jù)映射好,可以使之后的工作更簡單,并且解法也有優(yōu)劣之分,這就需要經(jīng)驗了。但在是圖靈機(jī)中起碼可以先把事情做完,之后再一步步優(yōu)化,這就把求解問題降維到了優(yōu)化問題。
- 如何把真實世界中多種多樣的元素,都投射成數(shù)字(數(shù)據(jù))呢?
- 解決辦法就是數(shù)據(jù)類型,好比物理學(xué)的所有物理量都可以由基本的六個單位表示出來,計算機(jī)世界也有基礎(chǔ)數(shù)據(jù)類型,比如數(shù)字,字符,布爾類型
- 不同類型的根本的區(qū)別在于適用于不同的運(yùn)算規(guī)則;數(shù)據(jù)類型的本質(zhì)是建立在該類型上的一系列操作
- 如果想自己定義新的一個數(shù)據(jù)類型,也就是規(guī)定內(nèi)存中這個區(qū)域的數(shù)據(jù),只能執(zhí)行特定的一組操作,具體實現(xiàn)方式不同編程語言不同,比如開辟固定內(nèi)存的空間,
- 計算機(jī)世界之所以還要區(qū)分 整形,浮點(diǎn)型,也是因為這些在計算機(jī)中的計算規(guī)則是不同點(diǎn)
--------------------------------------------------
筆記已整合進(jìn)個人知識體系,歡迎訪問 [編程語言思考](http://wangc.site/cbrain/share?nodeid=1c3092379d319bb5) ??
標(biāo)簽: