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

如何为基于邻接表的无向图生成函数添加顶点数控制参数?

解决顶点数量控制的修改方案

直接给你修改后的代码,核心是新增num_vertices参数来独立控制顶点数量,同时调整原参数的作用,修复了原代码里的一些逻辑问题:

import random

def graph(num_vertices, num_edges, weight, oriented):
    list_adj = [[] for _ in range(num_vertices)]
    list_w = []
    edge_count = 0

    if not oriented:
        # 循环生成指定数量的有效无向边
        while edge_count < num_edges:
            i = random.randint(0, num_vertices - 1)
            k = random.randint(0, num_vertices - 1)
            # 排除自环和已存在的边
            if i != k and k not in list_adj[i]:
                list_adj[i].append(k)
                list_adj[k].append(i)
                edge_count += 1
                # 添加对应权重
                list_w.append(random.randint(1, 10) if weight else 1)
        
        print("无向图邻接表: ", list_adj)
        print("边权重列表: ", list_w)
        print("生成的边数: ", edge_count)
        return list_adj, list_w

# 示例调用:生成15个顶点、8条无向无权边的图
graph(15, 8, False, False)

修改说明

  • 新增num_vertices参数:直接指定图的顶点总数,邻接表的长度由该参数决定,实现顶点数量自主控制
  • 重命名原length为num_edges:明确该参数用来控制要生成的边数量,用while循环替代原for循环,确保能生成指定数量的有效边(原逻辑可能因自环/重复边导致实际边数不足)
  • 移除全局变量:把list_adj和list_w移到函数内部,避免多次调用时数据残留
  • 修正打印错误:原代码误将边数标注为顶点数,现在纠正为边数统计

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:40:50