python与算法:冲突图结构分组分析

简介: python与算法:冲突图结构分组分析

以字典表示冲突图,以关键码(A,B)关联的值为True表示冲突,没有值表示不冲突。用这种技术完成本章求无冲突的分组的程序

result={('AB','BC'):True,
        ('AB','EA'):True,
        ('AB','BD'):True,
        ('AB','DA'):True,
        ('BC','EB'):True,
        ('BC','DB'):True,
        ('AC','EB'):True,
        ('AC','EA'):True,
        ('AC','BD'):True,
        ('AC','DA'):True,
        ('AC','DB'):True,
        ('BD','AB'):True,
        ('BD','AC'):True,
        ('BD','DA'):True,
        ('BD','EC'):True,
        ('BD','EB'):True,
        ('EA','AC'):True,
        ('EA','AB'):True,
        ('EA','AD'):True,
        ('AD','EA'):True,
        ('AD','EB'):True,
        ('AD','EC'):True,
        ('DA','AB'):True,
        ('DA','AC'):True,
        ('DA','BD'):True,
        ('DA','EB'):True,
        ('DA','EC'):True,
        ('DB','AC'):True,
        ('DB','BC'):True,
        ('DB','EC'):True,
        ('EC','BD'):True,
        ('EC','DA'):True,
        ('EC','DB'):True,
        ('EC','AD'):True
}
# 计算所有的路
verbs=[]
for key,value in result.items():
    k1,k2=key
    verbs.append(k1)
    verbs.append(k2)
verbs=list(set(verbs))
print(verbs)
def not_adjacent_with_set(v,new_group,result):
    if len(new_group)==0:
        return True
    else:
        con=True
        for i in new_group:
            if (i,v) in result or (v,i) in result:
                con=False
        return con
def coloring(result,verbs):
    color=0
    groups=[]
    verts=verbs
    while len(verts)>0:
        new_group=[]
        for v in verts:
            if not_adjacent_with_set(v,new_group,result):
                new_group.append(v)
                verts.remove(v)
        groups.append((color,new_group))
        color+=1
    return groups
coloring(result,verbs)
[(0, ['EC', 'EA', 'EB']),
 (1, ['BD', 'DB', 'AD']),
 (2, ['AB']),
 (3, ['AC', 'BC']),
 (4, ['DA'])]

如果想要得到尽可能多的可能性,可以考虑对verbs进行随机排列,有可能得到不同的结果

from random import shuffle
groups=[]
for i in range(100):
    verbs=[]
    for key,value in result.items():
        k1,k2=key
        verbs.append(k1)
        verbs.append(k2)
    verbs=list(set(verbs))
    shuffle(verbs)
    new_result=coloring(result,verbs)
    groups.append(new_result)
print(len(groups))

注:此算法大概率应该不是最优的。

目录
相关文章
|
13天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
159 55
|
1天前
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
86 66
|
5天前
|
存储 运维 监控
探索局域网电脑监控软件:Python算法与数据结构的巧妙结合
在数字化时代,局域网电脑监控软件成为企业管理和IT运维的重要工具,确保数据安全和网络稳定。本文探讨其背后的关键技术——Python中的算法与数据结构,如字典用于高效存储设备信息,以及数据收集、异常检测和聚合算法提升监控效率。通过Python代码示例,展示了如何实现基本监控功能,帮助读者理解其工作原理并激发技术兴趣。
44 20
|
3天前
|
存储 算法 Python
文件管理系统中基于 Python 语言的二叉树查找算法探秘
在数字化时代,文件管理系统至关重要。本文探讨了二叉树查找算法在文件管理中的应用,并通过Python代码展示了其实现过程。二叉树是一种非线性数据结构,每个节点最多有两个子节点。通过文件名的字典序构建和查找二叉树,能高效地管理和检索文件。相较于顺序查找,二叉树查找每次比较可排除一半子树,极大提升了查找效率,尤其适用于海量文件管理。Python代码示例包括定义节点类、插入和查找函数,展示了如何快速定位目标文件。二叉树查找算法为文件管理系统的优化提供了有效途径。
34 5
|
4天前
|
缓存 算法 搜索推荐
Java中的算法优化与复杂度分析
在Java开发中,理解和优化算法的时间复杂度和空间复杂度是提升程序性能的关键。通过合理选择数据结构、避免重复计算、应用分治法等策略,可以显著提高算法效率。在实际开发中,应该根据具体需求和场景,选择合适的优化方法,从而编写出高效、可靠的代码。
18 6
|
15天前
|
数据可视化 算法 数据挖掘
Python量化投资实践:基于蒙特卡洛模拟的投资组合风险建模与分析
蒙特卡洛模拟是一种利用重复随机抽样解决确定性问题的计算方法,广泛应用于金融领域的不确定性建模和风险评估。本文介绍如何使用Python和EODHD API获取历史交易数据,通过模拟生成未来价格路径,分析投资风险与收益,包括VaR和CVaR计算,以辅助投资者制定合理决策。
63 15
|
3天前
|
存储 缓存 算法
探索企业文件管理软件:Python中的哈希表算法应用
企业文件管理软件依赖哈希表实现高效的数据管理和安全保障。哈希表通过键值映射,提供平均O(1)时间复杂度的快速访问,适用于海量文件处理。在Python中,字典类型基于哈希表实现,可用于管理文件元数据、缓存机制、版本控制及快速搜索等功能,极大提升工作效率和数据安全性。
29 0
|
2月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
92 4
|
5月前
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【7月更文挑战第22天】在大数据领域,Python算法效率至关重要。本文深入解析时间与空间复杂度,用大O表示法衡量执行时间和存储需求。通过冒泡排序(O(n^2)时间,O(1)空间)与快速排序(平均O(n log n)时间,O(log n)空间)实例,展示Python代码实现与复杂度分析。策略包括算法适配、分治法应用及空间换取时间优化。掌握这些,可提升大数据处理能力,持续学习实践是关键。
135 1
|
6月前
|
存储 机器学习/深度学习 算法
Python算法基础教程
Python算法基础教程
40 0