免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8123 | 回复: 18
打印 上一主题 下一主题

[算法] 笔试题求答案 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-15 00:13 |只看该作者 |倒序浏览
20可用积分
假设有一台迷你计算机,有1KB内存和1MHZ处理器(假定1MHZ处理器能够每秒改变10^6次状态)。能够在这台计算机上运行且确定性终止(即运行到某种状态时必然终止,不存在死循环)的所有程序中,最长的运行时间可能是多少?(写出你的推理过程,可以做出任意你需要的假定)

论坛徽章:
0
2 [报告]
发表于 2009-10-15 08:41 |只看该作者
∞∞∞∞∞∞∞∞∞∞∞

论坛徽章:
0
3 [报告]
发表于 2009-10-15 11:06 |只看该作者
一点思路都没有……

论坛徽章:
0
4 [报告]
发表于 2009-10-15 11:39 |只看该作者
关注中……

论坛徽章:
0
5 [报告]
发表于 2009-10-15 11:57 |只看该作者
猜测一下,大概的考点是不是:1KB的内存,存放任意cpu的指令,使得运行时间尽可能长。就是考察你对某种cpu构架的指令集以及他们的运行周期、指令长度、对齐方式是否了解。

随便说说,大家别砰

论坛徽章:
0
6 [报告]
发表于 2009-10-15 12:58 |只看该作者
什么叫做死循环? 循环100万次算么,1000万次算么? N重循环呢?

论坛徽章:
0
7 [报告]
发表于 2009-10-15 13:00 |只看该作者
gz

论坛徽章:
0
8 [报告]
发表于 2009-10-15 13:12 |只看该作者
1KB内存=8K bit内存
这个限制应该是说明这台机器最多能够表示2^8K个不同状态
超出这个数目的状态就是不可控制的了,也就是说会出现死循环
那么结果应该就是2^8k / 10^6 (second)

[ 本帖最后由 lemoncookie 于 2009-10-15 13:39 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2009-10-15 13:18 |只看该作者
原帖由 lemoncookie 于 2009-10-15 13:12 发表
1KB内存=8K byte内存
这个限制应该是说明这台机器最多能够表示2^8K个不同状态
超出这个数目的状态就是不可控制的了,也就是说会出现死循环
那么结果应该就是2^8k / 10^6 (second)


嗯,赞同。
实际上最长的运行时间就是把每一种状态都遍历一次,如果某种状态出现不止一次,那必定是死循环了。(因为同一状态下,必定有相同的下一状态。1+1就等于2,不会一会等于2,一会等于3。)

[ 本帖最后由 kouu 于 2009-10-15 13:42 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2009-10-15 13:34 |只看该作者
原帖由 kouu 于 2009-10-15 13:18 发表

嗯,赞同。
实际上最长的运行时间就是把每一种状态都遍历一次,如果某种状态出现不止一次,那必定是死循环了。



不过,感觉还是漏了一点。机器的状态除了内存状态以外,还有CPU本身的状态(可以看成是CPU寄存器的状态)。
那么,CPU有几个寄存器? 这个就扯远了,可以做的假设太多。总之,CPU有多少寄存器,总的位宽度是多少,这些宽度所能表达的状态数跟内存本身所能表达的状态数乘在一起,就是总的状态数了。

另外,我们还可以做假设,假设CPU没有寄存器,内存的指定部分被当作CPU寄存器使用。 这样就能得出前面的结论。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP