Redian新闻
>
真心请教如何计算sqrt(20.8)或者 exp(1.2)最快
avatar
真心请教如何计算sqrt(20.8)或者 exp(1.2)最快# PDA - 掌中宝
z*h
1
16. [Microsft] 给出平面上第一象限内landscape 的轮廓,也就是一些列的(x,y)坐标
, x=0,1,...,N
,以及Y 轴上光源坐标(0,H)。问这N+1 个点钟那些被照亮那些是阴影。(叉乘)
一一计算光源到(x,y)的角度,再与左边的角度对比即可知是否被遮挡,复杂度O(N)
只需要与左边角度对比?O(N)?
我还是觉得必须n方阿。
哪位大牛指点一下?谢谢!
avatar
y*u
2
我今天晚上哪都不去,吃过饭就上床,我 要睡够12小时
avatar
g*t
3
前面说的AAPL某人当年的圆角矩形算法如何NB,
但我老从没听说过AAPL的办法.
谁能展开说说,或者给个link?
Thanks in advance
avatar
l*a
4
我认为
每个点跟之前的极值点比较即可
所以是线性

【在 z****h 的大作中提到】
: 16. [Microsft] 给出平面上第一象限内landscape 的轮廓,也就是一些列的(x,y)坐标
: , x=0,1,...,N
: ,以及Y 轴上光源坐标(0,H)。问这N+1 个点钟那些被照亮那些是阴影。(叉乘)
: 一一计算光源到(x,y)的角度,再与左边的角度对比即可知是否被遮挡,复杂度O(N)
: 只需要与左边角度对比?O(N)?
: 我还是觉得必须n方阿。
: 哪位大牛指点一下?谢谢!

avatar
b*i
5


【在 y*********u 的大作中提到】
: 我今天晚上哪都不去,吃过饭就上床,我 要睡够12小时
avatar
z*e
6
e^1.2不就是cauchy多项式展开咯

【在 g****t 的大作中提到】
: 前面说的AAPL某人当年的圆角矩形算法如何NB,
: 但我老从没听说过AAPL的办法.
: 谁能展开说说,或者给个link?
: Thanks in advance

avatar
z*h
7
请问什么是极值点?
avatar
l*o
8
我也要睡觉。。。
昨天只睡了两个钟头,困死我了。。。
avatar
g*t
9
啥叫cauchy多项式?
wiki没找到.我从没听说过.

e^1.2不就是cauchy多项式展开咯

【在 z*********e 的大作中提到】
: e^1.2不就是cauchy多项式展开咯
avatar
l*a
10
(0,h) 与 (x,y)的角度/斜率。。

【在 l*****a 的大作中提到】
: 我认为
: 每个点跟之前的极值点比较即可
: 所以是线性

avatar
x*u
11
ft
你做神仙?

【在 l*****o 的大作中提到】
: 我也要睡觉。。。
: 昨天只睡了两个钟头,困死我了。。。

avatar
z*e
12
哈,好久没用连名字都搞错了,taylor展开挺好算吧,10来20级就差不多到精度极限了

【在 g****t 的大作中提到】
: 啥叫cauchy多项式?
: wiki没找到.我从没听说过.
:
: e^1.2不就是cauchy多项式展开咯

avatar
p*2
13
没看明白。几何的东西?
avatar
l*o
14
不是神仙, 是僵尸,恩。。。

【在 x********u 的大作中提到】
: ft
: 你做神仙?

avatar
l*s
15
级数大学高数必教,可见以前的程序员很少读过本科。

【在 g****t 的大作中提到】
: 啥叫cauchy多项式?
: wiki没找到.我从没听说过.
:
: e^1.2不就是cauchy多项式展开咯

avatar
m*g
16
blockedPoints = []
for point in points:
angle = getAngle(point, lightOrig)
allAngles[angle]++;
if allAngles[angle] > 1 :
blockedPoints += points

