矩陣的妙用一例
宿舍3哥們,小A,小B,小C都喜歡下片,在那個年代,網路上大部分片都是打包的。下完了就要解壓,一般解壓完了之後壓縮包就刪除掉了,免得佔空間。為了讓問題簡單點,我們假設解壓都是全部解壓出來的,而且解壓出來的檔案不會刪除。
問題:現在有一些統計資料,請你推測哪些片應該是同一個壓縮包的。
在3人電腦上統計的Film(簡寫為F)資料如下(0代表該電腦沒有這部片,1代表該電腦有這部片):
\ | F1 | F2 | F3 | F4 | F5 |
A | 0 | 1 | 1 | 1 |
0 |
B | 1 | 1 | 0 | 0 | 1 |
C | 1 | 0 | 1 | 1 | 1 |
同樣的道理,我們推測F3,F4應該是一個壓縮包裡的檔案,因為F3和F4同時出現在A,C的機器上且只出現在AC的機器上。
最後剩下F2,F2出現在A和B的機器上,但是A,B的機器上同時出現的檔案除了F2沒有其他檔案了。所以F2可能是一個孤立的檔案。
以上這個判斷過程,如果藉助矩陣,我們將更容易地判斷出來。過程如下:
我們首先把上面的0,1數值放到一個矩陣中,如下:
則A的轉置矩陣為:
將A的轉置矩陣乘以A得到結果為:
容易看出A的轉置矩陣乘以A得到的是一個對稱矩陣。
接下來我們求兩個檔案的相關性,我們這樣定義兩個檔案的相關性 P = ( S1、S2求交集 )/ ( S1、S2求並集)= (S1∩S2)/ (S1∪S2) = (S1∩S2)/ (S1+S2-S1∩S2)
其中檔案1出現在誰的電腦上的集合記為S1,檔案2出現在誰的電腦上的集合記為S2
上面式子中的S1、S2和S1∩S2其實我們都可以在 A的轉置矩陣乘以A得到的對稱矩陣(為了方便我們記做矩陣K
以求檔案1和檔案2的相關性為例:
S1 = 矩陣K的第1行第1列 = 2(表示檔案1在兩個人的電腦上存在,矩陣乘法中正好1*1=1)
S2 = 矩陣K的第2行第2列 = 2
S1∩S2 = 矩陣K的第1行第2列 = = 矩陣K的第2行第1列 (所以矩陣K必須是對稱矩陣)= 1 (表示檔案1和2都有的電腦只有一臺)
所以檔案1和2的相關性P = 1/(2+2-1) = 1/3
因為有5個檔案,所以共有C(5,2) = 10種組合。
這10種組合中,利用上面求相關性的公式:P = ( S1、S2求交集 )/ ( S1、S2求並集)= (S1∩S2)/ (S1∪S2) = (S1∩S2)/ (S1+S2-S1∩S2)
最後得到P(F1,F5) = (2) / (2+2-2) = 1
P(F3,F4) = (2) / (2+2-2) = 1
其他組合的相關性都達不到1。這與上面目測的結論一致。
(全文完)