13、无结构网络中的本地搜索策略解析

无结构网络中的本地搜索策略解析

1. 引言

近年来,不同领域的网络研究揭示了一些共性。经典的随机网络模型,如 Erdős - Rényi 模型,不足以描述许多自然网络的拓扑结构。这些网络更适合用幂律或无标度链接分布来描述,在这种高度偏斜的分布中,节点具有 k 个链接的概率近似与 1/kτ 成正比。像万维网、互联网路由器骨干网、某些生物途径表示和一些社交网络等,都具有近似幂律分布。

除了网络拓扑结构的特征化,网络的增长、鲁棒性和动态性等问题也受到关注。例如,研究哪些图增长的动态模型倾向于生成幂律网络,以及它们对错误和攻击的鲁棒性。

“小世界”现象激发了许多网络研究。即使是非常大的网络,其直径(即节点间的平均最短路径长度)也很短。Milgram 的经典社会实验发现人们能通过短熟人链传递信息,即“六度分隔”现象。Watts 和 Strogatz 表明,在高度结构化和聚类的图中,少量长距离连接能显著减少节点间的平均最短路径长度。但问题是,参与者在没有全局图信息的情况下,如何利用本地信息找到这些短路径。

本地搜索问题不仅在社交网络中有趣,还与信息技术发展相关。互联网和万维网影响了传统社交网络的结构和动态,而社交网络的概念也有助于理解对等(p2p)文件共享网络等互联网技术。以 Gnutella 系统为例,它连接用户计算机直接共享文件,无中央协调点。在这种网络中,目标文件位置未知,需要通过节点间传递消息来查找。这些网络具有幂律度分布,需要高效的本地搜索算法来保证良好运行。

2. 幂律随机图中的搜索
2.1 直觉

本地搜索策略基于这样的直觉:连接在节点间分布不均,连接良好的节点能提供对网络更大部分的访问。对比具有相同节点和边数的标准随机图(泊松度分布)和幂律图的搜索过程,发现幂律图能利用本地信息更快速地搜索。

2.2 随机游走搜索

首先研究图上随机游走遇到的节点数量。设 G0(x) 为顶点度 k 分布的生成函数:
[G_0(x) = \sum_{0}^{\infty} p_k x^k]
对于幂律分布的图,其生成函数为:
[G_0(x) = c \sum_{1}^{m} k^{-\tau} x^k]
其中 c 是依赖于 m 和 τ 的归一化常数,满足 (G_0(1) = c \sum_{1}^{m} k^{-\tau} = 1)。

随机选择顶点的平均度为:
[z_1 = \langle k \rangle = \sum_{1}^{m} k p_k = G_0’(1)]
随机边到达顶点的度分布与随机选择顶点的度分布不同。随机游走中每一步遇到的新邻居数量由生成函数 (G_1(x) = \frac{G_0’(x)}{G_0’(1)}) 给出。

计算二阶邻居的分布,在大 N 极限下,二阶邻居连接到一阶邻居或彼此连接的概率可忽略。随机选择顶点的二阶邻居分布由 (G_0(G_1(x))) 确定,平均二阶邻居数量为 (z_{2A} = G_0’(1) G_1’(1));若顶点是通过随机边到达的,二阶邻居数量为 (z_{2B} = [G_1’(1)]^2)。

假设 2 < τ < 3,经过一系列计算和近似,当 (m \sim N^{1/\tau}) 时,(z_{2B} \sim N^{2(\frac{3}{\tau} - 1)}),搜索成本 (s \sim N^{3(1 - \frac{2}{\tau})});当 τ → 2 时,(z_{2B} \sim \frac{N}{\ln^2(N)}),(s \sim \ln^2(N))。

2.3 利用高度数节点的搜索

幂律网络中的随机游走自然倾向于高度数节点,但有意选择高度数节点能获得更好的缩放效果。当 τ 足够接近 2 时,可以大致沿着度数序列搜索。设 m - a 是扫描一定比例图所需访问的最后一个节点的度数,假设 a ≪ m。扫描的一阶邻居数量为 (z_{1D} \sim N a m^{1 - \tau}),步数约为 a,沿着度数序列时二阶邻居数量为 (z_{1D} * G_1’(1) \sim N a m^{2(2 - \tau)}),所需步数 (s \sim m^{2(\tau - 2)} \sim N^{2 - \frac{4}{\tau}})。

