我正在通过cormen等来通过文本介绍算法。 al。在我遇到的重复关系中,用于分析线性选择算法的时间复杂性,我认为很少有问题可能相对于 $ n $ ,其中一些东西可能不匹配 $ t(n)$ 的输入大小是假设 $ o(1)$ $ cn $ 以替换方法。

文本的详细信息如下:


我们现在可以为算法选择的最坏情况运行时间 $ t(n)$ 选择复发。步骤1,2和4拍摄 $ o(n)$ 时间。 (步骤2由 $ o(n)$ 插入量排序的 $ o(1)$ < / span>步骤3需要时间 $ t(\ lceil n / 5 \ rceil)$ ,步骤5需要the time $ t(7n / 10 + 6)$ ,假设t在单调上增加。 我们做出了假设,这似乎不会在第一次下载,那些少于 $ 140 $ 元素需要 $ o(1)$ 时间;魔术常量 $ 140 $ 将很快清楚。 $ ^ \ dagger $ 我们可以获得复发

$$ t(n)\ LEQ \ BEGIN {案例} o(1)&\ quad \ text {if $ n <140 $ $ ^ \ ddagger $} \\ t(\ lceil n / 5 \ rceil)+ t(7n / 10 + 6)+ o(n)&quad \ text {if $ n \ geq 140 $ $ ^ \ | $} \\ \结束{案例} $$

我们显示运行时间是用替换线性的。更具体地说,我们将显示 $ t(n)\ leq cn $ 对于某种适当的常量 $ c $ 所有 $ n> 0 $ 。我们首先假设 $ t(n)\ leq cn $ 对于某种适当的常量 $ c $ 所有 $ n <140 $ $ ^ {\匕首\匕首} $ ;如果 $ c $ 足够大,则该假设持有。我们还选择一个常量的a,使得 $ o(n)$ 术语中描述的函数(其描述了算法的运行时间的非递归分量)通过 $ n> 0 $ 以上界面界定。将这种归纳假设替换为复发的右侧

$$ t(n)\ leq c \ lceil n / 5 \ rceil + c(7n / 10 + 6)+ a $$

$$ \ LEQ CN / 5 + C + 7CN / 10 + 6C + AN $$

$$= 9cn / 10 + 7c + $$

$$= cn +( - cn / 10 + 7c + a)。$$

是最多 $ cn $ 如果

$$ - CN / 10 + 7C + AN \ LEQ 0. \标签1 $$

$$ \ iff c \ geq 10a(n /(n-70))\ quad \ text {当n> 70} $$

因为我们假设 $ n \ geq 140 $ $ ^ {\ ddgagger \ ddagger} $ 我们有 $ n /(n-70)\ leq 2 $ 等选择 $ c \ geq 20a $ 将满足不等式<跨度类=“math-container”> $(1)$


$$ \ dgragr \ quad \ text {此处遵守重复关系的$ \ ddagger $} $$

$$ \ dgragr \ dgragr \ quad \ text {这里的语句不符合重复关系的$ \ | $ \ | $$ \ | $$

$$ \ ddgagger \ ddgagger \ quad \ text {此处的语句符合递归关系的$ \ | $$ \ | $$$


我无法理解这种差异,但是我没有包括整个算法(在clrs部分 $ 9.3 $ ),但如果需要它,请说明我也将包括它。

有帮助吗?

解决方案

似乎 $ \ dgragr \ dagger $ $ \ | $ 一致。您只需要选择一个常量 $ c $ ,它大于或等于常量 $ \ gamma $ 隐藏在 $ o(1)$ 表示法中的 $ t(n)$ for for $ n <140 $ (即,带有 $ \ ddagger $ )的行。

然后,对于任何 $ n \ in \ {1,\ dots,139 \} $ ,您有 $根据需要,t(n)\ gamma \ Le C \ Le CN $

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top