演算法現實性
A. 1. 演算法的計算量的大小稱為計算的什麼
B.復雜性
所謂演算法的計算量大小就是這個演算法的時間復雜度
B. 演算法具有什麼特徵
一個演算法應該具有以下五個重要的特徵:
1,有窮性(Finiteness):演算法的有窮性是指演算法必須能在執行有限個步驟之後終止;
2,確切性(Definiteness):演算法的每一步驟必須有確切的定義;
3,輸入項(Input):一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定出了初始條件;
4,輸出項(Output):一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的;
5,可行性(Effectiveness):演算法中執行的任何計算步驟都是可以被分解為基本的可執行的操作步,即每個計算步都可以在有限時間內完成(也稱之為有效性)。
(2)演算法現實性擴展閱讀:
演算法要素:
一,數據對象的運算和操作:計算機可以執行的基本操作是以指令的形式描述的。一個計算機系統能執行的所有指令的集合,成為該計算機系統的指令系統。一個計算機的基本運算和操作有如下四類:
1,算術運算:加減乘除等運算
2,邏輯運算:或、且、非等運算
3,關系運算:大於、小於、等於、不等於等運算
4,數據傳輸:輸入、輸出、賦值等運算
二,演算法的控制結構:一個演算法的功能結構不僅取決於所選用的操作,而且還與各操作之間的執行順序有關。
C. A*演算法現實應用的實際意義
A*演算法在人工智慧中是一種典型的啟發式搜索演算法,為了說清楚A*演算法,我看還是先說說何謂啟發式演算法。
一、何謂啟發式搜索演算法
在說它之前先提提狀態空間搜索。狀態空間搜索,如果按專業點的說法就是將問題求解過程表現為從初始狀態到目標狀態尋找這個路徑的過程。通俗點說,就是在解一個問題時,找到一條解題的過程可以從求解的開始到問題的結果(好象並不通俗哦)。由於求解問題的過程中分枝有很多,主要是求解過程中求解條件的不確定性,不完備性造成的,使得求解的路徑很多這就構成了一個圖,我們說這個圖就是狀態空間。問題的求解實際上就是在這個圖中找到一條路徑可以從開始到結果。這個尋找的過程就是狀態空間搜索。
常用的狀態空間搜索有深度優先和廣度優先。廣度優先是從初始狀態一層一層向下找,直到找到目標為止。深度優先是按照一定的順序前查找完一個分支,再查找另一個分支,以至找到目標為止。這兩種演算法在數據結構書中都有描述,可以參看這些書得到更詳細的解釋。
前面說的廣度和深度優先搜索有一個很大的缺陷就是他們都是在一個給定的狀態空間中窮舉。這在狀態空間不大的情況下是很合適的演算法,可是當狀態空間十分大,且不預測的情況下就不可取了。他的效率實在太低,甚至不可完成。在這里就要用到啟發式搜索了。
啟發式搜索就是在狀態空間中的搜索對每一個搜索的位置進行評估,得到最好的位置,再從這個位置進行搜索直到目標。這樣可以省略大量無畏的搜索路徑,提到了效率。在啟發式搜索中,對位置的估價是十分重要的。採用了不同的估價可以有不同的效果。我們先看看估價是如何表示的。
啟發中的估價是用估價函數表示的,如:
f(n) = g(n) + h(n)
其中f(n)是節點n的估價函數,g(n)實在狀態空間中從初始節點到n節點的實際代價,h(n)是從n到目標節點最佳路徑的估計代價。在這里主要是h(n)體現了搜索的啟發信息,因為g(n)是已知的。如果說詳細點,g(n)代表了搜索的廣度的優先趨勢。但是當h(n)>>g(n)時,可以省略g(n),而提高效率。這些就深了,不懂也不影響啦!我們繼續看看何謂A*演算法。
二、初識A*演算法
啟發式搜索其實有很多的演算法,比如:局部擇優搜索法、最好優先搜索法等等。當然A*也是。這些演算法都使用了啟發函數,但在具體的選取最佳搜索節點時的策略不同。象局部擇優搜索法,就是在搜索的過程中選取「最佳節點」後舍棄其他的兄弟節點,父親節點,而一直得搜索下去。這種搜索的結果很明顯,由於舍棄了其他的節點,可能也把最好的節點都舍棄了,因為求解的最佳節點只是在該階段的最佳並不一定是全局的最佳。最好優先就聰明多了,他在搜索時,便沒有舍棄節點(除非該節點是死節點),在每一步的估價中都把當前的節點和以前的節點的估價值比較得到一個「最佳的節點」。這樣可以有效的防止「最佳節點」的丟失。那麼A*演算法又是一種什麼樣的演算法呢?其實A*演算法也是一種最好優先的演算法。只不過要加上一些約束條件罷了。由於在一些問題求解時,我們希望能夠求解出狀態空間搜索的最短路徑,也就是用最快的方法求解問題,A*就是干這種事情的!我們先下個定義,如果一個估價函數可以找出最短的路徑,我們稱之為可採納性。A*演算法是一個可採納的最好優先演算法。A*演算法的估價函數可表示為:
f'(n) = g'(n) + h'(n)
這里,f'(n)是估價函數,g'(n)是起點到終點的最短路徑值,h'(n)是n到目標的最斷路經的啟發值。由於這個f'(n)其實是無法預先知道的,所以我們用前面的估價函數f(n)做近似。g(n)代替g'(n),但g(n)>=g'(n)才可(大多數情況下都是滿足的,可以不用考慮),h(n)代替h'(n),但h(n)<=h'(n)才可(這一點特別的重要)。可以證明應用這樣的估價函數是可以找到最短路徑的,也就是可採納的。我們說應用這種估價函數的最好優先演算法就是A*演算法。哈!你懂了嗎?肯定沒懂!接著看!
舉一個例子,其實廣度優先演算法就是A*演算法的特例。其中g(n)是節點所在的層數,h(n)=0,這種h(n)肯定小於h'(n),所以由前述可知廣度優先演算法是一種可採納的。實際也是。當然它是一種最臭的A*演算法。
再說一個問題,就是有關h(n)啟發函數的信息性。h(n)的信息性通俗點說其實就是在估計一個節點的值時的約束條件,如果信息越多或約束條件越多則排除的節點就越多,估價函數越好或說這個演算法越好。這就是為什麼廣度優先演算法的那麼臭的原因了,誰叫它的h(n)=0,一點啟發信息都沒有。但在游戲開發中由於實時性的問題,h(n)的信息越多,它的計算量就越大,耗費的時間就越多。就應該適當的減小h(n)的信息,即減小約束條件。但演算法的准確性就差了,這里就有一個平衡的問題。
D. 什麼是演算法
演算法(Algorithm)是指解題方案的准確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間復雜度與時間復雜度來衡量。
演算法中的指令描述的是一個計算,當其運行時能從一個初始狀態和(可能為空的)初始輸入開始,經過一系列有限而清晰定義的狀態,最終產生輸出並停止於一個終態。一個狀態到另一個狀態的轉移不一定是確定的。隨機化演算法在內的一些演算法,包含了一些隨機輸入。
形式化演算法的概念部分源自嘗試解決希爾伯特提出的判定問題,並在其後嘗試定義有效計算性或者有效方法中成形。這些嘗試包括庫爾特·哥德爾、Jacques Herbrand和斯蒂芬·科爾·克萊尼分別於1930年、1934年和1935年提出的遞歸函數,阿隆佐·邱奇於1936年提出的λ演算,1936年Emil Leon Post的Formulation 1和艾倫·圖靈1937年提出的圖靈機。即使在當前,依然常有直覺想法難以定義為形式化演算法的情況。
E. 數據結構與演算法在計算機領域或行業之中到底占據著什麼樣的重要地位
演算法是程序的靈魂,架構是靈魂的軀體,最近對這兩句話感觸很深,但很多程序員甚至忽略演算法存在,更不要說是架構層面的東西,有些程序員甚至有些疑問,做編程也有幾年了碰到關於演算法的東西實在是很少。
在學習演算法之前首先要掌握數據結構,因為數據結構裡面很多基礎,像隊列,棧,鏈表,二叉樹這些都是演算法基礎,因為再復雜的演算法也是基礎的東西組合起來的,復雜的演算法涉及到數學知識了,所以專業的演算法工程師需要具備良好的數學底子。但數據結構更多是用在功能模塊裡面編程模型的設計上,有些程序員在設計模塊功能的時候。
F. 數據挖掘演算法與生活中的應用案例
數據挖掘演算法與生活中的應用案例
如何分辨出垃圾郵件」、「如何判斷一筆交易是否屬於欺詐」、「如何判斷紅酒的品質和檔次」、「掃描王是如何做到文字識別的」、「如何判斷佚名的著作是否出自某位名家之手」、「如何判斷一個細胞是否屬於腫瘤細胞」等等,這些問題似乎都很專業,都不太好回答。但是,如果了解一點點數據挖掘的知識,你,或許會有柳暗花明的感覺。
本文,主要想簡單介紹下數據挖掘中的演算法,以及它包含的類型。然後,通過現實中觸手可及的、活生生的案例,去詮釋它的真實存在。 一般來說,數據挖掘的演算法包含四種類型,即分類、預測、聚類、關聯。前兩種屬於有監督學習,後兩種屬於無監督學習,屬於描述性的模式識別和發現。
有監督學習有監督的學習,即存在目標變數,需要探索特徵變數和目標變數之間的關系,在目標變數的監督下學習和優化演算法。例如,信用評分模型就是典型的有監督學習,目標變數為「是否違約」。演算法的目的在於研究特徵變數(人口統計、資產屬性等)和目標變數之間的關系。
分類演算法分類演算法和預測演算法的最大區別在於,前者的目標變數是分類離散型(例如,是否逾期、是否腫瘤細胞、是否垃圾郵件等),後者的目標變數是連續型。一般而言,具體的分類演算法包括,邏輯回歸、決策樹、KNN、貝葉斯判別、SVM、隨機森林、神經網路等。
預測演算法預測類演算法,其目標變數一般是連續型變數。常見的演算法,包括線性回歸、回歸樹、神經網路、SVM等。
無監督學習無監督學習,即不存在目標變數,基於數據本身,去識別變數之間內在的模式和特徵。例如關聯分析,通過數據發現項目A和項目B之間的關聯性。例如聚類分析,通過距離,將所有樣本劃分為幾個穩定可區分的群體。這些都是在沒有目標變數監督下的模式識別和分析。
聚類分析聚類的目的就是實現對樣本的細分,使得同組內的樣本特徵較為相似,不同組的樣本特徵差異較大。常見的聚類演算法包括kmeans、系譜聚類、密度聚類等。
關聯分析關聯分析的目的在於,找出項目(item)之間內在的聯系。常常是指購物籃分析,即消費者常常會同時購買哪些產品(例如游泳褲、防曬霜),從而有助於商家的捆綁銷售。
基於數據挖掘的案例和應用上文所提到的四種演算法類型(分類、預測、聚類、關聯),是比較傳統和常見的。還有其他一些比較有趣的演算法分類和應用場景,例如協同過濾、異常值分析、社會網路、文本分析等。下面,想針對不同的演算法類型,具體的介紹下數據挖掘在日常生活中真實的存在。下面是能想到的、幾個比較有趣的、和生活緊密關聯的例子。
基於分類模型的案例這裡面主要想介紹兩個案例,一個是垃圾郵件的分類和判斷,另外一個是在生物醫葯領域的應用,即腫瘤細胞的判斷和分辨。
垃圾郵件的判別郵箱系統如何分辨一封Email是否屬於垃圾郵件?這應該屬於文本挖掘的范疇,通常會採用樸素貝葉斯的方法進行判別。它的主要原理是,根據郵件正文中的單詞,是否經常出現在垃圾郵件中,進行判斷。例如,如果一份郵件的正文中包含「報銷」、「發票」、「促銷」等詞彙時,該郵件被判定為垃圾郵件的概率將會比較大。
一般來說,判斷郵件是否屬於垃圾郵件,應該包含以下幾個步驟。
第一,把郵件正文拆解成單片語合,假設某篇郵件包含100個單詞。
第二,根據貝葉斯條件概率,計算一封已經出現了這100個單詞的郵件,屬於垃圾郵件的概率和正常郵件的概率。如果結果表明,屬於垃圾郵件的概率大於正常郵件的概率。那麼該郵件就會被劃為垃圾郵件。
醫學上的腫瘤判斷如何判斷細胞是否屬於腫瘤細胞呢?腫瘤細胞和普通細胞,有差別。但是,需要非常有經驗的醫生,通過病理切片才能判斷。如果通過機器學習的方式,使得系統自動識別出腫瘤細胞。此時的效率,將會得到飛速的提升。並且,通過主觀(醫生)+客觀(模型)的方式識別腫瘤細胞,結果交叉驗證,結論可能更加靠譜。
如何操作?通過分類模型識別。簡言之,包含兩個步驟。首先,通過一系列指標刻畫細胞特徵,例如細胞的半徑、質地、周長、面積、光滑度、對稱性、凹凸性等等,構成細胞特徵的數據。其次,在細胞特徵寬表的基礎上,通過搭建分類模型進行腫瘤細胞的判斷。
基於預測模型的案例這裡面主要想介紹兩個案例。即通過化學特性判斷和預測紅酒的品質。另外一個是,通過搜索引擎來預測和判斷股價的波動和趨勢。
紅酒品質的判斷如何評鑒紅酒?有經驗的人會說,紅酒最重要的是口感。而口感的好壞,受很多因素的影響,例如年份、產地、氣候、釀造的工藝等等。但是,統計學家並沒有時間去品嘗各種各樣的紅酒,他們覺得通過一些化學屬性特徵就能夠很好地判斷紅酒的品質了。並且,現在很多釀酒企業其實也都這么幹了,通過監測紅酒中化學成分的含量,從而控制紅酒的品質和口感。
那麼,如何判斷鑒紅酒的品質呢?
第一步,收集很多紅酒樣本,整理檢測他們的化學特性,例如酸性、含糖量、氯化物含量、硫含量、酒精度、PH值、密度等等。
第二步,通過分類回歸樹模型進行預測和判斷紅酒的品質和等級。
搜索引擎的搜索量和股價波動一隻南美洲熱帶雨林中的蝴蝶,偶爾扇動了幾下翅膀,可以在兩周以後,引起美國德克薩斯州的一場龍卷風。你在互聯網上的搜索是否會影響公司股價的波動?
很早之前,就已經有文獻證明,互聯網關鍵詞的搜索量(例如流感)會比疾控中心提前1到2周預測出某地區流感的爆發。
同樣,現在也有些學者發現了這樣一種現象,即公司在互聯網中搜索量的變化,會顯著影響公司股價的波動和趨勢,即所謂的投資者注意力理論。該理論認為,公司在搜索引擎中的搜索量,代表了該股票被投資者關注的程度。因此,當一隻股票的搜索頻數增加時,說明投資者對該股票的關注度提升,從而使得該股票更容易被個人投資者購買,進一步地導致股票價格上升,帶來正向的股票收益。這是已經得到無數論文驗證了的。
基於關聯分析的案例:沃爾瑪的啤酒尿布啤酒尿布是一個非常非常古老陳舊的故事。故事是這樣的,沃爾瑪發現一個非常有趣的現象,即把尿布與啤酒這兩種風馬牛不相及的商品擺在一起,能夠大幅增加兩者的銷量。原因在於,美國的婦女通常在家照顧孩子,所以,她們常常會囑咐丈夫在下班回家的路上為孩子買尿布,而丈夫在買尿布的同時又會順手購買自己愛喝的啤酒。沃爾瑪從數據中發現了這種關聯性,因此,將這兩種商品並置,從而大大提高了關聯銷售。
啤酒尿布主要講的是產品之間的關聯性,如果大量的數據表明,消費者購買A商品的同時,也會順帶著購買B產品。那麼A和B之間存在關聯性。在超市中,常常會看到兩個商品的捆綁銷售,很有可能就是關聯分析的結果。
基於聚類分析的案例:零售客戶細分對客戶的細分,還是比較常見的。細分的功能,在於能夠有效的劃分出客戶群體,使得群體內部成員具有相似性,但是群體之間存在差異性。其目的在於識別不同的客戶群體,然後針對不同的客戶群體,精準地進行產品設計和推送,從而節約營銷成本,提高營銷效率。
例如,針對商業銀行中的零售客戶進行細分,基於零售客戶的特徵變數(人口特徵、資產特徵、負債特徵、結算特徵),計算客戶之間的距離。然後,按照距離的遠近,把相似的客戶聚集為一類,從而有效的細分客戶。將全體客戶劃分為諸如,理財偏好者、基金偏好者、活期偏好者、國債偏好者、風險均衡者、渠道偏好者等。
基於異常值分析的案例:支付中的交易欺詐偵測採用支付寶支付時,或者刷信用卡支付時,系統會實時判斷這筆刷卡行為是否屬於盜刷。通過判斷刷卡的時間、地點、商戶名稱、金額、頻率等要素進行判斷。這裡面基本的原理就是尋找異常值。如果您的刷卡被判定為異常,這筆交易可能會被終止。
異常值的判斷,應該是基於一個欺詐規則庫的。可能包含兩類規則,即事件類規則和模型類規則。第一,事件類規則,例如刷卡的時間是否異常(凌晨刷卡)、刷卡的地點是否異常(非經常所在地刷卡)、刷卡的商戶是否異常(被列入黑名單的套現商戶)、刷卡金額是否異常(是否偏離正常均值的三倍標准差)、刷卡頻次是否異常(高頻密集刷卡)。第二,模型類規則,則是通過演算法判定交易是否屬於欺詐。一般通過支付數據、賣家數據、結算數據,構建模型進行分類問題的判斷。
基於協同過濾的案例:電商猜你喜歡和推薦引擎電商中的猜你喜歡,應該是大家最為熟悉的。在京東商城或者亞馬遜購物,總會有「猜你喜歡」、「根據您的瀏覽歷史記錄精心為您推薦」、「購買此商品的顧客同時也購買了商品」、「瀏覽了該商品的顧客最終購買了商品」,這些都是推薦引擎運算的結果。
這裡面,確實很喜歡亞馬遜的推薦,通過「購買該商品的人同時購買了**商品」,常常會發現一些質量比較高、較為受認可的書。一般來說,電商的「猜你喜歡」(即推薦引擎)都是在協同過濾演算法(Collaborative Filter)的基礎上,搭建一套符合自身特點的規則庫。即該演算法會同時考慮其他顧客的選擇和行為,在此基礎上搭建產品相似性矩陣和用戶相似性矩陣。基於此,找出最相似的顧客或最關聯的產品,從而完成產品的推薦。
基於社會網路分析的案例:電信中的種子客戶種子客戶和社會網路,最早出現在電信領域的研究。即,通過人們的通話記錄,就可以勾勒出人們的關系網路。電信領域的網路,一般會分析客戶的影響力和客戶流失、產品擴散的關系。
基於通話記錄,可以構建客戶影響力指標體系。採用的指標,大概包括如下,一度人脈、二度人脈、三度人脈、平均通話頻次、平均通話量等。基於社會影響力,分析的結果表明,高影響力客戶的流失會導致關聯客戶的流失。其次,在產品的擴散上,選擇高影響力客戶作為傳播的起點,很容易推動新套餐的擴散和滲透。
此外,社會網路在銀行(擔保網路)、保險(團伙欺詐)、互聯網(社交互動)中也都有很多的應用和案例。
基於文本分析的案例這裡面主要想介紹兩個案例。一個是類似「掃描王」的APP,直接把紙質文檔掃描成電子文檔。相信很多人都用過,這里准備簡單介紹下原理。另外一個是,江湖上總是傳言紅樓夢的前八十回和後四十回,好像並非都是出自曹雪芹之手,這裡面准備從統計的角度聊聊。
字元識別:掃描王APP手機拍照時會自動識別人臉,還有一些APP,例如掃描王,可以掃描書本,然後把掃描的內容自動轉化為word。這些屬於圖像識別和字元識別(Optical Character Recognition)。圖像識別比較復雜,字元識別理解起來比較容易些。
查找了一些資料,字元識別的大概原理如下,以字元S為例。
第一,把字元圖像縮小到標准像素尺寸,例如12*16。注意,圖像是由像素構成,字元圖像主要包括黑、白兩種像素。
第二,提取字元的特徵向量。如何提取字元的特徵,採用二維直方圖投影。就是把字元(12*16的像素圖)往水平方向和垂直方向上投影。水平方向有12個維度,垂直方向有16個維度。這樣分別計算水平方向上各個像素行中黑色像素的累計數量、垂直方向各個像素列上的黑色像素的累計數量。從而得到水平方向12個維度的特徵向量取值,垂直方向上16個維度的特徵向量取值。這樣就構成了包含28個維度的字元特徵向量。
第三,基於前面的字元特徵向量,通過神經網路學習,從而識別字元和有效分類。
文學著作與統計:紅樓夢歸屬這是非常著名的一個爭論,懸而未決。對於紅樓夢的作者,通常認為前80回合是曹雪芹所著,後四十回合為高鶚所寫。其實主要問題,就是想確定,前80回合和後40回合是否在遣詞造句方面存在顯著差異。
這事讓一群統計學家比較興奮了。有些學者通過統計名詞、動詞、形容詞、副詞、虛詞出現的頻次,以及不同詞性之間的相關系做判斷。有些學者通過虛詞(例如之、其、或、亦、了、的、不、把、別、好),判斷前後文風的差異。有些學者通過場景(花卉、樹木、飲食、醫葯與詩詞)頻次的差異,來做統計判斷。總而言之,主要通過一些指標量化,然後比較指標之間是否存在顯著差異,藉此進行寫作風格的判斷。
以上是小編為大家分享的關於數據挖掘演算法與生活中的應用案例的相關內容,更多信息可以關注環球青藤分享更多干貨
G. 演算法在實際生活中的應用
求解問題類的、機械的、統一的方法,它由有限多個步驟組成,對於問題類中的每個給定的具體問題,機械地執行這些步驟就可以得到問題的解答。演算法的這種特性,使得計算不僅可以由人,而且可以由計算機來完成。用計算機解決問題的過程可以分成三個階段:分析問題、設計演算法和實現演算法。
中國古代的籌算口決與珠算口決及其執行規則就是演算法的雛形,這里,所解決的問題類是算術運算。古希臘數學家歐幾里得在公元前3世紀就提出了一個演算法,來尋求兩個正整數的最大公約數,這就是有名的歐幾里得演算法,亦稱輾轉相除法。中國早已有「算術「、「演算法」等詞彙,但是它們的含義是指當時的全部數學知識和計算技能,與現代演算法的含義不盡相同。英文algorithm(演算法)一詞也經歷了一個演變過程,最初的拼法為algorism或algoritmi,原意為用阿拉伯數字進行計算的過程。這個詞源於公元 9世紀波斯數字家阿爾·花拉子米的名字的最後一部分。
在古代,計算通常是指數值計算。現代計算已經遠遠地突破了數值計算的范圍,包括大量的非數值計算,例如檢索、表格處理、判斷、決策、形式邏輯演繹等。
在20世紀以前,人們普遍地認為,所有的問題類都是有演算法的。20世紀初,數字家們發現有的問題類是不存在演算法的,遂開始進行能行性研究。在這一研究中,現代演算法的概念逐步明確起來。30年代,數字家們提出了遞歸函數、圖靈機等計算模型,並提出了丘奇-圖靈論題(見可計算性理論),這才有可能把演算法概念形式化。按照丘奇-圖靈論題,任意一個演算法都可以用一個圖靈機來實現,反之,任意一個圖靈機都表示一個演算法。
按照上述理解,演算法是由有限多個步驟組成的,它有下述兩個基本特徵:每個步驟都明確地規定要執行何種操作;每個步驟都可以被人或機器在有限的時間內完成。人們對於演算法還有另一種不同的理解,它要求演算法除了上述兩個基本特徵外,還要具有第三個基本特徵:雖然有些步驟可能被反復執行多次,但是在執行有限多次之後,就一定能夠得到問題的解答。也就是說,一個處處停機(即對任意輸入都停機)的圖靈機才表示一個演算法,而每個演算法都可以被一個處處停機的圖靈機來實現
演算法分類
演算法可大致分為基本演算法、數據結構的演算法、數論與代數演算法、計算幾何的演算法、圖論的演算法、動態規劃以及數值分析、加密演算法、排序演算法、檢索演算法、隨機化演算法、並行演算法。
演算法可以宏泛的分為三類:
有限的,確定性演算法 這類演算法在有限的一段時間內終止。他們可能要花很長時間來執行指定的任務,但仍將在一定的時間內終止。這類演算法得出的結果常取決於輸入值。
有限的,非確定演算法 這類演算法在有限的時間內終止。然而,對於一個(或一些)給定的數值,演算法的結果並不是唯一的或確定的。
無限的演算法 是那些由於沒有定義終止定義條件,或定義的條件無法由輸入的數據滿足而不終止運行的演算法。通常,無限演算法的產生是由於未能確定的定義終止條件。演算法特徵一個演算法應該具有以下五個方面的重要特徵:1、輸入。一個演算法有零個或多個輸入,以刻畫運算對象的初始情況。例如,在歐幾里得演算法中,有兩個輸入,即m和n。2、確定性。演算法的每一個步驟必須要確切地定義。即演算法中所有有待執行的動作必須嚴格而不含混地進行規定,不能有歧義性。例如,歐幾里得演算法中,步驟1中明確規定「以m除以n,而不能有類似以m除n以或n除以m這類有兩種可能做法的規定。3、有窮性,一個演算法在執行有窮步滯後必須結束。也就是說,一個演算法,它所包含的計算步驟是有限的。例如,在歐幾里得演算法中,m和n均為正整數,在步驟1之後,r必小於n,若r不等於0,下一次進行步驟1時,n的值已經減小,而正整數的遞降序列最後必然要終止。因此,無論給定m和n的原始值有多大,步驟1的執行都是有窮次。4、輸出。演算法有一個或多個的輸出,即與輸入有某個特定關系的量,簡單地說就是演算法的最終結果。例如,在歐幾里得演算法中只有一個輸出,即步驟2中的n。5、能行性。演算法中有待執行的運算和操作必須是相當基本的,換言之,他們都是能夠精確地進行的,演算法執行者甚至不需要掌握演算法的含義即可根據該演算法的每一步驟要求進行操作,並最終得出正確的結果。演算法的描述1、用自然語言描述演算法前面關於歐幾里得演算法以及演算法實例的描述,使用的都是自然語言。自然語言是人們日常所用的語言,如漢語、英語、德語等。使用這些語言不用專門訓練,所描述的演算法也通俗易懂。2、用流程圖描述演算法在數學課程里,我們學習了用程序框圖來描述演算法。在程序框圖中流程圖是描述演算法的常用工具由一些圖形符號來表示演算法。3、用偽代碼描述演算法偽代碼是用介於自然語言和計算機語言之間的文字和符號來描述演算法的工具。它不用圖形符號,因此,書寫方便、格式緊湊,易於理解,便於向計算機程序設計語言過度。
H. 八大經典排序演算法原理及實現
該系列文章主要是記錄下自己暑假這段時間的學習筆記,暑期也在實習,抽空學了很多,每個方面的知識我都會另起一篇博客去記錄,每篇頭部主要是另起博客的鏈接。
冒泡排序演算法應該是大家第一個接觸的演算法,其原理都應該懂,但我還是想以自己的語言來敘述下其步奏:
按照計算時間復雜度的規則,去掉常數、去掉最高項系數,其復雜度為O(N^2)
冒泡排序及其復雜度分析
空間復雜度就是在交換元素時那個臨時變數所佔的內存
給定一個整數序列{6,1,2,3,4},每完成一次外層循環的結果為:
我們發現第一次外層循環之後就排序成功了,但是還是會繼續循環下去,造成了不必要的時間復雜度,怎麼優化?
冒泡排序都是相鄰元素的比較,當相鄰元素相等時並不會交換,因此冒泡排序演算法是穩定性演算法
插入排序是對冒泡排序的一種改進
插入排序的思想是數組是部分有序的,再將無序的部分插入有序的部分中去,如圖:
(圖片來自 這里 )
空間復雜度就是在交換元素時那個臨時變數所佔的內存
插入排序的優化,有兩種方案:
文章後面會給出這兩種排序演算法
由於插入排序也是相鄰元素的比較,遇到相等的相鄰元素時不會發生交換,也不會造成相等元素之間的相對位置發生變化
其原理是從未排序的元素中選出最小值(最大值)放在已排序元素的後面
空間復雜度就是在交換元素時那個臨時變數所佔的內存
選擇排序是不穩定的,比如 3 6 3 2 4,第一次外層循環中就會交換第一個元素3和第四個元素2,那麼就會導致原序列的兩個3的相對位置發生變化
希爾排序算是改良版的插入排序演算法,所以也稱為希爾插入排序演算法
其原理是將序列分割成若乾子序列(由相隔某個 增量 的元素組成的),分別進行直接插入排序;接著依次縮小增量繼續進行排序,待整個序列基本有序時,再對全體元素進行插入排序,我們知道當序列基本有序時使用直接插入排序的效率很高。
上述描述只是其原理,真正的實現可以按下述步奏來:
希爾排序的效率取決於 增量值gap 的選取,這涉及到數學上尚未解決的難題,但是某些序列中復雜度可以為O(N 1.3),當然最好肯定是O(N),最壞是O(N 2)
空間復雜度就是在交換元素時那個臨時變數所佔的內存
希爾排序並不只是相鄰元素的比較,有許多跳躍式的比較,難免會出現相同元素之間的相對位置發生變化,所以希爾排序是不穩定的
理解堆排序,就必須得先知道什麼是堆?
二叉樹的特點:
當父節點的值總是大於子結點時為 最大堆 ;反之為 最小堆 ,下圖就為一個二叉堆
一般用數組來表示堆,下標為 i 的結點的父結點下標為(i-1)/2;其左右子結點分別為 (2 i + 1)、(2 i + 2)
怎麼將給定的數組序列按照堆的性質,調整為堆?
這里以建立最小堆為示例,
很明顯對於其葉子結點來說,已經是一個合法的子堆,所以做堆調整時,子節點沒有必要進行,這里只需從結點為A[4] = 50的結點開始做堆調整,即從(n/2 - 1)位置處向上開始做堆調整:
由於每次重新恢復堆的時間復雜度為O(logN),共N - 1次重新恢復堆操作,再加上前面建立堆時N / 2次向下調整,每次調整時間復雜度也為O(logN),二次操作時間相加還是O(N logN)。故堆排序的時間復雜度為O(N * logN)。
空間復雜度就是在交換元素時那個臨時變數所佔的內存
由於堆排序也是跨越式的交換數據,會導致相同元素之間的相對位置發生變化,則演算法不穩定。比如 5 5 5 ,堆化數組後將堆頂元素5與堆尾元素5交換,使得第一個5和第三個5的相對位置發生變化
歸並排序是建立在歸並操作上的一種有效的排序演算法。該演算法是採用分治法(Divide and Conquer)的一個非常典型的應用。
快速排序在應該是大家經常看到、聽到的演算法,但是真正默寫出來是有難度的。希望大家看了下面 挖坑填數 方法後,能快速寫出、快速排序。
其原理就這么幾句話,但是現實起來並不是這么簡單,我們採取流行的一種方式 挖坑填數分治法
對於序列: 72 6 57 88 60 42 83 73 48 85
數組變為: 48 6 57 88 60 42 83 73 88 85
再重復上面的步驟,先從後向前找,再從前向後找:
數組變為: 48 6 57 42 60 72 83 73 88 85
可以看出a[5]前面的數字都小於它,a[5]後面的數字都大於它。因此再對a[0…4]和a[6…9]這二個子區間重復上述步驟就可以了
空間復雜度,主要是遞歸造成的棧空間的使用:
快速排序的優化主要在於基準數的選取
快速排序也是跨越式比較及交換數據,易導致相同元素之間的相對位置發生變化,所以快速排序不穩定
前面也說了二分查找排序是改進的插入排序,不同之處在於,在有序區間查找新元素插入位置時,為了減少比較次數提高效率,採用二分查找演算法進行插入位置的確定
具體步驟,設數組為a[0…n]:
二分查找插入位置,因為不是查找相等值,而是基於比較查插入合適的位置,所以必須查到最後一個元素才知道插入位置。
二分查找最壞時間復雜度:當2^X>=n時,查詢結束,所以查詢的次數就為x,而x等於log2n(以2為底,n的對數)。即O(log2n)
所以,二分查找排序比較次數為:x=log2n
二分查找插入排序耗時的操作有:比較 + 後移賦值。時間復雜度如下:
二分查找排序在交換數據時時進行移動,當遇到有相等值插入時也只會插入其後面,不會影響其相等元素之間的相對位置,所以是穩定的
白話經典演算法排序
冒泡排序選擇排序
快速排序復雜度分析
優化的插入排序
I. 「演算法時代」到來,為何演算法服務人類並未被實現
一開始演算法只是服務於人類的,但隨著網路的發達以及智能地推廣,人們驚訝的發現自己正在慢慢依賴演算法乃至無法失去它。好像在上世紀90年代當計算機深藍贏了大師之後,當時就有人提出智能電腦也許終究有一天將主導人類。而它的初衷只是發明出來,幫助人們生活在一個更加便利的環境下,人是主導它,或者說控制它的,它被發明出來也只是服務於人類的,但是隨著時間的推移會逐漸發現當它被賦予了的各種演算法以及不斷更新之後,開始會學習了,它產生的某種意義上的主導性,而這一點可能會將人類擺在一個尷尬的位置,因為人類將無法完全操控它。
久而久之的這種演算法讓人們變得越來越懶惰了,人們不願去自主思考,因為智能設備會推送給人類精準的信息,這些信息就是人類所需要的,它們已經自動排除了人類所不感興趣的無用信息了。
J. 如何用演算法解決現實世界裡的問題
圖靈獎獲得者 羅伯特塔揚教授 關鍵詞:圖靈獎獲得者惠普中國研究院 羅伯特 塔揚(Robert Tarjan)教授是世界知 名計算機學家,他的研究領域主要包括圖論、 法和數據結構設計。羅伯特教授是許多圖論演算法的發明者,比如樹中最近共同 祖先離線演算法、S laytrees、Fibonacci heaps、平面性檢測(Planarity test- ing)等。 1986年,他與約翰浩普考夫特(John Hopcroft)因為在演算法及數據結構的設計和分 Prize),現為美國科學院院士、美國計算機學會(ACM)院士、美國普林斯 學教授。2012年4月12日,羅伯特塔揚教授到訪中 國。在惠普中國研究院里,羅伯 特塔揚教授與王 敏院長及惠普中國研究院的研究員們齊聚一堂,全 面解釋了他對 演算法的睿智見解。 老驥伏櫪 志在千里 問:您的一生取得了非凡的成就,在您看來, 這些成就是天賦還是機遇? 羅伯特:我還是先做個自我介紹吧。我在13 歲讀初中 的時候,美國掀起了數學教學改革試驗的 浪潮,也就是以更加形式化的方式來傳授 數學這門 課程。非常不幸的是,新運動失敗了。但我恰恰成 為新數學教學改革的 受益者之一,也因此出現了一68 第8卷第5期2012年5月大批我這樣的人。我對數學 有很濃的興趣,如果你 力,以及不斷的學習都是非常重要的。談到計算機們看過我 的資料,會知道我經常讀一些科幻小說。 科學,我認為這個領域充滿機會。回顧計 算機科學在孩童時期,我的夢想就是成為第一個登上火星的 的歷史,已經有75年了。 這個領域讓人非常的驚人。我當時非常喜歡讀的一本雜志就是《S 為它不斷地給我們提供新的機會。今年是阿TIFICAMERICAN(環球科學)》。此 外,當時我 蘭麥席森圖靈誕辰百年,各地舉行了盛大的慶對天文學也非常感興趣, 這也成為我日後非常重視 典,大家以各種方式來紀念他。圖靈是在20世紀30數學學 習的原因。讀到高中的時候,我在暑假期間 年代,也就是二戰期間,提出了計算機 的概念和想參加了一個研究中心的活動,有機會接觸了當時最 法,那時的計算機, 還處於非常簡單的階段。老式的計算機。那時的計算機還是打孔式的,後來 現在的夢想是什麼呢?又有機會使用IBM計算機,還接觸到了最初的編程羅伯特: 非常感謝你這么問。我有幸來到中語言。可以說我從小就和計算機打交道,當時我 國惠普研究院,看到現在搞計算機科學的人都很年對編程產生了濃厚的興趣。到了大學本科的時候, 輕。而且我也去過很多創業型的公司,那裡的人也我在美國加 州理工大學學習。當時我主修數學,而 都很年輕。計算機科學這個研究領域還很年 輕,不我幾乎選修了所有有關計算機科學方面的課程。讀 過我已經老了。因此,我 現在唯一的夢想,就是盡博士時,我去了斯坦福大學,選擇的專業方向是計 去攻克那些現實的技術課題。我希望在我有算機科學,也正是在那裡,我遇見了我的導師高德 生之年,只要在智力上還可以跟得上那些年輕人,納(Donald Knuth)。 當我本科畢業時,我選擇的 我就一直持續工作和研究下去。研究方向其實是人工智 能。但是,那時候的人工智慧還處於早期階段,整個研究領域都處於非常模糊 演算法 是計算機領域的管道工的狀態。在高德納教授的指導之下,我最後鎖定的研究領域 是計算機演算法,主攻數據結構。從那時一 問:1986年,由於您當時取得的成就,您 跟您直到現在,我都堅持了這個研究方向。 的合作者獲得了圖靈獎。現在看來,這 些成就對人 接下來回答你剛才提出的問題。天賦當然是重 類的生產與生活帶來了 哪些改變?要的,但還有一個非常重要的成功元素,那就是你 羅伯特:當時之所以 獲得圖靈獎,是因為算要在合適的時間,出現在合適的地方。回顧我的一 法以及數 據結構方面的成就。我認為談到計算機算生,我就是在合適的時機,選擇了適合我 的研究方 法和數據結構,它其實相當於計算機領域中「管道向。對於計算機演算法而 言,我是把它作為數學對象 工」的角色。正是有了這些演算法和數據結構,我們來研 究對待的。從這個角度出發,去開發計算機的 才可以把一些看似不可能找到解決方 案的問題解演算法,同時用它解決一些實際問題。我有幾位非常 決,而且能夠讓計算 機的運轉速度更快。如果說它好的導師,他們給我提出了一些非常好的課題。還 於人類的生產力、生活帶來了怎樣的影響,我無有一個成功的元素我認為應該是毅力,以及堅持不 法具體地談及某一個領域,它遍布於整個計算機行懈的學習和培訓, 不管你的天賦有多高,我認為還 業領域。你看,不管是資料庫還是電腦系統,基本 需要努力地工作、努力地學習。如果你研究的領域 上都有演算法以及數據結構的存在。 談到這個成就本是和數學相關的,研究過程中失敗是不可避免的。 身,我想再補充 一點,它被很好地運用到了目前的你可能會覺得懊惱,甚至會用頭撞牆,但是你一 教育體系中,因為很多理論都是現在課堂上的教要堅持下去。如果一個問題總是找不到答案,你 材。學生們可以在課堂上學到這些知識,比如說對以換一個課題去研究,然後過一段時間再來攻克這 於一個課題,如何找到並研發出它的解決方 案,然個難題。不管你多麼聰明,多麼有天賦,我認為毅 後又把它從一個學術的東 西用到實踐當中。我想這 69動態 能幫助學生們學習到一些新的點子和思路。 事情持續做下去的原因。 問:在大多數人眼裡,您所從事的這 項工作又 問:剛才談到人工智慧,20世紀不大成熟,但 枯燥又沒有樂趣,但是您 總能創造出新的辦法或者 是到了21世紀您還有興趣再繼續對人工智慧進行研 發現 新的結構。我不知道您的動力是什麼?樂趣又 是什麼?羅伯特: 我現在 年紀太大了,沒有足夠的時 羅伯特:在我看來,數學是一件非常美麗的 間再去重 新學習一個新的領域,但我還在持續關 事物。數學可以運用到計算機科學中,而計 算機科 注人工智慧這個領域。我有一些惠普的同事,他 學又很好地幫助人們解決 了現實生活的一些問題。 們正在試圖找到一些計算數學方面的方法,還有 的名著《計算機程序設計藝術》將程序設計統計學方面的方法,去更好地完善計算 機學習的 稱為藝術,演算法實際上跟建築的藝術是一樣的,只 能力。我相信隨著數 學的進步,隨著計算機本身 不過它的這種結構是你看不見的,是存在於人們的 術的進步,人們在人工智慧方面真正能夠邁出頭腦中的,是大腦編成的各種各樣的 美麗的建築。 有意義的一步。再補充一點,我還有一個夢想, 這讓我想起了我弟 弟,非常有意思,他曾經是國際 如果有下輩子,我會研究人的意識,人的思想是 棋大師。雖然他最後放棄了這個職業,但是我想怎麼產生的。如果能夠研究清楚這 個課題的話, 說,可能在我的家族中,數學就是一種DNA,它真 人工智慧也就解 決了。事實上我特別想研究人的 的是一件美麗的事物。我喜歡很多數學游戲。兒童 意識、思維到底是怎麼產生的。我覺得機器可能 時期,除了對天文學感興趣之外, 我還喜歡一些棋 幫助人們解決某些問題,但是最根本的問題是, 盤游戲,比如馬 加德納(MartinGardner)的游 意識是怎麼產生的。大家對這個問題爭議比較 (《環球科學》中的數學游戲專欄),還有一些大。研究這個問題我也是門外漢, 因為我既不是 拼圖游戲。 神經學科方面的專家,也不是哲學家。 問:您和您的導 師相識之後,進行了一些共同 尋找課題的方向 的研究。在這個研究過程中,發生 了哪些比較有趣 問:您是如何找到研究課題的方向的?羅伯特:我到斯坦 福大學攻讀博士學位的時 羅伯特:我的研究生涯非常長。我的建議是, 候,第一 年就修完了博士學位所需要的全部基本學 你可以嘗試去解決那些基礎性的問題,而 且是能夠 分。通常這些學分需要兩年才能賺到。當時我學的 有一些具體應用的問 題。大家可能先有一個具體的 是圖形演算法,我和我的博士導師高德納教授交換了 題,然後可以從中看到,或抽象出一個用數學這很多觀點。在我第一年學期結束的 夏季,我遇見了 個工具能夠解決的問題。所以我對一個課題的研究 後來跟我一起 獲獎的約翰教授(康奈爾大學教授, 通常都要花很長時間,有的甚至幾年。有時這 當時在斯坦福大學進行學術休假)。所以你看,在究做幾年,然後擱一段時 間,之後回頭再去研究。 合適的時間,出現在合適的地點是多麼的關鍵,斯 這樣, 我們才可以把自己稱為一個解決問題的人。 坦福大學的環境確實太棒了。當時我選 通過解決一些基礎性的問題,我從多年的科研中總做符號編程語言的 課,我們要試圖解決的一個問 結提煉出了一些理論和方法。所以,我積累了很多 如何把一個圖形內嵌到一個平面中。這實際上具體的計算機演算法技巧,還有分析方 面的一些技 是一個數學問題。讓我舉一個例子:上面的3個符 巧。在這里我必須說, 和產業界保持聯系是非常好 號中,W代表水塔,G代表天然氣塔,E就是電塔, 一件事情,因為如果你能夠為他們具體的問題找下面是三所房子,我們現在要做的 到方案的話,回報也會很好。這也會是讓你把這件氣分別都接到 這些房子里,但是你不能讓這些線有70 而且更加行之有效的方案。因此,我認為關鍵 點就是一定要堅持簡 效。因為如果你的方法不夠簡單的話, 大家就不會想去用了。 我的建議就是,千 要害羞,一定要大膽地嘗試。科研是沒有 邊界的,要勇於去打 破常規舊俗, 而且我 想再一次強調,一定 要有毅力,而且要努 力,勤奮地工作。任何交叉。這 就是要解決的數學問題。這是小時候我們無法解決的數學難題,關鍵是圖的可平面 用演算法提高業務效率測。電路板布線有時也會遇到這樣的問題。在研究過程 中,我參考了很多文獻,我發現其 問:您現在在惠普研究院從事哪些領域的研中一 個演算法是可以解決這個問題的,就把它用到這 究?有沒有一些可以介紹的成果?兒 了。但是,當時那個演算法做起來比較慢,解決簡 羅伯特:我在惠普擔任的高級院士 是研究方面單的問題可以,但是復雜的就不行了。最後我們終 最高的頭銜,我不做 任何管理的工作,惠普交給我於想出了一個辦法,能夠在線性時間內,解決圖的 的唯一工作就是演算法研究,我可以自由選擇我的可平面性檢測問題。正是因為這個研究成果,我們 具體研究問題。獲得了圖靈獎。 目前我們在做的一項工作是,利 用演算法提高業 您剛才提到在研究過程中,也遇到過很務流程的效率。現在人 們經常談到業務流程的自動多挫折,有時候想用自己的頭去撞牆。那麼在這 我現在就在與惠普負責運營方面的人員合作樣一個過程中,您是怎樣鼓勵自己堅持把這條路 來提高惠普內部的流程效率,降低成本。如果能夠走下來的? 在惠普內 部用好的話,也許可以把它商品化成為一 羅伯特:它總是先苦後甜的。道路越曲折, 個例子,我們正在做的項目叫人力優化。中能學到很多的東西。我經歷了很多曲折的過程, 惠普收購了一家叫EDS的服務公司經常會承接很多也研究了各種各樣的問 題。盡管計算機科學是一門 項目。對於一個項目來說,需要有各種技能的人,年輕 的科學,有很多人在其中的時間並不長。但我 而每個人又有不同的技能。已存在的 標准演算法是:發現計算機科學研究也存在系統性。要解決一個問 每個技能我們可以 用數學的方法給它一個量化,根題,就要找到一個比較容易的方式,但也許這個方 這些量化數字,再做人員和項目的匹配。但是我式是最容易的,卻並不是最好的,最簡單的。所以 們發現它的效果並不是很好,我們希望能夠改善這有時候,對一些 已經解決的問題,我們只要回頭, 個演算法,能夠得到更好的匹配,這樣的話,就可 實現人力的優化。時間才找到答案。在一年多的 時間里,研究是斷斷 我再舉一個我和惠普中國研究院的例子。王 續續的,有時會 進入死角,那就擱置一會兒,再回 敏院長以及這里的同事在研究的一個課題是網路。 頭研究。還有一些課題,我甚至研究了10年之久。 你們也知道,惠普收購了3COM, 其中的H3C在中 問:我不知道您來的2天時間里,見到的中國 國是一家做得比較大 的網路公司。我們正在一起合 年輕人給你的印象如何?能不能給這些在計算機領 作,關注如何把演算法運用於網路技術。 域有天賦的年輕人一些建議,怎樣才能成為 像您這 作為惠普的資深科學家,我也會經常去指導各 樣大師級的人物? 地惠普研 究院的技術研究方向;同時我也輔導一些 羅伯特:惠普中國研究院的青年人都很好, 年輕的研究員,擔當團隊技術領袖的角色。且都很聰明,工作非常努力,我對 他們的印象非常 問:隨著IT行業的發展,是否意味著企業的研 好。我對這些年輕 的有天賦的青年人的建議是:一 究工作也要產生變化,未來的研究趨勢是怎樣的? 定要找到自己想要研究的課題,不要盲目聽從和依 此外在教育方面,您覺得應該如 何培養孩子對數學 照別人的話去做。我跟這些年輕人說:不要總跟著 著迷? 業務 部門的人做事。事實上,研究員的眼界應該比 羅伯特:作為個人來說,時間是有限 他們放得更廣,要看到5年甚至以後更長久的發展可能去研究所有時髦的東 西。我是做基礎研究的, 方向。 不管IT界如何發展,摩爾定律仍然在發揮作用: 我覺得,像惠普研究院這樣做基礎性研究的機算機的速度、晶元的速度,仍然 是每18個月要翻一 構在整個產業界並不多。我們看到的互聯網公司, 番;那麼存 儲也要不斷地增加,還有網路通信的力 他們做一些非常先進的編程,做一些產品或 者技術 量也會不斷加大。所以你會看到IT的發展趨勢和方 的開發工作;但是基礎 性研究他們不做。他們覺得 向並沒有放緩,而是在加速往前走。但是對於研究 礎性研究應該由大學院校去做。所以,我覺得惠來說,計算機本身運轉的速度並不 是最重要的,隨 普研究院的機制確實很少見。我最後還是回到給他 著移動設備越 來越多,還有更多的發展空間,能開 們的建議上:要找到自己的課題,找准要努 工作發更有趣的應用。想想我那個時代,用的計算機像 的方向。你要願意和你的 同事和朋友一起工作,有 冰箱那麼大,還是打孔式的,所以你就會看到這樣 果願意和別人分享,而且也要和別人去交流,的一種發展的空間。我相信,電腦設 備將很快能夠 要保持一種開放的態度!而且要有持久的耐心,設 模擬人工智慧。 但是它的底層技術是不變的;所以 立一個長遠的目標,要一步一步去實現!感謝你 像我這樣做基礎研究的人的優勢在於,這份工作是花時間聆聽,希望我的分享 對你們有用! 不變的。 普中國研究院院長。主要研究方向們肯定會反抗的。我個人更傾向於把孩子放在充 b內容提取及豐富的選擇和豐富信息的環境下,讓他們 自己去選 分析、網路與通信。 擇。其實你看這個世界上,真正傑出的數學家是非 min.wang6hp.com 常少的,而且世界上並不需要那麼多傑出的數學 家。但是這個世 界正在變得越來越技術性;我們確 實需要大量的能夠懂數學,能夠運用數學做編程的 CCF會員。