【问题标题】:How to assign weight to a node in a directed network graph and calculate the effective node weight如何为有向网络图中的节点分配权重并计算有效节点权重
【发布时间】:2012-12-20 23:51:26
【问题描述】:

我的问题:

  1. 我有一组节点,其中一些节点通过定向边连接。
  2. 我想将权重分配给每个节点和每个边。
  3. 最后我想根据连接节点的影响来计算有效节点权重。

背景:

  1. 目前我正在使用 JUNG 来解决我的问题。
  2. 我查看了 JUNG 包 edu.uci.ics.jung.algorithms.scoring。但不确定它们是否能帮助我实现目标。

【问题讨论】:

  • 有许多不同的方法可以“根据连接节点的影响计算[有效]节点权重”。 JUNG 确实在您确定的包中提供了几种不同的方法来做到这一点。请澄清您的要求:节点权重和边权重具有哪些属性,您希望它们如何帮助确定“有效”节点权重?您期望有效节点权重的语义是什么?等
  • 感谢 Joshua 抽出时间回答。
  • (1) 假设我有一个图表,其中包含许多节点,每个节点都有预定风险。 (2) 现在这些节点中的一些通过定向边连接到其他节点。这些边缘具有可变厚度。即根据边缘的大小,产生的风险会有所不同。 (3) 现在我想根据连通性计算这些节点的有效风险。
    我看过 JUNG 评分包。我不确定根据我的要求需要使用哪种算法。您能否建议哪个更合适?是否有示例?
  • 您仍然没有足够清晰的规范来定义算法。从根本上说,如果你想要一个 PageRank 风格的迭代算法,你需要定义节点 N 在时间 T 的风险是如何根据时间 T-1 的 N 的邻居(前身?后继者?)的风险来定义的。 (您还应该能够在某种程度上证明此定义的合理性。)简而言之,您没有明确定义的目标,因此无法就如何实现这些目标提供建议。在您这样做之前,这本质上是模型设计中的一个问题,与任何特定软件无关。

标签: java algorithm graph graph-algorithm jung


【解决方案1】:

一种方法是将您的节点表示为 Java 类,并将权重表示为此类的属性。您可以保留一组边作为类的字段,并实现一个计算有效权重的方法(例如:getEffectiveWeight())

【讨论】:

  • 是的。 JUNG 已经提供了所有这些与图一起工作的基本框架。我的问题更多来自 Graph 算法(例如:PageRank 或 r EigenvectorCentrality),因为我可以分配节点权重并使用这些算法来查找这些边的影响。
  • PageRank 不使用节点权重来确定每个节点的分数。如果(例如)您将(初始)节点权重视为从每个节点开始的概率,则此概率分布实际上与最终答案完全无关,前提是图是强连接的。 (PageRankWithPriors 是另一回事。)
【解决方案2】:

想到了两种方法:

  1. weight 字段添加到您的NodeEdge 类。

  2. 创建两个Maps。一种使用Nodes 作为键,另一种使用Edges 作为键。然后将weight 存储为值。

【讨论】:

  • 如果我们谈论的是 JUNG 的 PageRank 和相关算法,这不是必需的:节点权重(通常)由算法分配,如果需要,可以在构造函数中提供边权重。跨度>
猜你喜欢
  • 2011-12-30
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-23
相关资源
最近更新 更多