Python中的邻接表和邻接矩阵

2024-01-30

你好,我理解邻接表和矩阵的概念,但我对如何在Python中实现它们感到困惑:

实现以下两个示例的算法可以实现,但从一开始就不知道输入,因为他们在示例中对其进行了硬编码:

对于邻接表:

    a, b, c, d, e, f, g, h = range(8) 
    N = [ 
     {b:2, c:1, d:3, e:9, f:4},    # a 
     {c:4, e:3},                   # b 
     {d:8},                        # c 
     {e:7},                        # d 
     {f:5},                        # e 
     {c:2, g:2, h:2},              # f 
     {f:1, h:6},                   # g 
     {f:9, g:8}                    # h 
   ] 

对于邻接矩阵:

    a, b, c, d, e, f, g, h = range(8) 
    _ = float('inf') 
    #     a b c d e f g h
    W = [[0,2,1,3,9,4,_,_], # a 
        [_,0,4,_,3,_,_,_], # b 
        [_,_,0,8,_,_,_,_], # c 
        [_,_,_,0,7,_,_,_], # d 
        [_,_,_,_,0,5,_,_], # e 
        [_,_,2,_,_,0,2,2], # f 
        [_,_,_,_,_,1,0,6], # g 
        [_,_,_,_,_,9,8,0]] # h

再次感谢任何帮助,谢谢!


假设:

edges = [('a', 'b'), ('a', 'b'), ('a', 'c')]

这是矩阵的一些代码:

from collections import defaultdict

matrix = defaultdict(int)
for edge in edges:
    matrix[edge] += 1

print matrix['a', 'b']
2

对于“列表”:

from collections import defaultdict

adj_list = defaultdict(lambda: defaultdict(lambda: 0))
for start, end in edges:
    adj_list[start][end] += 1

print adj_list['a']
{'c': 1, 'b': 2}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python中的邻接表和邻接矩阵 的相关文章

