Algorithm 计算排名数据的估计数学期望值?
我必须按应用程序下载数量对“最受欢迎的应用程序RSS”进行排序。问题是: 假设有1000个应用程序 RSS数据列出了每个应用类别的前100个应用 RSS数据还提供了前100个应用程序列表,而不考虑类别 RSS是按每个应用程序的下载计数排序的,但确切的下载计数是未知的 每个应用程序都有两个已知属性:类别和它在RSS排名中的位置 现在,我想根据1000个应用程序的估计下载量对其进行排序 排序不需要非常精确,只是从统计角度来说,尽可能多的排序是可以的Algorithm 计算排名数据的估计数学期望值?,algorithm,math,sorting,Algorithm,Math,Sorting,我必须按应用程序下载数量对“最受欢迎的应用程序RSS”进行排序。问题是: 假设有1000个应用程序 RSS数据列出了每个应用类别的前100个应用 RSS数据还提供了前100个应用程序列表,而不考虑类别 RSS是按每个应用程序的下载计数排序的,但确切的下载计数是未知的 每个应用程序都有两个已知属性:类别和它在RSS排名中的位置 现在,我想根据1000个应用程序的估计下载量对其进行排序 排序不需要非常精确,只是从统计角度来说,尽可能多的排序是可以的 我如何实现这个排序算法?TIA.您可以这样处理:(
我如何实现这个排序算法?TIA.您可以这样处理:(我假设每个应用程序只属于一个类别) 假设每个类别C1..C10的排名如下
C1 C2 ... C10
app1-1 app2-1
app1-2 &pp2-2
.. ...
app1-100 app2-100 app10-100
及
总共100个顶级应用类别(例如):
现在使用这两个表,首先您需要按照列表C中app1-1到app10-1的顺序对C1到C10进行排序,这样您就“知道”(更像是猜测)就排名而言,哪个类别更重要
然后使用此信息对其余的进行排序
现在我想用一个更简单的例子来说明如何对其余元素进行排序。 让我们看3个类别和12个应用程序
C1 C2 C3
app1 app21 app31
app2 app22 app32
app3 app23 app33
app4 app24 app34
和C=app1 app2 app21 app31
1.首先在表中用C标记所有元素:
app1 app21 ->app31
| /
app2 app22 app32
app3 app23 app33
app4 app24 app34
2.第二步,对其余元素进行排序
由于您没有更多信息,因此最好从左到右(从较大的排名榜首列表到较小的排名榜首列表)查看每一行,这将给出:
app3 app22 app32 app4 app23 app33 app24 app34
那么总体分类将是:
app1 app2 app21 app31 app3 app22 app32 app4 app23 app33 app24 app34
我希望这个例子能让我的想法清晰明了,并能有所帮助
我认为这种方法使用了C1…C10和C中的所有信息。一个简单的方法是使用总体排名前100名来确定从哪个类别获得下一个应用程序 比苏多代码:
While (not finished)
i++
category = Overall_list(i).getCategory()
Overall_list.add(get next app from list for category)
end while
在总排名前100名中没有条目的任何类别都将添加到最后。按如下方式构建一个有向图:
如果没有更多的信息(例如:某种概率模型),我真的无法解释“统计上说最有可能”的真正含义 一个应用程序可以包含多个类别吗?@amit,让我们简单一点,一个应用程序只能包含一个类别。谢谢,但是你如何确定C1、C2、C3等的迭代顺序。?在你的例子中,只是以任意顺序?@λq_,顺序将取决于app1 app21和app31在主类中的出现顺序:见我帖子中的这句话:“现在使用这两个表,首先你需要C1到C10的顺序,app1-1到app10-1在C中出现的顺序相同,所以你“知道”(这更像是一个猜测)就排名而言,哪一类更重要。”@λq_,这是我在示例的第一部分所做的。(我只是按正确的顺序选择了C1、C2、C3,但如果C是app21 app11 app31 app22,我会订购C2 C1 C3)谢谢,伙计,这看起来太棒了!你能给我一些伪代码让我更好地理解吗?维基百科页面上有伪代码。至于实现,有一个名为“tsort”的Unix命令可以执行此操作。
While (not finished)
i++
category = Overall_list(i).getCategory()
Overall_list.add(get next app from list for category)
end while