數學家找到了理論上最快的大數乘法算法

2021-02-13 煎蛋

諸位或許聽說過,計算機在執行加法運算的時候,幾乎可以瞬間給出答案。但是將兩個數字相乘,特別當數位超過十億時,那就得可一會兒了。

我們從小學裡學到的進位豎式長乘法步驟,對於非常大的數字相乘,會過於費時而無法使用。現在,有來自澳大利亞和法國的兩位數學家表示,他們已經找到了理論上最快的乘法算法。

兩人聲稱已經實現了乘法算法的優化上限——這一極限在差不多半個世紀前被首次提出。3月18日HAL文檔檔案網站通報了他們的結果,目前論文尚未通過同行評審。

如果問普通人對數學家的理解,「他們可能會說,'哦,他們坐在辦公室裡,運算特別大的數字,'」雪梨新南威爾斯大學的共同作者David Harvey開玩笑說,「對我來說,這是真的。」

在使用若干大數字進行數學運算時,要考慮所需操作的數量,以及進行計算所需的時間。數字位數增長時,計算時間也會增加。一般情況下,算法中基本操作重複執行的次數是問題規模n的某個函數,用T(n)表示,若有某個輔助函數f(n),存在一個正常數c使得fn*c>=T(n)恆成立。記作T(n)=O(f(n)),稱O(f(n)) 為算法的漸進時間複雜度,簡稱時間複雜度。

雖然效率很低,但長乘法算法實際上是我們在20世紀60年代以前最先進的乘法算法,直到俄羅斯數學家Anatoly Karatsuba發現更優化的算法。

十年後,一對德國數學家又取得了突破:Schönhage-Strassen算法。它暗示——但從未證明——還存在進一步改進的空間。

「他們預測應該存在一種算法,它的複雜度基本上為O(nlog(n))。」Harvey解釋道,「我們的論文給出了達成這一目標的首個算法示例。」

根據研究人員的說法,通過長乘法將兩個十億位數相乘可能需要幾個月的計算時間。

使用Schönhage-Strassen算法,則不到30秒,並且憑藉他們的新理論證明,理論上會更快——甚至可能是理論上最快的乘法算法。

「從這個意義上講,我們的工作預計將為大數乘法問題畫上句號,儘管我們還不知道如何嚴格證明這一點。」Harvey說,「近50年來,人們一直在尋找這樣的算法。人類最終會成功,這並不是一個荒謬的結論。」

值得注意的是,新算法只能用在非常大的數字相乘時。具體有多大?

「我們也不知道,」研究人員在常見的Q&A環節中承認,儘管他們在論文中給出的一個示例用到了10214857091104455251940635045059417341952,這是一個非常非常非常大的數字。

雖然還未通過最終的審核,但他們的論文已經在世界數學界掀起波瀾。

賓夕法尼亞州立大學的理論計算機科學家Martin Fürer告訴《科學新聞》:「我對此感到非常驚訝。」

十多年前,Fürer本人試圖改進Schönhage-Strassen算法,但最終放棄了,「我感覺毫無希望。」

Fürer說,它或許具有實際用途。巨大數字的乘法算法對於某些具體的計算工作來說是非常有用的,如尋找新的素數。

即使這種方法缺少廣泛的應用,但它仍然是一項巨大的成就。

「如果結果是正確的,這是計算複雜性理論的一項重大成就。」來自INRIA Bordeaux和InstitutdeMathématiquesdeBordeaux的數學家和計算機科學家Fredrik Johansson告訴《新科學家》。

Harvey告訴AAP說:「反覆驗證讓我們確信它真是正確的,我仍然害怕它可能有錯誤。」

論文預印本可在HAL open access archive上獲得。
結合了sciencenews上的報導
本文譯自 sciencealert,由譯者 majer 基於創作共用協議(BY-NC)發布。

