繁体   English   中英

针对最长公共子序列问题绘制时间与输入大小的关系

[英]Plotting time against size of input for Longest Common Subsequence Problem

对于递归以及动态编程方法中的最长公共子序列问题,我希望根据输入的大小来绘制时间。 到目前为止,我已经开发了用于通过两种方式评估lcs函数的程序,一个简单的随机字符串生成器(借助here的帮助)和一个用于绘制图形的程序 现在,我需要以以下方式连接所有这些。

现在,我必须连接所有这些。 也就是说,两个用于计算lcs的程序应运行大约10次,并且简单随机字符串生成器的输出将作为命令行参数提供给这些程序。

计算执行这些程序所需的时间,并将其与所用字符串的长度一起存储在以下文件中

l=15, r=0.003, c=0.001 

python程序对此进行了分析,以填充以下列表

sequence_lengths = [] 
recursive_times  = []
dynamic_times    = []

然后绘制图形。 关于上述问题,我有以下问题。

1)如何将一个C程序的输出作为命令行参数传递给另一个C程序?

2)是否有任何函数可以评估执行该函数所需的时间(以微秒为单位)? 目前,我唯一的选择是unix中的时间函数。 作为命令行实用程序,将使其更难处理。

任何帮助将非常感激。

如果从程序传递到程序的数据很小并且可以转换为字符格式,则可以将其作为一个或多个命令行参数传递。 如果没有,您可以将其写入文件,然后将其名称作为参数传递。

对于Python程序,许多人使用timeit模块的Timer类来测量代码执行速度。 您也可以使用time模块中的clock()time()函数自行滚动。 解决方案取决于您所运行的平台。

1)有很多方法,最简单的方法是将system与从输出构造的字符串一起使用(或者如果需要回读其输出,则将其popen以管道的形式打开),或者如果希望退出当前程序,则可以可以使用各种exec (将输出放在参数中)。

sh shell中,您也可以使用command2 $(command1 args_to_command_1)

2)有关C语言中的计时,请参见clockgetrusage

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM