【图】用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Xmind激活码(xmind破解版)

    这个方法我也是找了挺久才找到的,供个人借鉴和使用,但不能用于商业用途!本人的电脑系统是:MicrosoftWindows10家庭中文版一、安装软件压缩包解压后有一个文件“xmind-8-update9-windows.exe”,这是从官网上下载的安装包,没有任何改动,大家可以放心使用。该方法适用这个版本,更新后的版本没测试。二、打开安装路径找到XMind.ini文件用记事本等可以编辑文件的打开该文件在最后一行加上↓-javaagent:C:\ProgramFiles(x86)\XM

    2022年4月17日
    6.2K
  • JAVA(集合类)——使用For循环遍历ArrayList[通俗易懂]

    JAVA(集合类)——使用For循环遍历ArrayList[通俗易懂]文章目录实例描述实现过程实例描述JAVA中提供了各种数据集合类,这些类主要用于保存复杂结构的数据,其中ArrayList集合可以看作动态数组。它突破了普通数组固定长度的限制,可以随时向数组中添加和移除元素,这将使数组更加灵活。本实例通过ArrayList集合类实现了向程序动态添加与删除用户名的功能,其中所有数据都保存在ArrayList集合的实例对象中。实现过程1)在主方法中获取用…

    2022年7月22日
    24
  • java socket 实现原理_java socket原理

    java socket 实现原理_java socket原理TCP/IP模型中有5层结构:应用层、传输层、网络层、数据链路层以及物理层。其中IP协议是位于网络层的,TCP协议是位于传输层的,通过IP协议可以使两台计算机使用同一种语言,从而允许Internet上连接不同类型的计算机和不同的操作系统的网络,IP协议只能保证计算机能够接收和发送分组数据,当计算机要和远程的计算机建立连接时,TCP协议会让它们建立连接:用于发送和接收数据的虚拟电路。在Java中…

    2022年7月7日
    21
  • 51单片机C语言延时函数怎么定义和使用

    51单片机C语言延时函数怎么定义和使用C语言定义延时函数主要通过无意义指令的执行来达到延时的目的。C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsignedchar类型具有比unsignedint更优化的代码,在使用时应该使用unsignedchar作为延时变量。

    2022年6月15日
    39
  • telnet步骤_新手使用iphone教程

    telnet步骤_新手使用iphone教程telnet经常用于测试网络及端口占用情况。具体使用如下:测试端口命令:telnethost端口例:telnet192.168.31.1008081连接失败表示端口未占用。否则表示被占用,如下(8080端口已占用):例:telnet192.168.31.1008080使用快捷键:CTRL+]显示欢迎页面回车输入/会有请求头提示信息。  远…

    2025年12月8日
    4
  • Java BigDecimal加减乘除运算[通俗易懂]

    Java BigDecimal加减乘除运算[通俗易懂]效果:代码:/****/packagecom.example.demo;importjava.math.BigDecimal;/****<p>*Description:*</p>**@authorxuyangwei**@date2020年7月16日**/publicclassBigdecimalTest{ publicstaticvoidmain(String[]ar

    2022年5月5日
    82

发表回复

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

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