85
Εισαγωγή Heap Heapsort Heapsort using 2 heaps Χρήση πολλαπλών σωρών Επίλογος Heapsort Using Multiple Heaps Δ. Λεβεντέας – Χ. Ζαρολιάγκης Τμήμα Μηχανικών Η/Υ & Πληροφορικής 29 Αυγούστου 2008 Δ. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Heapsort Using Multiple Heaps

∆. Λεβεντέας – Χ. Ζαρολιάγκης

Τµήµα Μηχανικών Η/Υ & Πληροφορικής

29 Αυγούστου 2008

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 2: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

1 Heap

Ορισµός

Heapify

Build-Heap

2 Heapsort

Πως δουλεύει

Ιδιότητες

3 Heapsort using 2 heaps

Εισαγωγή

4 Χρήση πολλαπλών σωρών

Προβλήµατα

Προτάσεις

Ανάλυση Κόστους

5 Επίλογος

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 3: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Το heapsort προτάθηκε το 1964 από τον Williams.

Η σχετική έρευνα επικεντρώθηκε :

Κατασκευή του heap (Build-Heap) - [Wegener, (1993)]

Επαναφορά της ιδιότητας του σωρού Heapify- [Schaffer and

Sedgewick, (1993)]

Στην δοµή του σωρού - [Edelkamp and Wegener, (2000)]

Χρήση πολλών σωρών αντί για ενός.

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 4: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Το heapsort προτάθηκε το 1964 από τον Williams.

Η σχετική έρευνα επικεντρώθηκε :

Κατασκευή του heap (Build-Heap) - [Wegener, (1993)]

Επαναφορά της ιδιότητας του σωρού Heapify- [Schaffer and

Sedgewick, (1993)]

Στην δοµή του σωρού - [Edelkamp and Wegener, (2000)]

Χρήση πολλών σωρών αντί για ενός.

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 5: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Το heapsort προτάθηκε το 1964 από τον Williams.

Η σχετική έρευνα επικεντρώθηκε :

Κατασκευή του heap (Build-Heap) - [Wegener, (1993)]

Επαναφορά της ιδιότητας του σωρού Heapify- [Schaffer and

Sedgewick, (1993)]

Στην δοµή του σωρού - [Edelkamp and Wegener, (2000)]

Χρήση πολλών σωρών αντί για ενός.

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 6: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Επικεντρωνόµαστε στην διαδικασία εξαγωγής του επόµενου

στοιχείου

Παρουσιάζουµε δυο τροποποιήσεις του αλγορίθµου του Williams

Σκοπός µας είναι αλλάζοντας µικρό µέρος του κώδικα

∆ιατήρηση της ιδιότητας ταξινόµησης in-place

Ταχύτερη εξαγωγή τελικού αποτελέσµατος

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 7: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Επικεντρωνόµαστε στην διαδικασία εξαγωγής του επόµενου

στοιχείου

Παρουσιάζουµε δυο τροποποιήσεις του αλγορίθµου του Williams

Σκοπός µας είναι αλλάζοντας µικρό µέρος του κώδικα

∆ιατήρηση της ιδιότητας ταξινόµησης in-place

Ταχύτερη εξαγωγή τελικού αποτελέσµατος

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 8: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Επικεντρωνόµαστε στην διαδικασία εξαγωγής του επόµενου

στοιχείου

Παρουσιάζουµε δυο τροποποιήσεις του αλγορίθµου του Williams

Σκοπός µας είναι αλλάζοντας µικρό µέρος του κώδικα

∆ιατήρηση της ιδιότητας ταξινόµησης in-place

Ταχύτερη εξαγωγή τελικού αποτελέσµατος

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 9: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΟρισµόςHeapifyBuild-Heap

Ορισµός

Ορισµός

΄Ενας σωρός (min-heap) είναι ένας πίνακας στοιχείων aj , 1 ≤ j ≤ n

που ικανοποιεί την µονοτονική ιδιότητα µονοπατιού (path-monotonic

property): aj ≥ ab j

2c για j = 2, 3, ..., n όπου bxc είναι το ακέραιο

