【问题标题】:Finding N nodes in a graph with maximum spread / distance from eachother在图中找到 N 个节点之间的最大传播/距离
【发布时间】:2015-07-01 13:46:02
【问题描述】:

给定一个包含 N 个节点(数千个)的图,我需要找到 K 个节点,以使 K 的每对 (K1,K2) 之间的平均路径长度最大化。所以基本上,我想把它们放在离彼此尽可能远的地方。

我将为此使用哪种算法/如何在无需尝试 K 的多个单一组合的情况下对其进行编程?

也作为扩展:如果我现在有 N 个节点,并且我需要在图中放置 2 组节点 K 和 L,以使每对 (L,K) 之间的平均路径长度最大化,我该怎么做这个?

我目前的尝试是只做几个随机放置,然后计算 K 和 L 对之间的平均路径长度,但是这个计算开始需要很多时间,所以我宁愿不花那个花费大量时间评估随机选择的组合。我宁愿花时间获得真正传播最广的组合。

有什么算法可以解决这个问题吗?

【问题讨论】:

  • 我投票结束这个问题,因为这是一个关于数学/几何算法的问题,应该在数学论坛上
  • 只是标签不同还是我不熟悉这个网站的不同部分?
  • 这是一个关于算法的问题,这并不是数学SE的重点。有一个计算机科学 SE,这将是一个很好的选择,但在这里也很好。 algorithm 标签有超过 50,000 个问题。
  • @j_random_hacker 我同意,我不喜欢(最近?)比“我按下哪个按钮来获得颗粒?”更深层次的问题。被选为题外话,仅适合数学爱好者。
  • @biziclop 这不是最近的事,但当 CS 交易所开始游说让算法问题偏离主题时,情况确实变得更糟了。

标签: java algorithm graph cluster-computing maximize


【解决方案1】:

坏消息是这个问题是 NP 难的,通过从独立集减少。 (假设单位权重。添加一个连接到所有其他顶点的新顶点;然后我们正在寻找平均距离为 2 的 K 集合。)

如果你决心得到一个精确的解决方案(我不确定你不应该这样做),那么我会尝试分支和绑定,使用 node is/is not one of the K 作为分支决策和粗略的界限(给定 K 的一个子集,找到两个节点,使它们之间的距离和到子集的距离的适当组合最大化,然后将界限设置为包含已知节点间距离的适当加权平均值) .

如果上面的确切算法像 Evgeny 担心的那样在千节点图上阻塞,那么使用farthest-point clustering(链接到设施位置的维基百科页面,描述 FPC)将图切割到可管理的大小,产生一个有希望的小的近似误差。

【讨论】:

  • 分支并绑定数千个节点?我对此表示怀疑……而且从 clique/biclique 减少也不难。
  • @EvgenyKluev 我已经用数千个节点运行了 Bron--Kerbosch。为什么不呢?
  • @DavidEisenstat:我犯了一个错误。我会删除我的评论。
猜你喜欢
  • 2013-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 2012-09-01
  • 1970-01-01
相关资源
最近更新 更多