哈工大2020秋算法设计与分析大作业(一)


哈工大2020秋算法设计与分析大作业(二)

前言

本课程以前是考试课,在我们这一届变成了考察课。2020秋季学期情况比较特殊,由于疫情原因提前放假,所以期末考试也相应提前,最后因为时间太紧,老师取消了这门课的期末考试,采取阅读论文提交报告的形式,占期末分数的100%。正常情况下大作业40%,期末考试60%。本人期末得分95,教学班排名第三。

在这里插入图片描述
放出当时的大作业要求:
在这里插入图片描述
教师收作业后会有查重,请勿抄袭。

正文

1 论文题目

标题

Effective and Efficient Community Search over Large Heterogeneous Information Networks

作者

Yixiang Fang, Yixing Yang, Wenjie Zhang, Xuemin Lin, Xin Cao University of New South Wales, Australia
yixiang.fang@unsw.edu.au, yixing.yang@unsw.edu.au
wenjie.zhang@unsw.edu.au, lxue@cse.unsw.edu.au, xin.cao@unsw.edu.au

刊物

2020年2月VLDB(第13卷,第6期)
http://dl-acm-org-s.ivpn.hit.edu.cn:1080/doi/10.14778/3380750.3380756

2 论文阅读报告

2.1 摘要

最近,社区搜索(CS)相关的话题得到了广泛的关注。给定查询顶点,CS将搜索包含该值的密集子图。现有的研究主要侧重于搜索同一类型的同质图形,不能直接应用于由多图形、互联对象(如书目网络和知识图)组成的异构信息网络(HIN)。本文对大型HIN的社区搜索问题进行研究;也就是说,给定一个查询顶点q,从包含q的HIN中查找一个社区,其中所有顶点都具有相同类型的q并且具有密切的联系。
  为了对同一类型的两个顶点之间的关系进行建模,我们采用众所周知的元路径概念,它是在不同类型顶点之间定义的一系列关系。然后,我们使用元路径扩展经典的最低度量值,从而衡量社区的凝聚力。我们还提出了使用这些凝聚力指标查找社区的高效查询算法。我们对五个真正的大型HIN进行了广泛的实验,结果表明,我们提出的解决方案对搜索社区是有效的。此外,它们比基线解决方案快得多。

