我正在尝试对无向、循环、加权图执行一些计算,并且我正在寻找一个好的函数来计算聚合权重。
每条边的距离值在 [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。(这不会使现有答案无效;乘法常数就可以了。)
最佳答案
也许:
exp(-d)
编辑:类似
exp(k(1-d)), k real
将满足您的额外要求(我相信您知道,但嘿嘿)。
关于algorithm - 什么是好的加权函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/480354/