2010-11-21 12 views
1

再帰的プログラミングと動的プログラミングのアプローチで、最も長い共通部分列の問題に対する、入力のサイズに対する時間をプロットしたいと思います。今までは、lcs関数を両方の方法で評価するためのプログラムを開発しました。単純なランダム文字列ジェネレーター(hereの助けを借りて)とグラフをプロットするprogramを作成しました。今私は以下の方法でこれらすべてを接続する必要があります。最長共通部分列問題の入力サイズに対するプロット時間

これですべてを接続する必要があります。つまり、lcsを計算するための2つのプログラムは、これらのプログラムへのコマンドライン引数として与えられた単純なランダムストリングジェネレータからの出力で約10回実行する必要があります。

これらのプログラムの実行に要する時間が計算され、使用される文字列の長さに沿って、これはこれは、次のリストを移入するPythonプログラムによって解析され

l=15, r=0.003, c=0.001 

のようにファイルに保存され

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

グラフをプロットします。私は上記に関して以下の質問をしました。

1)1つのCプログラムの出力をコマンドライン引数として別のCプログラムに渡すにはどうすればよいですか?

2)関数を実行するのにかかる時間をマイクロ秒単位で評価する関数はありますか?現在私が持っている唯一の選択肢は、UNIXでの時間関数です。コマンドラインユーティリティであるため、処理が難しくなります。

ご協力いただければ幸いです。

答えて

0

プログラムからプログラムに渡されるデータが小さく、文字形式に変換できる場合は、1つ以上のコマンドライン引数として渡すことができます。そうでない場合は、ファイルに書き込んでその名前を引数として渡すことができます。

Pythonプログラムでは、多くの人がtimeitモジュールのTimerクラスを使用してコード実行速度を測定しています。 timeモジュールのclock()またはtime()機能を使用してロールオーダーすることもできます。解決方法は、実行しているプラ​​ットフォームによって異なります。

0

1)最も簡単なのは、systemを出力から構成した文字列(または出力を読み取る必要がある場合はpopenをパイプとして開く)を使用するのが最も簡単な方法です。現在のプログラムでは、さまざまなexec(引数に出力を置く)を使用することができます。あなたはまた、Cのタイミングについて)command2 $(command1 args_to_command_1)

2でこれを行うことができますshシェルで

clockgetrusageを参照してください。

関連する問題