首页 > 编程语言 >Python算法模版:图论中的最小生成树算法

Python算法模版:图论中的最小生成树算法

时间:2024-07-07 18:26:18浏览次数:27  
标签:min Python 模版 最小 算法 ans range

        最小生成树具有什么特性,相信学过相关知识的同学知道(没学过的可以自己了解一下),就是说最小生成树的边权值之和最小,相对应的其最大边权也是最小的,适合解决n个城市,m条边,然后叫你求最小划分路径是什么样的。

Kruskal算法模版

        首先,肯定要对题目所给的数据进行处理,放入列表S中

n,m=map(int,input().split())
S=[]
for _ in range(m):
  u,v,c=map(int,input().split())
  S.append((c,u,v))
S.sort()

        这里n,m就是n个地点,m个链接点,u和v就是链接的两个地方,v就是所谓的权值,到后面为了确保我们边从最小的开始,我们要对列表按v进行排序,然后我们开始写并查集模版(这里不知道的也可以自己查查)

p=list(range(n+1))

def fun(x):
  if x==p[x]:
    return x
  else:
    p[x]=fun(p[x])
    return p[x]

        将数据放入并查集中去,这里按照题目的要求,你可以自己写相关代码

ans=0
for c,u,v in S:
  u1=fun(u)
  v1=fun(v)
  if u1 != v1:
    p[u1]=v1
    #求最大权值
    ans=max(ans,c)
    #求最小权值和
    ans+=v

Prim算法模版

         首先,我们对所给数据进行处理,存放在二维列表中去,其中里面的含义参考Kruskal算法模版里面的。

n,m=map(int,input().split())
INF=1e6
S=[[INF]*(n+1) for _ in range(m+1)]
for _ in range(m):
  u,v,c=map(int,input().split())
  S[u][v]=S[v][u]=min(S[u][v],c)

        然后开始构造最小生成树主体,生成最小生成树

d=[INF]*(n+1)
u=1
ans=0
for _ in range(n-1):
  d[u]=0
  min_u,min_v=0,INF
  for v in range(1,n+1):
    if d[v]==0:continue
    d[v]=min(d[v],S[u][v])
    if d[v] < min_v:
      min_v=d[v]
      min_u=v
  u=min_u
  #求最大权值
  ans=max(ans,min_v)
  #求最小总权值
  ans+=min_v

总结

        这里主要用于Python算法的学习和我以后忘记了方便查看,如果大家有什么不懂的地方可以在评论区里交流,同时这些模版在蓝桥杯一些算法比赛中也可以使用此模版,有希望大家多多关注我,我会不定期发送其他代码的模版。

标签:min,Python,模版,最小,算法,ans,range
From: https://blog.csdn.net/2301_77408198/article/details/140249049

相关文章

  • python函数和c的区别有哪些
    Python有很多内置函数(buildinfunction),不需要写头文件,Python还有很多强大的模块,需要时导入便可。C语言在这一点上远不及Python,大多时候都需要自己手动实现。C语言中的函数,有着严格的顺序限制,如果要调用函数,该函数需要在本次调用之前就需要被实现,或者在程序开头事先声明,而Py......
  • python如何查看内置函数
    如何通过命令查看python中的所有内置函数和内置常量举例python版本:利用python中的语句输出python中的所有内置函数及内置常量名:dir(__builtin__)输出一个列表:In [1]: dir(__builtin__)Out[1]:['ArithmeticError','AssertionError','AttributeError','BaseEx......
  • SpringBoot-校园疫情防控系统-93033(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP
    springboot校园疫情防控系统摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对校园疫情防控等问题,对校园疫情防控进行研究分析,然后开发设计出......
  • Python——习题练习 part1
     本人于下学期该学习python,在听黑马程序员网课后,在此总结记录我的在课程学习后的习题练习。没有详细的解题过程,仅有代码和注释,如有错误希望大家多多指出。目录一,字符串格式化 二,条件判断01if语句 02ifelse语句 03ifelif组合 04判断语句综合案例 三,循环01......
  • 基于Django+微信小程序的旅游资源信息管理系统(免费领源码+数据库)可做计算机毕业设计JA
    django广西-东盟旅游资源信息管理系统小程序摘 要在社会快速发展和人们生活水平提高的影响下,旅游产业蓬勃发展,旅游形式也变得多样化,使旅游资源信息的管理变得比过去更加困难。依照这一现实为基础,设计一个快捷而又方便的基于小程序的旅游资源信息管理系统是一项十分重要并且......
  • Python——习题练习 part2 数据容器
    本篇文章记录python数据容器章节的练习题。目录五,数据容器01列表1.列表的常用功能2.列表循环遍历02元组基本操作03字符串的分割04序列的切片05集合信息去重06字典五,数据容器01列表1.列表的常用功能题目如下:答案如下:#列表List的常用操作#定义列表......
  • LFU算法实现
    LFU(LeastFrequentlyUsed)是一种用于缓存管理的算法。它通过跟踪每个缓存项被访问的频率来决定哪些项应该被移除。LFU算法倾向于保留那些使用频率较高的项,而移除那些使用频率较低的项。以下是LFU算法的详细介绍:工作原理计数器:每个缓存项都有一个计数器,用于记录该项被访问的......
  • MATLAB算法实战应用案例精讲-【数模应用】偏最小二乘回归分析(PLS)(附MATLAB和python代码
    目录前言知识储备回归的方法回归的检验算法原理数学模型偏最小二乘回归建模原理:PLS的准则函数偏最小二乘基本算法​编辑 ​编辑PLS回归模型算法思想PLS回归与MLS、PCR、MRA比较SPSSAU案例应用其他说明SPSS示例(PLS命令) 变量列表(PLS命令) MODEL......
  • 目标检测算法简介
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • Python速通(元组)
    (无法更改的信息)牛客网有两份绝密的名单,该名单不允许被修改。现在给出这两份名单的序列,请将其创建为元组结构,并各自打印整个元组。现在牛牛想要第一份名单的前三个名字和第二份名单的后三个名字组合成“被选中的人”,请你将“被选中的人”组成成新元组,并打印整个元组。one_name......