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

特定双亲节点对生成子节点的结构名称及Python实现方法

结构名称及Python实现方案

一、结构名称

你描述的这种结构是有向超图(Directed Hypergraph)的一个特例——具体是限定超边仅连接固定两个父节点到一个子节点的类型,也可以被称为二元产生式网络。它的核心特点是:单个节点可独立存在,只有当特定的节点配对出现时,才会触发生成对应的子节点,这和普通有向图中“单个节点指向另一节点”的逻辑完全不同。

二、Python实现方案

我们可以用字典存储配对与子节点的映射关系,同时用集合维护所有独立存在的节点,这种实现方式简单高效,能满足你描述的需求。

代码实现

class PairProductionGraph:
    def __init__(self):
        # 存储所有已存在的独立节点
        self.nodes = set()
        # 存储产生式规则:键为有序节点对元组,值为对应的子节点
        self.productions = {}

    def add_node(self, node):
        """添加一个独立节点"""
        self.nodes.add(node)

    def add_rule(self, parent_pair, child):
        """添加一条产生式规则:指定的双亲节点对生成子节点"""
        # 可选校验:确保双亲节点已被添加(如果不需要可以去掉)
        for p in parent_pair:
            if p not in self.nodes:
                raise ValueError(f"节点 {p} 尚未添加,请先调用add_node添加")
        self.productions[parent_pair] = child
        # 自动把子节点加入节点集合(也可以选择手动添加)
        self.nodes.add(child)

    def get_child(self, parent_pair):
        """查询指定节点对对应的子节点,无对应规则则返回None"""
        return self.productions.get(parent_pair)

    def generate_child(self, parent_pair):
        """根据规则生成子节点并返回,无规则则返回None"""
        child = self.get_child(parent_pair)
        if child:
            self.nodes.add(child)
        return child

# 示例演示
if __name__ == "__main__":
    graph = PairProductionGraph()
    # 添加初始节点
    initial_nodes = ['A', 'B', 'C', 'D', 'G']
    for node in initial_nodes:
        graph.add_node(node)
    
    # 添加你示例中的所有产生式规则
    graph.add_rule(('A', 'B'), 'E')
    graph.add_rule(('C', 'D'), 'E')
    graph.add_rule(('C', 'G'), 'H')
    graph.add_rule(('E', 'H'), 'I')
    
    # 测试查询
    print(graph.get_child(('A', 'B')))  # 输出 E
    print(graph.get_child(('B', 'C')))  # 输出 None(不符合规则)
    
    # 查看所有节点
    print(graph.nodes)  # 输出 {'A', 'B', 'C', 'D', 'G', 'E', 'H', 'I'}

可选扩展

  • 如果不需要区分节点对的顺序(比如A+B和B+A都能生成E),可以把parent_pair转换成frozenset作为字典的键,修改add_rule和get_child中的键处理逻辑即可
  • 要是需要可视化这个结构,可以用networkx库,把每个产生式的两个父节点分别连到子节点,用边属性标注这是配对产生的关系

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:21:07