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

数千Agent集合的交集求解及互交Agent对识别需求

如何找出带ID的Agent集合间的交集对并存储结果

首先,咱们得先明确核心需求:从你的Agent字典里,找出所有存在交集的两两Agent对,并把它们的交集结果存成新字典,方便后续操作。下面我一步步给你拆解实现方法,包括基础版和针对数千个Agent的优化版。

1. 先把原始元组转成集合(关键前提)

你的原始数据里,每个Agent对应的值是元组,虽然也能计算交集,但集合的交集操作效率更高,而且内置方法更顺手。咱们先把字典转成集合格式:

# 你的原始Agent数据示例
agent_path = {
    'a1': (25, 60, 86, 95),
    'a2': (72, 34, 96, 60, 12, 74, 95, 43, 78),
    'a3': (60, 10, 20),
    'a4': (11, 22, 33)
}

# 转换为集合字典,方便后续交集计算
agent_sets = {agent_id: set(values) for agent_id, values in agent_path.items()}

2. 基础版:遍历所有Agent对,筛选有交集的结果

如果Agent数量不算特别多(比如几百个),直接用两两组合遍历就很直观。这里用itertools.combinations来生成不重复的Agent对(避免重复处理(a1,a2)和(a2,a1)):

from itertools import combinations

# 存储最终结果的字典,键是Agent对元组,值是交集元素的元组
intersection_results = {}

# 生成所有不重复的两两Agent组合
for agent1, agent2 in combinations(agent_sets.keys(), 2):
    # 计算两个Agent集合的交集
    common_elements = agent_sets[agent1] & agent_sets[agent2]
    # 只保留有交集的对
    if common_elements:
        # 把集合转回元组(和原始数据格式统一),也可以保留集合
        intersection_results[(agent1, agent2)] = tuple(common_elements)

运行这段代码后,你会得到这样的结果:

print(intersection_results)
# 输出:
# {('a1', 'a2'): (60, 95), ('a1', 'a3'): (60,), ('a2', 'a3'): (60,)}

3. 优化版:针对数千个Agent的高效解法

如果你的Agent数量达到数千个,直接两两组合的计算量会很大(比如1000个Agent就有499500次组合)。这时候可以用反向索引的思路:先记录每个元素属于哪些Agent,再从元素出发找有共同元素的Agent对,这样能跳过很多无交集的对,效率更高。

# 第一步:建立反向索引——元素对应包含它的Agent列表
element_to_agents = {}
for agent_id, elements in agent_sets.items():
    for elem in elements:
        if elem not in element_to_agents:
            element_to_agents[elem] = []
        element_to_agents[elem].append(agent_id)

# 第二步:从反向索引生成交集对,合并同一对的所有共同元素
pair_intersections = {}
for elem, agents in element_to_agents.items():
    # 生成包含当前元素的所有Agent对
    for pair in combinations(agents, 2):
        if pair not in pair_intersections:
            pair_intersections[pair] = []
        pair_intersections[pair].append(elem)

# 第三步:整理成最终格式(排序元素让结果更规整,转成元组)
final_results = {pair: tuple(sorted(elems)) for pair, elems in pair_intersections.items()}

这个方法的优势在于:如果很多Agent共享相同元素,能直接批量生成对应的Agent对,不用逐个计算无交集的组合,节省大量时间。

后续操作小贴士

得到结果字典后,你可以根据需求灵活处理:

  • 把Agent对的键改成字符串格式(比如"a1-a2"),方便后续存储或展示;
  • 统计每个交集元素出现的次数,或者每个Agent参与了多少个交集对;
  • 把结果导出为JSON、CSV等格式,方便其他工具分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:14:04