随机推荐

  • Pyinstaller.exe 未产生预期结果

    这是我第一次使用 pyinstaller 在 Windows 机器上构建 py 的 exe 我已成功生成 exe 但是当我运行代码时 它不会生成我的代码应生成的 csv 文件 附带说明一下 当我在 IDE 中运行脚本时 它成功生成了我期望的
  • OpenGL 渲染器不适用于冰淇淋三明治

    您好 我正在使用 OpenGL ES 1 0 构建 Android 游戏 一切都工作正常 直到我的 Transformer 平板电脑更新为冰淇淋三明治 现在 任何使用 OpenGL 渲染的内容都不会显示在屏幕上 我环顾四周 发现了Textu
  • 后期绑定与多态性 - 有什么区别?

    我见过两者互换使用 但它们真的意味着相同吗 根据我的理解 多态性延伸了这样一个事实 即您可以通过子类的实例交换类的实例 而后期绑定意味着当您调用实例的方法时 类型决定调用哪个方法 子类 超类 维基百科有一篇关于此的非常好的文章 http e
  • Ajax woocommerce 在弹出窗口中跟踪订单,无需重新加载页面

    我通过短代码将订单跟踪放在弹出窗口中 但问题是单击并发送请求后 页面将重新加载并且弹出窗口关闭 我希望通过 Ajax 在同一个弹出窗口中显示请求的结果 并且不重新加载页面 我搜索了整个网络 但找不到方法 如果有人知道如何做到这一点 请指导我
  • 在 Swift 中创建 UIView 的副本

    因为对象是引用类型 而不是值类型 如果您设置UIView等于另一个UIView 视图是同一对象 如果您修改其中一个 您也会修改另一个 我有一个有趣的情况 我想添加一个UIView作为另一个视图中的子视图 然后我进行一些修改 并且这些修改不应
  • c# 更改AD密码Directoryservices

    我试图让下面的代码工作 问题是 有时可以 有时不可以 当失败时 会出现错误 0x800704F1 系统无法联系域控制器来服务身份验证请求 我想说大约 90 的情况都会失败 我尝试通过将其添加到 contexttype 后面来给它一个静态 D
  • 什么是“.”和 Windows 目录中的“..”?

    我正在编写一个程序来列出 Windows 目录中的所有文件 我只是使用提供的文件管理功能 但我对结果很好奇 Target file is The first file found is The next file found is The
  • 触发问题,更新面板不起作用?

    我创建动态 LinkBut ton 并将 LinkBut ton 的单击触发器添加到 UpdatePanel 现在 当我第一次单击任何一个链接按钮时 触发器运行良好 并显示我的选择 没有回发 之后 我单击其他 LinkBut ton 所有页
  • 哪种做法更好 - 全球导入或本地导入

    我正在 django 中开发一个应用程序 我怀疑在全局级别导入库是否比在本地 每个函数 级别导入库对内存或性能有任何影响 如果按功能或视图导入 则导入单独需要的模块可以节省空间 对吗 或者这样做有什么负面影响吗 您肯定已经注意到 几乎所有
  • Data.Map / Data.IntMap 是否存在 monad 实例?

    我有一个在 IntMap 上运行的算法 我认为最好以命令式的方式表达它 也就是说 我想说的是 在地图中查找值 X 如果它符合条件 则从地图中删除该值 循环直到地图中不再存在任何值 用两行递归来表达是相当简单的 但实际的算法有点复杂 涉及多次
  • 在 bash 中从 YAML 文件解析嵌套变量

    一个复杂的 yaml文件来自这个链接 https docs projectcalico org v3 3 getting started kubernetes installation hosted kubernetes datastore
  • Jmeter线程组中的RAMP UP

    我在 jmeter 中设置启动时遇到问题 我的测试场景如下所述 有3个线程组 Thread Group1 2 Users Ramp up 10 Thread Group2 3 users Ramp up 15 Thread Group3 5
  • 如何从子目录加载 Latex .sty 文件?

    我使用一些不属于 texlive 的 sty 文件 并希望将它们放在我的 main tex 文件夹的子目录中 我使用以下行来加载包 usepackage sty prettythesis 这是可行的 但是用 xelatex 编译 main
  • Ember数据:保存失去了belongsTo关系

    我有以下问题 带有选择字段的表单 用于选择帖子的类别 假设该帖子的类别为 100 在 Ember 检查器中 显示如下 category
  • 收缩网格项目就像 CSS 中的 Flex 项目一样

    是否可以像 CSS 中的 Flex 项目一样缩小网格项目 网格项目 container display grid grid gap 10px grid template columns repeat auto fill minmax 200
  • 使用 matlab/octave 将图像从 rgb 转换为 hsv 回 rgb

    我正在尝试将彩色图像从 RGB 转换为 HSV 进行更改 然后再转换回 RGB 作为测试 我编写此代码只是为了测试如何从 rgb 到 hsv 返回到 rgb 但是当我查看图像时 它只是显示为黑色 我缺少什么 PS我使用的是octave 3
  • PyQt5 信号和线程

    我在 youtube 上观看了有关 PyQt4 信号的简短教程 但在运行一个小示例程序时遇到了问题 如何将从线程发出的信号连接到主窗口 import cpuUsageGui import sys import sysInfo from Py
  • ./executable 和 ./executable 之间的区别可执行文件

    在 shell 中 有什么区别 executable and executable 在第一个中 点是快捷方式source http linux about com library cmd blcmdln source htm正确的 那么两者
  • 'git reset --hard HEAD~1' 和 'git reset --soft HEAD~1' 之间有什么区别?

    我试图撤消 git 中的提交 使用有危险吗git reset hard HEAD 1 不同选项之间有什么区别git reset git reset确实知道五种 模式 软 混合 硬 合并和保留 我将从前三种开始 因为这些是您通常会遇到的模式
  • Python中的邻接表和邻接矩阵

    你好 我理解邻接表和矩阵的概念 但我对如何在Python中实现它们感到困惑 实现以下两个示例的算法可以实现 但从一开始就不知道输入 因为他们在示例中对其进行了硬编码 对于邻接表 a b c d e f g h range 8 N b 2 c