υπόλοιπο του πραγµατικού αριθµού x

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 10: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΟρισµόςHeapifyBuild-Heap

Παράδειγµα

Σε µορφή δέντρου :

1

2

3 13

5

21 8

Σε µορφή πίνακα :

1 2 5 3 13 21 8

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 11: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΟρισµόςHeapifyBuild-Heap

Ορισµός

Ορισµός

Θεωρούµε ένα πίνακα A και τον δείκτη i. Τα υποδέντρα που έχουν ως

ϱίζα τους τα παιδιά του A[i] είναι ήδη σωροί, αλλά το ίδιο το δέντρο µε

ϱίζα το A[i] µπορεί να παραβιάζει την ιδιότητα του σωρού. Η διαδικασία

Heapify κάνει τις απαραίτητες αλλαγές ώστε το δέντρο µε ϱίζα το A[i]να γίνει σωρός.

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 12: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΟρισµόςHeapifyBuild-Heap

Παράδειγµα

Σε µορφή δέντρου :

21

2

3 13

1

5 8

Σε µορφή πίνακα :

21 2 1 3 13 5 8

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 13: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΟρισµόςHeapifyBuild-Heap

Παράδειγµα

Σε µορφή δέντρου :

1

2

3 13

21

5 8

Σε µορφή πίνακα :

1 2 21 3 13 5 8

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 14: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΟρισµόςHeapifyBuild-Heap

Παράδειγµα

Σε µορφή δέντρου :

1

2

3 13

5

21 8

Σε µορφή πίνακα :

1 2 5 3 13 21 8

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 15: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΟρισµόςHeapifyBuild-Heap

Ορισµός

Ορισµός

Μπορούµε να χρησιµοποιήσουµε την συνάρτηση Heapify µε µια

προσέγγιση από κάτω προς τα πάνω (bottom-up) ώστε να

µετατρέψουµε ένα πίνακα A[1..n] σε ένα σωρό. Αφού όλα τα στοιχεία

στον υποπίνακα A[b n

2c+ 1..n] είναι ϕύλλα, η build_heap επισκέπτεται

τους υπόλοιπους κόµβους και καλεί την Heapify σε κάθε έναν.

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 16: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Heapsort - Πως δουλεύει

1 ∆ηµιουργία ενός σωρού heap - (Build-Heap)

2 Εύρεση µικρότερης τιµής (root)

3 Εναλλαγή µε το τελευταίο αταξινόµητο στοιχείο (ϕύλλο του σωρού)

4 Επαναφορά της ιδιότητας του σωρού για τα υπόλοιπα αταξινόµητα

στοιχεία µέσα στο array (heapify)

5 Επανάληψη της διαδικασίας από το 2ο ϐήµα µέχρι να ταξινοµηθούν

όλα τα στοιχεία του πίνακα.

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 17: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Heapsort - Πως δουλεύει

1 ∆ηµιουργία ενός σωρού heap - (Build-Heap)

2 Εύρεση µικρότερης τιµής (root)

3 Εναλλαγή µε το τελευταίο αταξινόµητο στοιχείο (ϕύλλο του σωρού)

4 Επαναφορά της ιδιότητας του σωρού για τα υπόλοιπα αταξινόµητα

στοιχεία µέσα στο array (heapify)

5 Επανάληψη της διαδικασίας από το 2ο ϐήµα µέχρι να ταξινοµηθούν

όλα τα στοιχεία του πίνακα.

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 18: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Heapsort - Πως δουλεύει

1 ∆ηµιουργία ενός σωρού heap - (Build-Heap)

2 Εύρεση µικρότερης τιµής (root)

3 Εναλλαγή µε το τελευταίο αταξινόµητο στοιχείο (ϕύλλο του σωρού)

4 Επαναφορά της ιδιότητας του σωρού για τα υπόλοιπα αταξινόµητα

στοιχεία µέσα στο array (heapify)

5 Επανάληψη της διαδικασίας από το 2ο ϐήµα µέχρι να ταξινοµηθούν

όλα τα στοιχεία του πίνακα.

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 19: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Heapsort - Πως δουλεύει

1 ∆ηµιουργία ενός σωρού heap - (Build-Heap)

