Algorithm 寻找投票集团的算法
(对音乐爱好者的警告:这个问题涉及欧洲电视歌曲大赛) 欧洲电视歌曲大赛在欧洲是一项很受欢迎的活动。对于那些不熟悉这个概念的人来说,这基本上是一场比赛,每个参赛国家表演一首歌,然后为其他国家投票。每个国家可以给其他10名参赛者加分,给他们最喜欢的歌曲加12分,给第二喜欢的歌曲加10分,然后8分减1分。换句话说,一个国家给其他10个国家打分 我正试图写一个算法来分析这些年来的投票情况,并检测“投票集团”,即倾向于相互投票的国家 我使用这两种类型来存储点:Algorithm 寻找投票集团的算法,algorithm,cluster-analysis,voting,Algorithm,Cluster Analysis,Voting,(对音乐爱好者的警告:这个问题涉及欧洲电视歌曲大赛) 欧洲电视歌曲大赛在欧洲是一项很受欢迎的活动。对于那些不熟悉这个概念的人来说,这基本上是一场比赛,每个参赛国家表演一首歌,然后为其他国家投票。每个国家可以给其他10名参赛者加分,给他们最喜欢的歌曲加12分,给第二喜欢的歌曲加10分,然后8分减1分。换句话说,一个国家给其他10个国家打分 我正试图写一个算法来分析这些年来的投票情况,并检测“投票集团”,即倾向于相互投票的国家 我使用这两种类型来存储点: TPoints = record Fro
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;
结束;
有两个问题我需要回答
是否有专门用于此目的的算法?还是有一些通用的算法可以调整?我试着用谷歌搜索它,但我只找到了投票集团的定义,而没有找到如何检测它们。如果我理解正确,这只是用权重进行聚类,所以可能值得一看,但这可能有点太重了,因为你看到的是不到100个国家之间的互动 一个简单的快速想法是:你可以把投票建模为链接,并给它们分配不同的强度,然后使用算法来布局while图,最后进行聚类吗?当然,最终的可视化应该很容易通过查看结果进行聚类 对于这种方法,您还可以生成一个图形文件,然后使用像Gephi这样的工具来完成
另外,这里还有一个相关帖子:这听起来有点像集群问题。确实如此。我不知道这个概念。我不知道集群,加权与否,所以这非常有用。当你有特定的东西要搜索时,搜索就容易多了:-)至于你关于使用强制有向图绘制算法的建议,听起来很有趣,但可能不太实用?(虽然如果做得好肯定会很好看)。此外,乍一看,这似乎是密切相关的: