计算机逻辑问题

时间:2011-09-10 03:41:23

标签: logic

考虑一个多级计算机,其中所有级别都不同。每个级别的指令都是下面级别的指令的m倍;也就是说,一个级别的r指令可以执行m级r-1指令的工作,如果一级程序需要k秒运行,等效程序需要多长时间在2,3和4级,假设n级r指令是否需要解释单个r + 1指令?

这是我提出的解决方案。任何人都可以确认或评论吗?

这是我最终提出的解决方案。任何人都可以验证或评论吗?

Level (r)        Level-1 Instructions (m)          Time
4                m^3                               t(q) ==(m^3q+n+nm+nm^2) (k/q)
3                m^2                       t(q) =(m^2q+n+nm)(k/q)
2                m                             t(q) = (mq+n)(k/q)
1                1                             t(q) = k

为了计算包含q级-1指令的给定程序的运行时间t(q),我们必须考虑每个级别r指令所代表的指数增加的1级指令数(显示为m ^( r-1))和执行程序的每一层的解释所需的额外数量的1级指令(显示为nm ^(r-1))。用于由较低级别解释的附加级别1指令也必须被添加到r> 2的最终等式中。最后,对于每个等式,我们可以通过乘以一个等级-1循环的执行时间所使用的等级1指令的总数来确定程序运行的秒数,由(k / q)计算。

免责声明:这是作业,作业已经交上。我根本无法得到这个问题的语义,我真的很想理解它。

4 个答案:

答案 0 :(得分:1)

我认为你们这一切都太复杂了。问题陈述说,换句话说,每层的运行速度比上面的层快几倍。因此,第2层以1 / m的时间完成程序,第3层以1 / m * 1 / m完成,依此类推。所以最后的等式只是:

t(q)= k /(m ** q)

答案 1 :(得分:0)

这只是一个递归函数:

t(q, r) = q*k if r == 1
t(q, r) = q*t(m, r-1) + t(n, r-1)

现在解释:

This is obvious since it was stated in the question (I parameterized k as the elementary unit, k is the time for one level 1 instruction):
t(q, r) = q*k if r == 1

The amount of time it takes to execute a function with q r-1 instructions
t(q, r) = 
          q times the amount of the time it takes for m level r-1 instruction
          q*t(m, r-1)
                        plus the time it takes for n level r-1 instructions
                        + t(n, r-1)

答案 2 :(得分:0)

我不确定任务定义是否完整,因为如果是,我没有看到任何其他理智的方法来解决它而不是简化它。

所以这里有一些我认为的事情:

  1. t(q,1)= k(我们的任务是找到t(q,r))=> t(1,1)= q / k,为什么?因为如果我们不假设时间仅取决于指令的数量而不是指令类型,那么我们实际上这个任务是无法解决的。在这种情况下,q不会被看作是一个数字,我们不能假设另一组指令将根据指令的数量花费更少或更多的时间。总之,就我的阅读而言,他们只将时间与指令数量联系起来。
  2. 如果程序在一个级别'r'中是本机的,那么它将需要另一个级别的n个指令来解释它们(使它们成为原生的)。任务定义中没有任何内容(如此处所示)强制您仅解释级别r + 1指令。实际上因为我们从第一级开始,如果我们不能假设我上面所说的话,那么“n级r指令需要解释单个r + 1指令”将毫无用处。
  3. 也是q级X指令被解释后应该总是转换为q级Y指令,其他老虎机我们永远无法知道另一级别的执行时间,因为指令数量可以大不相同(就像现实世界中一样)
  4. 以下是这些先决条件的答案:

    q=number of level one program instructions
    t(q, r)=time necessary to execute q **level 1** instructions on level r comp
    t(1, r)=time necessaty to execute one instruction on level r comp
    t(1, 1)=time necessary to execute one instruction on level 1 comp
    t(q, 1)/m^(r-1)=time to execute q **native** instructions on level r comp
    
    t(q, 1)=k
    t(1, 1)=k/q
    t(q,r)=(time to interpret q non-native instructions/convert them to native) + (time to actually execute the code)
    t(q,r)=t(qn, 1)/m^(r-1) + t(q, 1)/m^(r-1)
    t(q,r)=(time to execute qn native instructions) + (time to execute q native instructions)
    t(q,r)=nt(q, 1)/m^(r-1) + t(q, 1)/m^(r-1)
    t(q,r)=(n+1)t(q, 1)/m^(r-1)
    t(q,r)=(n+1)k/m^(r-1)
    

    如果3个假设中的任何一个是错误的,你需要引入新的未知函数,因此答案将变成一个未知函数的方程式,这个方程式将是无用的,但比这个更无用。这个更漂亮:)

    顺便说一句你需要查看你在大学的练习,看看如何解决类似的任务,以确保解决问题是正确的。

答案 3 :(得分:0)

问题只是说明如果它在1级需要k个单位的时间,那么k / m单位就会在第二级获得......