algorithm - 这个组合生成器的时间复杂度是多少
问题描述
我想从一组 n 数字中生成 k 数字的所有组合,只要 k 小于或等于 Ceiling(n / c) 其中 c 是常数。这种算法在大 O 表示法中的时间复杂度是多少?复杂性是指数的、多项式的、伪多项式的还是其他的?
例如:n = 10, c = 3 10 中的 1 加上 10 中的 2 加上 10 中的 3 和 10 中的 4 的所有组合,因为 Ceiling(10/3) = 4。
解决方案
有指数数量的东西要返回,因此它必须是指数的。
为了证明这一点,只要证明n choose floor(n/c)
对于任何给定的 都呈指数级增长就足够了c
。要证明你只需要证明log(n choose floor(n/c))
是O(n)
。并证明您可以使用著名的选择公式和斯特林近似。
推荐阅读
- python - Python EXE 文件:为什么运行时会出现 ImportError?
- node.js - 使用 Google Drive API、Angular 和 Node JS 上传数据 URI pdf 文件
- wordpress - 打开浏览器的开发者工具如何阻止服务器循环?
- query-string - 页面上没有查询字符串选项的查询字符串
- video-streaming - Raspberry 3B+ 无法播放视频流
- javascript - 在 HTML/CSS 中调整按钮大小无法按预期工作
- java - 计算给定数的上界的程序
- php - how to get all values if ID tags from SVG sprite into php array
- python-3.x - Sort cards according to its suite and values using python
- python - 使用 azureSDK 在 python 中翻译扬声器输出中的音频