跳转到内容

加法鏈

维基百科,自由的百科全书

數學中,加法鏈(英文:Addition chain)是由一組由自然數所組成的序列,該序列以 1 開始,到目標數字 結束,例如:,即為目標數字為 的加法鏈且序列中的每個數為序列出現過的兩數之和。而整個鏈所需要的加法次數則被稱作加法鏈的長度,通常記為 ,而 的值為數列內所包含的基數 (數學)數量再扣掉一[1],以前面的例子來說

範例

[编辑]

這裡有個簡單的例子: 就是一個目標數字 為 31 且 的加法鏈

加法鏈求冪的方法中就有使用到加法鏈的方法,而這個方法允許我們將目標數字 設定為某任意數 的指數,進而計算出該數的;舉例來說,我們現有一數 ,則我們可以將加法鏈的目標數字 設定為 ,進而計算出其對應的加法鏈。更具體的說,假設我們現需要計算一自然數 的冪,則可以擴展成求目標數字 的加法鏈的問題。就結果來說,總共就只需要計算七次乘法即可求出其冪,相較於不斷的連乘 所需的 次乘法以及平方求冪的 8 次乘法所需要的乘法次數要少:

計算加法鏈的方法

[编辑]

計算最小長度的加法鏈並非一件易事,我們可以將這個問題拓撲成:找到一組由一系列自然數所組成的序數,但很不幸地,這個問題是 NP完備[2]。目前已知的算法僅能在某些場合下以合理的時間或較小的記憶體使用量針對給定目標數字 計算相對較短的鏈,但計算出來鏈並不一定是最短的加法鏈[3]

一種廣為人知的計算相對較短加法鏈的算法是二進制方法,類似於平方求冪。在這種方法中,目標數字 的加法鏈是由以下方式計算出來的:

Step1. 先將目標數字 轉換至二進制
Step2. 初始化加法鏈,其
Step3. 從左至右依序讀取位數,若為 ,否則
Step4.
Step5. 從結果中去除

以下使用二進制方法計算目標數字為 26 的加法鏈範例:

先將目標數字 以二進制表示
初始化

開始從左而右讀取位數

至此我們得到了一序列為 。最後,去除 之後,我們就可得出目標數字為 以二進制方法所產生的加法鏈為

我們同樣可以使用被稱作因數法的方法來嘗試尋找最短加法鏈,其底層邏輯是目標數字 質因數分解。如果 有一個質因數,則可以先找到目標數字為 的加法鏈,接著與一個目標數字 的加法鏈串接,同時透過將序列內每個元素乘以 來重構該加法鏈,最終得到目標數字 的加法鏈。

而因數法和二進位方法可以結合成 Brauer 的 m 進位方法,其方法是透過隨機選擇一自然數 (無論是否能整除 ),先計算目標數字 的加法鏈,接著計算目標數字 的加法鏈,最後將兩加法鏈串接起來獲得目標數字為 的加法鏈,最後加上餘數來得到最終的結果。

正因為有新方法持續不斷的被提出,而成就了一系列被稱為滑動窗口方法的算法[3]

加法鏈的長度

[编辑]

為目標數字 的最小長度 ,則:

其中 是將 表示成二進制後的漢明權重[4]

可以在為目標數字 的加法鏈末尾加入一個新的值 ,從而將目標數字 的加法鏈轉換為目標數字 的加法鏈,從而得到不等式 ,然而目標數字 和目標數字 的加法鏈長度並非總是符合前述的不等式,在某些情況下,目標數字 是有可能可以透過某些方法獲得更短的加法鏈。如 Knuth 就觀察到 [5]。甚至可能出現目標數字 的加法鏈比目標數字 的加法鏈更短的狀況;目前已被找到符合 且最小的 發生在 [6],隨後是 ……(OEIS數列A230528)。

Brauer 鏈

[编辑]

Brauer 鏈也是一種加法鏈。Brauer數是指對於該目標數字而言,Brauer鏈產生出來的加法鏈是最短的[5]

Brauer 證明了 :

其中 表示目標數字 加法鍊的最短長度[7]

時,等式成立[8]。但 Hansen 表示,有些 的值使得 ,例如 ,其中 的最小值是

Scholz 猜想

[编辑]

Scholz 猜想(也被稱為 Scholz–BrauerBrauer–Scholz 猜想),以 Arnold Scholz 和 Alfred T. Brauer 的名子命名,是一個來自 1937 年的猜想,其猜想如下:

這個不等式對所有已知的 Hansen 數成立,Hansen 數是 Brauer 數的一種廣義定義;Neill Clift 曾使用計算機檢查了所有 的 Hansen數( 不是 Hansen 數)[6]。Neill Clift 也進一步驗證了當 時,[5]

查看更多

[编辑]

參考文獻

[编辑]
  1. ^ D. E. Knuth, The Art of Computer Programming, Vol 2, "Seminumerical Algorithms", Section 4.6.3, 3rd edition, 1997
  2. ^ Downey, Peter; Leong, Benton; Sethi, Ravi, Computing sequences with addition chains, SIAM Journal on Computing, 1981, 10 (3): 638–646, doi:10.1137/0210047 。備註:許多論文在指出為找到目標數字為 n 的最短加法鏈是 NP 完備的同時,引用了這篇論文,但該論文並未聲明或證明此結果。
  3. ^ 3.0 3.1 Otto, Martin, Brauer addition-subtraction chains (PDF), Diplomarbeit, University of Paderborn, 2001 [2013-10-19], (原始内容 (PDF)存档于2013-10-19) 
  4. ^ Schönhage, Arnoldauthorlink=Arnold Schönhage, A Lower Bound for the Length of Addition Chains, Theoretical Computer Science, 1975, 1 (1): 1–12, doi:10.1016/0304-3975(75)90008-0 
  5. ^ 5.0 5.1 5.2 Richard K. Guy. Unsolved Problems in Number Theory. Springer-Verlag. 2004. ISBN 978-0-387-20860-2. OCLC 54611248. Zbl 1058.11001.  Section C6, p.169.
  6. ^ 6.0 6.1 Clift, Neill Michael. Calculating optimal addition chains (PDF). Computing. 2011, 91 (3): 265–284. doi:10.1007/s00607-010-0118-8可免费查阅. 
  7. ^ Brauer, Alfred. On addition chains. Bulletin of the American Mathematical Society. 1939, 45 (10): 736–739. ISSN 0002-9904. MR 0000245. doi:10.1090/S0002-9904-1939-07068-7可免费查阅. 
  8. ^ Achim Flammenkamp, Shortest Addition Chains

外部連結

[编辑]