通过计算和数值积分,可以得到节点度数与最富有邻居期望度数的比值。对于一定范围的指数和节点度数,最富有邻居的期望度数高于节点本身,但随着节点度数增加,找到更高度数邻居的概率下降。因此,对于足够小的图或幂律指数接近 2(2.0 < τ < 2.3)的图,可以大致沿着度数序列进行搜索,这是最有效的顺序搜索方式。

3. 模拟

使用具有 τ = 2.1 幂律链接分布和简单截止 (m \sim N^{1/\tau}) 的随机网络进行模拟,以验证分析结果。图通过在预分配度数的节点间随机分配链接生成,对于 2 < τ < 3.48 的图,包含一个巨大连通分量(GCC),所有测量都在 GCC 上进行。

消息传递算法有几种变体:
1. 节点随机将消息传递给邻居,可选择避免已接收消息的节点。
2. 节点知道邻居的度数,选择将消息传递给邻居最多的节点。
3. 节点知道邻居的邻居信息,若可能,将消息传递给目标的邻居。

为避免消息传递给已接收消息的节点,消息需由接收节点签名。节点有三种状态:
- 白色:未访问。
- 灰色:已访问,但邻居未全部访问。
- 黑色:节点及其所有邻居都已访问。

比较随机游走和高度数寻求两种策略:
- 平均搜索时间的缩放效果不如分析结果理想,随机游走策略的缩放指数为 0.79,高度数策略为 0.70,而分析结果分别为 0.14 和 0.1。
- 覆盖一半图所需步数的缩放更接近理想情况,随机游走策略为 (N^{0.37}),高度数策略为 (N^{0.24}),分析结果分别为 (N^{0.15}) 和 (N^{0.1})。

部分节点搜索时间长是因为随机游走倾向于重新访问节点,高度数节点常被重新访问。高度数寻求的自回避游走有所改进,但仍无法避免回溯。

4. 与泊松分布图的比较

在泊松随机图中,任意两个节点间存在边的概率 p = z/N 对所有节点相同,生成函数 (G_0(x) = e^{z(x - 1)})。在这种特殊情况下,(G_0(x) = G_1(x)),节点的出边分布与到达方式无关,搜索分析简单。每一步遇到的新链接期望数量是常数 p,覆盖图的 c 部分所需步数 (s = cN/p)。若 p 随图大小增加保持不变,覆盖时间与图大小线性缩放。

模拟验证了随机游走搜索的结果。为使幂律图和泊松图的总边数相等,泊松图的 p 随图大小增加而缓慢增长,平均二阶邻居数量缩放为 (N^{0.15}),覆盖时间缩放为 (N^{0.85})。

泊松图中节点可通过链接近似均匀采样,当搜索覆盖 50% 的图时,约 50% 的时间会重新访问已见节点;而幂律图中,当覆盖 50% 的图时,约 80% 的时间会重新访问节点,这导致幂律图的分析缩放与模拟结果存在差异。但即使是幂律图的随机、最小自回避策略的模拟缩放 (N^{0.35}) 也优于泊松图的理想缩放 (N^{0.85})。高度数节点寻求策略在幂律图中更成功,因为泊松图中节点度数方差小,该策略效果不佳。

以下是一个简单的 mermaid 流程图,展示幂律图和泊松图搜索的对比:

graph LR
    A[开始] --> B{图类型}
    B -->|幂律图| C[幂律图搜索]
    B -->|泊松图| D[泊松图搜索]
    C --> E[分析缩放与模拟结果对比]
    D --> F[分析缩放与模拟结果对比]
    E --> G[得出结论]
    F --> G
5. Gnutella

Gnutella 是一个对等文件共享系统,无中央服务器存储文件位置信息。用户下载文件时,向 ttl 范围内的所有节点发送查询,节点将查询传递给所有邻居并减少 ttl。这种广播方法能快速找到目标文件,但带宽成本极高。随着网络增长,节点会因查询流量过载,导致网络碎片化。

之前讨论的搜索算法可能有助于改善此问题。Gnutella 网络具有幂律连接分布,新节点倾向于连接到已连接良好的节点。为实现算法,Gnutella 客户端需修改以保存其一阶和二阶邻居存储的文件列表,该信息在新节点加入网络时至少传递一次,并可能需定期更新。

