2008年11月11日 星期二

線性代數在資訊領域之應用 -- 資料檢查碼 -- 產品通用碼

通用產品碼(UPC, Universal Product Code) 為許多種類商品被指定作為條碼的編碼。在商店櫃臺由雷射器掃瞄的黑白條紋係對應到一個長度 12 的十元向量 u=(u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, d)。 其中前 11 個分量即為一個 Z11,10 中的向量,提供了製造商與產品資訊;最後一個 分量 d 為一個檢查數位碼, 其使得 c‧u = 0 (在 Z10 中,兩個向量點積(dot product)為「零」) ,其中的檢查向量 c 為 (3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1)。


意即,在重編後,

3(u1 + u3 + u5 + u7 + u9 + u11) + (u2 + u4 + u6 + u8 + u10 + d) = 0

其中 d 為檢查碼。換句話說,選擇的檢查數使此算式的左手邊為一個 10 的倍數。

如圖所顯示的 UPC,我們可確定檢查碼為 6, 在 Z10中的計算為

c‧u
= 3‧0 + 1‧7 + 3‧4 + 1‧9 + 3‧2 + 1‧7 + 3‧0 + 1‧2 + 3‧0 + 1‧9 + 3‧4 + 1‧d
= 3(0 + 4 + 2 + 0 + 0 + 4) + (7 + 9 + 7 + 2 + 9 + d)
= 3(0) + 4 + d
= 4 + d

檢查數必須為 6 以使得在 Z10 中的計算結果為「零」。
(也就是說要考慮此例檢查碼的方式是選取使 c‧u 為 10 的倍數之檢查碼。)

沒有留言: