Вы находитесь на странице: 1из 27

5/17/2011 Theo for students 1

 Δίλαη πνιύ γλσζηόο θαη παξαδνζηαθόο


αιγόξηζκνο δηάηαμεο, ζρεηηθά, ζα πξέπεη λα
είλαη γλσζηά:
 Heapsort είλαη πάληα O(n log n)
 Quicksort είλαη ζπλήζσο O(n log n) αιιά ζηε
ρεηξόηεξε πεξίπησζε είλαη O(n2)
 Quicksort είλαη γεληθά ηαρύηεξνο, αιιά Heapsort
είλαη θαιύηεξνο ζε εθαξκνγέο κε θξηζηκόηεηα
ρξόλνπ.
 Heapsort είλαη πολύ ενδιαθέρον αιγόξηζκνο
5/17/2011 Theo for students 2
 Οξηζκόο ελόο ζσξνύ (heap):
1. Μηα κεγάιε πεξηνρή κλήκεο από ηελ νπνία ν
πξνγξακκαηηζηήο κπνξεί λα δεζκεύζεη ηα
θνκκάηηα (blocks) πνπ ρξεηάδεηαη , θαη λα ηα
απνδεζκεύζεη (ή λα επηηξέςεη λα ζθνππηδν-
θαζαξηζηνύλ) όηαλ δελ ηα ρξεηάδεηαη πηα.
2. Ένα ζηαθμιζμένο, αριζηερά ζηοιτημένο
δσαδικό δένηρο ζηο οποίο κανένας κόμβος
ηοσ δεν έτει ηιμή μεγαλύηερη εκείνης ηοσ
γονέα ηοσ.
 Οη πην πάλσ δύν νξηζκνί έρνπλ ειάρηζηα θνηλά
 Ο Heapsort ρξεζηκνπνηεί ηνλ δεύηεξν
5/17/2011 Theo for students 3
 Υπελζύκηζε:
 Τν βάζνο ελόο θόκβνπ είλαη ε απόζηαζή ηνπ από ηε ξίδα.
 Τν βάζνο ελόο δέληξνπ είλαη ην βάζνο ηνπ βαζύηεξνύ ηνπ
θόκβνπ.
 Έλα δπαδηθό δέληξν βάζνπο n είλαη ζηαζκηζκέλν εάλ όινη νη
θόκβνη ηνπ βάζνπο 0 έσο n-2 έρνπλ από δύν παηδηά.

n-2
n-1
n
σταθμισμένο σταθμισμένο Μη σταθμισμένο

5/17/2011 Theo for students 4


 Έλα ζηαζκηζκέλν δπαδηθό δέληξν βάζνπο n
είλαη Αξηζηεξά ζηνηρεκέλν εάλ:
 Έρεη 2n θόκβνπο βάζνπο n (ην δέληξν είλαη
“πιήξεο”), ή
 Έρεη 2k θόκβνπο βάζνπο k, γηα θάζε k < n, και
όια ηα θύιια βάζνπο n είλαη άθξσο αξηζηεξά
ζηνηρεκέλα.

Αριστερά στοιχημένο Μη Αριστερά στοιχημένο

5/17/2011 Theo for students 5


 Πξώηνλ, ζα κειεηεζεί ε κεηαηξνπή δπαδηθνύ
δέληξνπ ζε ζσξό (heap).
 Σηε ζπλέρεηα, ζα κειεηεζεί ε κεηαηξνπή ηνπ
δπαδηθνύ δέληξνπ, πνπ ζα πξνθύςεη κεηά θάπνηα
κεηαβνιή, θαη πάιη ζε ζσξό.
 Τέινο (απηή είλαη θαη ε θεληξηθή ηδέα), ζα
κειεηεζεί ην πώο ηα πην πάλσ ζα ρξεζηκνπνηεζνύλ
ζηε δηάηαμε (sort) ελόο πίλαθα (array).

5/17/2011 Theo for students 6


 Έλαο θόκβνο δηέπεηαη από ηελ αξρή ζσξνύ (heap
property) εάλ ε ηηκή ηνπ είλαη ηόζν κεγάιε ή θαη
κεγαιύηεξε από ηηο ηηκέο ησλ παηδηώλ ηεο.

12 12 12

8 3 8 12 8 14
Ο κπιε θόκβνο Ο κπιε θόκβνο Ο κπιε θόκβνο δελ έρεη
έρεη heap property έρεη heap property heap property

 Όινη νη θόκβνη θύιια έρνπλ ηελ heap property


 Έλα δπαδηθό δέληξν είλαη heap εάλ όινη νη θόκβνη
ηνπ έρνπλ ηελ heap property.
5/17/2011 Theo for students 7
 Γεδνκέλνπ ελόο θόκβνπ πνπ δελ έρεη heap property ,
κπνξεί λα ηνπ δνζεί ε αξρή απηή, κε ακνηβαία
αληηκεηάζεζε ηεο ηηκήο ηνπ, κε εθείλε ηνπ παηδηνύ ηνπ,
πνπ έρεη ηε κεγαιύηεξε ηηκή.

12 14

8 14 8 12
Ο κπιε θόκβνο δεν Ο κπιε θόκβνο έτει
έτει heap property heap property
 Ο κεηαζρεκαηηζκόο απηόο νλνκάδεηαη πξνο ηα πάλσ
νιίζζεζε (sifting up).
 Αο ζεκεησζεί όηη ην παηδί θόκβνο κπνξεί λα χάζει ηελ
heap property ηνπ.
5/17/2011 Theo for students 8
 Έλα δέληξν κε έλαλ κνλαδηθό θόκβν είλαη
απηόκαηα έλα heap
 Καηαζθεπάδνπκε έλα heap πξνζζέηνληαο έλα
λέν θόκβν ηε θνξά:
 Πξνζζέηνληαο θόκβν ζηα δεμηά ηνπ δεμηόηαηνπ
θόκβνπ ζην βαζύηεξν επίπεδν (ηειεπηαίν πξνο ηα
θάησ).
 Δάλ ην επίπεδν είλαη γεκάην, πξνζηίζεηαη λέν επίπεδν.
Examples:
Πξόζζεζε Πξόζζεζε
λένπ node λένπ node
εδώ εδώ

5/17/2011 Theo for students 9


 Σε θάζε πξόζζεζε θόκβνπ, κπνξεί λα
θαηαζηξέθεηαη ε heap-αξρή ηνπ γνλέα ηνπ θόκβνπ.
 Γηα ηελ επαλόξζσζε, εθηειείηαη sift up
 Αιιά ζε θάζε sift up, ε ηηκή ηνπ πάλσ θόκβνπ
κπνξεί λα κεγαιώλεη έηζη, ώζηε λα θαηαζηξέθεηαη ε
heap-αξρή ηνπ γνλέα ηνπ θόκβνπ.
 Δπαλαιακβάλεηαη ε δηαδηθαζία ηεο πξνο ηα πάλσ
νιίζζεζεο ζην δέληξν, έσο όηνπ:
 Πξνζπειαζζεί θόκβνο πνπ δελ παξαβηάδεη ηελ αξρή-heap

 Πξνζπειαζζεί ε ξίδα ηνπ δέληξνπ.

5/17/2011 Theo for students 10


8 8 10 10

10 8 8 5

1 2 3

10 10 12

8 5 12 5 10 5

12 8 8
4

5/17/2011 Theo for students 11


12 12 14

10 5 14 5 12 5

8 14 8 10 8 10

 Ο θόκβνο πνπ πεξηέρεη ην 8 δελ επεξεάδεηαη επεηδή ν γνλέαο ηνπ


θόκβνο, παξά ηε κεηαβνιή, παξακέλεη κε κεγαιύηεξν πεξηερόκελν.
 Ο θόκβνο πνπ πεξηέρεη ην 5 δελ επεξεάδεηαη επεηδή ν γνλέαο ηνπ θόκβνο,
γίλεηαη κε κεγαιύηεξν πεξηερόκελν.
 Ο θόκβνο πνπ πεξηέρεη ην 8 δελ επεξεάδεηαη επεηδή ν γνλέαο ηνπ θόκβνο,
παξά ηε κεηαβνιή, παξακέλεη κε κεγαιύηεξν πεξηερόκελν.

5/17/2011 Theo for students 12


 Αθνινπζεί έλα απιό δπαδηθό δέληξν κεηά ηε
ζσξνπνίεζή ηνπ (heapified)
25

22 17

19 22 14 15

18 14 21 3 9 11

 Αο ζεκεησζεί όηη heapified δε ζημαίνει διαηεηαγμένο.


 Η ζσξνπνίεζε δελ αιιάδεη ηε κνξθή ηνπ δέληξνπ. Τν
δέληξν είλαη ζηαθμιζμένο θαη αριζηερά ζηοιτημένο
επεηδή έηζη ήηαλ από ηελ αξρή.
5/17/2011 Theo for students 13
 Αο ζεκεησζεί όηη ν κεγαιύηεξνο αξηζκόο πεξηέρεηαη ζηε ξίδα
 Αο ππνηεζεί όηη απομακρύνεηαι ε ξίδα:

11

22 17

19 22 14 15

18 14 21 3 9 11

 Πώο κπνξεί λα δηνξζσζεί ην δέληξν ώζηε λα μαλαγίλεη


ζηαθμιζμένο θαη αριζηερά ζηοιτημένο (δένηρο - ζωρού);
 Λύζε: κεηαζέηνληαο ην ηειεπηαίν ζηνηρείν (δεμηόηαην θύιιν
ηνπ βαζύηεξνπ επηπέδνπ) ζηε ζέζε ηεο ξίδαο.
5/17/2011 Theo for students 14
 Τν δέληξν είλαη ζηαθμιζμένο θαη αριζηερά ζηοιτημένο
(δένηρο - ζωρού), αιιά όρη heap.
 Βέβαηα, μόνο η ρίζα έραζε ηελ αξρή - ζσξνύ

11

22 17

19 22 14 15

18 14 21 3 9
 Κάλνπκε siftUp() ηε ξίδα
 Σηε ζπλέρεηα , κόλν έλα από ηα παηδηά θόκβνη κπνξεί λα
έρεη ράζεη ηελ αξρή – ζσξνύ.
5/17/2011 Theo for students 15
 Τώξα ην αξηζηεξό παηδί ηεο ξίδαο (εμαθνινπζεί λα είλαη
ην 11) έραζε ηελ αξρή – ζσξνύ.

22

11 17

19 22 14 15

18 14 21 3 9

 Κάλνπκε siftUp() ηνλ θόκβν.


 Σηε ζπλέρεηα , κόλν έλα από ηα παηδηά θόκβνη κπνξεί λα
έρεη ράζεη ηελ αξρή – ζσξνύ.
5/17/2011 Theo for students 16
 Τώξα ην δεμί παηδί ηνπ αξηζηεξνύ παηδηνύ ηεο ξίδαο
(εμαθνινπζεί λα είλαη ην 11) έραζε ηελ αξρή – ζσξνύ.

22

22 17

19 11 14 15

18 14 21 3 9

 Κάλνπκε siftUp() ηνλ θόκβν.


 Σηε ζπλέρεηα , κόλν έλα από ηα παηδηά θόκβνη κπνξεί λα έρεη
ράζεη ηελ αξρή – ζσξνύ, — αιιά όρη, επεηδή είλαη θόκβνο
θύιιν (ηα θύιια έρνπλ πάληα ηελ αξρή – ζσξνύ).
5/17/2011 Theo for students 17
 Τν δέληξν καο είλαη θαη πάιη έλαο ζσξόο, επεηδή θάζε
θόκβνο ηνπ δηέπεηαη από ηελ αξρή – ζσξνύ.
22