【在 z****h 的大作中提到】
: 16. [Microsft] 给出平面上第一象限内landscape 的轮廓,也就是一些列的(x,y)坐标
: , x=0,1,...,N
: ,以及Y 轴上光源坐标(0,H)。问这N+1 个点钟那些被照亮那些是阴影。(叉乘)
: 一一计算光源到(x,y)的角度,再与左边的角度对比即可知是否被遮挡,复杂度O(N)
: 只需要与左边角度对比?O(N)?
: 我还是觉得必须n方阿。
: 哪位大牛指点一下?谢谢!

avatar
t*g
17
昨晚,第一觉1.5小时,第二觉5小时
我幸福死了
avatar
g*t
18
tylor 展开很慢.
不可能比Newton法快.

哈,好久没用连名字都搞错了,taylor展开挺好算吧,10来20级就差不多到精度极限了

【在 z*********e 的大作中提到】
: 哈,好久没用连名字都搞错了,taylor展开挺好算吧,10来20级就差不多到精度极限了
avatar
A*l
19
我连题目都没看懂,到底是N+1个“点”互相遮挡,还是这些点形成的多边形遮挡
另外这些点给出来的顺序也很重要,从左到右、从上到下顺时针、逆时针。。。
不过基本上是计算几何的问题

【在 z****h 的大作中提到】
: 16. [Microsft] 给出平面上第一象限内landscape 的轮廓,也就是一些列的(x,y)坐标
: , x=0,1,...,N
: ,以及Y 轴上光源坐标(0,H)。问这N+1 个点钟那些被照亮那些是阴影。(叉乘)
: 一一计算光源到(x,y)的角度,再与左边的角度对比即可知是否被遮挡,复杂度O(N)
: 只需要与左边角度对比?O(N)?
: 我还是觉得必须n方阿。
: 哪位大牛指点一下?谢谢!

avatar
x*u
20
僵尸好象永远都在睡觉的,恩

【在 l*****o 的大作中提到】
: 不是神仙, 是僵尸,恩。。。
avatar
g*t
21
级数跟 cauchy多项式 能有关系么.
人家说了写错名字,你发的感慨真扯.

级数大学高数必教,可见以前的程序员很少读过本科。

【在 l*********s 的大作中提到】
: 级数大学高数必教,可见以前的程序员很少读过本科。
avatar
G*e
22
没看懂题
avatar
wh
23
咋都这么累。我是过敏睡不好,很早就醒。大家都多睡点吧。

【在 l*****o 的大作中提到】
: 我也要睡觉。。。
: 昨天只睡了两个钟头,困死我了。。。

avatar
a*e
24
压根不计算根号
用的是累加,就是X走一步Y走几步的问题
直线,斜率就是个常数
2次曲线,斜率就是个累加器,加个边界条件就齐活了
6~70年代的技术被不读文献的主再次发明了

【在 g****t 的大作中提到】
: 前面说的AAPL某人当年的圆角矩形算法如何NB,
: 但我老从没听说过AAPL的办法.
: 谁能展开说说,或者给个link?
: Thanks in advance

avatar
z*h
25
多谢,这是空间换时间吧。
space O(n), time O(n).
不过从原作者描述好像是有space O(1) time O(n)的解法。。。

【在 m*****g 的大作中提到】
: blockedPoints = []
: for point in points:
: angle = getAngle(point, lightOrig)
: allAngles[angle]++;
: if allAngles[angle] > 1 :
: blockedPoints += points

avatar
p*i
26
我昨天睡了11小时
avatar
g*t
27
sqrt(x)不是你想的那么容易. exp(x)更难.

压根不计算根号
用的是累加,就是X走一步Y走几步的问题
直线,斜率就是个常数
2次曲线,斜率就是个累加器,加个边界条件就齐活了
6~70年代的技术被不读文献的主再次发明了

【在 a***e 的大作中提到】
: 压根不计算根号
: 用的是累加,就是X走一步Y走几步的问题
: 直线,斜率就是个常数
: 2次曲线,斜率就是个累加器,加个边界条件就齐活了
: 6~70年代的技术被不读文献的主再次发明了

avatar
z*h
28
confused.不能只跟之前的极值比吧。比如 X1 (1,h), X2(3, h), .... Xi-1(49, h)
Xi(50,h)。Xi不会被Xi-1遮挡但是会被不相临的x1遮挡。

