私は現在この論文を読んでおり、5ページで、一般的な知識と見なされるバイナリヒープのプロパティについて説明しています。しかし、彼らの指摘の1つは、私がこれまで見たことがなく、理解できないことです。著者は、バランスの取れたバイナリヒープが与えられた場合、標準の幅優先探索を使用して、そのヒープの要素を要素ごとのO(log n)時間でソートされた順序で一覧表示できると主張しています。元の文言は次のとおりです。
バランスの取れたヒープでは、新しい要素を対数時間で挿入できます。幅優先探索を使用するだけで、ヒープの要素を重み順に一覧表示できます。対数の時間をかけて各要素を生成します。
著者がこれによって何を意味するのかわかりません。「幅優先探索」と言うときに最初に頭に浮かぶのは、ルートから始まるツリー要素の幅優先探索ですが、要素を並べ替えた順序で一覧表示することは保証されておらず、対数時間もかかりません。要素ごと。たとえば、この最小ヒープでBFSを実行すると、関係をどのように解除しても、要素が順不同で生成されます。
1
/ \
10 100
/ \
11 12
これは常に11または12の前に100をリストしますが、これは明らかに間違っています。
私は何かが足りないのですか?ヒープ上で実行して、それぞれの対数時間を使用して要素をソートされた順序で取得できる、単純な幅優先探索はありますか?明らかに、毎回最小要素を削除してヒープを破壊的に変更することでこれを行うことができますが、作成者の意図は、これを非破壊的に行うことができるように思われることです。