本文的内容基于对《Benchmark graphs for testing community detection algorithms》一文的总结,该文章名翻译过来就是测试社区检测算法的基准图,作者是Andrea Lancichinetti, Santo Fortunato, and Filippo Radicchi,因此也叫做LFR算法。
该算法如题目表达的一样,是为了生成一个能够用于测试社区检测算法优劣的网络。听起来好像很绕,只要记住一点,他的目的就是生成一个网络,而这个网络要满足一定的需求。具体的需求是什么呢,请看下文~
1.问题提出
在谈这个算法之前,需要知道网络、社区的概念。
先说网络,提到这个词,我们最快的应该是想到互联网,更深一点,可能会想到人际关系网之类。拿一个学校的人际关系网来说,把我们每个人看成一个节点,我们和他人的关系看作一条边,然后用边将节点之间联系起来,就形成了全校学生的一个社交网络。
学校社交网络形成后,我们可以猜想,他会有什么特点呢?很容易就会想到一点,我们可能会和我们同院系、同班同学认识的比较多,而与其他学院的同学可能就认识的比较少了,那在社交网络上是不是就呈现几个连接很紧密的小团体?这种小团体我们在网络中就可以称为社区(Community),或者叫做社团。
社区是复杂网络这门学科中很重要的概念,挖掘复杂网络中的社团也成了一个很重要的课题。其应用也有很多,比如通过社交关系发现社区的存在,并对同个社区的人们投放类似的广告。再比如很多电商企业通过某些地区的一些社团关系和社区人们的一些喜好,在某些地区的仓库投放更多的该商品等。