【在 l*****a 的大作中提到】
: 我认为
: 每个点跟之前的极值点比较即可
: 所以是线性

avatar
s*M
29
tjjtds!!!!

【在 p********i 的大作中提到】
: 我昨天睡了11小时
avatar
l*s
30
taylor公式的特殊形式往往有特定名称,甚至有时候同一个公式不同领域都有不同的叫
法,要是有gauchy那也毫不奇怪,我怎么知道他是记错了。

【在 g****t 的大作中提到】
: 级数跟 cauchy多项式 能有关系么.
: 人家说了写错名字,你发的感慨真扯.
:
: 级数大学高数必教,可见以前的程序员很少读过本科。

avatar
z*h
31
我是这样理解的。假设每个点都是一个物理点的实体,在光源照射后都有阴影,而且阴
影就是一条直线。如果有两个点和光源在一条直线上,离光源近的点被照亮,后面的点
被遮挡。比如光源在(0,h), x1( 1, h), x2(2, h),x1被照亮,x2被遮挡。

【在 p*****2 的大作中提到】
: 没看明白。几何的东西?
avatar
p*i
32
简写太复杂,强烈要求翻译

【在 s******M 的大作中提到】
: tjjtds!!!!
avatar
l*s
33
sqrt有啥难度可言?

【在 g****t 的大作中提到】
: sqrt(x)不是你想的那么容易. exp(x)更难.
:
: 压根不计算根号
: 用的是累加,就是X走一步Y走几步的问题
: 直线,斜率就是个常数
: 2次曲线,斜率就是个累加器,加个边界条件就齐活了
: 6~70年代的技术被不读文献的主再次发明了

avatar
I*l
34
If all the points are already sorted based on x-coordinate, then O(n) time
should be enough. Otherwise you need O(nlogn) time to first sort these
points and then process the n points from left to right and use a hash table
to store the blocked (or shadowed) angles.

【在 z****h 的大作中提到】
: 我是这样理解的。假设每个点都是一个物理点的实体,在光源照射后都有阴影,而且阴
: 影就是一条直线。如果有两个点和光源在一条直线上,离光源近的点被照亮,后面的点
: 被遮挡。比如光源在(0,h), x1( 1, h), x2(2, h),x1被照亮,x2被遮挡。

avatar
y*u
35
!!!!!!

【在 s******M 的大作中提到】
: tjjtds!!!!
avatar
g*t
36
你要算的快,就不容易.
如果要在各种资源约束下trade off,更难.

sqrt有啥难度可言?

【在 l*********s 的大作中提到】
: sqrt有啥难度可言?
avatar
z*h
37
就算按x排序了也不行吧。
光源(0,h), x1( 1, h), x2 ( 2, 1) .... xn (n, h)
x1会挡xn

table

【在 I*******l 的大作中提到】
: If all the points are already sorted based on x-coordinate, then O(n) time
: should be enough. Otherwise you need O(nlogn) time to first sort these
: points and then process the n points from left to right and use a hash table
: to store the blocked (or shadowed) angles.

avatar
b*r
38
re
我昨晚起来两次check小兔崽子,一是怕他用药用得过去了(我老强迫症他睡过去),二
是怕他要bb,一天没便昨天。结果人家不去,活着就好。
avatar
a*e
39
俺说的是画图,压根不需要知道那个值

【在 g****t 的大作中提到】
: sqrt(x)不是你想的那么容易. exp(x)更难.
:
: 压根不计算根号
: 用的是累加,就是X走一步Y走几步的问题
: 直线,斜率就是个常数
: 2次曲线,斜率就是个累加器,加个边界条件就齐活了
: 6~70年代的技术被不读文献的主再次发明了

avatar
I*l
40
In this case, after processing x1, slope k=0 will be stored in the hash
table. Then xn knows it will be blocked.

【在 z****h 的大作中提到】
: 就算按x排序了也不行吧。
: 光源(0,h), x1( 1, h), x2 ( 2, 1) .... xn (n, h)
: x1会挡xn
:
: table

