加快用于图构建的LCS算法

时间:2015-05-11 14:29:55

标签: performance algorithm dynamic-programming graph-theory

引用INOI 2011中的第二个问题:

  

N人住在Sequence Land。而不是名称,每个人都由一系列整数标识,称为他或她的id。每个id都是一个没有重复元素的序列。如果他们的ids至少有K个共同的元素,据说两个人是彼此的亲戚。 Sequence Land居民的大家庭包括她自己,所有亲属,亲属的亲属,亲属亲属的亲属等,没有任何限制。   鉴于Sequence Land的所有居民(包括其总统)和K号的ids,查找Sequence Land总统大家庭的人数。

     

例如,假设N = 4且K = 2.假设总统有id(4,6,7,8),其他三个居民有id(8,3,0,4),(0,10) ),和(1,2,3,0,5,8)。在这里,总统与(8,3,0,4)直接相关,而后者又与(1,2,3,0,5,8)直接相关。因此,总统的大家庭由除(0,10)以外的所有人组成,因此大小为3。

     

限制:1&lt; = n&lt; = 300&amp; 1&lt; = K <= 300.每个id的元素数量:1-300

目前,我的解决方案如下:

  1. 对于每个人,使用与LCS相同的算法将他的id与所有其他id进行比较,可以编辑它以停止搜索k个元素是否等等等以改善它的平均案例表现。 时间复杂度= O(n ^ 2 * k ^ 2)

  2. 使用上一步结果构建邻接列表。

  3. 使用BFS。输出结果

  4. 但是这个算法的整体时间复杂度对于第二个子任务来说还不够好。我用Google搜索了一下,发现大多数解决方案与我的类似,并且不适用于更大的子任务。唯一接近一个好解决方案的是这个 - &gt; Yes, this question has been asked previously。我再次提出基本相同的问题的原因是,该解决方案非常难以使用和实施。最近,我的一个朋友告诉我他在某处读到的更好的解决方案。

    有人可以帮助我创建更好的解决方案吗?

    即使指向更好的解决方案也会很棒。

0 个答案:

没有答案