我正在尝试在无向、循环、加权图上执行一些计算,并且我正在寻找一个好的函数来计算聚合权重。
每条边都有一个在 [1,∞) 范围内的距离值。该算法应该更加重视较低的距离(它应该是单调递减的),并且应该为距离 ∞ 分配值 0。
我的第一直觉是简单的 1/d,它同时满足了这两个要求。(嗯,从技术上讲,1/∞ 是未定义的,但程序员往往比数学家更容易让它滑动。) 1/d 的问题是该函数更关心 1/1 和 1/2 之间的差异比 1/34 和 1/35 之间的差异。我想更清楚一点。我可以使用 √(1/d) 或 ∛(1/d) 甚至 ∜(1/d),但我觉得我错过了一大堆可能性。有什么建议么?
(我想到了 ln(1/d),但随着 d 变为 ∞,它变为 -∞,我想不出将其推至 0 的好方法。)
后来:
我忘记了一个要求:w(1) 必须为 1。(这不会使现有答案无效;乘法常数很好。)