首頁>Club>
演算法的核心(內容)是什麼?數學就是演算法的核心內容嗎。只要學好數學,就相當於掌握了演算法了嗎?人工智慧(機器學習)就是由演算法實現的嗎?那讓數學專業的人去搞人工智慧開發與實現,是不是很有優勢?他們搞人工智慧或者大資料的話,和計算機專業的人相比有哪些優勢和差別?
15
回覆列表
  • 1 # 北航秦曾昌

    我覺得這樣理解是不全面的,首先演算法的核心是如何用抽象的數學模型來解決這個實際問題,而且實現的手段是透過程式碼程式設計,所以說演算法的核心是數學是基本準確的。但是數學是演算法這個說法就問題很大了。 數學包含的範圍非常廣,自己是一個自洽的系統,而且隨著人類的認識的提高,數學也在發展,也發展了很多新的數學工具來幫我們解決實際問題。

    所以說如果數學是背後的關於真理的理論,那麼演算法是部分真理被使用(透過程式碼實現的方式)來幫我們解決一些特定的問題。 這是我的理解。

  • 2 # 醫療兵皮特兒

    比如說我要從海口到哈爾濱,有幾種方法可以到,飛機,火車,汽車,走路。

    這幾種方法就是演算法,飛機火車汽車等等一些平均速度就是數學理論支撐的,那麼我要上飛機上火車(也就是我要將數學理論變成實際程式碼),去買票透過什麼方式買票(邏輯能力)。

    所以說演算法是數學理論支撐的,將數學理論變為現實,還需要其他的能力。(邏輯,編碼,資料結構,最佳化等等)

  • 3 # 薛定諤的小貓貓

    首先,題主其實提了兩個問題

    演算法的核心是什麼?

    數學就是演算法嗎?

    下面我就分別來回答這兩個問題。

    演算法的核心是什麼

    演算法的核心就是對資料和程式結構的操作實現方法,需要考慮這種操作的方法的執行效率、資源佔用和安全性,那麼,如果有多個演算法可以解決同一個問題,怎麼衡量這些演算法的好壞呢? 衡量一個演算法的好壞主要從時間複雜度和空間複雜度來考慮。時間複雜度表示一個演算法執行所需要的時間,空間複雜度表示執行一個演算法所需要的記憶體大小。最佳化演算法的核心任務就是使得它的時間複雜度和空間複雜度儘可能地小。但通常情況下,時間的高效性和空間的高效性往往是衝突的,所以才有典型的說法:拿時間換空間或拿空間換時間。比如我需要判斷一個數是否是素數,如果直接透過素數的定義去判斷,需要至少列舉變數到根號n範圍內的所有整數,很明顯這種判斷素數的演算法時間耗費較大,如果使用素數篩選,雖然記憶體空間耗費大一些,但判斷一個素數的時間耗費卻大大減少了。

    那麼,我們通常所說的演算法包含哪些呢?我大致分為兩大類:普通應用演算法和機器學習人工智慧演算法。這兩類演算法的區別還是比較明顯的,對於普通應用演算法,主要包含像動態規劃、搜尋演算法、數論、計算幾何、圖論演算法、資料結構演算法等等,對於機器學習人工智慧演算法,這是演算法工程師必會的演算法,主要包括自然語言處理,像LDA、張量分解、word2vec等,機器學習演算法,像決策樹、隨機森林、LR模型、SVM等等,還有一些深度學習演算法,例如DNN、CNN影象處理、NMT模型等等。很多情況下,機器學習人工智慧演算法需要依賴一些普通應用類的演算法,比如word2vec裡面的哈夫曼編碼就是資料結構裡面的內容。

    數學就是演算法嗎

    這個答案是否定的,演算法包含很多,數學類的演算法只是其中一個方面,例如圖論演算法、動態規劃演算法就與數學關係不大。

  • 4 # 程式設計師愛學習

    演算法是程式的靈魂,只有掌握了演算法,才能輕鬆地駕馭程式開發。軟體開發工作不是按部就班的,而是選擇一種最合理的演算法去實現專案功能。演算法能夠引導開發者在面對一個專案功能時用什麼思路去實現,有了這個思路後,程式設計工作只需遵循這個思路去實現即可。

    自然界中的很多事物並不是獨立存在的,而是和許多其他事物有著千絲萬縷的聯絡。就拿演算法和程式設計來說,兩者之間就有著必然的聯絡。在程式設計界有一個不成文的原則,要想學好程式設計就必須學好演算法。要想獲悉這一說法的原因,先看下面對兩者的定義。

    (1)演算法:是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對符合一定規範的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。

    (2)程式設計:是讓計算機為解決某個問題而使用某種程式設計語言編寫程式程式碼,並最終得到結果的過程。為了使計算機能夠理解人的意圖,人類就必須將需要解決的問題的思路、方法和手段透過計算機能夠理解的形式“告訴”計算機,使計算機能夠根據人的指令一步一步去工作,完成某種特定的任務。程式設計的目的是實現人和計算機之間的交流,整個交流過程就是程式設計。

    在上述對程式設計的定義中,核心內容是思路、方法和手段等,這都需要用演算法來實現。由此可見,程式設計的核心是演算法,只要演算法確定了,後面的程式設計工作只是實現演算法的一個形式而已。

    為什麼要把數學建模與當今火熱的人工智慧放在一起?

    首先,數學建模在字面上可以分解成數學+建模,即運用統計學、線性代數和積分學等數學知識,構建演算法模型,透過模型來解決問題。數學建模往往是沒有對與錯,只有“更好”(better),就好像讓你評價兩個蘋果哪個更好吃,只有好吃、不好吃或者更好吃,沒有對與錯。

    人工智慧(Artificial Intelligence, AI),你可以將其理解為是一種“黑科技”,人類透過它,讓計算機能夠“更好”地像人一樣思考。可以說“演算法模型”是人工智慧的“靈魂”,沒有演算法模型,一切都是“水中月”“鏡中花”!

    數學建模與人工智慧關係

    無論是數學建模還是人工智慧,其核心都是演算法,最終的目的都是透過某種形式來更好地為人類服務,解決實際問題。在研究人工智慧過程中需要數學建模思維,所以數學建模對於人工智慧非常關鍵。

    下面透過模擬一個場景來了解人工智慧與數學建模之間的關係。

    某患者到醫院就診,在現實生活中,醫生根據病人的一系列體徵與症狀,判斷病人患了什麼病。醫生會親切地詢問患者的症狀,透過各種專項檢查,最後進行確診。在人工智慧下,則考慮透過相應演算法來實現上述過程,如德國的輔助診斷產品Ada學習了大量病例來輔助提升醫生診病的準確率。

    情景①:如果用數學建模方法解決,那麼就透過演算法構建一個恰當的模型,也就是透過圖1-1所示的數學建模流程來解決問題。

    情景②:如果用人工智慧方法解決,那麼就要製造一個會診斷疾病的機器人。機器人如何才能精準診斷呢?這就需要利用人工智慧技術手段,比如採用一個“人工智慧”演算法模型,可能既用了機器學習演算法,也用了深度學習演算法,不管怎樣,最終得到的是一個可以落地的疾病預測人工智慧解決方案。讓其具有思考、聽懂、看懂、邏輯推理與運動控制能力,如圖1-1所示。

    透過上面的例子可以看出,人工智慧離不開數學建模。在解決一個人工智慧的問題過程中,我們將模型的建立與求解進行了放大,以使其結果更加精準,如圖1-6所示。

    ▲圖1-2 AI下對數學建模的流程修正

    可見,從數學建模的角度去學習人工智慧不失為一種合適的方法。

    參考資料:《演算法學習與應用從入門到精通》

    https://www.epubit.com/book/detail/30044

    《ython 3破冰人工智慧:從入門到實戰》

    https://www.epubit.com/book/detail/39261

  • 中秋節和大豐收的關聯?
  • 怎麼看綠蘿長新葉片?