开始

u90_seg0 u90_seg1

准备工作

目标层级是否

小于当前层级?

u93_seg0 u93_seg1

是否还有未处理

的新节点?

结束

u96_seg0 u96_seg1
u97_seg0 u97_seg1

更新目标层级

的入口节点

u99_seg0 u99_seg1

u101_seg0 u101_seg1

找到每一层的邻居

并建立连接

u103_seg0 u103_seg1 u103_seg2 u103_seg3

u105_seg0 u105_seg1 u105_seg2 u105_seg3 u105_seg4 u105_seg5

开始

u107_seg0 u107_seg1

结束

u109_seg0 u109_seg1

u111_seg0 u111_seg1

更新目标层级的入口节点

是否到达

目标层级?

入口节点

邻居作为新的入口节点

u116_seg0 u116_seg1

遍历入口节点的所有邻居

邻居是否

更接近新节点?

u120_seg0 u120_seg1

u122_seg0 u122_seg1
u123_seg0 u123_seg1 u123_seg2 u123_seg3 u123_seg4

u125_seg0 u125_seg1 u125_seg2 u125_seg3 u125_seg4

开始

u128_seg0 u128_seg1

是否还有

未处理的层?

结束

u131_seg0 u131_seg1
u132_seg0 u132_seg1

u135_seg0 u135_seg1
u136_seg0 u136_seg1

找出本层中最多efConstruction个邻居

根据多样性检查以及本层最大邻居数量筛选节点

新节点连接邻居节点

u140_seg0 u140_seg1
u141_seg0 u141_seg1 u141_seg2 u141_seg3 u141_seg4 u141_seg5

邻居节点连接新节点

u143_seg0 u143_seg1

找到每一层的邻居并建立连接

开始

u147_seg0 u147_seg1

结束

u149_seg0 u149_seg1

入口节点添加

到候选邻居集合中

是否还有未处理

的候选邻居?

尝试将候选邻居的邻居添加到候选邻居集合中

u153_seg0 u153_seg1
u154_seg0 u154_seg1 u154_seg2 u154_seg3 u154_seg4

u156_seg0 u156_seg1

找出本层中最多efConstruction个邻居的流程图

两个节点的连接流程图

开始

源节点src的邻居数量

是否超过本层的上限?

目标节点dest

u164_seg0 u164_seg1

根据多样性检查筛选邻居

u167_seg0 u167_seg1
u168_seg0 u168_seg1
u169_seg0 u169_seg1

目标节点dest追加到neighbors中

u171_seg0 u171_seg1

结束

帅选后的所有邻居覆盖原有的邻居

u174_seg0 u174_seg1 u174_seg2
u175_seg0 u175_seg1