【发布时间】:2015-05-21 10:20:56
【问题描述】:
我不是指生成随机数的函数,而是生成random function的算法
“高维”表示函数是多变量的,例如一个 100 维的函数有 100 个不同的变量。
假设域是[0,1],我们需要生成一个函数f:[0,1]^n->[0,1]。该函数是从某一类函数中选择的,因此选择这些函数中的任何一个的概率都是相同的。 (这类函数可以是全连续的,也可以是 K 阶导数,以算法方便为准。)
由于闭区间域上的函数是不可数无限的,我们只要求算法是伪随机的。
有解决这个问题的多项式时间算法吗?
我只想为问题添加一个可能的算法(但由于其指数时间复杂度而不可行)。该算法是由最开始提出这个问题的朋友提出的:
算法可以简单描述如下。首先,我们假设维度 d = 1。考虑区间 I = [a; 上的平滑函数乙]。首先,我们拆分域 [a; b] 分成 N 个小区间。对于每个区间 Ii,我们生成一个随机数 fi,存在于某些特定分布(高斯或均匀分布)中。最后,我们进行插值 series (ai; fi),其中ai是Ii的特征点(例如,我们可以选择ai作为Ii的中点)。插值后得到一条平滑的曲线,可以看作是一个存在于函数空间 Cm[a; 中的一维随机函数构造。 b](其中 m 取决于我们选择的插值算法)。
这只是说算法不需要那么正式和严格,而只是提供一些可行的东西。
【问题讨论】:
-
您可能需要更精确地指定
certain class of functions。虽然为多项式函数(具有固定次数)生成随机系数非常容易,但您将很难为所有连续函数的向量空间找到合适的基础,从而允许类似的事情。想象一下 abs(x)、sin(x) 或 exp(x) 作为您希望包含在随机函数生成器中的函数的简单示例,但您将无法通过“随机”选取来生成它们一些值。 -
@HW 我的问题是在闭合区间上生成任何连续或 K 阶导数函数,而不是简单类型的函数。这确实是使问题变得困难的原因......
-
要让短语“选择这些函数中的任何一个的概率是相同的”有意义,需要您选择“特定类别的函数”并对其进行度量类函数。否则,如果我可以选择,我只选择满足条件的线性函数类,然后我选择一个算法来选择它们,然后我定义一个函数子集的度量等于我的选择在那个子集中的概率,所以我的选择算法对于我的度量是自动统一的。
-
This is just to say that the algorithm does not need to be that formal and rigorous, but simply to provide something that works.问题在于您说您希望能够生成任何连续函数!通过简单地连接一些点,您当然会获得一个连续函数,并且随着点数的增加,您可以非常接近任何所需的函数。但是,通过“随机”选择这些点,您很可能会获得剧烈振荡的函数,因此这远不能回答您最初的问题。