gpt4 book ai didi

java - Argmax 语句评估 Java

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:33:56 27 4
gpt4 key购买 nike

我有以下伪代码:

for j = 0 to argmax {l where t mod 2^l = 0} do

t 是一个在此 for 循环之外递增的计数器。我的问题是如何评估 argmax 语句?

enter image description here

我认为代码中的“i”是一个拼写错误。 “t”可能是正确的。

最佳答案

没有封闭形式的 argmax 函数。

Argmax 表示找到最大化函数的参数(参数)。

它可以是任意复杂的,如果你在语句中有一个复杂的表达式。

在这里,它或许可以作为一行数学表达式来实现,作者只是因为行长而懒得拼写。否则,如果你有一个有限的整数域,你可以使用循环来实现它:

def argmaximod2l(maxl, i):
for l in range(maxl, 0, -1):
if i % (2**l) == 0: return l
raise Exception("No l was divisible by i.")

如果你有两个整数,你可以使用嵌套循环;如果你的参数是 double 的并且你有一个光滑的凸函数,你可以使用梯度下降法。

在这种特殊情况下,最大 l 应该是 i 的尾随零的数量。有更有效的方法(可能还有一个库函数,例如 Java 中的 Long.numberOfLeadingZeros)可用。

在这种特殊情况下,您可能希望将循环实现为:

for (int j=0, i=t; (i&1)==0; j++, i>>>=1) {
...
}

关于java - Argmax 语句评估 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19309083/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com