【发布时间】:2018-08-10 06:59:27
【问题描述】:
我想在 Python 中估计一个高维形状的体积。我有一个预言机来查询我是否在形状内。我处于高维度(至少32*32=1024 维度)。理想情况下,我不想自己实现它,因为:
- https://arxiv.org/pdf/1401.0120.pdf 范围内的论文似乎技术含量很高,而且似乎非专家很容易出错
- 这似乎是一道标准数学问题(估计高亮度下的体积),因此假设存在比我可以在 python 中破解的代码更好的优化代码似乎是明智的。
有人知道解决这个问题的好方法吗?我应该继续实施我链接的论文中的那个吗?
不确定数学技术限制可能是什么,但是:
- 我可以访问显示 +1 或 -1 的预言机,具体取决于我是否在形状内。
- 我想估计凸形的形状
现在我只是想继续执行类似的实现:
- 决定一个最有可能包含我想要估计的形状的真正出价范围
- 采样许多点(很高兴知道我需要采样多少能够很好地估计我的形状)
但是,由于这似乎是一个微妙的技术领域,如果我可以避免它,我宁愿不要太老套(特别是如果我可以得到样本数量的理论保证)
我发布问题之前的相关链接:
- https://www.quora.com/unanswered/What-are-the-fastest-algorithms-to-implement-in-practice-that-estimate-high-dimensional-volumes
- https://arxiv.org/pdf/1401.0120.pdf
- https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.ConvexHull.html
- https://cstheory.stackexchange.com/questions/9573/computing-volume-of-high-dimensional-convex-polyhedra
- http://www.qhull.org/
【问题讨论】:
-
我怀疑普通抽样是否可行。作为一个简单的例子,假设你的形状是一个边 L 的 1024 维立方体,并且你从边 1 的包含立方体中均匀采样。如果 L 是 0.99,那么小立方体的体积大约是 3.4e-5,所以如果你画100000 个样本你可能会得到 10% 的体积。但如果 L 为 0.9,则体积约为 1.4e-47,您将永远采样...
-
@AlexisOlson dam,这似乎需要
(1024^4)/(60*60*24*365)=34.865K年。好吧,我想我需要一种不同于建议的方法。 -
你试图解决这个问题的应用是什么?也许不同的攻击角度会更好。
-
@AlexisOlson 我正在解决的问题在我相信的问题中有所描述,但要点是我想通过查询一个告诉我我是否是的预言机来估计(未知)形状的体积是否在形状内。
-
让我再试一次@AlexisOlson 的问题:人们通常不会醒来说“今天,我需要通过查询预言机来估计未知形状的体积”。更有可能是“我需要通过赢得比赛来估算这本书可以获得 30 美元,这样我才能购买这本自传”,在这种情况下,我们可以提出更简单的方法来赚取 30 美元,或者二手书店,或者我们可以警告你这本书是自私的,有许多明显的遗漏。如果你只是想让音量令人赞叹,没有什么可做的,但知道你想要它的原因可以帮助你找到通往最终目标的新途径。