2.2 问题定义

  1. 准备工作
    我们在表3中总结了本文中常用的符号:
    在这里插入图片描述
  • 定义1. HIN . HIN是有向图G =(V,E),它具有顶点型映射函数ψ:V→A和边型映射函数φ:E→R,其中每个顶点v∈V所属对于一个顶点类型ψ(v)∈A,每边e∈E都属于边型(也称关系)φ(e)∈R。
  • 定义2. HIN模式 . 给定一个HIN图G =(V,E)有着对于ψ:V→A和φ:E→R的映射,其模式为TG,是定义在顶点类型A和边类型R上的有向图,即TG =(A,R)。HIN模式描述了顶点之间所有允许的边类型,每个边类型可以描述一对一,一对多,或者多对多的关系。图1(b)显示了DBLP网络的模式,其中标记为“A”、“P”、“V”和“T”的顶点分别表示作者、论文、地点和主题。请注意,如果顶点类型A到顶点类型B之间有一条边R,则边R^(−1)从B到A自然存在。
  • 定义3. 元路径 . 元路径P是在HIN模式TG =(A,R)上定义的路径,并且表示为在这里插入图片描述
    模式,式中,l是P的长度,Ai∈A,Ri∈R(1≤i≤l)。
      
      如果同一对顶点类型之间不存在多条边,我们还使用顶点类型名称来表示元路径,即P =(A1A2···Al+1)。如果P’是TG中P的反向路径,我们称之为元路径P的反向元路径,并用P(−1)表示。如果P与P(−1)相同,我们就称P是对称的。例如,元路径P1(图2(a))可以写成P1=(APA)。因为它的反向元路径仍然是P1,所以它是对称元路径。
      我们称顶点a1和al+1之间的路径p=a1→a2····→al+1为P的路径实例,如果对于∀i,顶点ai和边ei=(ai,ai+1)满足ψ(ai)=Ai和φ(ei)=Ri。例如,在图1(a)中,路径a1→p1→a2是P1的路径实例。在这里,我们使用小写字母(如a1)表示HIN中的顶点,使用大写字母(如A)表示顶点类型。我们说一个顶点u是一个顶点v的P-近邻,当它们可以通过P的一个实例连接。如果存在一个从u到v的顶点链,使得任何顶点都是链中相邻顶点的P-近邻,我们说两个顶点u和v是P-连通的。
    在这里插入图片描述
      为了描述社区的凝聚力,现有的研究成果经常使用k核。给定一个齐次图H和一个整数k(k>0),k核是H的最大子图,用Hk表示,使得每个顶点在Hk内都有k次或更多次。例如,在图2(a)中,1核、2核和3核包含顶点{a1,···,a5}。
    在这里插入图片描述
  1. 问题定义
      本文的目的是从一个包含查询顶点q的HIN中寻找一个社区,其中所有的顶点都是ψ(q)型的,也称为目标型。从概念上讲,社区中的顶点应该紧密相连。为了将顶点和目标类型连接起来,我们采用了一个对称的元路径P,其起始和结束类型都是目标类型。为了刻画内聚性,我们通过引入对称元路径P将经典的k-核扩展为(k,P)-核。注意,本文后面提到的所有元路径都是对称的;对于非对称元路径,我们可以用类似的方式扩展有向图的核模型。
      设P是连接两个顶点和目标类型的元路径。给定一个顶点v和一个目标类型的顶点集S,我们定义α(v,S),称为基本度或b度,作为v在集S内的P-近邻的个数。基于b度的概念,我们介绍基本(k,P)-核模型。
  • 定义4. 基本(k,P)-核 . 给定一个HIN G和一个整数k,G的基本(k,P)-核是P连通顶点的极大集Bk,p ,s.t.∀v∈Bk,p ,α(v,Bk,p)≥k,其中Bk,p的顶点是P连通的类型。
      
      综上所述,由于许多路径实例可能共享相同的边,因此基本(k,P)核可以包含在核中弱接合的顶点。为了解决这个问题,我们开发了新的基于不相交路径的核心模型。具体地说,考虑一个具有目标类型的顶点v,设Ψ[v]是P的一组从v开始的路径实例。我们说Ψ[v]是一组边不相交的路径,如果对于任意两个路径实例p1,p2∈Ψ[v],它们的第i条(1≤i≤l)边是不同的,第(l+1)个顶点是不同的。同样地,我们说Ψ[v]是一组顶点不相交的路径,如果对于任意两个路径实例p1,p2∈Ψ[v],它们的第i个(2≤i≤l+1)顶点是不同的。请注意,两条边或顶点不相交的路径可能共享相同的边或顶点,这些边或顶点将位于这两条路径的不同位置。
      一个顶点通常包含在多组边不相交或顶点不相交的路径中。在本文中,我们考虑最大集,并用β(v,S)(resp.,γ(v,S))表示从顶点v开始到集S顶点的边不相交(resp.,顶点不相交)路径实例的最大数目。为了简单起见,我们称β(v,S)(resp.,γ(v,S))为v的e阶(resp.,v阶)。在图1(a)中,设v=a1和S={a1,·······,a6}。如果P=(APA),则β(a1,S)=γ(a1,S)=3,其中边和顶点不相交路径的最大集合如图3(a)所示。类似地,如果P=(APTPA),那么我们有β(a1,S)=3和γ(a1,S)=1。
    在这里插入图片描述
  • 定义5. 边不相交(k,P)-核。给定一个HIN G和一个整数k,G的边不相交(k,P)-核是P-连通顶点s.t. ∀v∈Ek,p ,β(v,Ek,p)≥k的极大集,其中Ek,p的顶点是由P连接的类型。
  • 定义6. 顶点不相交(k,P)-核。给定一个HIN G和一个整数k,G的顶点不相交(k,P)-核是P-连通顶点s.t. v∈Vk,p ,γ(v,Vk,p)≥k的极大集,其中Vk,p的顶点是由P连接的类型。
      
      在没有歧义的上下文中,我们把Bk,p,Ek,p和Vk,p分别写成Bk,Ek和Vk。我们说一个顶点v有一个核数k,如果它是最大的k,那么有一个对应的(k,P)-核包含v。换句话说,(k,P)-核的每个顶点必须有一个对应的核数k或更多。
      例1。考虑图1(a),让P =(APA)。对于基本(k,P)-核,Bk={a1,···,a5},其中1≤k≤3。对于边点(k,P)-核,E1={a1,···,a5},E2=E3={a1,a2,a3,a4}。对于顶点不相交(k,P)-核,Vk=Ek,其中1≤k≤3。没有B4、E4或V4。我们以作者a5为例来说明核心数字。在基本核模型、边不相交核模型和顶点不相交核模型下,其核数分别为3、1和1。
      
    现在我们正式介绍CSH问题如下。
  • 问题1。给定一个HING G、一个查询顶点q、一个对称元路径P、一个整数k(k>0)和一个特定的(k,P)-核模型,返回包含q的相应(k,P)-核。
      
      在例1中,设q=a1,P=(APA),k=3。如果我们指定基本(k,P)-核作为社区模型,我们得到一个社区B3;如果采用边和顶点不相交(k,P)-核,我们可以分别得到社区E3和V3。显然,由于任何(k,P)-核都是P-连通顶点的极大集,因此该社区满足结构极大性和连通性的性质。

