2014-07-08 164 views
-2

作为课程工作的一部分,我需要计算程序的复杂性。我想计算下面程序的空间复杂度和时间复杂度,我该如何计算它? 如果有人能详细解释它,对我来说真的很有帮助。计算函数的空间复杂度和时间复杂度

sub find_multi_string { 
    my ($file, @strings) = @_; 
    my $fh; 
    open ($fh, "<$file"); 
    #store the whole file in an array 
    my @array = <$fh>; 

    for my $string (@strings) { 
     if (grep /$string/, @array) { 
      next; 
     } else { 
      die "Cannot find $string in $file"; 
     } 
    } 

    return 1; 
} 
+0

人们不会回答这个问题,因为他们要么过于专注于这个问题,没有对发生的事情有概念性的理解,要么从基础开始,这在很多地方已经很好地解释了,包括在线(并且大概在你的课程笔记和讲座中)。这绝对是其中值得找到一些好的参考资料,并投入时间来正确理解它的其中一件事。 –

回答

0

空间复杂性:识别“大量”或“重复”出现的数据。为这些数量指定数字,例如,N =文件中的行数,或M =数组中的元素数量。添加这些数量。注意动态创建数据结构:如果您有一组N个数字和另一个M数字,并且创建了所有产品的表格,则表格的空间复杂度为...

时间复杂性:识别重复的行为。有些可能是隐藏的(如在Perl中),有些是明确的,例如,在for循环中。使用空间复杂度的结果来量化这些重复。循环可能会提前终止:那么您必须估计执行的平均时间。一个接一个地发生的循环加起来。如果你知道一个循环体被执行了N次,并且这个主体包含一个执行了M次的内部循环,那么这个内部循环的主体会被执行 - 多久?

很多时候,这只是一个简单的计算,簿记和简单算术运算,尽管有好几个例子,好的答案需要重数学。

不在你的情况!

+0

感谢您的解释 – user3773222

+0

嗯 - 你可以关闭问题/接受答案吗?如果不是,为什么? – laune