ダイクストラ アルゴリズムの j2ME 実装を高速化するのを手伝ってくれる人はいますか? 2 つのループがあり、1 つは別のループです。このような
while(for each item in Q)
{
//...do something.
//the following loop is to find the minimum
for(all un-visited nodes in Q)
{
//.. do something to get min.
}
}
ほぼ 23000 のノードとそれらを接続する 50000 のエッジがあります...以下で説明するすべての改善の後、内側のループは平均 169330131 回実行されます。w910i モバイルでは完了までに 5 分かかり、エミュレータでは数分以上かかります。これは私には多すぎるように見えます。改善のための提案はありますか?私はすでに以下の改善を実装しています。
- ベクトルの代わりに配列を使用します。
- 内側のループが訪問したノードを考慮していないことを確認してください。訪問したすべてのノードは配列の最後にあり、ノードはその数を知っています。だから、私は簡単にそれらを完全にスキップすることができます.