【图】用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)
上一篇 2025年11月13日 下午12:01
下一篇 2025年11月13日 下午12:22


相关推荐

  • ODrive应用 #1 ODrive入门指南[通俗易懂]

    ODrive应用 #1 ODrive入门指南[通俗易懂]ODrive入门文章目录ODrive入门硬件需求需要准备以下硬件:ODrive接线WiringupthemotorsWiringuptheencodersSafety&PowerUPDownloadingandInstallingToolsWindowsOSXLinuxFirmwareStart`odrivetool`ConfigureM02.Set…

    2022年5月14日
    92
  • wannacry病毒作者_wannacry病毒利用了哪种漏洞

    wannacry病毒作者_wannacry病毒利用了哪种漏洞1.样本概况1.1样本信息病毒名称:Trojan-Ransom.Win32.Wanna.m所属家族:木马/勒索/蠕虫MD5:DB349B97C37D22F5EA1D1841E3C89EB4SHA1:E889544AFF85FFAF8B0D0DA705105DEE7C97FE26CRC32:9FBB12271.2测试环境及工具…

    2022年10月9日
    2
  • 不要再被骗了——QQ盗号原理大揭秘

    不要再被骗了——QQ盗号原理大揭秘前言相信大家在懵懂无知的时候都有被盗号的经历吧,QQ胡乱的加好友,突然有个好友传了个文件给你,打开以后发现QQ竟然显示强制下线,然后再也上不去了QAQ,很明显,QQ号被人盗了。最近也是很多小伙伴私信我,也看了一些人发空间说QQ号被盗了啥的,以及我自己收到的一些诈骗请求。网上针对防骗这块的文章几乎没有,为了不让更多的人受害,下面我将会以最真实朴素的语言介绍最常见的一种盗号诈骗方式,浅析一下这个盗…

    2022年6月16日
    650
  • C#修改connectionStrings的方法

    C#修改connectionStrings的方法读取protectedvoidPage_Load(objectsender,EventArgse){CheckLoginMyChk=newCheckLogin();title.InnerHtml=”<b>数据库连接配置</b>”;if(!IsP…

    2022年5月11日
    40
  • Using ZipLib to create a Zip File in C#

    Using ZipLib to create a Zip File in C#System.IO.Compression是.Net2.0里与压缩有关的命名空间,但是使用起来并不是很方便。使用第3方库ziplib可以很方便地进行压缩类的操作。从[1]下载动态库,然后在工程里AddReference,把ICSharpCode.SharpZipLib.dll加进去。在代码来创建一个zip包的例子如下(摘自ziplibsamplecode)…

    2022年7月26日
    11
  • Java语言实现hello world代码[通俗易懂]

    Java语言实现hello world代码[通俗易懂]参考https://blog.csdn.net/yilovexing/article/details/53256713 24种编程语言的HelloWorld程序  Java文档注释Java支持三种注释方式。前两种分别是 // 和 /**/,第三种被称作说明注释,它以 /** 开始,以 */结束。说明注释允许你在程序中嵌入关于程序的信息。你可以使用javadoc工…

    2022年5月8日
    55

发表回复

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

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