2 Εύρεση µικρότερης τιµής (root)

3 Εναλλαγή µε το τελευταίο αταξινόµητο στοιχείο (ϕύλλο του σωρού)

4 Επαναφορά της ιδιότητας του σωρού για τα υπόλοιπα αταξινόµητα

στοιχεία µέσα στο array (heapify)

5 Επανάληψη της διαδικασίας από το 2ο ϐήµα µέχρι να ταξινοµηθούν

όλα τα στοιχεία του πίνακα.

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 20: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Heapsort - Πως δουλεύει

1 ∆ηµιουργία ενός σωρού heap - (Build-Heap)

2 Εύρεση µικρότερης τιµής (root)

3 Εναλλαγή µε το τελευταίο αταξινόµητο στοιχείο (ϕύλλο του σωρού)

4 Επαναφορά της ιδιότητας του σωρού για τα υπόλοιπα αταξινόµητα

στοιχεία µέσα στο array (heapify)

5 Επανάληψη της διαδικασίας από το 2ο ϐήµα µέχρι να ταξινοµηθούν

όλα τα στοιχεία του πίνακα.

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 21: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Παράδειγµα

Σε µορφή δέντρου :

1

2

3 11

5

13 7

Σε µορφή πίνακα :

1 2 5 3 11 13 7

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 22: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Παράδειγµα

Σε µορφή δέντρου :

7

2

3 11

5

13

Σε µορφή πίνακα :

7 2 5 3 11 13 1

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 23: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Παράδειγµα

Σε µορφή δέντρου :

2

7

3 11

5

13

Σε µορφή πίνακα :

2 7 5 3 11 13 1

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 24: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Παράδειγµα

Σε µορφή δέντρου :

2

3

7 11

5

13

Σε µορφή πίνακα :

2 3 5 7 11 13 1

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 25: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Παράδειγµα

Σε µορφή δέντρου :

13

3

7 11

5

Σε µορφή πίνακα :

13 3 5 7 11 2 1

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 26: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Παράδειγµα

Σε µορφή δέντρου :

3

13

7 11

5

Σε µορφή πίνακα :

3 13 5 7 11 2 1

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 27: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Παράδειγµα

Σε µορφή δέντρου :

3

7

13 11

5

Σε µορφή πίνακα :

3 7 5 13 11 2 1

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 28: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Παράδειγµα

Σε µορφή δέντρου :

11

7

13

5

Σε µορφή πίνακα :

11 7 5 13 3 2 1

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 29: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Παράδειγµα

Προχωρώντας παροµοίως έχουµε σταδιακά :

1 5 7 11 13 3 2 1

2 7 13 11 5 3 2 1

3 11 13 7 5 3 2 1

4 Και τέλος έχουµε ταξινοµηµένους τους επτά πρώτους αριθµούς

13 11 7 5 3 2 1

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 30: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Παράδειγµα

Προχωρώντας παροµοίως έχουµε σταδιακά :

1 5 7 11 13 3 2 1

2 7 13 11 5 3 2 1

3 11 13 7 5 3 2 1

4 Και τέλος έχουµε ταξινοµηµένους τους επτά πρώτους αριθµούς

13 11 7 5 3 2 1

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 31: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Παράδειγµα

Προχωρώντας παροµοίως έχουµε σταδιακά :

1 5 7 11 13 3 2 1

2 7 13 11 5 3 2 1

3 11 13 7 5 3 2 1

4 Και τέλος έχουµε ταξινοµηµένους τους επτά πρώτους αριθµούς

13 11 7 5 3 2 1

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 32: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Παράδειγµα

Προχωρώντας παροµοίως έχουµε σταδιακά :

1 5 7 11 13 3 2 1

2 7 13 11 5 3 2 1

3 11 13 7 5 3 2 1

4 Και τέλος έχουµε ταξινοµηµένους τους επτά πρώτους αριθµούς

13 11 7 5 3 2 1

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 33: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Heapsort - Ιδιότητες

Ταξινόµηση in-place

Ταξινόµηση σε O(n log n)

