划分最大基数的自由子集

时间:2014-02-21 18:49:14

标签: algorithm

如果不存在S的不同元素x和y使得x可被y整除,则称为正整数的集合S是“无划分的”。例如,S = {2,3,5}是无分割的,但是{2,3,4,5}不是,因为4可以被2整除。你将如何计算{1,2,...的最大子集。 ..,n}这是免费的吗?例如,当n = 10时,则T = {4,6,7,9,10}是最大除法子集之一。

我小学的侄子问我这个看似简单的数学问题。我只能想到蛮力方法。但是当n很大时会变得很难看。是否有一个不错的算法可以通过计算机来解决它?

感谢。

2 个答案:

答案 0 :(得分:5)

两个数字k2k不能同时属于无分区子集,因此该子集不能包含超过ceil(n/2)个数字。
只需将floor(n/2)+1的所有数字都带到n

答案 1 :(得分:0)

这与在comparability graph中查找具有多项式时间算法的独立集相同,因为它是一个完美的图。

看看这个:https://cs.stackexchange.com/questions/10274/how-to-find-the-maximum-independent-set-of-a-directed-graph