我有一些问题需要理解对数(Lcc)和统一(Ucc)成本标准之间的区别,以及如何在计算中使用它。
有人可以解释两者之间的区别,也许可以说明如何计算A + B * C等问题的复杂性
(是的,这是作业的一部分=))
感谢您的帮助!
/ Marthin
答案 0 :(得分:5)
统一成本标准为每个机器操作分配一个固定成本,而不考虑所涉及的位数。当对数成本标准为每个机器操作分配成本与所涉及的位数成比例时
答案 1 :(得分:3)
问题规模影响复杂性 由于复杂性取决于的大小 我们将复杂性定义为函数的问题 问题的大小 定义:设T(n)表示复杂度 一种适用于问题的算法 大小 问题实例(I)的大小(n)是 用于表示的二进制位数 实例。所以问题的大小就是长度 实例的二进制描述。 这称为对数成本标准
单位成本标准 如果你认为: - 每次计算机指令都需要一次 单元, - 每个寄存器都是一个存储单元 - 并且数字总是适合寄存器 然后你可以使用输入数量作为 自输入长度以来的问题大小(以位为单位) 将是输入数量的常数。
答案 2 :(得分:0)
统一成本标准假设每条指令只占用一个单位时间,并且每个寄存器只需要一个单位空间。
对数成本标准假设每条指令采用对数个时间单位(相对于操作数的长度),并且每个寄存器都需要一个对数的空间单位。
简单来说,这意味着统一的成本标准会计算操作次数,而对数成本标准会计算位操作的数量。
例如,假设我们有一个8位加法器。
如果我们使用统一的成本标准来分析加法器的运行时间,我们会说加法需要一个时间单位;即,T(N)= 1。
如果我们使用对数成本标准来分析加法器的运行时间,我们会说加法需要lgn个时间单位;即,T(N)= lgn,其中n是你必须在时间复杂度方面添加的最坏情况数(在这个例子中,n将是256)。因此,T(N)= 8。
更具体地说,我们要添加256到32.要执行添加,我们必须在1s列,2s列,4s列等中添加二进制位(列表示位位置)。数字256需要8位。这是对数进入我们的分析的地方。 lg256 = 8。因此,要添加这两个数字,我们必须在8列上执行添加。对数成本标准表明这8次加法计算中的每一次都需要一个单位时间。统一成本标准表示整组8次加法计算只需一个单位时间。
也可以在空间方面进行类似的分析。登记册要么占用一定的空间(在统一的成本标准下),要么占据一个对数的空间(在统一的成本标准下)。
答案 3 :(得分:-2)
我认为你应该对Big O表示法进行一些研究...... http://en.wikipedia.org/wiki/Big_O_notation#Orders_of_common_functions
如果您发现某部分说明很难编辑您的问题。