Ασυµπτωτικά ϐέλτιστο για οποιοδήποτε αλγόριθµο ταξινόµησης

ϐασισµένο σε συγκρίσεις Ω(n log n)

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 34: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Heapsort - Ιδιότητες

Ταξινόµηση in-place

Ταξινόµηση σε O(n log n)

Ασυµπτωτικά ϐέλτιστο για οποιοδήποτε αλγόριθµο ταξινόµησης

ϐασισµένο σε συγκρίσεις Ω(n log n)

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 35: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Πως δουλεύειΙδιότητες

Heapsort - Ιδιότητες

Ταξινόµηση in-place

Ταξινόµηση σε O(n log n)

Ασυµπτωτικά ϐέλτιστο για οποιοδήποτε αλγόριθµο ταξινόµησης

ϐασισµένο σε συγκρίσεις Ω(n log n)

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 36: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Heap - Παρατηρήσεις

Υπάρχουν διάφοροι τρόποι που µπορούµε να εξετάσουµε έναν

σωρό

5

7

13

11

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 37: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Heap - Παρατηρήσεις

Υπάρχουν διάφοροι τρόποι που µπορούµε να εξετάσουµε έναν

σωρό

5

7

13

11

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 38: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Heap - Παρατηρήσεις

Υπάρχουν διάφοροι τρόποι που µπορούµε να εξετάσουµε έναν

σωρό

5

7

13

11

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 39: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Heap - Παρατηρήσεις

Αναδροµική προσέγγιση - Μετά από την αφαίρεση της ϱίζας ενός

heap τα δέντρα που σχηµατίζονται αποτελούν ανεξάρτητα heaps

Σε µορφή δέντρου :

2

3

7 11

5

13

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 40: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Heap - Παρατηρήσεις

Αναδροµική προσέγγιση - Μετά από την αφαίρεση της ϱίζας ενός

heap τα δέντρα που σχηµατίζονται αποτελούν ανεξάρτητα heaps

Σε µορφή δέντρου :

2

3

7 11

5

13

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 41: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Heap - Παρατηρήσεις

Αναδροµική προσέγγιση - Μετά από την αφαίρεση της ϱίζας ενός

heap τα δέντρα που σχηµατίζονται αποτελούν ανεξάρτητα heaps

Σε µορφή δέντρου :

3

7 11

5

13

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 42: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Αρχική ιδέα - Χρήση δυο σωρών

Μετά την αφαίρεση της ϱίζας το επόµενο στοιχείο ϑα είναι η ϱίζα

ενός από τα δυο heaps

Απαιτείται µόλις µια σύγκριση

3

7 11

5

13

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 43: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Αρχική ιδέα - Χρήση δυο σωρών

Μετά την αφαίρεση της ϱίζας το επόµενο στοιχείο ϑα είναι η ϱίζα

ενός από τα δυο heaps

Απαιτείται µόλις µια σύγκριση

3

7 11

5

13

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 44: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Μερική Χρήση δυο σωρών

Μετά την αφαίρεση της ϱίζας το επόµενο στοιχείο ϑα είναι η ϱίζα

ενός από τα δυο heaps

Απαιτείται µόλις µια σύγκριση

7 11

5

13

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 45: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Παράδειγµα

Σταδιακή επανασύσταση του σωρού

13

7 11

5

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 46: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Παράδειγµα

Σταδιακή επανασύσταση του σωρού

7

11 13

5

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 47: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Παράδειγµα

Μεταφορά τελευταίου στοιχείου στην ϱίζα

13

7

11

5

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 48: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Παράδειγµα

Τελευταίο ϐήµα επαναφοράς της σωρού

5

7

11

13

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 49: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Παρατηρήσεις

΄Ολες οι ιδιότητες του heapsort διατηρούνται

Με µια σύγκριση, τοποθετούµε το στοιχείο στην ϱίζα ενός heap µε

µικρότερο ύψος

Στα µισά ϐήµατα (iterations) όµως, δεν έχει αλλάξει τίποτα

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 50: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Παρατηρήσεις

΄Ολες οι ιδιότητες του heapsort διατηρούνται

Με µια σύγκριση, τοποθετούµε το στοιχείο στην ϱίζα ενός heap µε