与 FastTrack 网络类似,Gnutella 可通过将查询仅传递给最高度数节点来实现自回避搜索,节点处理查询时需附加其 ID。模拟结果表明,在约 700 个节点的实际 Gnutella 网络中,假设每个文件仅存储在一个节点上,50% 的文件可在 8 步或更少步骤内找到;若文件存在于多个节点,搜索会更快。

以下是 Gnutella 搜索算法改进的步骤列表:
1. 修改 Gnutella 客户端,保存一阶和二阶邻居的文件列表。
2. 新节点加入时传递文件列表信息,并定期更新。
3. 从广播查询改为仅将查询传递给最高度数节点。
4. 节点处理查询时附加其 ID 以实现自回避搜索。

综上所述,像 Gnutella 这样的真正对等网络可能具有幂律结构,所描述的本地搜索算法可能有效。随着节点数量增加,需要查询的节点数量呈亚线性增加。只要高度数节点能处理流量,使用这些搜索策略可改善 Gnutella 网络的性能和可扩展性。

无结构网络中的本地搜索策略解析

6. 路径查找

之前主要讨论了定位单个节点所需的时间,而在搜索节点的过程中,也会规划出一条可用于未来联系该节点的路径。去除搜索路径中的循环和回溯步骤,就得到了到达目标节点的路线。

Kim 等人的研究表明,在幂律图上采用高度数寻求策略所产生的路径,平均而言会随着网络规模呈对数缩放。虽然这些路径并非总是最短路径,但与平均最短路径具有相同的对数缩放特性。相比之下,随机游走策略或在非幂律图(如 Poisson 随机图或 Watts 和 Strogatz 定义的小世界图)上的策略所产生的路径则呈幂律缩放。

构建了一个 Barabasi 和 Albert(BA)类型的无标度网络,该网络的幂律指数 τ = 3。尽管 τ = 3 不在之前讨论的有利搜索策略范围内,定位节点需要很多步骤,但去除循环后的路径与网络规模呈对数缩放。

以下是不同搜索策略在 BA 幂律图和 Poisson 图上最短路径的比较表格:
| 图类型 | 搜索策略 | 路径缩放情况 |
| ---- | ---- | ---- |
| BA 幂律图 | 高度数寻求策略 | 对数缩放 |
| BA 幂律图 | 随机游走策略 | 幂律缩放(约 (N^{0.5})) |
| Poisson 图 | 高度数寻求策略 | 幂律缩放 |

为了找到精确的最短路径,需要使用类似于广度优先搜索(BFS)的广播方法,但广播会耗尽网络的带宽资源。Kim 等人提出了一种类似之前讨论的搜索策略,消息每次只从一个节点传递,可随机传递或传递给最高度数的邻居,仅使用一阶邻居及其度数的信息。当采用高度数策略时,节点会将消息传递给其尚未传递过消息的最高度数节点。

值得注意的是,真正的自回避策略虽然能更快定位节点,但最终得到的路径并不短。Kim 等人还发现,如果策略以概率方式选择节点,且节点被选中的概率与其度数成正比,对数缩放特性就会丢失。这可能是因为自回避和概率方法较少返回高度数节点,而大多数路径会经过高度数节点,所以常规地在前进前重新访问高度数节点的确定性策略更有可能找到较短路径。

即使在幂律图上使用高度数策略能找到短路径,这种方法的成本可能也过高。虽然找到的平均路径长度随网络规模增长缓慢,但找到路径所需的平均时间成本几乎呈线性缩放,找到节点所需的中位数步数会增长到数千步,而目标节点实际距离可能不到 10 步。

7. 缩短最短路径

高度数节点不仅在定位节点和构建到目标的短路径中发挥作用,还能缩短最短路径本身。在幂律图中,平均最短路径随网络规模增长的速度比等效的 Poisson 随机图更慢。

根据 Newman 等人的公式,随机选择顶点 r 步之外的邻居数量为:
[z_r = [\frac{z_{2A}}{z_1}]^{r - 1} z_1]
其中 (z_1) 和 (z_{2A}) 分别由之前的公式给出。Poisson 图具有相同的平均一阶邻居数量 (z_1),其二阶邻居数量为 (z_1^2)。

节点距离为 r 时的节点数量呈 (exp(\alpha r)) 缩放,(\alpha = \frac{z_{2A}}{z_1})。由于图的大小有限,实际邻居数量不会随 r 无限增加。对于 Poisson 图,(\alpha = z_1),而幂律图中二阶邻居与一阶邻居数量的比值增长更快。

