gpt4 book ai didi

algorithm - 找到反向算法回到初始值

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

我有一个问题,并尝试用几个小时来解决它。这是一个伪代码:

x = 30

if x > 100 then max(function_1(x), function_2(x))
elseif x > 50 then max(function_3(x), function_4(x))
elseif x > 20 then max(function_5(x), function_6(x))
elseif x < 10 then function_7(x)
else function_8(x)

这是我用不同的 x 值运行的代码。那么函数就是数学公式。现在,我得到了每个 x 的上述结果,我想恢复并再次返回到 x

我找到了所有函数的反向数学公式。例如对于 function_1(x),我有一个 rev_function_1(y) 会得到结果并给我初始的 x

但是,由于原始代码有很多情况,加上 MAX,我不确定如何针对每个值运行一段代码并返回原始值。

编辑:所有函数都是一对一的

Edit2: 似乎整个函数不是一对一,而它们中的每一个都是。结果,每个 y 都有两个 x,我无法还原它。

最佳答案

您需要研究函数的结果空间(或域)。

只有当每个 x 产生一个唯一的 f(x) 而对于 x 的任何其他值都无法获得时,才存在逆。此属性称为 one-to-one

举个例子:

假设 f(1) == 8f(10) == 8。那么你不知道 8 的倒数是 1 还是 10

如果函数是一对一,则反函数将是唯一值。如果不是一对一,则逆可能不止一个值。

下一步是确定调用哪个逆函数。

一种方法是调用所有子函数的逆函数。对于您获得的每个 x 值,计算 f(x)。如果 f(x) 取回您想要取反的值,则保留该 x,否则将其丢弃。

当您遍历所有值后,您将得到一个(或多个)匹配的 x 值。

编辑:

另一种方式是预先计算某个区间的输出值对应哪个函数。您可以将它们作为元组存储在数据库中:

lowerbound, upperbound, inverse_function

然后您可以找到要使用的函数(假设是 SQL):

SELECT inverse_function FROM lookup_table 
WHERE :fx > lowerbound and :fx < upperbound

:fx 是您要反转的值。

关于algorithm - 找到反向算法回到初始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37720453/

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