µικρότερο ύψος

Στα µισά ϐήµατα (iterations) όµως, δεν έχει αλλάξει τίποτα

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 51: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Εισαγωγή

Παρατηρήσεις

΄Ολες οι ιδιότητες του heapsort διατηρούνται

Με µια σύγκριση, τοποθετούµε το στοιχείο στην ϱίζα ενός heap µε

µικρότερο ύψος

Στα µισά ϐήµατα (iterations) όµως, δεν έχει αλλάξει τίποτα

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 52: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Χρήση N σωρών - Πλήρης αξιοποίηση

Χρήση όλων των σωρών σε όλα τα ϐήµατα του αλγορίθµου

Σκοπός : Μεγιστοποίηση κέρδους σε απόδοση

Παράπλευρο κέρδος : Εµφάνιση δυνατοτήτων παραλληλοποίησης

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 53: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Χρήση N σωρών - Πλήρης αξιοποίηση

Χρήση όλων των σωρών σε όλα τα ϐήµατα του αλγορίθµου

Σκοπός : Μεγιστοποίηση κέρδους σε απόδοση

Παράπλευρο κέρδος : Εµφάνιση δυνατοτήτων παραλληλοποίησης

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 54: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Χρήση N σωρών - Πλήρης αξιοποίηση

Χρήση όλων των σωρών σε όλα τα ϐήµατα του αλγορίθµου

Σκοπός : Μεγιστοποίηση κέρδους σε απόδοση

Παράπλευρο κέρδος : Εµφάνιση δυνατοτήτων παραλληλοποίησης

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 55: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Προβλήµατα

∆ιατήρηση της ιδιότητας της ταξινόµησης in-place

Οργάνωση σωρών σε µορφή πίνακα

Αποτελεσµατική εύρεση των ϕύλλων των σωρών

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 56: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Προβλήµατα

∆ιατήρηση της ιδιότητας της ταξινόµησης in-place

Οργάνωση σωρών σε µορφή πίνακα

Αποτελεσµατική εύρεση των ϕύλλων των σωρών

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 57: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Προβλήµατα

∆ιατήρηση της ιδιότητας της ταξινόµησης in-place

Οργάνωση σωρών σε µορφή πίνακα

Αποτελεσµατική εύρεση των ϕύλλων των σωρών

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 58: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Πρώτη σκέψη

Ο ένας σωρός µετά τον άλλο ανεξάρτητα

Αποτυγχάνει

Μένουν ¨κενά¨ ανάµεσα στις σωρούς

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 59: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Πρώτη σκέψη

Ο ένας σωρός µετά τον άλλο ανεξάρτητα

Αποτυγχάνει

Μένουν ¨κενά¨ ανάµεσα στις σωρούς

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 60: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Πρώτη σκέψη

Ο ένας σωρός µετά τον άλλο ανεξάρτητα

Αποτυγχάνει

Μένουν ¨κενά¨ ανάµεσα στις σωρούς

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 61: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Προτεινόµενη Λύση

Πολύπλεξη των σωρών

Προσδιορισµός παιδιών

Αριστερό παιδί: 2i + N

∆εξί παιδί: 2i + N + 1

Γονιός : b i − N

2c

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 62: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Προτεινόµενη Λύση

Πολύπλεξη των σωρών

Προσδιορισµός παιδιών

Αριστερό παιδί: 2i + N

∆εξί παιδί: 2i + N + 1

Γονιός : b i − N

2c

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 63: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Αλγόριθµος

1 ∆ηµιουργία N σωρών heap - (Build-Heap)

2 Εύρεση µικρότερης ϱίζας (root)

3 Εναλλαγή µε το τελευταίο αταξινόµητο στοιχείο

4 Κλήση heapify µόνο στο ένα δέντρο

5 Επανάληψη της διαδικασίας από το 2ο ϐήµα µέχρι να ταξινοµηθούν

όλα τα στοιχεία

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 64: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Αλγόριθµος

1 ∆ηµιουργία N σωρών heap - (Build-Heap)

2 Εύρεση µικρότερης ϱίζας (root)

