我試圖想出斯坦因算法(二進制GCD算法)的遞推關係,但是我通過它追蹤的能力證明不是從頭開始的。斯坦因算法的最壞情況輸入是什麼?
我完全被多重路徑和遞歸調用所困擾,以及我們正在處理的總位數代表我們的值而不是值本身。
這裏的算法:
stein(u, v):
if either of u or v are 0: return their sum.
if either of u or v are 1: return 1.
if both u and v are even: return 2 * stein(u/2, v/2)
if u is even and v is odd: return stein(u/2, v)
if u is odd and v is even: return stein(u, v/2)
if both u and v are odd: return stein(larger-smaller/2, smaller)
我試圖找到遞推關係T(n),其中n是同時代表u和v我覺得這裏的第一步所需的位的總數。對於我來說,應該在最糟糕的情況下發揮作用。
我認爲每個除法操作都會將位數減1,但這是我迄今瞭解最多的。
我試過跟蹤算法,但無濟於事。我還閱讀了Knuth Vol。的相關部分。 2但我認爲這有點超出了我理解的範圍,因爲它對我來說沒有意義。
2^n總是偶數。你想要像v'= v * 2 + 3 –
@ Jean-BernardPellerin我忽略了減法成本O(n)。有了這種觀察,這種情況肯定是最糟糕的,你是對的。 – Patrick87