avatar
y*u
41
同学们,我已经在被窝里啦, 看着电视,灌着水,神仙日子呀
avatar
g*t
42
你不知道值,就很可能画的不够圆啊.
误差会不会累积起来? 不同半径的圆,肯定是不同的最好fitting.
我本科还真做过工控机,带一支铅笔画图。就是你说的要计算x每走一步,
y走几步什么的。画在纸上一个圆。
当时学的日本人的code,忘了算法了。

俺说的是画图,压根不需要知道那个值

【在 a***e 的大作中提到】
: 俺说的是画图,压根不需要知道那个值
avatar
y*g
43
只需用一个变量记录之前点中的最高点,每次与这个最高点比较即可。算法其余的部分
与楼主的想法一样。这样的复杂度是O(n)。
avatar
f*y
44
真舒服呀~

【在 y*********u 的大作中提到】
: 同学们,我已经在被窝里啦, 看着电视,灌着水,神仙日子呀
avatar
l*s
45
就一加法,除法的迭代,两三行的小东西你还能雕出花来? 还搞啥资源约束,不解。

【在 g****t 的大作中提到】
: 你要算的快,就不容易.
: 如果要在各种资源约束下trade off,更难.
:
: sqrt有啥难度可言?

avatar
l*o
46
我刚遛狗归来,琢磨着干点啥呢。。。
avatar
r*n
47
就牛顿法就好了,damped newton method, 收敛不要太快哈,每一个iteration 误差减
低99% 要更fancy的算法题参见convex optimization by boyd and vandenberghe
另外sqrt用taylor series做也不会慢,只要初始值不要太离谱

【在 g****t 的大作中提到】
: sqrt(x)不是你想的那么容易. exp(x)更难.
:
: 压根不计算根号
: 用的是累加,就是X走一步Y走几步的问题
: 直线,斜率就是个常数
: 2次曲线,斜率就是个累加器,加个边界条件就齐活了
: 6~70年代的技术被不读文献的主再次发明了

avatar
A*a
48
几乎每天睡到自然醒,哈哈哈哈哈。。。。
avatar
g*t
49
你知道不知道IEEE 浮点数的设计是拿过图灵奖的?
这些东西的最底层优化,不一定是什么大东西。但也是专门的技术。
你不懂就对了。但最好别装懂。我老这个贴是真心请教AAPL当年的技术的。

就一加法,除法的迭代,两三行的小东西你还能雕出花来? 还搞啥资源约束,不解。

【在 l*********s 的大作中提到】
: 就一加法,除法的迭代,两三行的小东西你还能雕出花来? 还搞啥资源约束,不解。
avatar
b*i
50
无语。。。

【在 l*****o 的大作中提到】
: 我刚遛狗归来,琢磨着干点啥呢。。。
avatar
z*e
51
想到一个办法计算sqrt
迭代 x_{n+1} = a*x_n + b*1/x_n, a, b为常数
可以设计成x_n是个下降的数列,但是收敛到2*sqrt(a*b)
收敛速度不一定好了
avatar
b*i
52
再次无语。。。

【在 A***a 的大作中提到】
: 几乎每天睡到自然醒,哈哈哈哈哈。。。。
avatar
g*t
53
有截断误差的情况下,
damped newton method一定能收敛?
误差一定不会累积起来?

【在 r*********n 的大作中提到】
: 就牛顿法就好了,damped newton method, 收敛不要太快哈,每一个iteration 误差减
: 低99% 要更fancy的算法题参见convex optimization by boyd and vandenberghe
: 另外sqrt用taylor series做也不会慢,只要初始值不要太离谱

avatar
g*t
54
你们说的收敛,都是理想实数。不是机器实数。
不控制异常,除法多半会出问题。

想到一个办法计算sqrt
迭代 x_{n+1} = a*x_n + b*1/x_n, a, b为常数
可以设计成x_n是个下降的数列,但是收敛到2*sqrt(a*b)
收敛速度不一定好了

【在 z*********e 的大作中提到】
: 想到一个办法计算sqrt
: 迭代 x_{n+1} = a*x_n + b*1/x_n, a, b为常数
: 可以设计成x_n是个下降的数列,但是收敛到2*sqrt(a*b)
: 收敛速度不一定好了

