これが私のシナリオです。線形時間の分や操作に頼ることなく、A *(Pythonで)を実装したいと思います。最小重量のアイテムを効率的に取得できるようにするには、ヒープが必要です。
私の即時の応答は'簡単でした!heapqを使用します!」それから私は、人生が私たちが望むほど単純であることはめったにないことを発見しました。この戦略は、A*の重要なポイントの1つにとって最適ではないことがわかりました。子供を考えるとき、私は時々、すでにヒープ上にある子供たちのスコアを更新する必要があります。
A *の記憶が少しなくなった人にとって、その要点は、要素を取得し、その重みを変更し、変更を反映するようにヒープを変更することです。これらはすべて劣線形時間で行われます。
助言がありますか?