作者RJking (RJ-king)
看板TransCSI
标题Re: [问题] 杂凑函数、cpu执行速度等问题
时间Mon Jun 8 04:41:52 2009
※ 引述《fzrmitsul (我的妹妹很可爱)》之铭言:
: 1.假设有一程式在某台电脑中执行需要100秒,其中乘法指令共花掉80秒。若想缩短
: 执行时间,前提是只增加乘法器的速度,试问该乘法器至少需提升几时间,才能
: 将执行时间从100秒缩短为25秒?
: (a)4倍 (b)5倍 (c)12倍 (d)16倍
: 不知这题该怎麽算。
乘法指令80秒 => 其他指令20秒
∴TOTAL 100秒->25秒 => 乘法指令80秒->5秒
1/5 ÷1/80 = 16倍
答案为D
: 2.若以函数f(关键值)=(关键值+i*5) mod 23建立hashing table,其中i代表碰撞发生
: 次数。当关键值分别为43,20,66,23,91的资料依序被存在原先为空的杂凑表中
: 则全部储存完後,下面哪个位址尚未储存关键值?
: (a)0 (b)7 (c)20 (d)21
: 我算的结果是f(43)=x..余20
: f(20)=x..余20..发生碰撞(那是要把这个关键值存在哪呢?21吗?)
: f(66)=x...余2
: f(23)=x...余0
: f(91)=x...余22
: 为什麽答案会是d呢??那为什麽不是b呢??
: 可能观念有错。请各位先进纠正..
f(20)为25
∵f(43) = 20
f(20) = 20 发生碰撞 => i = 1 => f(20) = (20+1*5)%23 = 2
f(66) = 20 发生碰撞 => i = 2 => f(66) = (66+2*5)%23 = 7
f(23) = 0
f(91) = 22
所以答案当然为D
如果只是依照公式来算,A也是考量答案
所以我认为题目没有写清楚
正确的函数表示应该是:
f(关键值) = 关键值 % 23 = A => 当之前没有出现过A的结果
f(关键值) = (关键值+iA*5) % 23 => 当A之前已经出现过
iA = A累积出现的次数 = 发生碰撞的次数
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.92.133
1F:推 fzrmitsul:谢谢RJ大 06/08 08:31