日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法,天使还是魔鬼?

發布時間:2024/8/23 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法,天使还是魔鬼? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?隨著算法的誕生,智人似乎終于制造出了一種可以實現一切愿望的工具。?

如今,算法已經無孔不入,我們的工作、社交、醫療、工業、運輸、貿易無不有算法的重大參與。各種算法正改變著自然科學和人文科學,讓技術不斷突破“不可能”的極限。


但是,算法也令人擔憂:


  • 某些制造業消失了,歸根結底是算法摧毀了這些職業;

  • 保險公司應賠償事故中的受害者,然而一個“冷酷無情”的算法降低了賠償金額;

  • 股市暴跌,算法是這場災難的操盤手;

  • 法律限制公民自由,政府用算法監視我們;

  • 在國際象棋或圍棋大賽上,算法擊敗了人類,機器很快將凌駕于我們之上。

算法,到底是天使還是魔鬼?我們在享受算法帶給我們魔力的同時,為什么要指責算法帶來了磨難?因為算法打亂了我們原本的習慣?或許吧。但還有另一個原因:

人們經常使用算法,卻不了解它們的本質是什么,又是如何運作的。

什么是算法?今天,我們邀請小伙伴們一起探究一下算法的本質。

你好,機器人,請給我解釋一下什么是算法。

機器人

好的。但與此同時,我還會告訴你算法、計算機和程序之間的聯系。

我知道。當我們找到一種算法時,需要將它寫成程序的形式,而我們對計算機的要求也不只是單純地為我們工作。

機器人

完全正確。

有了算法,一切皆有可能嗎?

機器人

并非如此……但是,無限的可能或許就是算法極具魅力的原因吧。

想理解什么是算法,我們要先設想一個場景。

幾千年前,一位祖先憑著他對已故祖母如何做面包的記憶,嘗試自己做面包。但是,他真的不知道該怎么做。他猶豫著,一開始先將麥仁放入沸水中,然后對自己說,這也許是個糟糕的想法。

這位祖先的困境,正是我們都會面臨的情況——遇到某一個問題,卻又不知道該如何解決。我們想著解決方法,去嘗試,反復探索實驗,順便有了一點點意外發現,直至成功……或者失敗。

然而,真正的面包師并不是這樣做的。他們不會給每爐面包都重制一個烘焙食譜,因為他們已經掌握并牢記了面包的烘焙方法,擁有了面包食譜。

事實上,人類文明的發展不僅源于有些人的發明創造,也因為另有人“復制”了這些發明,才使其得以改進。

但是,我們忘卻了面包食譜的寶貴之處。首先,食譜降低了不確定性:多虧了它,面包師知道,除非突遭一場災難,否則面包將會在晚餐時準備好。有了這個食譜,不需要什么想象力或是天賦,任何人都可以做面包。就拿我們普通人來說,我們對面包烘焙沒有任何天賦,但仍可以從網頁上找到恰巴提的食譜,運用適當的和面力度,借助更富有想象力和才華的面包師們寫下的方法,做出面包。最終,這個食譜成為了人類遺產中的一部分,在幾千年的歷史長河中,代代相傳。

食譜就是一個算法,我們就此有了“算法”概念的初步定義:一個算法是解決一個問題的進程。我們并不需要每次都發明一個解決方案。

從這個定義不難看出,自人類歷史初期,我們就一直在發明、使用和傳播著各種各樣的“算法”,用來烹飪、雕琢石器、釣魚、種植扁豆及小麥,等等。

Ⅰ 進程和符號

有些算法與面包食譜不同,它們能解決書寫符號的問題,例如數字、字母等。算法匯集在一起,形成蘊含不同含義的數目、詞語、句子及文本。

例如,二分查找算法的用途是在字典中搜索某個特定詞。二分查找法從字典中間開始查找,對比目標詞與中間詞的位置,根據目標詞位于中間詞的前或后,來選擇字典的前半部分或后半部分作為新字典,然后再用二分查找法繼續查找,以此類推,直到找到目標詞為止。這一算法解決涉及一種書寫符號——字母的問題。還有一些算法可以實現加法、減法等,解決涉及另一種書寫符號——數字的問題。這類算法被稱為“符號算法”。

計算機科學家往往將“算法”一詞的含義限定為此類“符號算法”。考慮到這種限制,自然,我們就不能將算法的歷史追溯到文字發明之前了。然而,廣義上的算法概念其實與文字同樣古老。從迄今人類所發現的最古老的書面蹤跡表明,古代書吏已經開始使用算法了,例如用于記賬的加法和乘法。文字可能就是因此而發明的。

Ⅱ 算法和數學

數學家們從很早便開始關注算法的設計了。比如,大約公元前300 年的歐幾里得算法可以計算兩個整數的最大公約數。

我們簡單說明一下。讀者若是在攀登數學高峰時感到吃力,大可以直接跳過這一段,或把以下內容當作一首深奧的詩,盡量去理解。

一般來說,一個算法會在輸入端接收數據,這些數據構成了算法的參數。在歐幾里得算法中,輸入數據就是兩個不為零的整數,設為a 和b,且a 大于b,例如a 等于471,b 等于90。通常,算法會在輸出端返回另一些數據。在歐幾里得算法中,輸出數據是一個整數,即a 和b 的最大公約數。

將歐幾里得算法應用在整數471 和90 上,即有:

  • 用90 和21 替代471 和90,

  • 然后用21 和6 替代,

  • 接著用6 和3 替代,

  • 再用3 替代,這時3 即為所求。

在上述例子中,算法的每一步都需要計算a 除以b 的余數r,隨后用被除數b 替代除數a,余數r 替代被除數b。因此,由471=5×9 + 21 可知,471 除以90 的余數為21。在第一步中,第一個數471 被90 替代,而第二個數90 則被余數21 替代,以此類推。但有一個例外:當余數為0時,就停止計算,且數b 即為最終結果。這種情況出現在上述例子中的最后一步:我們用6 除以3,余數為0,那么3 即為所求。

算法也是中世紀西方數學家所關注的核心問題。數學家們引進了印度- 阿拉伯數字,以及與這種數字系統配套的算法。其中一本著作是通曉阿拉伯語的波斯數學家穆罕默德·穆薩·花拉子米在9 世紀撰寫的《印度計算法》(Algoritmi de numero indorum)一書。“花拉子米”(al-Khuwārizmī)一名源自作者的出生地花剌子模地區,今屬烏茲別克斯坦。有文獻證明,自1230 年起,花拉子米這個名字就成了“算法”(algorithm)一詞的來源。

Ⅲ 用語言來表達

算法會自然而然地運用到與數學有關的對象上。其實,人類的一切活動中都有算法的身影,算法概念涉及到方方面面。但我們要先解決一個關鍵問題:如何描述算法?

假設我們想從巴紐火車站到達位于卡尚鎮的巴黎薩克雷高等師范學院。幾十個學生和教師每天早上都走同一條道路:首先沿著杜邦皇家大道走,接著是布里昂城堡大道。在不知不覺中,他們可能就用到了算法——一種從火車站到校園的程序。

谷歌地圖提供了這個算法的圖形形式:

同時也有一個文本形式:

如果我們給一個大學生解釋這個算法,用一個簡明扼要的方式就能表達清楚,但如果要給一個小孩子解釋,就需要更詳盡的細節。因此,講解算法的方式是一個社會學問題,取決于談話對象和談話對象擁有的常識水平。

同樣,歐幾里得算法也可以用文字形式表達:

  • 計算a 除以b 的余數r,

  • 當r 不為0 時,

  • 用b 替代a,

  • 用r 替代b,

  • 繼續計算a 除以b 的余數r,

  • 當余數r 為0 時,b 即為所求。


維基百科又提供了一種圖形表達式:

所以,一種算法可以有不同的語言表達形式。然而,有一種表達形式不依賴于語言。

一名學生沒睡醒就去了校園,走起路來晃晃蕩蕩,就像在夢游,他運行的這個隨機算法沒有任何語言表述。

還有一個例子能更好地說明這一令人困惑的現象。

螞蟻尋找食物時,使用了非常復雜的算法,在空間里進行定向。偵察蟻開始隨機瀏覽蟻穴四周。當其中一只螞蟻發現食物的時候,便會在返回自己蟻群的一路上留下跟蹤信息素。受到跟蹤信息素的指引,其他路過此區域的螞蟻會沿著這條路徑前行。當螞蟻帶著食物返回蟻穴時,也會一路留下自己的跟蹤信息素,以增強軌跡信息。

如果有兩條路徑都能到達同一個食物源,那么在同一時間內,沿最短路徑行走的螞蟻往返蟻穴與食物之間的次數將比沿著長路徑走的螞蟻更多。于是,前者也會留下更多的跟蹤信息素。這時,最短路徑的信息將會更強,也越來越具有吸引力。跟蹤信息素是有揮發性的,如此一來,被冷落的最長路徑最終會消失。

蟻群利用一個復雜的算法確定了最短路徑。早在蟻學家用語言記下這種現象之前,螞蟻就很好地運用了這個進程。

