2019.4.24
・Dijkstra法のCによる書き換え
結構苦しんだが、最終的にはある程度の形にはなった。
一応プログラムが完成したので、Pythonと比較すると、Cは圧倒的に早い。
Pythonだと20分以上かかる計算を、Cは5秒くらいでやってしまう。正直これほどの差が出るとは思ってなかったので、愕然とした。
ただ、解決していない問題があるので、その辺はおいおい考える。
- pythonの実行結果とCの実行結果とで、最短経路は同じだが、距離が10程度変わってしまう。ノードの番号のずれ、すなわち、配列が0から始まることによって、ノードがずれてる問題かと思ったが、そういうわけでもなさそう?Pythonの方のコードをきちんと理解する必要がありそう。
- 今は、接続行列をいったん手動でtxtファイルにしてから読み込んでいるが、csvから直接読み込みたい。その際、カンマを文字として読み込まないようにしなければならないが、これをfor文とかで書くのはどうするのか。
- 今はノード数を先に与えて、配列を準備しているが、cavファイルの読み込みと同時に、動的に配列を確保したい。
- スタックオーバーフローを避けるために、スタックの上限を20MBとかでとってるがいいのか。もう少しスマートな方法なないのか。
・最適化の本読みは全然進まなかった。