Show older comments
假如一个平面有400个点,他们之间可能连接或不连接,用逻辑矩阵A2(400x400)可以描述(A2(1, 2)=1表示点1和2连接)。然后这个平面和点被复制了30次(可以类比为复制成很多层),但是,点之间连接关系每层都是未必相同的。这样,连接关系矩阵可以用A3(400x400x30)表示。那么我们现在要找所有连接点的集合(簇或者聚类)。当然,在一层内,所有连接(包括间接)的点构成一个簇。如果层和层之间同一对点都是相连的,那么他们连接的两层的簇可以看成是同一个簇。比如A3(1,2,1)=1, A3(1,3,1)=1, A3(1,2,2)=1, A3(1,4,2)=1, 那么存在一个簇{(1, 1), (2, 1), (3, 1),(1, 2),(2, 2),(4, 2)}。如果进一步扩展到多维,比如A4(400x400x30x20)甚至更多呢?
请问有没有好一些的算法?实际数据中有连接的是少数,比如在一层内每个点的连接不会多于特定10个点。
我能想到的办法很麻烦:就是先把连接矩阵转化为400x1的细胞矩阵,例如A4,转化为A4c。每个细胞内是Nx30x20的值(N<=10,表示所有可能和A连接的点)。然后从第一个点开始循环+递归查找,每找一次就把找过的地方标记为0,直到全部元素归0。这样效率很低(三层循环20,30,400;循环内还要递归遍历)。头疼。
Accepted Answer
More Answers (0)
Categories
Find more on 层次聚类 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!