【图】用python实现有向图

【图】用python实现有向图通过临界表的方式实现了图结构 classVertex object 节点对象 def init self key self key keyself connectedTo 存放指向的其它节点 以 Vertex 连接边 weight 的 defaddNeighb self nbr weight self connectedTo update nbr

通过临界表的方式实现了图结构

class Vertex(object): """ 节点对象 """ def __init__(self, key): self.key = key self.connectedTo = { 
   } # 存放指向的其它节点,以Vertex:连接边weight的 def addNeighbor(self, nbr, weight): self.connectedTo.update({ 
   nbr: weight}) def __str__(self): return str(self.key) + '-->' + str([nbr.key for nbr in self.connectedTo]) def getConnections(self): return self.connectedTo.keys() def getId(self): return self.key def getWeight(self, nbr): weight = self.connectedTo.get(nbr) if weight is not None: return weight else: raise KeyError("No such nbr exist!") class Graph(object): """ 图对象 """ def __init__(self): self.vertexList = { 
   } # 字典保存节点信息,以{key: Vertex}的方式 self.vertexNum = 0 # 统计图节点数 def addVertex(self, key): self.vertexList.update({ 
   key: Vertex(key)}) self.vertexNum += 1 def getVertex(self, key): vertex = self.vertexList.get(key) return vertex def __contains__(self, key): return key in self.vertexList.values() def addEdge(self, f, t, weight=0): f, t = self.getVertex(f), self.getVertex(t) if not f: self.addVertex(f) if not t: self.addVertex(t) f.addNeighbor(t, weight) def getVertices(self): return self.vertexList.keys() def __iter__(self): return iter(self.vertexList.values()) 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231921.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2014年年度工作总结

    2014年年度工作总结站位

    2022年7月12日
    23
  • sqlserver创建视图索引「建议收藏」

    sqlserver创建视图索引「建议收藏」索引视图创建注意事项对视图创建的第一个索引必须是唯一聚集索引。创建唯一聚集索引后,可以创建更多非聚集索引。为视图创建唯一聚集索引可以提高查询性能,因为视图在数据库中的存储方式与具有聚集索引的表的存储方式相同。查询优化器可使用索引视图加快执行查询的速度。要使优化器考虑将该视图作为替换,并不需要在查询中引用该视图。索引视图中列的large_value_types_out_of_row选项的设置继承的是基表中相应列的设置。此值是使用sp_tableoption设置的。从表达式组成的列的默认设

    2022年7月22日
    12
  • SSL连接建立过程分析(1)

    SSL连接建立过程分析(1)

    2021年12月8日
    51
  • centos7配置本地yum源_centos 本地yum源配置

    centos7配置本地yum源_centos 本地yum源配置centos7配置本地yum源环境限制外网怎么办?离线环境怎么解决依赖?yum源配起来,可以解决大部分包的安装^_^准备工作虚拟机版本——VMwareWorkstationPro12.x系统版本——CentOS-7-x86_64-DVD-1511.iso系统安装完毕,正常登录一、挂载镜像1.虚拟机方式1)操作之

    2022年8月12日
    4
  • 正则表达式 – 去掉乱码字符/提取字符串中的中文字符/提取字符串中的大小写字母 – Python代码

    正则表达式 – 去掉乱码字符/提取字符串中的中文字符/提取字符串中的大小写字母 – Python代码目录1.乱码符号种类较少,用replace()2.乱码字符种类较多,用re.sub()3.提取字符串中的中文字符4.提取字符串中的中文字符和数字5.提取其他数据清洗的时候一大烦恼就是数据中总有各种乱码字符,比如!@#¥%……&——+*(){}:“》《?|【】‘;/。,、-=去掉这些很简单:1.乱码符号种类较少,用replace()如果只是很少类型的乱码符…

    2022年5月10日
    44
  • 浅谈ArrayList动态扩容

    浅谈ArrayList动态扩容环境:eclipse,jdk1.8简介ArrayList实现了List接口,继承了AbstractList,底层是数组实现的,一般我们把它认为是可以自增扩容的数组。它是非线程安全的,一般多用于单线程环境下(与Vector最大的区别就是,Vector是线程安全的,所以ArrayList性能相对Vector会好些),它实现了Serializable接口,因此它支持序列化,能够通过序列化传输

    2022年6月10日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号