22 17

19 21 14 15

18 14 11 3 9
 Καη πάιη, ε κεγαιύηεξε (ή κηα κεγαιύηεξε) ηηκή είλαη ζηε ξίδα.
 Μπνξνύκε λα επαλαιακβάλνπκε ηε δηαδηθαζία έσο ην θαηλό
δέληξν
 Απηό παξάγεη κηα ζεηξά δηαηεηαγκέλσλ ηηκώλ από ηε
κεγαιύηεξε έσο ηε κηθξόηεξε (heap sort).
5/17/2011 Theo for students 18
 Τη ζρέζε έρνπλ ηα δέληξα – ζσξνί κε ηηο δηαηάμεηο;
 Αθνινπζεί ε εμήγεζε:
 Δπεηδή ην δπαδηθό δέληξν είλαη ζσγιζμένο θαη αριζηερά
ζηοιτημένο, κπνξεί λα αλαπαξαζηαζεί ζαλ πίλαθαο (array)
 προζοτή: Η αλαπαξάζηαζε είλαη δπλαηή μόνο γηα ζσγιζμένα,
αριζηερά-ζηοιτημένα δπαδηθά δέληξα.
 Όιεο νη πξάμεηο ησλ δσαδικών δένηρων κπνξνύλ λα
αλαπαξαζηαζνύλ κε αληίζηνηρεο πξάμεηο ζε πίνακες
 Αιγόξηζκνο δηάηαμεο:
Σωροποίηζη ηοσ πίνακα;
Εθ’ όζον ο πίνακας δεν είναι καινός
{
απομάκρσνε και ανηικαηάζηηζε ηη ρίζα;
επαναζωροποίηζε ηο δένηρο;
}

5/17/2011 Theo for students 19


25

22 17

19 22 14 15

18 14 21 3 9 11

0 1 2 3 4 5 6 7 8 9 10 11 12
25 22 17 19 22 14 15 18 14 21 3 9 11

 Σεκείσζε:
 Τν αξηζηεξό παηδί ηνπ δείθηε i έρεη δείθηε 2 * i + 1
 Τν δεμί παηδί ηνπ δείθηε i έρεη δείθηε 2 * i + 2
 Παράδειγμα: ηα παιδιά ηοσ κόμβοσ 3 (19) είναι 7 (18) και 8 (14)
5/17/2011 Theo for students 20
 Η “ξίδα” είλαη ην πξώην ζηνηρείν ηνπ πίλαθα
 Ο “δεμηόηαηνο θόκβνο ζην βαζύηαην επίπεδν” είλαη ην ηειεπηαίν
ζηνηρείν ηνπ πίλαθα
 Ακνηβαία αληηθαηάζηαζε…

0 1 2 3 4 5 6 7 8 9 10 11 12
25 22 17 19 22 14 15 18 14 21 3 9 11

0 1 2 3 4 5 6 7 8 9 10 11 12
11 22 17 19 22 14 15 18 14 21 3 9 25
 ...θαη ζεσξνύκε όηη ην ηειεπηαίν ζηνηρείν ηνπ πίλαθα δελ ππάξρεη πιένλ—
απηό ζα πεη, όηη “ηειεπηαίνο δείθηεο” είλαη ην 11 (πνπ πεξηέρεη ηελ ηηκή
9)

5/17/2011 Theo for students 21


 Δπαλαζσξνπνίεζε (δέθηεο 0, πεξηερόκελν11)...
0 1 2 3 4 5 6 7 8 9 10 11 12
11 22 17 19 22 14 15 18 14 21 3 9 25

0 1 2 3 4 5 6 7 8 9 10 11 12
22 22 17 19 21 14 15 18 14 11 3 9 25

