2010-09-19 76 views
1

什麼是一種算法,其與長度n計算兩個矢量之間的點積的時間和空間複雜?時間與空間矢量點積計算的複雜

+0

你的老師探查是一個點積是一個線性時間'O(N)'操作,其中n是兩個向量的長度。這假設你考慮乘法和加法作爲恆定時間操作。技術上'*'和'+'不是固定時間。如果要吹毛求疵,並與圖靈機的時間複雜度超精密,然後隨着數字的平均長度乘以和'了'隨着數字的平均長度被添加定義'M'。複雜度變爲:'爲O(n *(平方公尺1.465)+((N-1)*日誌的(a)))',其摺疊到:'O(N * M + N *日誌的(a))'。 – 2017-03-25 03:03:18

回答

7

如果2個載體是a = [a1, a2, ... , an]b = [b1, b2, ... , bn],然後

點積是通過a.b = a1 * b1 + a2 * b2 + ... + an * bn

給出爲了計算這一點,我們必須執行n乘法和加法(n-1)。 (我假設這是你所指的點積算法)。

假設乘法和加法是常數運算,因此時間複雜度爲O(n) + O(n) = O(n)

我們需要計算過程中唯一的輔助空間是拿「局部點積到目前爲止」和計算的最後一個產品,即ai * bi

假設我們可以在恆定空間中保存兩個值,因此空間複雜度爲O(1) + O(1) = O(1)

+0

謝謝。但我需要用n表示。所以時間複雜度將是n +(n-1)和空間2n? – 2010-09-19 01:15:24

+0

big-theta也隱藏常量(在這種情況下,O = big-Theta)。你的意思可能是*等值*。 – 2010-09-19 01:53:13

+0

@Alexandre C:我同意 - 在這種情況下,我提供了Big Theta。是不是暗示(雖然閱讀我的評論,這聽起來像),只是OP是否意識到這實際上是一個緊張的限制。 – Ani 2010-09-19 02:32:59