矩阵的妙用一例

宿舍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
当然,目测的话,我们会看到F1在B,C的机器上出现了(且只在BC的机器上出现),满足这一条件的还有F5,所以我们可以推测F1和F5应该是一个压缩包里面的文件。

同样的道理,我们推测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。这与上面目测的结论一致。


(全文完)


猜你喜欢

转载自blog.csdn.net/sun2043430/article/details/14108947