以下是 τ = 2.1 幂律图和 Poisson 图中节点距离与邻居数量关系的 mermaid 流程图:

graph LR
    A[随机选择节点] --> B{图类型}
    B -->|幂律图| C[计算幂律图邻居数量]
    B -->|Poisson 图| D[计算 Poisson 图邻居数量]
    C --> E[绘制幂律图邻居数量曲线]
    D --> F[绘制 Poisson 图邻居数量曲线]
    E --> G[对比分析]
    F --> G
7.1 迭代加深

幂律图中节点间的跳数较短,这意味着使用广播方法定位节点和资源能更快得到结果。Yang 和 Garcia - Molina 以及 Lv 等人实验了一种本地搜索方法,即迭代加深,以改进 Gnutella 默认的固定半径广播协议。

迭代加深方法的步骤如下:
1. 按顺序发送标准 Gnutella 查询,查询序列中仅 ttl 设置不同。例如,第一个查询可能是深度为 2 的广播。
2. 发送客户端等待指定时间以获取响应。
3. 如果没有结果返回,发送 ttl 为 3 的查询,依此类推。

该方法在查询能由比默认 ttl 最大半径更近的节点满足时,能节省带宽和处理成本。在实际 Gnutella 客户端上的实验显示,带宽使用和处理成本分别降至默认策略的 19% 和 41%。

8. 自适应搜索

前面讨论的搜索策略仅利用了一阶和二阶邻居的身份信息,而节点可以随着时间了解网络并调整其搜索策略。

Yang 和 Garcia - Molina 在 Gnutella 网络上进行了实验,修改后的 Gnutella 节点有选择地将查询传递给其中一个邻居,邻居再按照标准 Gnutella 协议将查询广播给所有邻居。实验结果表明,选择之前在最短时间内提供指定数量结果的节点,比随机选择或选择高度数邻居的策略在第一步更有效。这表明将从网络中学习到的信息融入搜索算法,可以在使用更少处理能力和带宽的情况下获得与 BFS(广播)搜索相当的结果。

网络本身也可以通过增长和重组来促进搜索。例如,Freenet 网络会根据通过它的查询动态改变连接并分发数据文件。每个节点存储由唯一键标识的文件的路由表以及存储该文件的节点信息。

Freenet 网络的工作流程如下:
1. 节点接收到文件请求时,如果请求的文件在其路由表中,将请求转发到存储该文件的节点。
2. 如果没有匹配的文件,将请求转发到键最接近请求键的文件所在位置。
3. 如果查询最终得到满足,文件将沿查询路径返回,节点会标记该文件的位置。

通过这种方式,节点可以了解与其路由表中已列出键相似的文件的位置,并在特定的键空间区域进行专业化搜索,从而加速搜索。在模拟中,可靠回答查询的节点会被添加到更多路由表中,从而获得更多连接,最终形成幂律分布。

模拟结果显示,随着 Freenet 网络从 20 个节点增长到 200,000 个节点,满足请求所需的中位数路径长度呈 (N^{0.28}) 缩放,对于 10,000 个节点的网络,中位数路径长度仅为 8 跳。这表明结合聚焦搜索和自适应网络可以提高对等网络的可扩展性。

9. 结论

幂律图中的本地搜索策略具有随图大小呈亚线性缩放的搜索成本,这使得它们在处理大型网络时非常有吸引力。最有利的缩放效果是通过优先利用幂律网络中高度连接节点的策略实现的。这些策略在 Gnutella 对等网络搜索中也显示出实用性,同时还介绍了如迭代加深和自适应搜索等对简单广播的改进方法。

这些关于高度数寻求本地搜索策略的结果可能也适用于社交网络。尽管在社交网络中,人们有更多额外的线索来帮助他们找到所需的人和事物,但即使忽略这些线索的策略,在利用节点连接性的大型幂律网络中也可能表现良好。这与人们在社交网络中自然地向他们认为连接良好的人询问以定位他人的直觉相符。

许多大型网络的结构自然地有利于搜索,例如一些大型社交网络、互联网骨干网和网页超链接都具有适合本地搜索的幂律指数。对于信息定位和分发至关重要的网络,即使没有完美的全局信息,也倾向于具有有利于本地搜索的幂律结构,很可能这些网络是为了促进搜索和信息分发而进化的。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值