Fungsi potensi biner heap extract maks O (1)

10

Saya perlu bantuan mencari fungsi potensial untuk heap max sehingga ekstrak max selesai dalam waktu diamortisasi. Saya harus menambahkan bahwa saya tidak memiliki pemahaman yang baik tentang metode potensial.HAI(1)

Saya tahu bahwa fungsi penyisipan harus "membayar" lebih banyak untuk mengurangi biaya ekstraksi, dan ini harus berkaitan dengan ketinggian tumpukan (jika memberikan ketinggian tumpukan jika masukkan menjadi atau )catatan(n)2catatan(n)k=1n2catatan(k)

andrei
sumber

Jawaban:

13

Coba yang berikut ini:

Berat dari unsur i dalam tumpukan H adalah kedalaman di pohon biner. Jadi elemen di root memiliki bobot nol, kedua anaknya memiliki bobot 1 dan seterusnya. Anda mendefinisikan sebagai fungsi potensialwsayasayaH

Φ(H)=iH2wi.

Sekarang mari kita menganalisis operasi tumpukan. Untuk memasukkan Anda menambahkan elemen baru tambahkan kedalaman paling banyak log ( n ) . Ini meningkatkan potensi sebesar 2 d , dan dapat dilakukan dalam O ( 1 ) waktu. Kemudian Anda "menggelembungkan" elemen tumpukan baru untuk memastikan properti tumpukan. Ini membutuhkan waktu O ( log n ) dan membiarkan Φ ( H ) tidak berubah. Jadi biaya untuk memasukkan adalah O ( log ( n ) + Δ ( Φ (dcatatan(n)2dHAI(1)HAI(catatann)Φ(H) .HAI(catatan(n)+Δ(Φ(H)))=HAI(catatann)

Sekarang pertimbangkan extractMin . Anda mengambil root dan menggantinya dengan elemen terakhir di heap. Ini mengurangi potensi sebesar , sehingga Anda dapat memperbaiki properti tumpukan, dan oleh karena itu biaya yang diamortisasi sekarang adalah O ( 1 ) .2catatan(n)HAI(1)

Jika Anda memiliki pertanyaan umum untuk fungsi potensial, Anda harus mengajukan ini sebagai pertanyaan yang berbeda.

A.Schulz
sumber
Saya yakin Anda benar tetapi saya tidak mengerti pemasangannya. Mengapa tidak berubah? Maaf jika jawabannya jelas tetapi bisakah Anda memperluas Δ ? Saya tidak mengerti mengapa Anda memiliki angka negatif di sanaΔ(Φ(H)))Δ
andrei
mengacu pada perbedaan potensial - sebelum dan sesudah penyisipan. Ini dalam kasus masukkan paling banyak 2 log ( n ) . Saat Anda bertukar dua elemen dalam tumpukan (bubble-up atau bubble-down), maka satu bobot mendapat +1, dan yang lainnya mendapat -1 perubahan, sehingga potensi (jumlah semua bobot) tetap sama. Δ(Φ(H))2catatan(n)
A.Schulz
Bagaimana cara memperbaiki O (1)? Apa gunanya fungsi potensial dalam memperbaiki timbunan? Bisakah Anda jelaskan
Sohaib
@Sohaib: perbaikan membutuhkan waktu , tetapi O ( 1 ) diamortisasi menggunakan fungsi potensial di atas. Tidak ada penggunaan fungsi potensial selain menganalisis biaya diamortisasi. HAI(catatann)HAI(1)
A.Schulz
@ A.Schulz Jadi ini pada dasarnya berarti bahwa mengingat bahwa operasi ekstrak dilakukan n beberapa kali karena setiap kali fungsi potensial akan berkurang 2logn (mungkin atau mungkin tidak meningkat secara merata pada saat perbaikan). Kompleksitas keseluruhan untuk hal seperti itu akan menjadi waktu yang konstan karena pada akhirnya tidak akan ada simpul di pohon. Apakah saya benar?
Sohaib