Performance 使两个直方图成比例的算法,最小化删除的单位
假设你有两个相同数量的柱状图。N观测值分布在箱子之间。每个箱子现在有0到N个观测值 什么算法适合于确定从两个直方图中删除的最小观察数,以使它们成比例?它们不需要绝对数相等,只需要彼此成比例。也就是说,必须有一个公因数,通过该公因数,一个直方图中的所有箱子都可以相乘,以使其与另一个直方图相等 例如,想象以下两个直方图,其中每个直方图中的项目i指的是各个直方图在bin i中的观察数 直方图1:4,7,4,9Performance 使两个直方图成比例的算法,最小化删除的单位,performance,algorithm,sorting,optimization,histogram,Performance,Algorithm,Sorting,Optimization,Histogram,假设你有两个相同数量的柱状图。N观测值分布在箱子之间。每个箱子现在有0到N个观测值 什么算法适合于确定从两个直方图中删除的最小观察数,以使它们成比例?它们不需要绝对数相等,只需要彼此成比例。也就是说,必须有一个公因数,通过该公因数,一个直方图中的所有箱子都可以相乘,以使其与另一个直方图相等 例如,想象以下两个直方图,其中每个直方图中的项目i指的是各个直方图在bin i中的观察数 直方图1:4,7,4,9 直方图2:2,0,2,1 对于这些直方图,解决方案是从直方图1中删除bin 2中的所有7个观
直方图2:2,0,2,1 对于这些直方图,解决方案是从直方图1中删除bin 2中的所有7个观察值和bin 4中的另外7个观察值,这样(直方图1)*2=直方图2 但是,可以使用什么通用算法来找到两个直方图的子集,使它们之间的总观察数最大化,同时使它们成比例?您可以从两个直方图中删除观察值,也可以仅从一个直方图中删除观察值
谢谢>P>在我看来,这个问题是等价的(如果你把每个直方图看作是n维向量),为了最小化曼哈顿长度r,其中R=X-B,A和B是你的“向量”,X是你的比例标度。p> |R |有一个最小值(不一定是整数),因此可以使用简单的二分法(或类似于牛顿法的方法)快速找到它 然后,假设您想要一个比例为整数的解决方案,测试ceil(x)和floor(x)两种情况,以找出哪种情况的曼哈顿长度最小(这是您需要删除的观察数) 证明问题不是NP难的: 考虑一个低效的“解决方案”,即从所有容器中删除所有N个观察值。现在A和B都等于“零”直方图0=(0,0,0,…)。两个柱状图相等,因此对于所有比例值s,成比例为0=s*0,因此要删除的观测数的硬最大值为N 现在假设存在一个更有效的解决方案,分配/删除
我相当肯定(但还没有正式的证据),比例因子不能超过最填充的容器中的观察数。实际上,它通常要小得多。对于具有200个箱的两个直方图和随机选择的每个箱30-300个观察值:如果在A和B的所有箱中分别存在Na>Nb总观察值,则比例因子几乎总是在Na/Nb-4