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

Networkx蜂窝结构中独立六边形识别方案咨询

蜂窝网络独立六边形提取方案

你构造的是规则六边形格点裁剪后的蜂窝结构,提取独立六边形可按如下步骤实现:

核心思路

规则蜂窝网格中的独立六边形对应长度恰好为6的无重复简单环。你之前尝试cycles方法未得到预期结果,大概率是没有做长度过滤、去重和闭合校验,导致返回了外层大环、重复环或非闭合序列,只需补上这几个处理步骤即可得到正确结果。

实现代码

在你现有代码基础上追加如下逻辑即可:

import networkx as nx

def get_unique_hexagons(G):
    # 存储去重后的六边形
    unique_hex = set()
    # 遍历所有长度为6的简单环
    for cycle in nx.simple_cycles(G, length_bound=6):
        if len(cycle) != 6:
            continue
        # 对环节点排序后转元组存入集合,自动去重(消除不同起点/遍历方向的影响)
        sorted_cycle = tuple(sorted(cycle))
        unique_hex.add(sorted_cycle)
    
    # 二次校验:确认是闭合的六边形环
    valid_hexagons = []
    for cycle in unique_hex:
        is_valid = True
        for i in range(6):
            u, v = cycle[i], cycle[(i+1)%6]
            if not G.has_edge(u, v):
                is_valid = False
                break
        if is_valid:
            valid_hexagons.append(cycle)
    return valid_hexagons

# 调用示例(在你构建完G对象之后执行)
hexagons = get_unique_hexagons(G)
print(f"共找到{len(hexagons)}个独立六边形")
# 可按需打印每个六边形的节点
for idx, cell in enumerate(hexagons):
    print(f"第{idx+1}个六边形的节点列表:{cell}")

效果验证

当你设置参数m=2时,运行上述代码会返回7个独立六边形,对应1个中心单元+外层6个单元,和结构的实际单元数完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:45:03