2.3 算法或证明过程

在这一节中,我们将为CSH问题开发有效的算法。特别地,对于每个核心模型,我们开发了一个基本算法和一个高级算法。虽然基本算法简单明了,但正如我们的实验所示,它们不如高级算法有效。我们在表4中总结了所有高级算法,其中越多意味着更高的内聚性,ni是P中第i个顶点类型的顶点数,di,i+1是与P中第i个顶点类型的顶点相连的(i+1)个顶点类型的最大顶点数,σ2<n1^2,c≤4。显然,查询Bk所花费的时间最少,而计算Vk所花费的时间最多。另一方面,Ek往往比Bk更具内聚性,因为在Ek中,移除任何(k–1)边后,每个顶点仍然参与到社区中。另外,Vk比Ek更具内聚性,因为边不相交路径可能共享相同的顶点,而顶点不相交路径既不共享边也不共享顶点。总之,在结果的内聚性和查询效率之间存在一种折衷,即在大多数情况下,更内聚的核心需要更高的时间和计算成本。我们注意到,在某些极端情况下(例如酵母PPI网络),HIN只是由大星星组成,每个顶点都是相连的。对于只有一条或两条边和顶点不相交的路径,边和顶点不相交的核心模型可能无法实现更高的内聚性。
  我们后来的实验还表明,对于中等和较大的图,最好采用Ek或Vk,因为计算它们在合理的时间开销内获得了很好的质量;而如果目标类型的顶点数非常大,Bk应该是一个更好的选择,因为它的计算速度比其他方法快。
