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

BFS中特定节点邻居查找:search方法逻辑实现求助

解决节点邻居数量统计问题

我来帮你梳理search方法的实现逻辑,搞定这个节点邻居数统计的问题。

问题先拆清楚

先明确你输入的结构(拿测试用例举例):

  • 第一个数值6是节点总数
  • 接下来的India Pakistan Nepal Bhutan Bangladesh China是节点名称列表
  • 之后的36个数字是6x6的邻接矩阵:1代表两个节点互为邻居,0代表无连接,每行对应一个节点和其他节点的关系
  • 最后一个Bhutan是要查询的目标节点

核心实现思路

  1. 解析输入:把输入内容拆分出节点数、节点列表、邻接矩阵、目标节点
  2. 定位节点位置:找到目标节点在列表中的索引
  3. 统计邻居数:遍历邻接矩阵中该节点对应的行,数里面1的个数(如果是无向图,这个统计就完全准确;如果是有向图,你可以按需改成统计入度/出度)

Python 示例代码实现

def search(node_list, adjacency_matrix, target_node):
    # 找到目标节点在列表中的索引
    try:
        node_idx = node_list.index(target_node)
    except ValueError:
        return 0  # 节点不存在时返回0,也可以根据需求抛出异常
    
    # 统计对应行里1的数量,就是邻居数
    neighbor_count = sum(adjacency_matrix[node_idx])
    return neighbor_count

def main():
    # 这里模拟输入,实际可以直接从标准输入读取
    input_content = "6 India Pakistan Nepal Bhutan Bangladesh China 0 1 1 1 1 1 1 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 0 0 0 1 0 1 1 0 0 Bhutan".split()
    
    ptr = 0
    node_num = int(input_content[ptr])
    ptr += 1
    
    # 提取节点列表
    nodes = input_content[ptr:ptr+node_num]
    ptr += node_num
    
    # 构建邻接矩阵
    adj_matrix = []
    for _ in range(node_num):
        row = list(map(int, input_content[ptr:ptr+node_num]))
        adj_matrix.append(row)
        ptr += node_num
    
    target = input_content[ptr]
    
    # 调用search方法并输出结果
    print(search(nodes, adj_matrix, target))

if __name__ == "__main__":
    main()

测试用例验证

你的测试用例里,Bhutan在节点列表中的索引是3(从0开始计数),对应的邻接矩阵行是[1, 0, 1, 0, 0, 1],里面刚好3个1,运行代码后输出3,完全符合期望。

额外注意点

  • 如果是有向图,要统计入度的话,就改成统计邻接矩阵中对应列的1数量就行
  • 可以根据业务需求调整节点不存在时的处理逻辑,比如抛出提示而不是返回0

内容的提问来源于stack exchange,提问作者Ashish yadav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:56:20