Language agnostic 图展开

Language agnostic 图展开,language-agnostic,graph,Language Agnostic,Graph,我目前正在研究一个有趣的图形问题,我找不到任何算法或其他stackoverflow问题,其中提到了类似的内容 如果我有一个图(无向、循环)和一个常用路径列表,那么通过添加N条边来减少平均路径长度的最佳方法是什么? 编辑::重要的一点,这可能会有所帮助,所有路径都从同一个节点开始。回答我自己的问题,以涵盖我已经考虑过的内容 显而易见的解决方案是按顺序对公共路径进行排序,并在两端之间的连接中开槽,然后继续这样做,直到插入的边用完为止。但是,我怀疑有一个更智能的解决方案。您可以尝试插入所有可能的边,然

我目前正在研究一个有趣的图形问题,我找不到任何算法或其他stackoverflow问题,其中提到了类似的内容

如果我有一个图(无向、循环)和一个常用路径列表,那么通过添加N条边来减少平均路径长度的最佳方法是什么?


编辑::重要的一点,这可能会有所帮助,所有路径都从同一个节点开始。

回答我自己的问题,以涵盖我已经考虑过的内容


显而易见的解决方案是按顺序对公共路径进行排序,并在两端之间的连接中开槽,然后继续这样做,直到插入的边用完为止。但是,我怀疑有一个更智能的解决方案。

您可以尝试插入所有可能的边,然后查看每个给定起点/终点的最短路径减少了多少。选择最佳边并重复

边的有用性取决于添加了哪些其他边,因此如果您真的想要优化,您必须尝试所有N个边集。听起来有点贵。如果它是NP难的,我也不会感到惊讶


有趣的问题

另一种可能的解决方案,听起来可能是最好的启发式方法,就是对所有终端节点进行加权平均(按路径重要性加权),然后找到最接近计算出的平均点的节点。连接到该节点


显然,只有当节点以某种方式布置在空间中时,这才有效,但这是一个很好的类比。

是否可以假设常用路径都同等重要?路径可以按使用次数排序,因此最好的做法是按使用次数排序。该图实际上是一个对等网络,因此,在这种情况下,路径实际上可以按发送的数据量或延迟排序,这取决于我希望最小化的内容。基本上假设路径可以很简单地按重要性排序。嗯,这是一个很明显的解决方案,为什么我没有想到呢?正如您所说,这可能会有一些非常糟糕的性能特征!由于Dijkstras算法是O(E+VlogV),我们有(N-1)!成对的节点(菱形),意思是(V-1)-E尚未链接的对。因为我们需要对每条路径进行路径查找(称之为数字P),所以性能应该是P*O((E+1)+VlogV)*((V-1)!-E),我相信,这在很大程度上是由阶乘决定的。这是一个非常可怕的特征:/