编程之美2016复赛题目翻译

问题描述

微软学术图谱 (MAG) 是一个大型的异构图,其中包含很多实体,例如作者,论文,期刊,会议和实体间的关系。微软为这次比赛提供学术知识API (Academic Knowledge API) ,实体属性的定义在这里 (here)。

参赛者需要提供一个REST服务结点,给定MAG中一对实体的标识符,能够找到所有连接它们的1跳,2跳,3跳路径。给定的实体的标识符可以是[Id, Id], [Id, AA.AuId], [AA.AuId, Id], [AA.AuId, AA.AuId]。路径中的每一个结点必须是这些标识符:Id, F.Fid, J.JId, C.CId, AA.AuId, AA.AfId。路径中的边可以是:

Id1→Id2 当且仅当 Id1对应的论文中有一个RId等于Id2(即Id1引用了Id2)
Id1→F.FId2 当且仅当 Id1对应的论文中有一个F.FId等于F.FId2(即Id1的领域中包含F.FId2)
F.FId2→Id2 当且仅当 Id2对应的论文中有一个F.FId等于F.FId1(即Id2的领域中包含F.FId1)
Id1→C.CId2 当且仅当 Id1对应的论文中的C.CId等于C.CId2(即Id1在C.CId2会议上发表)
C.CId1→Id2 当且仅当 Id2对应的论文中的C.CId等于C.CId1(即Id2在C.CId1会议上发表)
Id1→J.JId2 当且仅当 Id1对应的论文中的J.JId等于J.JId2(即Id1在J.JId2期刊上发表)
J.JId1→Id2 当且仅当 Id2对应的论文中的J.JId等于J.JId1(即Id2在J.JId1期刊上发表)
AA.AuId1→AA.AfId2 当且仅当 AA.AuId1对应的AA.AfId等于AA.AfId2(即作者与单位有一条边)
AA.AfId1→AA.AuId2 当且仅当 AA.AuId2对应的AA.AfId等于AA.AfId1(即单位与作者有一条边)
AA.AuId1→Id2 当且仅当 AA.AuId1对应的一个Id等于Id2(即作者与他参与编写的某篇文章有一条边)
Id1→AA.AuId2 当且仅当 Id1对应的论文中的一个AA.AuId等于Id1(即论文与其作者之间有一条边)

对于每个测试样例,REST服务结点会通过HTTP接收一个JSON数组,包含一对实体的标识符,标识符是64位的整型,例如[2147483647,2147483648]。服务结点需要在300秒内做出回应。回应的JSON数组包含一个路径列表[path1, path2, …, pathn],每一个路径对应一个实体的标识符的数组。举个例子,如果你的程序找到了一个1跳路径,两个2跳路径,一个3跳路径,结果就看起来像这样:[[123,456], [123,2,456], [123,3,456], [123,4,5,456]]。对于路径[123,4,5,456],这些整数代表了路径上实体的标识符。当收到你的回应之后,评测机将会等待一个随机长度的时间,然后再发送下一个请求。

评测方法

在最终的评测中,REST服务必须部署到一个Standard_A3虚拟机。不限定编程的语言。
在最终的评测之前,你无法得到测试用例。当评测开始时,评测系统会给每个队的REST终端结点单独发送测试用例。每个队伍会接收到10个测试用例(Q1到Q10)。设回应测试用例Qi的时间为Ti(1≤i≤10),那么最终得分的计算公式:

20160426175207674

其中Ni 是Qi 的解的规模 (正确路径的总数量) , Ki 是你的REST服务返回的路径总数,Mi 是你的REST服务返回的正确的路径数(重复的路径不重复计算)