是关于拉姆齐数Ramsey number的问题,即R(k),但是是特殊情况的,即每个顶点的连线都是左右对称的,而且两种颜色连线数量相同,每个点都是相同方式的连线,如图所示,图中是R(4,4) 17的证明图,即图中没有四个点的团,是完全对称的。不是求拉姆齐数,是给出一个顶点数N,求N个顶点的这种完全对称的图中,不包含大小为k和大小为m的团,即R(k,m),k和m可以相同也可以不同,k和m和N都是输入的,如果给出的N是奇数,那么两种颜色连线数量相同。如果给出N是偶数,输入的k≤m,输入的k肯定是小于等于m的,那么不包含k的团的颜色的线在每个点上的连线数量是(N-2)/2,不包含m的团的颜色的线在每个点上的连线数量是N/2,图也是完全对称的。
就是给出一个N个顶点的完全图中,只需要计算出完全对称的这种排列组合情况下,存不存在不包含大小为k和大小为m的团这种情况,如果有,给出一种计算结果就行,然后给出任意一个点上连线方式就行,点可以用1,2,3,4....n表示。
不限制编程语言,但要给出完整代码,包括开头什么的,就是可以直接运行的。
拉姆齐相关的问题,求解答
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
8条回答 默认 最新
- CSDN专家-sinJack 2023-07-20 10:03关注
参考:
import itertools def is_clique(graph, vertices): for v1, v2 in itertools.combinations(vertices, 2): if v2 not in graph[v1]: return False return True def generate_graph(N): graph = {} for i in range(1, N+1): graph[i] = set() for j in range(i+1, N+1): graph[i].add(j) graph[j].add(i) return graph def find_clique_free_graph(N, k, m): if N % 2 == 0: k_count = (N-2) // 2 m_count = N // 2 else: k_count = m_count = (N-1) // 2 for k_comb in itertools.combinations(range(1, N+1), k): if not is_clique(graph, k_comb): for m_comb in itertools.combinations(range(1, N+1), m): if not is_clique(graph, m_comb): return k_comb return None # 输入参数 N = int(input("请输入顶点数N:")) k = int(input("请输入k:")) m = int(input("请输入m:")) graph = generate_graph(N) result = find_clique_free_graph(N, k, m) if result: print("存在不包含大小为{}和{}的团".format(k, m)) print("一种计算结果为:", result) else: print("不存在不包含大小为{}和{}的团".format(k, m))
解决 无用评论 打赏 举报
悬赏问题
- ¥20 想写一个文件管理器,加载全部子文件夹后,要一级一级返回
- ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
- ¥15 哪位能做百度地图导航触点播报?
- ¥15 请问GPT语言模型怎么训练?
- ¥15 已知平面坐标系(非直角坐标系)内三个点的坐标,反求两坐标轴的夹角
- ¥15 webots有问题,无响应
- ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
- ¥15 大智慧怎么编写一个选股程序
- ¥100 python 调用 cgps 命令获取 实时位置信息
- ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?