在这里插入图片描述

  1. 基本(k,P)核算法
      一个基本算法是先构造一个诱导齐次图GP,然后从GP中返回包含q的连通k核。具体来说,它包括三个步骤:(1)收集目标类型的所有顶点的集合;(2)对于每个顶点v∈S,枚举从v开始的P的所有路径实例的集合Ψ[v],并使用Ψ[v]在v与其每个P-邻域之间添加一条边;(3)找到包含q的连通k-核。然而,该算法对于大HINs上的长元路径由于在步骤(2)中,Ψ[v]的大小可能是指数大的,即O(n^l),其中n是P中顶点类型的最大顶点数,l是P的长度。为了加快步骤(2),我们提出了一种批量搜索策略。我们没有枚举所有的路径实例,而是将P分解为一个边列表,并以批量处理的方式为每个边找到匹配的顶点。我们称改进的算法为HomBCore,如算法1所示。我们首先找到S(第1行)。然后,对于每个顶点v(第2-3行),我们初始化一个集合X,通过批量查找与P的每个边匹配的顶点(第4-9行)来获取其P-邻居。最后,我们从GP(第10-12行)计算Bk。
    在这里插入图片描述
  • 引理1. HomBCore的总时间成本为
    在这里插入图片描述
  1. 改进后的(k,P)核算法
      HomBCore的主要局限性在于它必须为目标类型的所有顶点建立一个诱导齐次图GP。然而,这是昂贵和不必要的,因为(1)并非所有具有目标类型的顶点都P-连接到q;(2)它为每个具有目标类型的顶点找到所有P-邻居。为了解决这两个问题,我们提出了两种标签策略,即带标签的批量搜索和带标签的深度优先搜索。
      在这里插入图片描述
     
      带标签的批量搜索(BSL)。BSL策略是基于HomBCore中的批搜索算法,但带有标签。例如,在图1(a)中,让q=a1和P=(APA)。通过使用BSL,我们将找到五位作者{a1,···,a5}。注意,作者a6被排除在外,因为它不是P连接到a1的。算法2(第1-11行)给出了BSL的详细步骤。具体地说,我们首先使用批搜索找到q的P-邻域集。在这个过程中,每当我们发现一条边(v,u)与P的第i条边匹配时,如果它没有标号i,我们就给它加上标号i并把u加到Y上;如果它有标号i,我们就直接跳过它。请注意,最初,边没有标签。在找到Y之后,我们在下一次迭代中找到新的顶点,它们是Y中顶点的P-邻居。重复此过程,直到所有顶点都被标记。很明显,当我们使用标签时,每一条边都是以恒定的时间访问的。因此,寻找一组P-连接到q的顶点需要线性时间开销,该时间开销以
      在这里插入图片描述
    为界。
      带标签的深度优先搜索(DSL)。根据定义,Bk只要求其每个顶点至少有k个P-近邻。同时,如现有的CS研究所示,k通常不是很大。基于这种观察,我们建议动态地为每个顶点保持k个P-邻域。具体来说,我们首先为每个顶点找到最多k个P-邻域,然后迭代删除不满足k约束的顶点。由于删除顶点v将删除v的P-邻域顶点的P-邻域,因此我们需要为v的P-邻域增量提供新的P-邻域。为了逐步找到这些P-邻居,我们提出了DSL策略。具体地说,在使用深度优先搜索找到路径p之后,我们检查p的每个顶点,并将其标记为“已访问”,前提是之前已经考虑了它的所有邻居。例如,考虑图4中v=a1和P=(APTPA)的HIN。在找到路径a1→p1→t1→p4→a2和路径1→p1→t1→p4→a3之后,我们将把a2、a3和p4标记为已访问。在查找剩余路径时,将不考虑这些标记的顶点。这样可以确保每次访问每个边的次数不变。因此,对于每个顶点,枚举其所有路径实例需要时间。
      首先,我们使用BSL策略来寻找一组P-连接到q的所有顶点(第1-11行)。然后,它为
      在这里插入图片描述
      每个顶点找到最多k个路径实例,并将没有k个路径的顶点收集到队列Q中(第12-14行)。然后,它迭代地从Q中删除顶点v,检查每个P-近邻u,删除从u到v的路径,尝试找到一条从u开始到S中某个顶点结束的新路径,如果存在,则将其添加到Ψ[u];否则,将v添加到Q(第15-24行)。在循环之后,S中的每个顶点都有k个P-邻居。
      注意,由于每个顶点只找到k个P-邻域,因此我们无法使用这些P-邻域找到P-连通的最大顶点集。例如,在图1(a)中,设q=a1,k=2,P=(APTPA)。在为每个顶点找到两个P-邻域之后,我们可以得到两个断开的组件,如图5所示,其中每个边表示一个路径实例。为了解决这个问题,我们重新使用BSL策略来寻找S和P-连接到q的顶点的最大集合Bk,在此过程中,所有具有目标类型的顶点都被限制在S中。
  • 引理2. FastBCore的总时间成本为
    在这里插入图片描述
  1. 边不相交(k,P)-核算法
    (1)一种基于延迟剥离的算法
      受k核计算的剥离范式的启发,我们提出了一种通过迭代删除β(v,S)值小于k的顶点来计算Ek的算法,其中S最初包含所有具有目标类型的顶点。删除顶点v后,我们需要减少β(u,S),其中u是v的P-近邻。然而,减少β(u,S)的步骤是不平凡的,因为它可能保持不变。例如,考虑图6(a)中的HIN,v=a1,S={a1,a2,a3}。首先,我们得到β(a1,S)=1。去掉a2或a3后,β(a1,S)=1。为了解决这一问题,一种简单的方法是通过精确计算v的每个P-近邻u的β(u,S)。然而,这是非常昂贵的,因为P-邻居的数量是巨大的,并且运行精确也是昂贵的。为了缓解这一问题,我们提出了一种延迟剥离策略,通过一个关键的观察来尽可能延迟精确的运行-在去除v之后,β(u,S)最多减少1。具体地说,对于每个顶点v∈S,我们首先使用贪婪算法计算一个近似β(v,S)。然后,我们维护一个队列来保持当前β(v,S)值小于k的顶点。每当我们将顶点v出列时,我们使用exact计算β(v,S)的精确值。然后,如果β(v,S)<k,我们去掉它,直接对每个P-近邻u减少β(u,S)1。如果更新后的β(u,S)<k,则将其添加到队列中。换句话说,我们并不精确地更新β(u,S),而是保持β(v,S)的下限。这将推迟精确运行,直到β(u,S)<k。
    在这里插入图片描述
      基于以上讨论,我们开发了一个算法,用LazyECore表示,如算法3所示。首先,根据定理1,由于Ek⊆Bk,它计算Bk(第1行)。然后,它初始化队列Q和数组b[],以保持β(v,S)(第2行)。接下来,它使用贪心法计算β(v,S),如果β(v,S)<k(第3-5行),则收集v。在循环(第6-18行)中,它逐个删除顶点。具体地说,它首先将顶点v出列。如果b[v]<kl,v可以直接由推论1(第9-10行)移除;否则,它调用xact(第11-13行)。如果v可以被删除,它更新S,对于每个P-邻居u,将β(u,S)减少1,并且如果b[u]<k,则将u加到Q中(第14-18行)。最后,返回Ek(第19行)。
  • 推论1. 给定一个HIN,一个顶点v和一组目标类型的顶点S,如果贪心算法最多不能找到kl路径实例,则得到β(v,S)<k。
  • 引理4. LazyECore在
    在这里插入图片描述
    时间内完成,其中σ1(σ1<n1^2)是调用Exact的总次数。
     
    (2) 一种基于批量剥离的算法
    在这一节中,我们开发了另一个算法,它借用了FastBCore的思想,并以批处理的方式删除了核心数小于k的顶点。我们用BatchECore表示它。回想一下,FastBCore按顺序删除不在Bk中的顶点,在此期间,我们动态地为每个顶点维护一组k路径实例。由于贪心算法能够增量地找到边不相交的路径实例,因此我们还可以动态地为每个顶点维护一组k条边不相交的路径。此外,本文提出了一种批量剥离策略,以代替逐点剥离。具体地说,每当我们找到一组不在Ek中的顶点时,我们移除它的所有顶点,并以一种集体的方式更新它们的P-邻域的β(v,S)值。与逐个剥离相比,它节省了大量计算成本,因为对于β(v,S)值接近k的顶点,经常调用Exact。请注意,批剥离不能用于LazyECore,因为在调用Exact之前,它无法确定是否删除顶点。对于HomBCore,批剥离也不能提高效率,因为移除顶点v后,它会枚举v的P-邻域,并在需要时提供新的路径实例,因此我们不在HomBCore中使用批剥离。算法4给出了BatchECore。首先,它收集所有通过BSL P连接到q的顶点,并初始化一个集合T和一个数组Ψ[](第1-2行)。然后,对于每个顶点v∈S,通过贪心(第3-4行)找到一组至多k条边不相交的路径Ψ[v]。根据推论1,如果|Ψ[v]|<kl,它把v放入T,因为它可以被移除(第5-6行);如果|Ψ[v]|<k,它调用Exact,如果它可以被移除,它把它放入T(第7-9行)。接下来,在循环中(第10-20行),它删除T中的所有顶点,如果需要,为它们的P-邻居提供新的路径实例,并找到一个新的集合T.重复分批剥离,直到不能去除顶点。最后,它返回Ek(第21行)。在这里插入图片描述
  • 引理5. BatchECore在
    在这里插入图片描述
    时间内完成,其中σ1(σ1<n1^2)是调用Exact的总次数。
  1. 顶点不相交(k,P)-核算法
      在本节中,我们重点讨论计算Vk。与Ek类似,我们不能直接从诱导齐次图中计算Vk,因此我们必须迭代地移除没有足够顶点不相交路径的顶点。接下来,我们首先讨论如何计算γ(v,S),然后说明计算Ek的算法可以很容易地适用于计算Vk。为了计算γ(v,S),我们扩展了精确算法和贪婪近似算法。对于Exact,我们通过在Exact中稍微修改流网络来构建一个新的流网络。具体地说,在EBuilder建立了一个流网络F=(VF,EF)之后,对于源顶点和汇顶点之间的每个中间顶点g∈F,我们把它分成两个顶点,比如g+和g-,这样g的边连接到g+,g-连接到外边,g+与g-相连,其容量设置为1。用VBuilder表示这种流网的构造方法。很容易观察到γ(v,S)等于修正网络中最大流量的容量。
    在这里插入图片描述
      我们用例子5来说明这一点。重新考虑示例3,其中EBuilder构建的流网络如图7(b)所示。通过VBuilder,我们可以得到一个新的流动网络,如图8所示,γ(a1,S)=3。回想一下贪婪迭代地寻找P的路径实例,在找到路径实例P之后,它移除P的所有边。为了计算γ(v,S),我们可以遵循相同的步骤,但是将移除所有边的步骤替换为移除所有顶点。显然,该算法仍能达到1/l的近似比。
      为了计算Vk,我们扩展了LazyECore和BatchECore,将计算β(v,S)的步骤简单地替换为计算γ(v,S)。我们分别用LazyVCore和BatchVCore表示扩展算法。不难看出,它们的时间复杂度最多分别是LazyECore和BatchECore的c(c≤4)倍,因为VBuilder构建的流动网络最多是EBuilder的两倍,精确需要O(| EF | ^2/l)时间。
    在这里插入图片描述
  2. 基于索引的算法
      为了建立核心索引,我们为每个元路径P∈∧创建一个graphHP,然后连接HP的邻接列表。算法5给出了步骤。我们首先计算每个顶点的核数,也称为核分解,并得到顶点列表(按核数降序排列)(第3-4行)。然后,对于每个顶点v’,我们创建一个节点v。然后,我们找到一组v’的P近邻,对于每个顶点U’,如果没有从节点v到节点U的路径,我们创建一条边(v,U)(第4-9行)。注意,为了检查节点之间的连接,我们使用标准的union-find数据结构,其中MAKESET创建一个节点,find查找一个节点的根,union使两个节点具有相同的根。上述索引构建方法依赖于核心分解的关键步骤(第3行)。为此,我们在第3节中扩展了在线算法。对于核心模型下的特定元路径P,我们递增地计算所有(k,P)-核心,其中k从0增加到其最大值。注意,一旦我们计算了所有的(k,P)-核,我们就可以通过利用它们的嵌套关系从这些(k,P)-核计算(k+1,P)-核。
    在这里插入图片描述
  • 引理7. 给定一组∧元路径和一个核模型,算法5取
    在这里插入图片描述时间,其中Δi是Pi的核分解代价,ti是由Pi连接的类型的顶点数,di是第i个顶点类型的最大P邻域数,α(ti)是逆阿克曼函数(小于5)对于ti的所有实际值)。
  • 证明. 给定一个元路径Pi,调用FIND,UNION,MAKESET函数最多需要O(α(ti))时间。对于每对Pi连通顶点,我们只调用FIND和UNION常数倍,所以需要O(ti·di·α(ti)),引理7成立。