確切地說,人與螞蟻之間的區別在于,我們會嘗試用語言表達、存儲、傳輸、理解和改進算法。然而,我們有時也會用到不知該如何用語言表達的算法。比如,我們很容易就能辨認出貓和狗,卻難以解釋是如何做到的:是計算腿和耳朵的數量呢?還是觀察頭的形狀或毛發的紋理呢?

我們的大腦和身體會用很多算法來思考、運動、做事,但不管是符號算法,還是其他算法,我們并不總知道如何解釋。

Ⅳ 指令序列之外

從巴紐火車站到高等師范學院的算法可以表示成一個包含四個基本動作的邏輯序列:“取道東南方,向上朝著蘭斯街的杜邦皇家大道”“然后……”“接著……”“再然后……”。歐幾里得算法表達式中也出現了一些基本指令,比如賦值:“用b 替代a”。此外還有將這些指令封裝成邏輯序列的句法結構,比如“這樣做,然后那樣做”,以及循環體,比如“當某條件為真時,重復此操作”。我們還可以添加條件測試語句:“如果此條件為真,那么這樣做。”

這種方式聽起來有點不尋常。事實上,只要很少的句法結構,就足以表達所有的符號算法,例如上述四個句法結構:賦值、邏輯序列、循環體、條件測試語句。算法的寶貴之處并不在于其組成有多么復雜,而恰恰在于這種將幾個簡單成分封裝在一起的方式。

這就好比化學分子:數十億個化學分子組成了我們所熟知的幾十種化學元素;而這些化學元素本身僅由三種基本粒子——質子、中子和電子組成。

然而,盡管構建算法的基本元素在理論上非常充足,人們卻很少從頭開始構建算法:算法往往由其他一些已知的算法構成。例如,我們用算法描述了從巴紐地鐵快線站到高等師范學院的路線。如果我們現在想從盧森堡公園到達校園的話,那么一個簡單的算法就是:先乘坐地鐵快線從盧森堡站到巴紐站,然后再運用先前的算法——這個算法被看成是一個整體。此時,一個全新的算法就這樣形成了。我們并不清楚先前算法的細節,而是把它視為一個新的基本指令。

Ⅴ 算法和數據

能夠解決符號信息問題的算法,更注重這些符號信息的呈現方式。例如,為了更好地執行加減乘除運算的算法,用阿拉伯數字形式的算式123 × 456,比寫成羅馬數字的算式CXXIII × CDLVI 更好。同樣,在字典中查找單詞,用字母表查找比用象形文字查找更簡單。

尋找從一個點到另一個點路徑的算法,同樣在意數據的表達形式。如果某個城市的地圖像照片一樣,一個像素接一個像素地被給出,那就很難找到想要的路徑。最好可以用綜合的方法去描述,比如整合各個十字路口,通過連接街道,賦予每一段路一個長度。這樣一來,與其費力地從一個像素移動到另一個像素,不如從一個十字路口跳到另一個十字路口的算法來得輕巧。

Ⅵ 算法的方法

已知的算法有很多,例如“分治法”“枚舉測試法”“貪心算法”“隨機算法”等。

“分治法”是把一個復雜的問題拆分成兩個較為簡單的子問題,進而兩個子問題又可以分別拆分成另外兩個更簡單的子問題,以此類推。問題不斷被層層拆解。然后,子問題的解被逐層整合,構成了原問題的解。高德納曾用過一個郵局分發信件的例子對“分治法”進行了解釋:

信件根據不同城市區域被分進不同的袋子里;每個郵遞員負責投遞一個區域的信件,對應每棟樓,將自己負責的信件分裝進更小的袋子;每個大樓管理員再將小袋子里的信件分發給對應的公寓。

高德納

高德納(又譯唐納德·克努斯)生于1938 年,是著名的計算機科學家,也是現代算法的先驅之一。他的系列巨著《計算機程序設計藝術》在計算機科學界享譽多年。

多年前,高德納對現有的數學文本處理工具感到不滿,于是創建了自己的工具TeX 和Metafont。如今,這兩個工具成為廣泛應用的免費軟件。

很多著名的算法都以他的姓氏命名,如克努斯- 莫里斯- 普拉特算法、羅賓遜- 申恩- 克努斯算法、克努斯-本迪克斯算法。

“枚舉測試法”列舉出待解決問題的所有可能解,然后逐一進行檢驗,最后從中找出符合要求的解。舉個例子:

一位旅行推銷員必須依次訪問幾個不同城市拜訪客戶,他通常會尋找幾個城市之間的最短回路,來安排自己的旅程。尋找最短回路的算法旨在計算所有可能的回路。

