演算法研究屬於數學專業還是計算機專業?
演算法是計算機科學的基礎理論,感覺就是數學。但數學學科里似乎又找不到演算法的領域。
這東西本來就不分的很清,我們係數學和計算機的本科都招。陶哲軒也發過很多演算法的paper,而且其實說實話主流的演算法研究並不太在意計算機部分的實現(這點我很不爽)。
屬於計算機科學,但是除了寫論文以外幾乎不需要計算機,大部分純粹的演算法研究不管實現的,也就是有張紙有支筆就行了。這麼看還是有點像數學。
謝邀。你可以看看2014年諾貝爾化學獎,說是「物理的技術在生物學上的應用」,但是,然而,仍然頒發給了化學獎。而且得主是化學系的。
所以演算法可以算是數學在計算機上的應用,可以是數學,可以是計算機,也可以是兩者都不是,比如,可以起個名字叫做「計算科學」。因為至少「計算物理」是屬於物理專業的分支,他們也研究演算法。
看你研究什麼了唄。如果是做演算法複雜度,收斂性,漸進收斂性,魯棒性之類的分析,是更偏向數學的研究的,其中的極端自然就是P=NP了。這類問題在應用數學屬於很火的問題,比如對於全局最優解的研究,幾十年了都還沒有什麼可喜的進展,現在很多演算法還是找個局部最優解就over的地步。至於各種演算法應用的研究,不僅僅是計算機,任何學科裡邊都會有的。
普及一下機器學習和數據挖掘,都是跟演算法有關的,兩者十大經典演算法基本相同:機器學習是一幫計算機背景弄的學科,數據挖掘是偏數學背景的人創立的。因此兩個學科先天上就由兩個區別了。1、有關數學公式的嚴謹性:機器學習的很多數學論證都不太嚴謹,偏重工業實踐和演算法的可實現性;2、數據挖掘的人數學論證嚴謹性挺強的,在工業實踐中,針對小樣本數據有比較好的實踐。記得之前看數據挖掘演算法的時候,都強調了feature 的歸一化,pca分解,數據輸入要完美,要滿足各種數學上的假設條件,各種檢驗如果能滿足就更好,減少共線性,提高相關性等等。接著,現代人有錢了,不擔憂機器了,各種集群hadoop,spark,來一下DL,DNN,Boosting,對數據輸入就沒有那麼講究了,我一個模型頂不過你,我就來一直迭代調優,多個模型合併起來,總比你一個模型好吧,因為我們有的是機器,速度快,cpu夠,各種CNN,DNN都來了,我們來模仿人類是怎麼看的,10萬+個feature去學習咖啡、貓長什麼樣,我也不用管太多的數學維度的假設,以後都不用自己設計feature了,可以自己學習feature了,自己設置一個regularazation,自我懲罰。所以,現在有很多學過數學的人都去學習計算機,因為只懂數學原理,心痒痒,總得想著去實現,快速的實現,驗證自己的想法,如果一個別人寫的演算法效果不好了,要知道怎麼調優,調優的理論從哪裡來,要能看得懂數學公式啊。或許哪天來靈感了,博採眾長,自立門戶,自己寫一個演算法包來造福世界。所以演算法的東西,如果真要在裡面有所造詣,數學和計算機都要懂一些,就像陳tianqi大牛一樣,寫了好幾個dmlc包,如果不懂裡面的演算法細節,是很難寫出高效率精度高的演算法包的。
非常感興趣這個話題。先說自己的結論,演算法確實是計算機科學(個人的想法)。
首先,現在其實對計算機科學的劃分實際是有爭議的。前幾天和同學聊天的時候,有一個觀點感覺很有意思:
數學主要是研究一些問題有沒有解,而計算機科學主要研究的是在有解的情況下如何解以及怎樣快速的解。
從複雜度角度說,數學主要研究computational 和non-computational 之間的分類,而計算機科學主要是在computational 里再研究具體的分類。從這個角度上來說,演算法的確是計算機科學。
======================================================聽過一個關於計算機科學分類的seminar。好像將科學分成先驗後驗什麼的。。有時間查查資料,把答案補全。豆奶是豆漿還是奶?
不同專業之間是有交叉部分的,並非非此即彼,計算機需要學數學,比如概率論、邏輯、線性代數;數學專業也需要學到一些計算機知識(現在貌似每個專業都在學計算機,有些偏理論有些偏應用)。而演算法有些特殊,理論上來說它是基於邏輯的數學學科,但是它是計算機出現之後才成為一門學科的,實際也是在計算機中應用較多的,所以可以認為它是跟概率論等學科對應的偏數據的計算機學科。
感覺是應用數學一類的吧
所謂演算法就是計算的方法,數學需要計科也需要,演算法本身為數學的分支,在計科發揚光大,因為計算機能完全釋放計算的能力。
如今我們所說的演算法大多是基於計算機的演算法,供計算機使用。因其抽象性,邏輯性,其靈魂是數學的,而其展現方式是計算機的,很難完全界定屬於哪個學科,可以算是交叉學科吧。演算法應用了大量數學和計算機科學的內容。硬要強調它屬於哪個學科並沒有什麼意義
「科學的本質是數學。」哎,不想讀了。
還沒計算機的時候就有演算法了。。
演算法是解決一類問題的方法
計算機的高性能利於演算法的實現看了知乎前幾個答案,感覺並不是十分滿意,請允許我來粗淺談一下我的看法、
首先說一下學科定義:1.數學(mathematics或maths),是研究數量、結構、變化、空間以及信息等概念的一門學科。
2.計算機科學與技術(Computer Science and Technology),是研究計算機硬體、軟體與應用及其理論、技能與方法的一門學科(或者說是工程技術),可授予理學或工學;3.演算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。那麼,我想說的是:演算法絕對不能說是計算機科學與技術領域的,這點要明確!因為我們在探討學科性質的時候,大多是以一級學科進行探討,而計算機科學與技術這個一級學科有蘊含在信息類這個大的範疇之中。信息領域主要的一級學科共有4個,分別是:0809電子科學與技術、0810信息與通信工程、0811控制科學與工程、0812計算機科學與技術。而其他一級學科都要涉及到演算法,甚至在某些研究領域就是重合的,可以說這四個領域你中有我,我中有你。其中控制類和電子類偏硬,計算機偏軟,通信類夾雜其中,這就是基本的過渡關係。而在數學學科定義裡面,就涉及到信息領域的研究方向,作為一門基礎學科為工程技術方面提供重要的理論依據。想必很多學校的這四大領域裡面要學到《信號與系統》這門專業課(不同學校側重不同),這門專業課的本質就是一門專業數學。而信息類對數學的要求十分之高,這也使得演算法分布在學科研究的各個角落。所以,總結一下,演算法不是一門學科的獨佔領域,而是一類工具的籠統概念,就像:
筆分為很多種:毛筆,鋼筆,鉛筆,試電筆……而他們的用途卻又不同,然而他們都要用到筆,而在信息類領域(包括其他涉及到演算法的領域),演算法就是這個筆。參考資料:1.百度百科:演算法,計算機科學與技術,數學2.大學計算機,宋長龍,徐一平,高等教育出版社3.Introduction to Algorithms, Third Edition計算機屬於應用數學領域。
計算科學不等於計算機科學,計算機只是一個工具,利用計算機進行計算工作可以代替人類進行人類難以重複的計算,僅此而已,計算機可以做的,人類都能做,區別在於對於一個題求解,計算機只需一秒,人類需要十億秒。計算機科學與計算科學交集,計算機科學與物理科學也有交集,演算法的廣義定義是通過有限的步驟解決一個問題,這麼說來演算法應該是哲學範疇了。哈哈
講道理都是一回事。
屬於我自動化專業謝謝
計算機本來就是邏輯,就是數學啊!
推薦閱讀:
※當初的生物熱,和如今的全民CS全民AI,讓你想到了什麼?
※情感分類(sentiment classification)推薦使用什麼演算法和軟體包?
※如何用通俗的語言解釋CTR和推薦系統中常用的Feature Hashing技術以及其對應的優缺點?
※darknet源碼該如何解讀?
※能否用具體的例子解釋一下 (Model-based) Structural Estimation?