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))

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

目录
相关文章
|
11天前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
8天前
|
算法 定位技术 Python
震惊!Python 图结构竟然可以这样玩?DFS&BFS 遍历技巧大公开
在 Python 编程中,图是一种重要的数据结构,而深度优先搜索(DFS)和广度优先搜索(BFS)是遍历图的两种关键算法。本文将通过定义图的数据结构、实现 DFS 和 BFS 算法,并通过具体示例展示其应用,帮助读者深入理解这两种算法。DFS 适用于寻找路径和检查图连通性,而 BFS 适用于寻找最短路径。掌握这些技巧,可以更高效地解决与图相关的复杂问题。
21 2
|
8天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
36 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
8天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
28 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
8天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
43 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
12天前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
29 2
|
13天前
|
数据采集 存储 JSON
Python爬虫开发中的分析与方案制定
Python爬虫开发中的分析与方案制定
|
14天前
|
Python
SciPy 教程 之 SciPy 图结构 7
《SciPy 教程 之 SciPy 图结构 7》介绍了 SciPy 中处理图结构的方法。图是由节点和边组成的集合,用于表示对象及其之间的关系。scipy.sparse.csgraph 模块提供了多种图处理功能,如 `breadth_first_order()` 方法可按广度优先顺序遍历图。示例代码展示了如何使用该方法从给定的邻接矩阵中获取广度优先遍历的顺序。
25 2
|
15天前
|
算法 Python
SciPy 教程 之 SciPy 图结构 5
SciPy 图结构教程,介绍图的基本概念和SciPy中处理图结构的模块scipy.sparse.csgraph。重点讲解贝尔曼-福特算法,用于求解任意两点间最短路径,支持有向图和负权边。通过示例演示如何使用bellman_ford()方法计算最短路径。
27 3
|
16天前
|
算法 索引 Python
SciPy 教程 之 SciPy 图结构 3
SciPy 图结构教程:介绍图的基本概念、节点和边的定义,以及如何使用 SciPy 的 `scipy.sparse.csgraph` 模块处理图结构。重点讲解 Dijkstra 最短路径算法及其在 SciPy 中的应用,包括 `dijkstra()` 方法的参数设置和使用示例。
12 0