查看: 1462| 回复: 5
跳转到指定楼层
上一主题 下一主题
收起左侧

[二分/排序/搜索] 已知NLogN的值,有没有O(1)的方法求得N?

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
比如当N=100时,NLog10(N)=200

如果已知NLog10(N)=200,能不能知道N等于多少?

我们知道可以用二分来逼近。但是有没有什么函数可以世间法度O(1)得到N呢?



上一篇:[求助背包问题]非常蛋疼的一直wrong answer,还没有test case
下一篇:新人刚转cs有题目,求赐教
推荐
 楼主| 14417335 2019-5-21 09:44:27 | 只看该作者
全局:


多谢楼上两位的提点

n * log n = c,c为常数题目给定
为了方便,把log变成以e为底的。
n * ln(n) = c



  1. 把ln(n)写成x,则有
  2. e ^ (ln(n)) * x = c

  3. (e ^ x) * x = c

  4. 求f(x) = (e ^ x) * x - c 的根。

  5. 求一导

  6.   f'(x) = (e ^ x) * x + (e ^ x) * 1 = (e ^ x) * (x + 1)

  7. 牛顿迭代为

  8. x[n+1] = x[n] - ( f(x[n]) / f'(x[n]) )

  9. x[n+1] = x[n] - ( ( (e ^ x[n]) * x[n] - c ) / ( (e ^ x[n]) * (x[n] + 1) ) )

复制代码


回复

使用道具 举报

全局:
用牛顿法迭代一次应该是O(1)? 如果对精度要求不高的话

评分

参与人数 1大米 +1 收起 理由
14417335 + 1 牛顿迭代好像比二分要快

查看全部评分

回复

使用道具 举报

🔗
magicsets 2019-5-20 12:49:45 | 只看该作者
全局:
N * Log10(N) = a 有一个表达式解:https://www.wolframalpha.com/input/?i=n+log_b(n)+%3D%3D+a
--
N = a * Ln(10) / W( a * Ln(10) )
--

里面的W函数叫做Lambert W Function,可以看出来原问题的解与W函数的计算可以通过一两次乘除法互相转换 —— 也就是原问题有没有好的解法基本上等价于W函数有没有好的计算方法。
再附加一个参考链接:https://math.stackexchange.com/q ... unction-calculation

上面的Mathematics Stack Exchange链接里提到了这个版本的代码:http://people.sc.fsu.edu/~jburkardt/cpp_src/toms443/toms443.html
实现上好像只用了少量次数的迭代

Lambert W Function应该是一个很重要的函数,可以搜一搜还有很多其他approximation方式的论文和实现


补充内容 (2019-5-20 12:52):
第一个链接要把后面的“ (n)+%3D%3D+a ”部分都复制上去

评分

参与人数 1大米 +5 收起 理由
14417335 + 5 大神

查看全部评分

回复

使用道具 举报

🔗
 楼主| 14417335 2019-5-21 09:04:19 | 只看该作者
全局:
本帖最后由 14417335 于 2019-5-20 20:05 编辑
magicsets 发表于 2019-5-19 23:49
N * Log10(N) = a 有一个表达式解:https://www.wolframalpha.com/input/?i=n+log_b(n)+%3D%3D+a
--
N =  ...

这个网站很牛的样子。
https://www.wolframalpha.com
求导还能自动分析出来。
https://www.wolframalpha.com/input/?i=xe%5Ex+%2B+1

x * e^x + 1 求导得到e^x (x + 1)


回复

使用道具 举报

🔗
tuwei 2019-5-21 21:58:24 | 只看该作者
全局:
我记得可以牛顿迭代法
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表