avatar
l*s
55
误会了,我的意思是说这么浅显的东西你怎么都不懂。

【在 g****t 的大作中提到】
: 你知道不知道IEEE 浮点数的设计是拿过图灵奖的?
: 这些东西的最底层优化,不一定是什么大东西。但也是专门的技术。
: 你不懂就对了。但最好别装懂。我老这个贴是真心请教AAPL当年的技术的。
:
: 就一加法,除法的迭代,两三行的小东西你还能雕出花来? 还搞啥资源约束,不解。

avatar
t*s
56
为什么提到开根号?画圆用的都是整数,根本不开根号。

【在 g****t 的大作中提到】
: sqrt(x)不是你想的那么容易. exp(x)更难.
:
: 压根不计算根号
: 用的是累加,就是X走一步Y走几步的问题
: 直线,斜率就是个常数
: 2次曲线,斜率就是个累加器,加个边界条件就齐活了
: 6~70年代的技术被不读文献的主再次发明了

avatar
l*n
57
http://en.wikipedia.org/wiki/Midpoint_circle_algorithm
AAPL的人自称是自己又重新发明了次轮子.

【在 g****t 的大作中提到】
: 前面说的AAPL某人当年的圆角矩形算法如何NB,
: 但我老从没听说过AAPL的办法.
: 谁能展开说说,或者给个link?
: Thanks in advance

avatar
g*t
58
前面有人说的,我也不理解为啥要算sqrt。

【在 t***s 的大作中提到】
: 为什么提到开根号?画圆用的都是整数,根本不开根号。
avatar
g*g
60
这些数值计算里都讲过。都有现成的算法。近年估计有改进,但我想改进不会很大。

【在 g****t 的大作中提到】
: 你要算的快,就不容易.
: 如果要在各种资源约束下trade off,更难.
:
: sqrt有啥难度可言?

avatar
l*n
61
jobs的自传说apple的某个工程师在不知道这个事情的情况下也搞出了这么个算法

【在 g****t 的大作中提到】
: 1962年IBM,这个不可能和Mac早年的机器有关吧?
: 网上看来很多人就是喜欢以讹传讹阿。
:
: http://en.wikipedia.org/wiki/Midpoint_circle_algorithm
: AAPL的人自称是自己又重新发明了次轮子.

avatar
g*t
62
这个倒不是不可能。把问题描述往
数学版发一下,过几天说不定就有人
给解决掉。
你要给Terrace Tao发个email,说不定10分钟就解决了。

jobs的自传说apple的某个工程师在不知道这个事情的情况下也搞出了这么个算法

【在 l******n 的大作中提到】
: jobs的自传说apple的某个工程师在不知道这个事情的情况下也搞出了这么个算法
avatar
i*w
63
jobs 是个sales/marketer
他自传是个writer写的
这路子事情当励志故事看即可

【在 l******n 的大作中提到】
: jobs的自传说apple的某个工程师在不知道这个事情的情况下也搞出了这么个算法
avatar
b*v
64
预先算好,每次用的时候直接读取。

★ 发自iPhone App: ChineseWeb 7.8

【在 g****t 的大作中提到】
: 前面说的AAPL某人当年的圆角矩形算法如何NB,
: 但我老从没听说过AAPL的办法.
: 谁能展开说说,或者给个link?
: Thanks in advance

avatar
r*n
65

it will converge and will converge quadratically when reasonably close to
the solution. for sqrt, it converges very very fast since x^2 itself is
quadratic.
error improves 2 digits very iteration.

【在 g****t 的大作中提到】
: 有截断误差的情况下,
: damped newton method一定能收敛?
: 误差一定不会累积起来?

avatar
a*a
66
sqrt(20.8) =4.5 +x 在4.5处展开 4.5^=20.25
exp(1.2) 这个用taylor吧
关键是用哪个点展开
w

【在 g****t 的大作中提到】
: 前面说的AAPL某人当年的圆角矩形算法如何NB,
: 但我老从没听说过AAPL的办法.
: 谁能展开说说,或者给个link?
: Thanks in advance

avatar
A*D
67
以前apple是greek集合,现在apple是个大杂烩,没人搞这些
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。