【问题标题】:2 problem with minspantree.m in Matlab 2018a2 Matlab 2018a 中 minspantree.m 的问题
【发布时间】:2018-12-29 18:38:58
【问题描述】:

Matlab 2018a 中 minspantree.m 的 2 个问题

大家好;我想找到一个矩阵的最小跨度树。我认为 MATLAB 自己的 minspantree.m 可能是最有效的算法。所以我用 打开 minspantree.m

问题来了:

1.minspantree.m中的代码使用了G.EdgeProperties.Weight和G.Underlying。 G 是一个图形对象。但是当我在命令窗口中使用 G.EdgeProperties.Weight 或 G.Underlying 时,两者都返回错误:使用图/子引用时出错(第 15 行)没有公共属性 'EdgeProperties' 用于类“图”。为什么?

2.minspantree.m 第62行:

[pred, edgeind] = primMinSpanningTree(G.Underlying, w, rootNode, restart);

primMinSpanningTree 是一个函数吗?但我在 minspantree.m 中找不到任何:function [] = primMinSpanningTree(),我也无法在整个磁盘中找到 primMinSpanningTree.m 文件。那么什么是primMinSpanningTree?它的代码是什么?如何找到并打开它?
非常感谢。

【问题讨论】:

  • 那么你为什么不直接创建一个图表并调用minspantree呢?你没有 2018a,还是有其他什么阻碍了你?
  • 1.我想学习它的算法。 2.我想改变一些东西,更个性化。
  • Prim 算法的伪代码在大多数算法教科书(至少我见过的)中都有,并且在网上有很多描述和实现。它也是一种更容易实现的算法,只使用邻接矩阵,然后通过添加更复杂的数据结构来改进。 Wikipedia 对实现进行了很好的讨论。如果你想学习算法,我建议你尝试自己实现它。如果您遇到问题,我们会随时为您提供帮助。

标签: matlab function graph


【解决方案1】:
  1. EdgePropertiesUnderlying 都是图形类的私有属性。它们只能从类中访问。看看Graph.mminspantree 是类方法,所以有访问权限。

  2. primMinSpanningTree 是来自matlab.internal.graph.MLGraph 的内置方法。您可以通过which primMinSpanningTree 看到这一点。所以我相信代码可能无法访问。

【讨论】:

  • 非常感谢。我自己想办法。令人不安的是,Matlab 没有像 primMinSpanningTree 那样共享其内置方法。也许他们这样做是出于版权保护的目的。但是,当用户想要改变一些东西或学习一些东西时,它会给用户带来很大的麻烦。
  • 如此令人惊讶的是,SO 没有好友系统。我希望我能加你为朋友。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-28
  • 2011-11-29
相关资源
最近更新 更多