论文:SCAN: A Structural Clustering Algorithm for Networks
该算法针对的是无向无权图
如图,节点0和节点5的邻居点集分别是{0,1,4,5}和{0,1,2,3,4,5},有4个共同的邻居,联系较大
节点9和节点13,邻居点集都是{9,13},2个共同邻居,联系不大
节点6惨兮兮,虽然位于中间,但是都与他联系不大
综上,6是桥节点(hub),13是离群点(outlier),其余点构成两个集群(应该能看出来)
概念:
1.节点相似度
节点相似度定义为两个节点共同邻居的数目与两个节点邻居数目的几何平均数的比值(这里的邻居均包含节点自身)。
2. ϵ - 邻居
节点的 ϵ - 邻居定义为 与其相似度不小于 ϵ 的邻居节点所组成的集合。
3.核节点
核节点是指 ϵ 邻居的数目大于 μ 的节点。
4.直接可达
节点 w 是核节点v的ϵ-邻居,那么称从 v 直接可达 w.
5.可达
节点 v 可达 w ,当且仅当存在一个节点链 v1,…,vn∈V,v1=v,vn=w,使得 vi+1 是 从vi 直接可达的
6.相连
若核节点u可达节点v和节点w,则称节点v和节点w相连.
7.相连聚类
如果一个非空子图C中的所有节点是相连的,并且C是满足可达的最大子图,那么称C是一个相连聚类
8.桥节点
与至少两个聚类相邻的孤立节点
9.离群点
只与一个聚类相邻或不与聚类相邻的孤立节点
10.引理1
如果 v 是一个核节点,那么从 v 可达的节点集是一个结构相连聚类
11.引理2
C是一个结构相连聚类, p 是 C 中的一个核节点。那么 C 等于从 p 结构可达的节点集。
具体算法:
首先,对每个未分配集群的节点,判断它是否为核节点
是核节点的话,扩展一个新聚类(得到一个新的集群号)
对于该核节点的ϵ -邻居中的每个节点,找其直接可达的节点
对于直接可达的节点,判断是否未分类或non-member
是的话,则分配到这个集群中
不是核节点,则标记为non-member
对于所有为non-member的节点
如果该节点连接两个不同的集群,则是hub
否则是outlier
End
参考博客:https://blog.csdn.net/DawnRanger/article/details/51108433