当前位置: 首页 > news >正文

网站建设怎么在png上写文字广州微网站建设哪家好

网站建设怎么在png上写文字,广州微网站建设哪家好,外贸商老贾的微博,花体字设计我们将分步骤完成建立全国各省会及一些主要城市的最简联通线路,利用 Prim 算法生成最小生成树,使用 Fleury 算法研究铁路线路回路方案,最后建立简单的哈密尔顿圈。 步骤 1:数据准备 首先,我们需要定义城市之间的连接…

我们将分步骤完成建立全国各省会及一些主要城市的最简联通线路,利用 Prim 算法生成最小生成树,使用 Fleury 算法研究铁路线路回路方案,最后建立简单的哈密尔顿圈。

步骤 1:数据准备

首先,我们需要定义城市之间的连接信息和距离,这些信息将存储在邻接矩阵中。以下是一个简单的示例,假设我们有几个城市:

# 城市名称列表
cities = ["北京", "上海", "广州", "深圳", "成都"]# 邻接矩阵表示城市之间的距离
graph = [[0, 1000, 1800, 1900, 1500],[1000, 0, 1200, 1300, 1600],[1800, 1200, 0, 100, 1200],[1900, 1300, 100, 0, 1300],[1500, 1600, 1200, 1300, 0]
]

步骤 2:Prim 算法生成最小生成树

Prim 算法是一种贪心算法,用于在加权无向图中找到最小生成树。以下是实现代码:

import sysdef prim(graph):num_vertices = len(graph)# 用于记录顶点是否已被访问visited = [False] * num_vertices# 存储最小生成树的边mst = []# 选择第一个顶点作为起始点visited[0] = Truewhile len(mst) < num_vertices - 1:min_dist = sys.maxsizemin_edge = Nonefor i in range(num_vertices):if visited[i]:for j in range(num_vertices):if not visited[j] and graph[i][j] > 0 and graph[i][j] < min_dist:min_dist = graph[i][j]min_edge = (i, j)if min_edge:mst.append(min_edge)visited[min_edge[1]] = Truereturn mst# 生成最小生成树
mst = prim(graph)
print("最小生成树的边:", mst)

步骤 3:Fleury 算法生成欧拉回路

Fleury 算法用于在连通图中找到欧拉回路。以下是实现代码:

def is_bridge(graph, u, v):# 检查边 (u, v) 是否为桥temp_graph = [row[:] for row in graph]temp_graph[u][v] = 0temp_graph[v][u] = 0visited = [False] * len(graph)stack = [u]visited[u] = Truewhile stack:node = stack.pop()for neighbor in range(len(graph)):if temp_graph[node][neighbor] > 0 and not visited[neighbor]:stack.append(neighbor)visited[neighbor] = Truereturn not all(visited)def fleury(graph):num_vertices = len(graph)# 选择一个起始顶点start_vertex = 0circuit = []stack = [start_vertex]while stack:current_vertex = stack[-1]found_edge = Falsefor neighbor in range(num_vertices):if graph[current_vertex][neighbor] > 0:if len(stack) == 1 or not is_bridge(graph, current_vertex, neighbor):stack.append(neighbor)graph[current_vertex][neighbor] = 0graph[neighbor][current_vertex] = 0found_edge = Truebreakif not found_edge:circuit.append(stack.pop())return circuit# 复制最小生成树的图
mst_graph = [[0] * len(graph) for _ in range(len(graph))]
for u, v in mst:mst_graph[u][v] = graph[u][v]mst_graph[v][u] = graph[v][u]# 生成欧拉回路
euler_circuit = fleury(mst_graph)
print("欧拉回路:", euler_circuit)

步骤 4:建立简单的哈密尔顿圈

哈密尔顿圈是一个遍历图中每个顶点恰好一次并回到起始顶点的回路。由于找到哈密尔顿圈是一个 NP 完全问题,我们可以使用简单的暴力搜索方法。以下是实现代码:

from itertools import permutationsdef is_hamiltonian_cycle(graph, path):num_vertices = len(graph)if len(path) != num_vertices:return Falsefor i in range(num_vertices - 1):if graph[path[i]][path[i + 1]] == 0:return Falseif graph[path[-1]][path[0]] == 0:return Falsereturn Truedef find_hamiltonian_cycle(graph):num_vertices = len(graph)vertices = list(range(num_vertices))for perm in permutations(vertices[1:]):path = [vertices[0]] + list(perm)if is_hamiltonian_cycle(graph, path):path.append(path[0])return pathreturn None# 找到哈密尔顿圈
hamiltonian_cycle = find_hamiltonian_cycle(graph)
print("哈密尔顿圈:", hamiltonian_cycle)

总结

通过以上代码,我们完成了以下任务:

  1. 使用 Prim 算法生成了最小生成树。
  2. 使用 Fleury 算法生成了欧拉回路。
  3. 尝试找到了一个简单的哈密尔顿圈。

请注意,上述代码中的城市数据和距离是示例数据,你可以根据实际的全国各省会及主要城市的联通线路信息进行替换。同时,哈密尔顿圈的搜索方法是暴力搜索,对于大规模图可能效率较低。

http://www.dtcms.com/a/433615.html

相关文章:

  • 为什么要建设档案网站做零食网站的选题理由
  • 苏州网站建设软件云服务器安装win系统做网站
  • 公司网站如何seo网站开发时浮动框的代码
  • 武威做网站的网站开发公司属于什么行业
  • 免费建自己的网站html5 网站模板
  • 龙岩网站推广营销wordpress上传到服务器
  • 有教做素食的网站吗wordpress如何使用
  • 个人网站名称 备案合肥网站建设
  • 如何搭建 seo网站旺道seo推广效果怎么样
  • 有什么好看的网站资源网页游戏平台系统
  • 邢台网站制作公司更改wordpress前缀
  • wordpress简单易懂的网站河南住房建设部网站
  • 做宠物网站班级网站怎么做
  • 广州口碑好的网站建设设计pc软件开发工具
  • 杭州网站建设响应式高端大气公司名称
  • 淄博网站建设详细策划做分销网站系统下载
  • 做网站设计累吗海口网站建设平台
  • 网站模板服务商阿里云企业邮箱收费标准
  • 贵阳58同城做网站wap网站的好处
  • 有没有一个网站做黄油视频邯郸最近发生的重大新闻
  • 广州知名网站建设公司区块链开发是什么意思
  • 外贸网站模板哪里下载Wordpress税表
  • 开发一个功能网站多少钱付钱做编程题目的网站
  • 石家庄网站app制作外贸家具网站
  • 网站好坏中国建设银行龙网站首页
  • 网站构建嘉兴外贸网站建设
  • 栖霞做网站价格北京宏福建设有限公司网站
  • 学中文网站电子商务网站建设教程pdf
  • 如何查看网站开发公司海报模板图片
  • 自建视频网站成都消防设计公司