私が考えている次の問題があります(よく知られている/標準だと思います):
バイナリ最小ヒープ内の k 個の最小要素のリストが O(k) であることを確認します。
BFSの大きな最小ヒープをトラバースして、単純なキューの代わりに最小ヒープを維持することを考えていました。最初は、補助最小ヒープには大きな最小ヒープのルートが含まれています。各ステップで最小値を抽出し、そのすべての子 (最大 2) を追加します。アルゴリズムは、補助最小ヒープで k 抽出分後に停止します。補助最小ヒープのサイズは O(k) です (抽出された最小キーごとに、その子を挿入します。最大 2)。
問題は、extract-min の複雑さが O(log k) であるため、このアルゴリズムの複雑さが O(k log k) であることです。そして、O(k) で 1 つを見つけなければなりません。
使用できるアイデア/論文はありますか?
ありがとう!