0 1 2 3 4 5 6 7 8 9 10 11 12
9 22 17 19 22 14 15 18 14 21 3 22 25

 ...Καη πάιη, απνκάθξπλζε θαη αληηθαηάζηαζε ηεο ξίδαο


 Υπελζπκίδεηαη, όκσο, όηη ν “ηειεπηαίνο” πηλαθνδείθηεο έρεη αιιάμεη.
 Δπαλαιακβάλνπκε έσο κεδεληθό κήθνο πίλαθα, θαη ν πίλαθαο ζα έρεη
5/17/2011
ηαμηλνκεζεί! Theo for students 22
 Έηζη αξρίδεη ν αιγόξηζκνο:
Σωροποίηζη ηοσ πίνακα;
 : πξόζζεζε θαζέλα από ηνπο
Σωροποίηζη ηοσ πίνακα
n θόκβνπο ηνπ δέληξνπ
 Κάζε θόκβνο πξέπεη λα νιηζζήζεη πξνο ηα πάλσ
(sifting- up) , ίζσο θαη κέρξη ηε ξίδα.
 Δπεηδή ην δπαδηθό δέληξν είλαη απόιπηα δπγηζκέλν, ε
νιίζζεζε θάζε θόκβνπ απαηηεί O(log n) ρξόλν.
 Δπεηδή επαλαιακβάλνπκε n θνξέο, ε ζσξνπνίεζε
απαηηεί ρξόλν n*O(log n), άξα, ζπλνιηθά ρξόλν
O(n*log n).

5/17/2011 Theo for students 23


 Αθνινπζεί ν ππόινηπνο αιγόξηζκνο:
Εθ’ όζον ο πίνακας δεν είναι καινός
{
απομάκρσνε και ανηικαηάζηηζε ηη ρίζα;
επαναζωροποίηζε ηο δένηρο;
}
 Δπαλαιακβάλεηαη ν while βξόρνο n θνξέο (ζηελ
πξαγκαηηθόηεηα, n-1 θνξέο), επεηδή
απνκαθξύλνπκε έλα από ηνπο n θόκβνπο, θάζε
θνξά.
 Απνκάθξπλζε θαη αληηθαηάζηαζε ηεο ξίδαο απαηηεί
ρξόλν O(1).
 Δπνκέλσο, ν ζπλνιηθόο ρξόλνο είλαη n θνξέο ν
ρξόλνο πνπ δηαξθεί ε επαναζωροποίηζη.
5/17/2011 Theo for students 24
 Η επαλαζσξνπνίεζε ηεο ξίδαο, ζπλεπάγεηαη
κεηαθίλεζε από ηε ξίδα σο θάπνην θύιιν (θαη
κπνξεί λα ζηακαηήζεη πνιύ πην πξηλ)
 Τν δπαδηθό δέληξν είλαη ηέιεηα δπγηζκέλν
 Δπνκέλσο, ε δηαδξνκή έρεη κήθνο O(log n)
 Καη πξαγκαηνπνηνύκε O(1) πξάμεηο γηα θάζε θόκβν.
 Δπνκέλσο, ε επαλαζσξνπνίεζε γίλεηαη O(log n) θνξέο
 Δπεηδή επαζσξνπνηνύκε κέζα ζε έλα while βξόρν απηό
γίλεηαη n θνξέο, ν ζπλνιηθόο ρξόλνο ηνπ while βξόρνπ
είλαη n*O(log n), ή O(n*log n).

5/17/2011 Theo for students 25


 Αθνινπζεί, πάιη, ν αιγόξηζκνο :
Σωροποίηζη ηοσ πίνακα;
Εθ’ όζον ο πίνακας δεν είναι καινός
{
απομάκρσνε και ανηικαηάζηηζε ηη ρίζα;
επαναζωροποίηζε ηο δένηρο;
}
 Φξόλνο επαλαζσξνπνίεζεο O(n*log n)
 Φξόλνο while βξόρνπ O(n*log n)
 Άξα, ζπλνιηθόο ρξόλνο O(n*log n) + O(n*log n)
 Γειαδή O(n*log n)!
5/17/2011 Theo for students 26
5/17/2011 Theo for students 27

Вам также может понравиться