トリッキーなネットワーク最適化の実装ムズい

長らくNetworkXを使ってグラフ上での最短路問題を解き続けている今日このごろ。
コードが肥大化し過ぎたのでリファクタリングしている

元々はグラフ生成から各枝のコスト計算まですべて同じファイルだったけど、
ノードと枝についてのコードをそれぞれ分離中

通常(?)の枝はノードペアの情報からコストが計算できるが、
いくつか特殊な枝があって、その枝ではノードの情報が不足している
こんな枝のコストを擬似的にでも計算するために、
コスト計算可能な枝(とノード)を生成して、コストを積み上げて擬似的に計算している

この計算可能な枝の生成過程は分離元のグラフ構造全体をケアするクラスに持っているのだけど、
擬似的なコスト計算のときのみ枝のクラスで機能が欲しくなる・・・・
関数ポインタ(Pythonではなんと言うのでしょう?)使うしかないのかな

本来はすべての枝は直接的にコスト計算可能な問題設定だったのに
諸般の事情で複雑な問題設定になったせいで大変面倒な想いをしている