3 Εναλλαγή µε το τελευταίο αταξινόµητο στοιχείο

4 Κλήση heapify µόνο στο ένα δέντρο

5 Επανάληψη της διαδικασίας από το 2ο ϐήµα µέχρι να ταξινοµηθούν

όλα τα στοιχεία

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 65: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Αλγόριθµος

1 ∆ηµιουργία N σωρών heap - (Build-Heap)

2 Εύρεση µικρότερης ϱίζας (root)

3 Εναλλαγή µε το τελευταίο αταξινόµητο στοιχείο

4 Κλήση heapify µόνο στο ένα δέντρο

5 Επανάληψη της διαδικασίας από το 2ο ϐήµα µέχρι να ταξινοµηθούν

όλα τα στοιχεία

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 66: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Αλγόριθµος

1 ∆ηµιουργία N σωρών heap - (Build-Heap)

2 Εύρεση µικρότερης ϱίζας (root)

3 Εναλλαγή µε το τελευταίο αταξινόµητο στοιχείο

4 Κλήση heapify µόνο στο ένα δέντρο

5 Επανάληψη της διαδικασίας από το 2ο ϐήµα µέχρι να ταξινοµηθούν

όλα τα στοιχεία

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 67: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Αλγόριθµος

1 ∆ηµιουργία N σωρών heap - (Build-Heap)

2 Εύρεση µικρότερης ϱίζας (root)

3 Εναλλαγή µε το τελευταίο αταξινόµητο στοιχείο

4 Κλήση heapify µόνο στο ένα δέντρο

5 Επανάληψη της διαδικασίας από το 2ο ϐήµα µέχρι να ταξινοµηθούν

όλα τα στοιχεία

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 68: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Ανάλυση Κόστους

N − 1 συγκρίσεις για την εύρεση της µικρότερης ϱίζας

log(n + N)− log N το ύψος κάθε heap

Κλήση heapify µόνο στο ένα δέντρο

Κέρδος περίπου 10% σε οµοιόµορφη κατανοµή τυχαίων τιµών µε

σχετικά µεγάλο πλήθος στοιχείων

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 69: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Ανάλυση Κόστους

N − 1 συγκρίσεις για την εύρεση της µικρότερης ϱίζας

log(n + N)− log N το ύψος κάθε heap

Κλήση heapify µόνο στο ένα δέντρο

Κέρδος περίπου 10% σε οµοιόµορφη κατανοµή τυχαίων τιµών µε

σχετικά µεγάλο πλήθος στοιχείων

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 70: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Ανάλυση Κόστους

N − 1 συγκρίσεις για την εύρεση της µικρότερης ϱίζας

log(n + N)− log N το ύψος κάθε heap

Κλήση heapify µόνο στο ένα δέντρο

Κέρδος περίπου 10% σε οµοιόµορφη κατανοµή τυχαίων τιµών µε

σχετικά µεγάλο πλήθος στοιχείων

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 71: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Ανάλυση Κόστους

N − 1 συγκρίσεις για την εύρεση της µικρότερης ϱίζας

log(n + N)− log N το ύψος κάθε heap

Κλήση heapify µόνο στο ένα δέντρο

Κέρδος περίπου 10% σε οµοιόµορφη κατανοµή τυχαίων τιµών µε

σχετικά µεγάλο πλήθος στοιχείων

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 72: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Παράδειγµα

Σε µορφή δέντρου :

2

3 11

5

13 7

Σε µορφή πίνακα :

2 5 3 11 13 7

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 73: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Παράδειγµα

Σε µορφή δέντρου :

3

7 11

5

13

Σε µορφή πίνακα :

3 5 7 11 13 2

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 74: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Παράδειγµα

Σε µορφή δέντρου :

7

13 11

5

Σε µορφή πίνακα :

7 5 13 11 3 2

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 75: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Παράδειγµα

Σε µορφή δέντρου :

7

13 11

5

Σε µορφή πίνακα :

7 5 13 11 3 2

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 76: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Παράδειγµα

Σε µορφή δέντρου :

7

13

11

Σε µορφή πίνακα :

7 11 13 5 3 2

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 77: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Κόστος

Συνεχίζοντας, ϑα πάρουµε το τελικό αποτέλεσµα µε 9 συγκρίσεις

και 6 εναλλαγές στοιχείων

σύγκριση εναλλαγή

2 < 5 2↔ 7

3 < 11, 7 > 3 3↔ 7

3 < 5 4↔ 13

7 < 11, 13 > 7 7↔ 13

5 < 7 5↔ 11

7 < 11 7↔ 13

11 < 13 −−

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 78: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Κόστος

Συνεχίζοντας, ϑα πάρουµε το τελικό αποτέλεσµα µε 9 συγκρίσεις

και 6 εναλλαγές στοιχείων

σύγκριση εναλλαγή

2 < 5 2↔ 7

3 < 11, 7 > 3 3↔ 7

3 < 5 4↔ 13

7 < 11, 13 > 7 7↔ 13

5 < 7 5↔ 11

7 < 11 7↔ 13

11 < 13 −−

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 79: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Κόστος Κλασικού Αλγορίθµου

Χρησιµοποιώντας τον κλασικό αλγόριθµο, χρειαζόµαστε 8

συγκρίσεις και 8 εναλλαγές

σύγκριση εναλλαγή

−− 2↔ 11

3 < 5, 11 > 3 3↔ 11

−− 7↔ 3

5 < 11, 5 < 7 7↔ 5

7 < 13 −−−− 5↔ 13

7 < 11, 7 < 13 7↔ 13

−− 7↔ 11

11 < 13 −−−− 11↔ 13

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 80: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

ΠροβλήµαταΠροτάσειςΑνάλυση Κόστους

Κόστος Κλασικού Αλγορίθµου

Χρησιµοποιώντας τον κλασικό αλγόριθµο, χρειαζόµαστε 8

συγκρίσεις και 8 εναλλαγές

σύγκριση εναλλαγή

−− 2↔ 11

3 < 5, 11 > 3 3↔ 11

−− 7↔ 3

5 < 11, 5 < 7 7↔ 5

7 < 13 −−−− 5↔ 13

7 < 11, 7 < 13 7↔ 13

−− 7↔ 11

11 < 13 −−−− 11↔ 13

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 81: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Επίλογος

Εισάγαµε µια νέα ιδέα

Επιτύχαµε επιτάχυνση στην εξαγωγή του τελικού αποτελέσµατος

Εισάγονται δυνατότητες παραλληλοποίησης

Μπορεί να χρησιµοποιηθεί και σε παραλλαγές του heapsort

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 82: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Επίλογος

Εισάγαµε µια νέα ιδέα

Επιτύχαµε επιτάχυνση στην εξαγωγή του τελικού αποτελέσµατος

Εισάγονται δυνατότητες παραλληλοποίησης

Μπορεί να χρησιµοποιηθεί και σε παραλλαγές του heapsort

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 83: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Επίλογος

Εισάγαµε µια νέα ιδέα

Επιτύχαµε επιτάχυνση στην εξαγωγή του τελικού αποτελέσµατος

Εισάγονται δυνατότητες παραλληλοποίησης

Μπορεί να χρησιµοποιηθεί και σε παραλλαγές του heapsort

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 84: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Επίλογος

Εισάγαµε µια νέα ιδέα

Επιτύχαµε επιτάχυνση στην εξαγωγή του τελικού αποτελέσµατος

Εισάγονται δυνατότητες παραλληλοποίησης

Μπορεί να χρησιµοποιηθεί και σε παραλλαγές του heapsort

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps

Page 85: Heapsort Using Multiple Heaps - Πανεπιστήμιο …students.ceid.upatras.gr/~lebenteas/Heapsort_using...Heapify Build-Heap 2 Heapsort Πως δουλεύει Ιδιότητες

ΕισαγωγήHeap

HeapsortHeapsort using 2 heaps

Χρήση πολλαπλών σωρώνΕπίλογος

Ευχαριστώ

Ε

Χ

Σ Τ

Α

Ω

Υ

Ρ Ι

∆. Λεβεντέας – Χ. Ζαρολιάγκης Heapsort Using Multiple Heaps