当前位置:  开发笔记 > 编程语言 > 正文

编程语言在什么情况下真正使用Infinity值?

如何解决《编程语言在什么情况下真正使用Infinity值?》经验,为你挑选了9个好方法。

所以在Ruby中有一个指定无穷大的技巧:

1.0/0
=> Infinity

我相信Python你可以做这样的事情

float('inf')

这些仅仅是一些例子,我确信大多数语言在某种程度上都具有无限性.你什么时候才能在现实世界中使用这个结构?为什么在一个范围内使用它比仅使用布尔表达式更好?例如

(0..1.0/0).include?(number) == (number >= 0) # True for all values of number
=> true

总而言之,我正在寻找的是使用Infinity的现实世界的理由.

编辑:我正在寻找真实世界的代码.当人们真正使用它时,这就是你可以"使用它"的全部和好处.



1> Triptych..:

在头部顶部,它在搜索最小值时可用作初始值.

例如:

min = float('inf')

for x in somelist:
  if x

我更喜欢将其min初始设置为第一个值somelist

当然,在Python中,你应该在大多数情况下使用min()内置函数.


@Dario:你可以认为它类似于空集(`x ^ 0 = 1`)的乘积.从技术上讲,max和min(或**join和meet**)各自形成一个**monoid**,其**标识元素**分别为**最小上限**/最大下限.**扩展实数行**上存在浮点数,其中有+ + Inf` /`-Inf`作为其LUB/GLB.(维基百科任何粗体术语更多!)
**不**,因为空列表的最小值不是无穷大但根本不存在.
@Dario:正如Porges所说,空列表*的最小值*可以说是无穷大,正如[空列表的总和为0](http://en.wikipedia.org/wiki/Empty_sum)和[该产品]一个空列表](http://en.wikipedia.org/wiki/Empty_product)是1,依此类推.(这是因为无穷大是"最小"的标识,正如0是加法的标识,1是乘法的标识.)

2> mmcdole..:

Dijkstra的算法通常将无穷大指定为图中的初始边权重.这不是"无穷大",只是一些随意不变,但在java中我通常使用Double.Infinity.我认为红宝石可以类似地使用.


Double.Infinity?为何停在那里?去Triple.Infinitiy.:)
当我读到这个问题时,首先想到的是.
这个BTW,是@ Triptych答案的一个特例:无穷大是空列表的最小值.(Dijkstra算法或Bellman-Ford算法通过设置权重并重复将它们设置为当前值和其他值的最小值来工作.)

3> 小智..:

似乎有一个隐含的"为什么这个功能甚至存在?" 在你的问题.原因是Ruby和Python只是允许访问可以按IEEE规定的浮点形式指定的全部值.

这个页面似乎描述得很好:http: //steve.hollasch.net/cgindex/coding/ieeefloat.html

因此,您也可以使用NaN(非数字)值和-0.0,而您可能不会立即使用这些值.



4> Eran Galperi..:

在某些物理计算中,您可以将相同顺序的不规则(即无限数)相互标准化,将它们两者抵消并允许近似结果通过.

当你处理极限时,可以实现像(无穷大/无穷大) - >接近有限数的计算.语言有能力覆盖常规的被零除错误.



5> Bkkbrad..:

使用Infinity-Infinity实现数学算法时需要它.

在Ruby中,Infinity-Infinity有很好的比较性质,使得-Infinity< x< Infinity任何实数x.例如,Math.log(0)返回-Infinity,扩展到暗示0的属性.另外,是如果x> 0,如果x <0,并且'的NaN'(非数字;即,未定义)如果x为0.x > yMath.log(x) > Math.log(y)Infinity * xInfinity-Infinity

例如,我在部分日志似然比的计算中使用了以下代码.-Infinity即使kis 0nAND x0或,我明确引用定义一个值1.

Infinity = 1.0/0.0
def Similarity.log_l(k, n, x)
  unless x == 0 or x == 1
    k * Math.log(x.to_f) + (n-k) * Math.log(1.0-x)
  end
    -Infinity
  end
end



6> 小智..:

Alpha-beta修剪



7> Nick Van Bru..:

我用它来指定物理模拟中静态物体的质量和惯性.静态物体基本上不受重力和其他模拟力的影响.



8> horseyguy..:

在Ruby中,infinity可用于实现惰性列表.假设我想要从200开始的N个数字,每次连续增加100个单位:

Inf = 1.0 / 0.0
(200..Inf).step(100).take(N)

更多信息:http://banisterfiend.wordpress.com/2009/10/02/wtf-infinite-ranges-in-ruby/



9> 小智..:

我已经将它用于你想要定义偏好/允许范围的情况.

例如,在37signals应用程序中,您喜欢项目编号的限制

Infinity = 1 / 0.0
FREE = 0..1
BASIC = 0..5
PREMIUM = 0..Infinity

然后你可以做像这样的检查

if PREMIUM.include? current_user.projects.count 
 # do something
end

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有