คำถามติดแท็ก heaps

5
ความแตกต่างระหว่างแผนภูมิการค้นหาแบบไบนารี่และฮีปแบบไบนารีคืออะไร
ทั้งสองดูเหมือนกันมากและมีโครงสร้างเกือบเหมือนกัน ความแตกต่างคืออะไร? ความซับซ้อนของเวลาสำหรับการดำเนินงานที่แตกต่างกันของแต่ละคนคืออะไร

1
max-heaps ที่แตกต่างกันมีอยู่เท่าไหร่สำหรับรายการจำนวนเต็ม n ตัว?
max-heaps ที่แตกต่างกันมีอยู่เท่าไหร่สำหรับรายการจำนวนเต็มnnnตัว? ตัวอย่าง: รายการ [1, 2, 3, 4] heap สูงสุดสามารถเป็นได้ทั้ง4 3 2 1: 4 / \ 3 2 / 1 หรือ4 2 3 1: 4 / \ 2 3 / 1

3
เพิ่มคีย์และคีย์ลดในไบนารีมินฮีป
ในการสนทนาจำนวนมากของไบนารีฮีปปกติจะมีการแสดงคีย์ลดลงเพียงคีย์ว่าเป็นการดำเนินการที่ได้รับการสนับสนุนสำหรับมินิฮีป ยกตัวอย่างเช่น CLR บทที่ 6.1 และหน้าวิกิพีเดียนี้ เหตุใดจึงไม่เพิ่มรหัสปกติสำหรับ min-heap ฉันคิดว่าเป็นไปได้ที่จะทำเช่นนั้นใน O (ความสูง) โดยการสลับองค์ประกอบที่เพิ่มขึ้น (x) ซ้ำ ๆ โดยใช้ลูกน้อยที่สุดจนกว่าจะไม่มีลูกใดของมันใหญ่กว่า x เช่น IncreaseKey(int pos, int newValue) { heap[pos] = newValue; while(left(pos) < heap.Length) { int smallest = left(pos); if(heap[right(pos)] < heap[left(pos)]) smallest = right(pos); if(heap[pos] < heap[smallest]) { swap(smallest, pos); pos= smallest; } else …

2
ฮีป - ให้อัลกอริทึมเวลา
อาจเป็นไปได้ว่าคำถามนี้ถูกถามมาก่อน มันมาจาก CLRS (2nd Ed) ปัญหา 6.5-8 - ให้อัลกอริทึมเวลาเพื่อรวมรายการที่เรียงลำดับkไว้ในรายการที่เรียงลำดับหนึ่งรายการโดยที่nคือจำนวนองค์ประกอบทั้งหมดในรายการอินพุตทั้งหมด (คำแนะนำ: ใช้ min-heap สำหรับการรวมk -way)O(nlgk)O(nlg⁡k)O(n \lg k)kkknnnkkk เนื่องจากมีรายการที่เรียงลำดับและค่าnทั้งหมดให้เราสมมติว่าแต่ละรายการมีnkkknnnหมายเลข kยิ่งไปกว่านั้นแต่ละรายการจะเรียงตามลำดับจากน้อยไปหามากและผลลัพธ์จะถูกเก็บไว้ในลำดับจากน้อยไปหามากnknk\frac{n}{k} โค้ดหลอกของฉันดูเหมือนว่านี้ - list[k] ; k sorted lists heap[k] ; an auxiliary array to hold the min-heap result[n] ; array to store the sorted list for i := 1 to k ; O(k) …

1
ฟังก์ชั่นที่มีศักยภาพไบนารีกองสกัดสูงสุด O (1)
ฉันต้องการความช่วยเหลือในการหาฟังก์ชั่นที่มีศักยภาพสำหรับ heap สูงสุดเพื่อให้แยก max เสร็จสมบูรณ์ในเวลาตัดจำหน่าย ฉันควรเพิ่มว่าฉันไม่มีความเข้าใจในวิธีการที่เป็นไปได้O( 1 )O(1)O(1) ฉันรู้ว่าฟังก์ชั่นการแทรกควร "จ่าย" มากขึ้นเพื่อลดค่าใช้จ่ายในการสกัดและสิ่งนี้จะต้องเกี่ยวกับความสูงของกอง (ถ้าให้ความสูงของกองควร ส่วนแทรกเป็น2 บันทึก( n )หรือ∑ n k = 1 2 บันทึก( k ) )⌊ บันทึก( n ) ⌋⌊เข้าสู่ระบบ⁡(n)⌋ \lfloor \log(n) \rfloor 2 บันทึก( n )2เข้าสู่ระบบ⁡(n)2\log(n)Σnk = 12 บันทึก( k )Σk=1n2เข้าสู่ระบบ⁡(k) \sum_{k=1}^n 2\log(k)

1
ฮีปที่หลอมรวมแบบสุ่ม - ความสูงที่คาดหวัง
Randomized Meldable Heapsมีการดำเนินการ "meld" ซึ่งเราจะใช้เพื่อกำหนดการปฏิบัติการอื่น ๆ ทั้งหมดรวมถึงส่วนแทรก คำถามคืออะไรคือความสูงที่คาดหวังของต้นไม้นั้นด้วย nnn โหนด? ทฤษฎีบทที่ 1 ของ Gambin และ Malinkowski, คิวลำดับความสำคัญที่หลอมรวมแบบสุ่ม (การดำเนินการตาม SOFSEM 1998, บันทึกการบรรยายในวิทยาการคอมพิวเตอร์ปีที่ 1521, หน้า 344–349, 1998; PDF ) ให้คำตอบสำหรับคำถามนี้พร้อมหลักฐาน อย่างไรก็ตามฉันไม่เข้าใจว่าทำไมเราถึงเขียน: E[hQ]=12((1+E[hQL])+(1+E[hQR])).E[hQ]=12((1+E[hQL])+(1+E[hQR])).\mathbb{E} [ h_Q] = \frac{1}{2} ((1 + \mathbb{E}[h_{Q_L}]) + (1 + \mathbb{E}[h_{Q_R}]))\,. สำหรับฉันความสูงของต้นไม้คือ hQ=1+max{hQL,hQR},hQ=1+max{hQL,hQR},h_Q = 1 + \max\, \{ h_{Q_L}, h_{Q_R}\}\,, …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.