Algorithm 寻找投票集团的算法

Algorithm 寻找投票集团的算法,algorithm,cluster-analysis,voting,Algorithm,Cluster Analysis,Voting,(对音乐爱好者的警告:这个问题涉及欧洲电视歌曲大赛) 欧洲电视歌曲大赛在欧洲是一项很受欢迎的活动。对于那些不熟悉这个概念的人来说,这基本上是一场比赛,每个参赛国家表演一首歌,然后为其他国家投票。每个国家可以给其他10名参赛者加分,给他们最喜欢的歌曲加12分,给第二喜欢的歌曲加10分,然后8分减1分。换句话说,一个国家给其他10个国家打分 我正试图写一个算法来分析这些年来的投票情况,并检测“投票集团”,即倾向于相互投票的国家 我使用这两种类型来存储点: TPoints = record Fro

(对音乐爱好者的警告:这个问题涉及欧洲电视歌曲大赛)

欧洲电视歌曲大赛在欧洲是一项很受欢迎的活动。对于那些不熟悉这个概念的人来说,这基本上是一场比赛,每个参赛国家表演一首歌,然后为其他国家投票。每个国家可以给其他10名参赛者加分,给他们最喜欢的歌曲加12分,给第二喜欢的歌曲加10分,然后8分减1分。换句话说,一个国家给其他10个国家打分

我正试图写一个算法来分析这些年来的投票情况,并检测“投票集团”,即倾向于相互投票的国家

我使用这两种类型来存储点:

TPoints = record
  FromCountry : string; //ID of the country
  ToCountry   : string;
  Year        : integer;
  Semifinale  : boolean;
  Amount      : integer; //1-8,10,12 for years 1975-present, other values for year 1957-1974
end;

TAllPoints = class(TList<TPoints>)
  //Methods i _think_ I need:
  function Sum(aFrom,aTo : string; aFromYear : integer = 0; aToYear : integer = 0) : integer;
  function BlocScore(aCountries: array of string; aFromYear : integer = 0; aToYear : integer = 0) : double;
end;
TPoints=记录
FromCountry:字符串//国号
国家:字符串;
年份:整数;
半终末:布尔;
金额:整数//1975年至今的1-8,10,12,1957-1974年的其他值
结束;
TAllPoints=类别(TList)
//我认为我需要的方法:
函数和(aFrom,aTo:string;afromeyear:integer=0;aToYear:integer=0):整数;
函数BlocScore(accountries:string数组;afromeyear:integer=0;aToYear:integer=0):double;
结束;
有两个问题我需要回答

  • 我应该如何计算BlocScore?我需要一个好方法来衡量一组国家的“友好程度”。在我的预备考试中,我使用了(组中各个国家之间的分数总和)/(我希望测量的时期数*国家数)。这听起来合理吗?当我测试在ESC环境中传统上被视为“友好”的国家时,似乎给了他们一个很高的分数,但我认为这并不完美

  • 考虑到一个集团可以是任意数量的国家,我如何在潜在集团之间循环。我可以限制自己,比如说,2到10个国家的集团,但我希望有一个通用算法可以检测任何规模的集团。据我统计,这些年来,有57个国家参加了电子稳定控制系统的竞争,即使我限制自己每个集团最多有10个国家,也超过430亿个集团


  • 是否有专门用于此目的的算法?还是有一些通用的算法可以调整?我试着用谷歌搜索它,但我只找到了投票集团的定义,而没有找到如何检测它们。

    如果我理解正确,这只是用权重进行聚类,所以可能值得一看,但这可能有点太重了,因为你看到的是不到100个国家之间的互动

    一个简单的快速想法是:你可以把投票建模为链接,并给它们分配不同的强度,然后使用算法来布局while图,最后进行聚类吗?当然,最终的可视化应该很容易通过查看结果进行聚类

    对于这种方法,您还可以生成一个图形文件,然后使用像Gephi这样的工具来完成


    另外,这里还有一个相关帖子:

    这听起来有点像集群问题。确实如此。我不知道这个概念。我不知道集群,加权与否,所以这非常有用。当你有特定的东西要搜索时,搜索就容易多了:-)至于你关于使用强制有向图绘制算法的建议,听起来很有趣,但可能不太实用?(虽然如果做得好肯定会很好看)。此外,乍一看,这似乎是密切相关的: