我有不同长度的电影剪辑(a1,...,an )的(播放)列表(A) 。我想创建一个新列表(B),其中剪辑 ( b1,...,bm ) 与(A)中的剪辑连接。
还有一个限制MAX_LEN,(B)中的bx不能超过。只有 a 中的相邻剪辑可以连接(a1+a2+a3是合法的连接,a1+a3不是)。(A)中的所有剪辑必须在(B)中出现一次,并且必须按照它们在(A)中出现的顺序出现
最优解主要:
1)最小化(B)中的剪辑数量。
和次要的:
2)最大化(B)中最短剪辑的持续时间。
主要约束1)比2)更重要,因此对于NumOfClips( S1 ) < NumOfClips( S1 )的 2 个不同解决方案S1和S2 ,即使 durationOfShortestClip( S1 ) < durationOfShortestClip( S2 ), S1也比S2 “更优” 。
这是一个示例,显示了一个输入列表(A)三个可能的输出(B1)和(B2)和(B3)。( B1 )或(B2)都满足1)(尽管(B2)是比(B1)更好的解决方案,因为 25>23)最佳解决方案是(B3)。
我想知道如何以有效的方式找到最佳解决方案?其他帮助完整的信息/线索,例如存在或不存在最优子问题等,也值得赞赏。