例如有10 個客戶,依次拜訪10 個客戶共有3 628 800 種回路組合方式,分別計算每種組合方式的回路長度,然后選擇最短的那條。

當枚舉測試法所需的計算量太大時,使用“貪心算法”能夠找到一個合理的解決方案,使問題結果最優化。

比如,當旅行推銷員有20 位客戶要訪問時,用枚舉測試法可能需要測試超過2 兆條可能的路線。與其這樣一個個枚舉,不如就地運行另一個算法:推銷員每次都從當前所在城市選擇去往距離自己最近的下一個城市,以此類推。

這個算法會選擇當前最短距離作為計算的公里數,而且,永不退回到曾經選擇過的路線上。一般來說,貪心算法找到的解決方案可能不是最好的,但卻是“合理的”。

我們之前見過一個使用“隨機算法”的例子:為了找到食物,偵察蟻從隨機瀏覽蟻穴四周開始。同樣,許多其他算法也用到了隨機源。比如,“蒙特卡洛算法”能確定正方形內一個復雜圖形的面積:在正方形中隨機抽取一個點,就像扔飛鏢一樣,飛鏢落在哪個點就取哪個點;大數定律告訴我們,這些點落入復雜圖形內的頻率接近于復雜圖形面積和正方形面積之比。

Ⅶ 機器學習

我們要討論到的最后一個方法是“學習程序”。學習做面包、在字典中查找單詞,人類對此習以為常。但很多人可能想不到,算法也可以學習。就像面包師每天能從自己的工作中學習、提高一樣,算法也可以從重復相同的任務中學習、進步。

音樂、視頻、圖書分享平臺上使用的“推薦算法”就是一種會學習的算法。系統程序會向用戶推薦:“如果你喜歡《亞瑟王》,那你應當也喜歡《彼得·格里姆斯》。”

提出這樣的推薦,系統并不是基于亨利·珀塞爾和本杰明·布里頓之間的聯系A。簡單地說,系統的判斷是基于對之前用戶的聽歌記錄的分析:事實上,那些聽過《亞瑟王》的用戶之中,確實有很多人也聽了《彼得·格里姆斯》;或者,算法嘗試尋找一些我們可能并不認識,但品味卻與我們接近的用戶。在這兩種情況下,算法學習、發現、統計了歌曲之間或者用戶之間的相似性。從這樣的學習程序出發,算法可以預測用戶可能喜歡什么樣的音樂,并因此會忍不住收聽或者購買其他哪些作品。

這些會學習的算法有助于我們重新審視自身的學習方式。推薦算法既沒有認識到珀塞爾和布里頓之間的聯系,也不需要擁有任何專業的音樂史知識。它只是對用戶的選擇進行觀察,并從所見所聞中學習。事實上,這與一個孩子學習母語的過程沒什么兩樣——從觀察周圍說話的人開始,然后用大量時間去模仿,不需要理解語法、動詞變位和動賓搭配的問題。一個小孩知道應該說“我去學校”,而不是說“我走學校”,卻無法解釋為什么。正如推薦算法會向用戶推薦本杰明·布里頓,卻不能解釋為什么用戶可能喜歡這個作曲家。

有些學習程序的問題很難解決。假如我們要識別物體,如一只狗、一只貓、一張桌子,等等。在一張圖像中,數據以像素的形式呈現,通過統計分析圖像中的黑色或者藍色像素點,很難區分這是一只狗還是一張桌子。這時,必須使用更復雜的學習算法——深度學習算法。深度學習算法首先嘗試從圖像中找到直線、圓、爪子、腿、桌腳……然后再尋找越來越復雜的物體對象。

算法同樣也是逐步建立越來越抽象的圖像表達,最終找到被識別的物體。難點是,算法如何知道需要識別哪一種元素?是爪子、腿,還是桌腳?沒關系,算法會通過自身的經驗進行學習。例如,深度學習算法可以讓下圍棋的程序取得巨大進步,打敗最優秀的人類圍棋選手。

Ⅷ 寫在最后的話

算法自身是沒有任何企圖的,它們由人類設計,我們希望算法是什么樣的,它們就會以什么樣的姿態呈現。

∑編輯?|?Gemini

來源 | 校苑數模

算法數學之美微信公眾號歡迎賜稿

稿件涉及數學、物理、算法、計算機、編程等相關領域,經采用我們將奉上稿酬。

投稿郵箱:math_alg@163.com

總結

以上是生活随笔為你收集整理的算法,天使还是魔鬼?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。