log(n!)= O((log(n))^ 2)?

时间:2016-10-28 09:27:33

标签: algorithm time-complexity big-o complexity-theory asymptotic-complexity

我正在练习渐近分析的问题而且我遇到了这个问题。

function custom_action_function() { $first_name = $_POST['get_first_name']; /* fetch your form variable here */ if('your condition') // your condition if success { echo json_encode(array('status' => 'success', 'message' => 'Message Sent.')); exit; } else { echo json_encode(array('status' => 'error', 'message' => 'Message not sent')); exit; } } add_action('wp_ajax_custom_action', 'custom_action_function'); // Call when user logged in add_action('wp_ajax_nopriv_custom_action', 'custom_action_function'); // Call when user in not logged in

我能够证明

log(n!) = O((log(n))^2)

log(n!) = O(n*log(n)) 
(log 1 + log 2 + .. + log n <= log n + log n + ... + log n)

我无法继续下去。关于如何进一步处理的任何暗示或直觉?感谢

2 个答案:

答案 0 :(得分:2)

符合Stirling's Approximation

log(n!) = n*log(n) - n + O(log(n))

log(n!)的明显上限是O(nlogn)

可以通过删除等式的前半部分来计算下限:

log(1) + ... + log(n/2) + ... + log(n) = log(n/2) + ... + log(n)                                         
= log(n/2) + ... + log(n/2)                                         
= n/2 * log(n/2)

所以下限也是nlogn。显然答案是

答案 1 :(得分:0)

我想我得到了自己问题的答案。我们将证明以下事实:

1)n*log(n)log(n!)

的紧密界限

2)n*log(n)(log(n))^2

的上限

3)n*log(n)不是(log(n))^2

的下限

证明(1)见this

证明(2)&amp; (3)在问题本身中提供。 log n < n增长率的增长率。 因此log(n)^2 <增长率n*log(n)的增长率。 所以log(n)^2 = o(n*log(n))(我在这里用little-o表示n*log(n)的增长率严格大于log(n)^2的增长率

所以结论是log(n!) = big-omega(log(n^2)) 如果我犯了任何错误,请纠正我