2.4 实验结论

  1. 在线算法。图15显示了通过改变k得到的在线算法的效率结果。如图15(a)-15(e)所示,FastBCore始终比HomBCore快,因为对于具有目标类型的每个顶点,HomBCore会找到它的所有p近邻,而FastBCore只找到其中的一小部分。同时,k越大,FastBCore的运行时间越长,因为k越大意味着找到更多的P-邻居。HomBCore的运行时间几乎保持稳定,因为主要开销来自于构造齐次图。从图15(f)-15(j)中,我们可以看到BatchECore始终比LazyECore快。这是因为在BatchECore中调用Exact的总次数通常比在LazyECore中小得多,即σ2<σ1。例如,在正方形上,σ1平均大于σ2一个数量级。同时,随着k值的增加,BatchECore的运行时间略有增加,LazyECore的运行时间略有减少。这是因为随着k变大,BatchECore需要为目标类型的顶点找到更多的路径实例,而LazyVECore也需要找到更多的路径实例,但运行精确计算β(v,S)的成本更低,使得总时间变得更小。
    在这里插入图片描述
    在这里插入图片描述
      同样,对于Vk,我们可以观察到这样的趋势。此外,很容易观察到查询Bk花费的时间最少,而计算Vk花费的时间最多。主要原因是计算k顶点不相交路径比寻找不需要满足这种约束的k条路径要昂贵。
  2. 可扩展性测试。对于每个数据集,我们随机选择20%、40%、60%、80%和100%的顶点,分别得到由这些顶点诱导的五个子图。然后,我们对每个核心模型使用高级算法运行在线CSH查询,并在图16中报告效率结果。我们可以看到,通常情况下,它们会随着顶点的数量而扩展。此外,它们的性能趋势与前面讨论的类似。
    在这里插入图片描述
  3. 核心分解。每个在线查询算法都可以扩展为核心分解。然而,对于基本core模型,FastBCore和HomBCore都需要找到每个顶点的所有P-邻域,而FastBCore需要额外的代价来动态维护k个P-邻域,因此HomBCore是一个更好的选择,我们跳过了FastBCore。对于每个数据集,我们使用这五种算法,并在图17中报告每个元路径的核心分解的平均时间开销。显然,分解Bk需要最少的时间成本,因为它的核心模型比其他模型简单。BatchECore在分解Ek方面始终比LazyBCore快,同样,BatchVCore也比LazyBCore快。另一个有趣的观察是,在几乎所有的数据集上,Vk可以比Ek更有效地分解(使用它们更快的算法,即BatchECore和BatchVCore)。这主要是因为这两种方法都是从k=0开始逐步分解核心,但Vk的最大核心数小于Ek的最大核心数,所以BatchVCore在核心分解上花费的时间较少。
    在这里插入图片描述
  4. 指标建设。为了构建CoreIndex,我们对三个核心模型HomBCore、BatchECore和BatchVCore使用了更快的核心分解算法。对于每个数据集,我们考虑表5中的所有元路径,并在图18中报告效率结果。一般来说,构造索引的时间开销与核心分解的时间开销是一致的,即为Bk构造corefindex所花费的时间开销最小,Vk的时间开销小于Ek。原因是,给定每个顶点的核心数,构建核心索引的压缩图几乎需要线性时间开销。
    在这里插入图片描述
  5. 基于索引的查询。图19显示了基于索引的查询的效率结果。显然,基于索引的查询算法比在线查询算法快3到5个数量级,因为它们需要最佳的查询时间开销。另外,查询Vk最快,查询Ek比查询Bk快,因为定理1中|Vk|≤|Ek|≤|Vk|。
    在这里插入图片描述
      本文研究了CSH问题,其目的是寻找HIN中查询顶点的社区。对具有相同类型顶点的社区建立凝聚力模型,采用著名的元路径概念并提出了三种核心通过合并元路径进行建模。对于每个核心模型,我们开发高效的在线查询算法。此外,我们还开发了一个压缩索引结构,进一步提高查询效率。我们的实验结果表明,所提出的方法在大型HIN上搜索社区是很有效的。
  • 11
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 哈工大(哈尔滨工业大学)是中国著名的工科大学之一,以其在工程学和计算机科学领域的强大实力而闻名。在算法设计与分析方面,哈工大在教育和研究方面都取得了显著的成就。 在教育方面,哈工大为学生提供了全面的算法设计与分析课程。学生可以学习到基本的算法原理和设计方法,如贪心算法、动态规划、分治法等。同时,课程还注重培养学生的分析和优化能力,通过大量的编程实践和项目,让学生在实际问题中应用所学算法解决难题。通过系统的学习,学生能够掌握算法设计的基本思想和方法,并能够灵活应用于实际项目中。 在研究方面,哈工大算法设计与分析领域有着一支优秀的教师和研究团队。他们致力于解决计算机科学中的复杂问题,如图像处理、数据挖掘、网络安全等。团队成员在各类国际学术会议和期刊上发表了大量高水平的论文,取得了许多突破性的研究成果。 此外,哈工大也积极推动学术交流与合作。学生和教师经常参加国内外学术会议,与国内外的研究者进行深入交流,拓宽视野。同时,学校还与许多国内外著名大学和研究机构合作开展科研项目,共同攻克科学难题,推动学科的发展。 总体来说,哈工大算法设计与分析在教育和研究方面都具有较高的水平。学校以其优秀的师资队伍、全面的课程设置和高水平的研究成果,为学生提供了良好的学习和发展平台,培养了一大批在算法领域有深度研究和创新能力的人才。 ### 回答2: 哈工大算法设计与分析CSDN是一个与哈尔滨工业大学(简称哈工大)相关的专门讨论算法设计与分析问题的知识共享网站,其是由哈工大计算机科学与技术学院和CSDN合作开发的。 在这个CSDN网站上,用户可以找到与算法设计与分析相关的各种学术论文、教学视频、经验分享等资源。这些资源可以帮助学习者深入了解算法设计与分析的相关理论知识,提高算法设计与分析能力。 哈工大作为一个著名的高校,拥有强大的计算机科学与技术学院,其在算法设计与分析方面的研究也具有很高的声誉。因此,通过与哈工大合作的CSDN网站,用户可以获取到来自哈工大的专家学者们的研究成果和经验。这些专家学者们在算法设计与分析领域的丰富经验和深厚知识可以为用户提供有价值的指导与帮助。 总之,哈工大算法设计与分析CSDN是一个能让用户获取到哈尔滨工业大学相关专家学者的研究成果和经验,从而提升自己在算法设计与分析领域能力的专门知识共享网站。 ### 回答3: 哈尔滨工业大学(简称哈工大)是国内一所知名的综合性大学,拥有广泛的学科覆盖范围以及强大的学术实力。算法设计与分析哈工大计算机科学与技术专业中的一门核心课程。这门课程旨在教授学生如何设计高效的算法,以解决各种复杂的计算问题。 在算法设计与分析课程中,学生将学习到各种经典的算法思想和方法,如贪心算法、动态规划、分治法等。通过掌握这些基本算法思想,学生可以在解决实际问题时灵活运用,并优化算法的效率和性能。 此外,在课程中,学生还将学习到算法的正确性证明方法和复杂性分析技巧。通过这些学习,学生可以了解如何证明一个算法是正确的,并且可以估计算法所需要的时间和空间资源。这对于优化算法以及选择最佳算法具有重要意义。 在学习过程中,哈尔滨工业大学的学生可以充分利用CSND(CSDN)这个优秀的计算机技术社区。CSND是一个知识共享和交流的平台,许多计算机科学家、工程师和学生都在这里分享自己的技术经验和学习心得。学生可以通过参与CSND社区,向他人提问和讨论问题,拓宽自己的视野,加深对算法设计与分析的理解。 总体来说,哈工大算法设计与分析课程结合了理论与实践,旨在培养学生对算法设计和分析的敏感度和创造力。通过学习这门课程,并结合CSND等技术平台,学生可以在算法领域有更深入的研究和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值