相關焦點

  • 最高效的乘法:兩個非常大的數字相乘迄今最快算法
    你可以連續地相乘,幾乎就像從右到左閱讀數字一樣快,」賓夕法尼亞州立大學的數學家馬丁·富勒說道。他在2007年建立了當時最快的乘法算法。當處理大數時,你可以重複卡拉蘇巴的過程,將原始數字分解為幾乎與數位同樣多的部分。每進行一次拆分,就可以用加法和減法來代替乘法,從而減少很多步驟。
  • 計算機大數乘法引發的思考|CSDN 博文精選
    通俗來講,一個計算的所有步驟就是一個算法,算法的時間複雜度其實就是計算的規模和步驟數量之間的關係。以乘法豎式為例,如果我們將一次十進位一位乘法(即99乘法表的乘法)作為一個步驟,那麼兩個n位乘數相乘需要n的二次方個步驟,其時間複雜度就是O(n2) ,但是如果我們採用某種「巧算」,那麼計算步驟將會大大減少。
  • 沒有中國的九九乘法表,外國人竟是這樣算乘法的
    沒有中國的九九乘法表,外國人是怎麼算乘法的?
  • 沒有九九乘法表,外國人這樣算乘法!中國學霸:呵呵
    最近,@人人視頻 分享了一段外國人計算乘法的視頻,驚呆了中國網友:這樣的算法你看懂了嗎?
  • 計算機大數乘法引發的思考 | CSDN 博文精選
    32位計算機最多只能處理32位的數字,64位計算機自然只能處理64位數字,計算機處理超過內建數據類型範圍的數字計算的過程稱為 「大數計算」 。以64位為例,當計算機面對超過64位的數字乘法時,就好像我們人類面對超過一位數的乘法一樣,無法 「一下子」 得到結果,必須需要某種步驟來計算結果。這就是說,需要某種算法來進行生成一系列的計算步驟,而 步驟的多少決定了算法的好壞。
  • 為什麼數學家對質數如此著魔?-數學,數學家,質數 ——快科技(驅動...
    這不僅僅只是個猜測:在1801年,德國著名數學家卡爾·高斯(Carl Gauss)給這個「算術基本定理」作出了證明(雖然似乎古希臘數學家歐幾裡得在2000年前可能就已作出證明)。除了它們的基本性質,質數看似正確但卻無法證明的性質吊足了數學家的胃口。
  • 沒有中國的九九乘法表,外國人竟是這樣算乘法的...
    、機器人、生產工藝、軸承、模具、工具機、鈑金等行業前沿在這裡等你點擊閱讀👉摩託車越野賽,我真的不敢相信這是真的  沒有中國的九九乘法表,外國人是怎麼算乘法的  最近,@人人視頻 分享了一段外國人計算乘法的視頻,驚呆了中國網友:  這樣的算法你看懂了嗎?  簡而言之,外國人採用的是畫線的方法計算乘法。  例如12X11,先畫一條豎線,代表10,再畫兩條豎線,代表2,「12」就是這樣表示:
  • 沒有中國的九九乘法表 老外竟然這樣算-中國,九九乘法表,外國,數學...
    沒有中國的九九乘法表,外國人是怎麼算乘法的?最近,@人人視頻分享了一段外國人計算乘法的視頻,驚呆了中國網友。這樣的算法你看懂了嗎?簡而言之,外國人採用的是畫線的方法計算乘法。例如12X11,先畫一條豎線,代表10,再畫兩條豎線,代表2,「12」就是這樣表示。
  • 大數的最大公因數,課本裡學的短除法有難度,用輾轉相除法很容易
    求兩個數的最大公因數和最小公倍數,是小學五年級的內容,小學教材中,都是採用短除法來計算的。短除法計算最大公因數簡單明了,速度快。但是,對於一些比較大的數,如求8251和6105的最大公因數,我們就不太好找出它們公有的因數,用短除法時,就顯得力不從心了。
  • 最小二乘法的前世今生,及其與平均值的關係
    現在我們要找到一個合適的y值,使得它能替代這5次成績。一個好的想法是讓y到這五個點的豎直距離之和最小。從上面的分析,我們已經知道最小二乘法的發現與平均值密切相關,並且可以牽強的追溯到科茨的時代。但是真正的清晰闡述這個原理的是,18世紀法國著名數學家勒讓德(Legendre,1752-1833)。當然,與上面的成績分析也沒有一點關係,最初都是用於解決測量數據誤差的問題。
  • 8.大數乘法
    如果在做256位乘法時直接使用32位乘法器的結構,則流水級的延遲時間過長。普通乘法器包括半級BoothCode解碼、一級華萊士樹、一級加法器。經過booth編碼,256位的乘法會產生128個部分積。如果在一級流水中完成華萊士樹的合併,則需要11級全加器才能完成整個操作。在高速流水線中,這個延遲時間太長。而且,256位加法的延遲時間也太長了。為此,在做大數乘法單元時,可以多拆一級流水。
  • 從楊輝三角說起,體驗乘法公式應用魅力,挑戰趣味難題
    「楊輝三角」出現在楊輝編著的《詳解九章算法》一書中。楊輝,杭州錢塘人,中國南宋末年數學家,數學教育家,著作甚多。他編著的數學書共五種二十一卷,著有《詳解九章算法》十二卷(1261年)、《日用算法》二卷、《乘除通變本末》三卷、《田畝比類乘除算法》二卷、《續古摘奇算法》二卷。其中後三種合稱《楊輝算法》,朝鮮、日本等國均有譯本出版,流傳世界。
  • 秦九韶算法-最早的方程解法
    秦九韶是中國南宋數學家。他對「大衍求一數」(整數論中的一次同餘式解法)和「正負開方術」(數字高次方程的求正根法)等都有深入的研究。《數書九章》中給出的計算多項式函數值的方法,其依據是加法對乘法的分配律,把多項九露式的運算分解為一次因式的乘法和加法運算,後人稱之為「秦九韶算法」。
  • 來認識一下傳說中的最小二乘法
    最小二乘法在三坐標測量時常常被提起,那什麼是最小二乘法呢?它具備什麼樣的特點?根據標準,哪些要求必須採用最小二乘法呢?
  • 什麼是大數法則
    概率論歷史上第一個極限定理是著名瑞士數學家伯努利提出來的,後人稱為大數定律或大數法則。在隨機事件的大量重複出現中,往往呈現幾乎必然性的規律。
  • 矩陣乘法的通俗理解
    菜市場一,方法一 的花費:20 X 2+ 5 X 1 = 45             2)菜市場一,方法二的花費:20 x 1 + 5 x 4 =  40             3)菜市場二、方法一的花費:15 x 2+ 10 x 1 = 40              4)菜市場二、方法二的花費:15 x 1 + 10 x 4 =55【數學家思考
  • 為什麼數學家對質數如此著魔?
    這不僅僅只是個猜測:在1801年,德國著名數學家卡爾·高斯(Carl Gauss)給這個「算術基本定理」作出了證明(雖然似乎古希臘數學家歐幾裡得在2000年前可能就已作出證明)。除了它們的基本性質,質數看似正確但卻無法證明的性質吊足了數學家的胃口。
  • 細數那些改變計算技術的偉大算法
    為了找到一種最高效的二進位編碼,哈弗曼在1951年提出了根據字符頻率排序的二叉樹這樣的編碼方法。這種方法被證明,是最有效的編碼方法。由於這種方法簡單、高效,這種方法被用在很多的壓縮方法中比如:DEFLATE(PKZIP壓縮軟體中的算法),以及很多的多媒體編碼包括JPEG和MP3中。