【发布时间】:2016-05-26 05:48:01
【问题描述】:
鉴于我们收集了不同类型的视频(例如类型 A、B 和 C,...),我们正在寻找一种有效的算法来将这些对象排序到播放列表中,以便我们具有最大的分散性。也就是说,如果可以避免的话,我们要确保来自 A 的两个视频不会背靠背放置。 播放列表会重复播放(结束时会重新开始。所以这方面也应该考虑)。
什么是能够以良好的分散性执行上述操作的有效算法?
输入示例:
- 5 个 A 型对象(A1、A2、A3、A4、A5)
- 3 个 B 类对象(B1、B2、 B3)
输出 - 非最佳
A1、B1、A2、B2、A3、B3、A4、A5
这不是最优的,因为在 A4 之后,A5 播放,然后播放列表循环返回并播放 A1。现在我们已经连续播放了 3 个类型 A 的视频。
最佳输出
A1、B1、A2、A3、B2、A4、B4、A5
这是最佳选择,因为我们只有 2 个相同类型的视频背靠背播放。
请注意,该算法应适用于不同数量的类型和视频。
【问题讨论】:
-
你的意思是列表永远循环播放,我们想尽量减少从一组连续播放的视频数量吗?
-
我是否理解正确,您只想最小化最大数量的连续项目:即,如果无法避免,您更喜欢连续多次出现 3 个元素而不是单次连续 4 个元素。这是正确的吗?
-
@dingalapadum 是的,我想最小化同一组中连续项目的最大数量。
-
如果有多个解决方案,其中没有来自同一组的连续项目,如何选择一个解决方案?
-
每个视频只有一个属性/标签?它可以像一个视频一样适合 A 和 C 类型
标签: algorithm