gpt4 book ai didi

database - 存储分段函数的数据结构

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

我想实现一个功能:

f(x) = a0   -inf < x < b0
a1 b0 <= x < b1
a2 b1 <= x < b2
...
an bn-1 <= x < bn
an+1 bn <= x < +inf

而不是普通的 if-else 实现。

def func(x):
if x<b0: return a0
elif x<b1: return a1
.....

我有更好的数据结构来组织这个吗?

此外,在给定两个序列 {an}、{bn} 的情况下,我如何编写一个返回优化后的“func(x)”的“元函数”。

最佳答案

如果n 很大,您想减少if 语句的数量。在 Python 中,这可以通过将数据存储在字典中来完成:

fx = {b0: a0, b1: a1, b2: a2, ..., bn: an, math.inf: an+1}

对于给定的 x 值,对字典的键值进行二分查找。这为您提供了适当的键来使用,然后使用字典本身来获取相关值。如果您的语言不允许 inf 作为键,您可以将 an+1 的值与字典分开,也许将两者都保存在一个二元组中。

这将最大测试次数从 n 减少到 log2(n)

“元函数”在 Python 中很容易,因为函数是 Python 中的一流对象。您没有说明首选语言:如果您需要 Python 中的“元函数”示例,请告诉我。

关于database - 存储分段函数的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53345002/

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