You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GQLAlchemy中使用BSF(广度优先搜索)?

GQLAlchemy中BFS算法的使用示例

下面是几个实用的GQLAlchemy调用BFS算法的代码示例,基于Memgraph数据库:

1. 基础准备:连接数据库并创建测试数据

from gqlalchemy import Memgraph
from gqlalchemy.graph_algorithms import BreadthFirstSearch

# 连接本地Memgraph实例(确保Memgraph服务已启动)
memgraph = Memgraph(host="localhost", port=7687)

# 清空测试数据(仅用于示例,生产环境谨慎操作)
memgraph.execute("MATCH (n) DETACH DELETE n")

# 创建测试社交网络图
memgraph.execute("""
CREATE (a:Person {name: 'Alice'}),
       (b:Person {name: 'Bob'}),
       (c:Person {name: 'Charlie'}),
       (d:Person {name: 'David'}),
       (e:Person {name: 'Eve'}),
       (a)-[:KNOWS]->(b),
       (b)-[:KNOWS]->(c),
       (b)-[:KNOWS]->(d),
       (d)-[:KNOWS]->(e)
""")

2. 使用BreadthFirstSearch类执行BFS

# 初始化BFS算法实例
bfs = BreadthFirstSearch(memgraph)

# 从Alice出发,遍历所有通过KNOWS关系连接的Person节点
results = bfs.run(
    start_node={"name": "Alice"},
    node_label="Person",
    relationship_type="KNOWS"
)

# 输出所有路径
print("BFS遍历路径:")
for path in results:
    print([node["name"] for node in path.nodes])

3. 指定最大深度的BFS

如果需要限制遍历的层级,可以添加max_depth参数:

# 限制最大深度为2,只遍历Alice的直接好友及好友的好友
limited_results = bfs.run(
    start_node={"name": "Alice"},
    node_label="Person",
    relationship_type="KNOWS",
    max_depth=2
)

print("\n最大深度2的BFS路径:")
for path in limited_results:
    print([node["name"] for node in path.nodes])

4. 结合Cypher原生BFS查询

你也可以直接通过GQLAlchemy执行Cypher原生BFS查询,获取结果:

cypher_bfs_query = """
MATCH path = (start:Person {name: 'Alice'})-[*bfs]->(end:Person)
RETURN path
"""

# 执行查询并处理结果
print("\nCypher原生BFS结果:")
for record in memgraph.execute_and_fetch(cypher_bfs_query):
    path = record["path"]
    print([node["name"] for node in path.nodes])

注意事项

  • 确保Memgraph服务正在本地7687端口运行,若使用远程实例需修改host和port参数
  • 提前安装依赖:pip install gqlalchemy

内容的提问来源于stack exchange,提问作者Sven Martoen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 23:25:11