CLRSを読んでいて、6.5-8の演習で問題が発生しました。
O(n lg k)時間アルゴリズムを指定して、k個のソート済みリストを1つのソート済みリストにマージします。ここで、nはすべての入力リストの要素の総数です。(ヒント:k-wayマージにはmin0heapを使用してください。)
解決策は、誰もが言うように、
1)kリストの最初の要素を使用してk要素の最小ヒープを構築します。
2)extract-min()を使用してヒープから最小の要素を取得し、結果リストに追加します。
3)ヒープから抽出したものと同じリストから次の要素を選択します。それをヒープに挿入し、2)に進みます。
時間はO(n lg k)であることは理解できますが、ステップ3)での選択の正しさはわかりません。当たり前のようですが、正式な証明はありますか?