目前我正在阅读 Skiena 的“算法设计手册”(嗯,开始阅读)
他提出了一个他称之为“电影调度问题”的问题:
问题:电影调度问题
输入:线上的一组 n 个区间。
输出:可以从 I 中选择的相互不重叠区间的最大子集是多少?
例子:(每条虚线是一部电影,你想找到一个电影数量最多的集合)
----a---
-----b---- -----c--- ---d---
-----e--- -------f---
--g-- --h--
我想解决这个问题的算法是这样的:我可以扔掉“最坏的罪犯”(与大多数其他电影相交),直到没有最坏的罪犯(零交叉)。我看到的唯一问题是,如果有平局(比如两部不同的电影,每部都与其他 3 部电影相交),我扔掉哪一部有关系吗?
基本上我想知道如何将这个想法变成“数学”以及如何证明它是正确/不正确的。