2019.4.24

Dijkstra法のCによる書き換え

結構苦しんだが、最終的にはある程度の形にはなった。

 

一応プログラムが完成したので、Pythonと比較すると、Cは圧倒的に早い。

Pythonだと20分以上かかる計算を、Cは5秒くらいでやってしまう。正直これほどの差が出るとは思ってなかったので、愕然とした。

 

ただ、解決していない問題があるので、その辺はおいおい考える。

- pythonの実行結果とCの実行結果とで、最短経路は同じだが、距離が10程度変わってしまう。ノードの番号のずれ、すなわち、配列が0から始まることによって、ノードがずれてる問題かと思ったが、そういうわけでもなさそう?Pythonの方のコードをきちんと理解する必要がありそう。

- 今は、接続行列をいったん手動でtxtファイルにしてから読み込んでいるが、csvから直接読み込みたい。その際、カンマを文字として読み込まないようにしなければならないが、これをfor文とかで書くのはどうするのか。

- 今はノード数を先に与えて、配列を準備しているが、cavファイルの読み込みと同時に、動的に配列を確保したい。

- スタックオーバーフローを避けるために、スタックの上限を20MBとかでとってるがいいのか。もう少しスマートな方法なないのか。

 

・最適化の本読みは全然進まなかった。