Οσρά Προτεραιότητας (priority queue) Γνκή δεδνκέλσλ πνπ ππνζηεξίδεη ηηο αθόινπζεο ιεηηνπξγίεο εηζαγσγή ζηνηρείνπ επηζηξνθή ηνπ ζηνηρείνπ κε ην κεγαιύηεξν θιεηδί (ή ειάρηζην θιεηδί) θαη δηαγξαθή ηνπ από ηε δνκή Δμαηξεηηθά ρξήζηκε δνκή δεδνκέλσλ κε πνιιέο εθαξκνγέο. Π.ρ. ηαμηλόκεζε κε ρξήζε νπξάο πξνηεξαηόηεηαο.
Οσρά Προτεραιότητας (priority queue) Γνκή δεδνκέλσλ πνπ ππνζηεξίδεη ηηο αθόινπζεο ιεηηνπξγίεο εηζαγσγή ζηνηρείνπ επηζηξνθή ηνπ ζηνηρείνπ κε ην κεγαιύηεξν θιεηδί (ή ειάρηζην θιεηδί) θαη δηαγξαθή ηνπ από ηε δνκή Σε πνιιέο εθαξκνγέο ρξεηαδόκαζηε επηπιένλ ιεηηνπξγίεο θαηαζθεπή νπξάο πξνηεξαηόηεηαο γηα δεδνκέλα Ν ζηνηρεία αιιαγή θιεηδηνύ ελόο ζηνηρείνπ δηαγξαθή ζηνηρείνπ έλσζε δύν νπξώλ πξνηεξαηόηεηαο ζε κία
Οσρά Προτεραιότητας (priority queue) Σηνηρεηώδεο πινπνίεζε κε πίλαθα static int N; static int *pq; void Pqinit(int maxn) { pq = malloc(maxn*sizeof(int)); N = 0;} int PQempty() { return N==0;} void PQinsert(int v) { pq[n++]=v; } int PQdelmax() { int j, max = 0; for (j = 1; j < N; j++) if (pq[max] < pq[j]) max = j; exch(pq,max,n-1); return pq[--n]; } [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [] 20 18 12 15 9 5 N maxn-1
Οσρά Προτεραιότητας (priority queue) εηζαγσγή δηαγξαθή κέγηζηνπ δηαγξαθή ( * ) εύξεζε κέγηζηνπ αιιαγή πξνηεξαηόηεηαο έλσζε δηαηεηαγκέλνο πίλαθαο δηαηεηαγκέλε ιίζηα κε δηαηεηαγκέλνο πίλαθαο κε δηαηεηαγκέλε ιίζηα ζσξόο δησλπκηθή νπξά ( * ) Υπνζέηεη όηη γλσξίδνπκε ηε ζέζε ηνπ ζηνηρείνπ πνπ δηαγξάθεηαη
Δομή Δεδομένων Σωρού (heap) Υπνζηεξίδεη απνδνηηθά ηηο ιεηηνπξγίεο κηαο νπξάο πξνηεξαηόηεηαο. Αλαπαξάζηαζε σο πιήξεο δπαδηθό δέλδξν: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. 20 18 12 15 9 5 4 2 7 13 6
Δομή Δεδομένων Σωρού (heap) Υπνζηεξίδεη απνδνηηθά ηηο ιεηηνπξγίεο κηαο νπξάο πξνηεξαηόηεηαο. Αλαπαξάζηαζε σο πιήξεο δπαδηθό δέλδξν: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. 20 18 12 ε ξίδα έρεη ην κέγηζην θιεηδί. ύςνο lgn 15 9 5 4 2 7 13 6
Δομή Δεδομένων Σωρού (heap) Υπνζηεξίδεη απνδνηηθά ηηο ιεηηνπξγίεο κηαο νπξάο πξνηεξαηόηεηαο. Αλαπαξάζηαζε σο πιήξεο δπαδηθό δέλδξν: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. [1] 20 ε ξίδα έρεη ην κέγηζην θιεηδί. [2] [3] 18 12 ύςνο lgn [8] [4] [5] 15 [9] [10] 4 2 7 13 [] [6] 6 9 [12] 5 [7] Υινπνίεζε κε πίλαθα: ην ζηνηρείν ζηε ζέζε i είλαη ν γνλέαο ησλ ζηνηρείσλ ζηηο ζέζεηο 2i θαη 2i+1. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [] [12] 20 18 12 15 9 5 4 2 7 13 6
Δομή Δεδομένων Σωρού (heap) Σςνθήκη ζωπού: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. [1] 20 [2] [3] 18 12 [4] [5] 15 [6] 9 5 [7] [8] [9] [10] 4 2 7 13 [] 6 [12]
Δομή Δεδομένων Σωρού (heap) Σςνθήκη ζωπού: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. [1] 20 [2] [3] 18 12 [4] [5] 15 [6] 9 5 [7] [8] [9] [10] 4 2 19 13 [] 6 [12] παξαβίαζε ηεο ζπλζήθεο ζσξνύ
Δομή Δεδομένων Σωρού (heap) Σςνθήκη ζωπού: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. [1] 20 [2] [3] 18 12 [4] [5] 19 [6] 9 5 [7] [8] [9] [10] 4 2 15 13 [] 6 [12] αληηκεηάζεζε κε ην γνλέα
Δομή Δεδομένων Σωρού (heap) Σςνθήκη ζωπού: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. [1] 20 [2] [3] 19 12 [4] [5] 18 [6] 9 5 [7] [8] [9] [10] 4 2 15 13 [] 6 [12] αληηκεηάζεζε κε ην γνλέα
Δομή Δεδομένων Σωρού (heap) Σςνθήκη ζωπού: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. ε ζπλζήθε ζσξνύ απνθαηαζηάζεθε [1] 20 [2] [3] 19 12 [4] [5] 18 [6] 9 5 [7] [8] [9] [10] 4 2 15 13 [] 6 [12] αληηκεηάζεζε κε ην γνλέα
Δομή Δεδομένων Σωρού (heap) Σςνθήκη ζωπού: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. [1] 20 fixup(int *a, int k) { while (k>1 && (a[k/2]<a[k])) { exch(a,k,k/2); k=k/2; } } [2] [3] 19 12 [4] [5] 18 [6] 9 5 [7] [8] [9] [10] 4 2 15 13 [] 6 [12]
Δομή Δεδομένων Σωρού (heap) Σςνθήκη ζωπού: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. [1] 20 [2] [3] 18 12 [4] [5] 15 [6] 9 5 [7] [8] [9] [10] 4 2 7 13 [] 6 [12]
Δομή Δεδομένων Σωρού (heap) Σςνθήκη ζωπού: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. παξαβίαζε ηεο ζπλζήθεο ζσξνύ [1] 14 [2] [3] 18 12 [4] [5] 15 [6] 9 5 [7] [8] [9] [10] 4 2 7 13 [] 6 [12]
Δομή Δεδομένων Σωρού (heap) Σςνθήκη ζωπού: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. αληηκεηάζεζε κε κεγαιύηεξν παηδί [1] 18 [2] [3] 14 12 [4] [5] 15 [6] 9 5 [7] [8] [9] [10] 4 2 7 13 [] 6 [12]
Δομή Δεδομένων Σωρού (heap) Σςνθήκη ζωπού: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. αληηκεηάζεζε κε κεγαιύηεξν παηδί [1] 18 [2] [3] 15 12 [4] [5] 14 [6] 9 5 [7] [8] [9] [10] 4 2 7 13 [] 6 [12]
Δομή Δεδομένων Σωρού (heap) Σςνθήκη ζωπού: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. αληηκεηάζεζε κε κεγαιύηεξν παηδί [1] 18 [2] [3] 15 12 [4] [5] 14 [6] 9 5 [7] [8] [9] [10] 4 2 7 13 [] 6 [12] ε ζπλζήθε ζσξνύ απνθαηαζηάζεθε
Δομή Δεδομένων Σωρού (heap) Σςνθήκη ζωπού: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. [1] 18 [2] [3] 15 12 fixdown (int *a, int k, int N) { int j; while (2*k <= N) { j=2*k; if ((j<n) && (a[j]<a[j+1])) j++; if (a[k] > a[j]) break; exch(a,k,j); k=j; } } [4] [5] 14 [6] 9 5 [7] [8] [9] [10] 4 2 7 13 [] 6 [12]
Δομή Δεδομένων Σωρού (heap) Οςπά πποηεπαιόηηηαρ βαζιζμένη ζε ζωπό static int N; int pq[maxn]; int PQempty() { return N==0;} void PQinsert(int v) { pq[++n]=v; fixup(pq,n); } [1] 18 [2] 15 [3] 12 [4] [5] 14 [6] 9 5 [7] int PQdelmax() { exch(pq,1,n); fixdown(pq,1,n-1); return pq[n--]; } [8] [9] [10] 4 2 7 13 [] 6 [12]
Δομή Δεδομένων Σωρού (heap) Οςπά πποηεπαιόηηηαρ βαζιζμένη ζε ζωπό static int N; int pq[maxn]; int PQempty() { return N==0;} void PQinsert(int v) { pq[++n]=v; fixup(pq,n); } δηαγξαθή κέγηζηνπ [1] 18 [2] 15 [3] 12 [4] [5] 14 [6] 9 5 [7] int PQdelmax() { exch(pq,1,n); fixdown(pq,1,n-1); return pq[n--]; } [8] [9] [10] 4 2 7 13 [] 6 [12]
Δομή Δεδομένων Σωρού (heap) Οςπά πποηεπαιόηηηαρ βαζιζμένη ζε ζωπό static int N; int pq[maxn]; int PQempty() { return N==0;} void PQinsert(int v) { pq[++n]=v; fixup(pq,n); } δηαγξαθή κέγηζηνπ [1] 6 [2] 15 [3] 12 [4] [5] 14 [6] 9 5 [7] int PQdelmax() { exch(pq,1,n); fixdown(pq,1,n-1); return pq[n--]; } [8] [9] [10] 4 2 7 13 [] 18 [12]
Δομή Δεδομένων Σωρού (heap) Οςπά πποηεπαιόηηηαρ βαζιζμένη ζε ζωπό static int N; int pq[maxn]; int PQempty() { return N==0;} void PQinsert(int v) { pq[++n]=v; fixup(pq,n); } δηαγξαθή κέγηζηνπ [1] 15 [2] 6 [3] 12 [4] [5] 14 [6] 9 5 [7] int PQdelmax() { exch(pq,1,n); fixdown(pq,1,n-1); return pq[n--]; } [8] [9] [10] 4 2 7 13 [] 18 [12]
Δομή Δεδομένων Σωρού (heap) Οςπά πποηεπαιόηηηαρ βαζιζμένη ζε ζωπό static int N; int pq[maxn]; int PQempty() { return N==0;} void PQinsert(int v) { pq[++n]=v; fixup(pq,n); } δηαγξαθή κέγηζηνπ [1] 15 [2] 14 [3] 12 [4] [5] 6 [6] 9 5 [7] int PQdelmax() { exch(pq,1,n); fixdown(pq,1,n-1); return pq[n--]; } [8] [9] [10] 4 2 7 13 [] 18 [12]
Δομή Δεδομένων Σωρού (heap) Οςπά πποηεπαιόηηηαρ βαζιζμένη ζε ζωπό static int N; int pq[maxn]; int PQempty() { return N==0;} void PQinsert(int v) { pq[++n]=v; fixup(pq,n); } δηαγξαθή κέγηζηνπ [1] 15 [2] 14 [3] 12 [4] [5] 13 [6] 9 5 [7] int PQdelmax() { exch(pq,1,n); fixdown(pq,1,n-1); return pq[n--]; } [8] [9] [10] 4 2 7 6 [] 18 [12]
Δομή Δεδομένων Σωρού (heap) Οςπά πποηεπαιόηηηαρ βαζιζμένη ζε ζωπό static int N; int pq[maxn]; int PQempty() { return N==0;} void PQinsert(int v) { pq[++n]=v; fixup(pq,n); } δηαγξαθή κέγηζηνπ [1] 15 [2] 14 [3] 12 [4] [5] 13 [6] 9 5 [7] int PQdelmax() { exch(pq,1,n); fixdown(pq,1,n-1); return pq[n--]; } [8] [9] [10] 4 2 7 6 [] 18 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με οςπά πποηεπαιόηηηαρ void PQsort(int *a, int l, int r) { int k; PQinit(); for (k=l; k<=r; k++) PQinsert(a[k]); for (k=r; k>=l; k--) a[k]=pqdelmax(); }
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με οςπά πποηεπαιόηηηαρ void PQsort(int *a, int l, int r) { int k; PQinit(); for (k=l; k<=r; k++) PQinsert(a[k]); for (k=r; k>=l; k--) a[k]=pqdelmax(); } Γηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά O(N logn) ρξόλνο
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με οςπά πποηεπαιόηηηαρ void PQsort(int *a, int l, int r) { int k; PQinit(); for (k=l; k<=r; k++) PQinsert(a[k]); for (k=r; k>=l; k--) a[k]=pqdelmax(); } Γηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά O(N logn) ρξόλνο Γηαδνρηθή εμαγσγή κέγηζηνπ ζηνηρείνπ O(N logn) ρξόλνο
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] [2] [3] 4 18 [4] [5] 9 13 [6] 5 14 [7] [8] [9] [10] 7 2 6 15 [] 12 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] [2] [3] 4 18 [4] [5] 9 13 [6] 5 14 [7] [8] [9] [10] 7 2 6 15 [] 12 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] [2] [3] 4 18 [4] [5] 9 13 [6] 12 14 [7] [8] [9] [10] 7 2 6 15 [] 5 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] [2] [3] 4 18 [4] [5] 9 13 [6] 12 14 [7] [8] [9] [10] 7 2 6 15 [] 5 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] [2] [3] 4 18 [4] [5] 9 15 [6] 12 14 [7] [8] [9] [10] 7 2 6 13 [] 5 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] [2] [3] 4 18 [4] [5] 9 15 [6] 12 14 [7] [8] [9] [10] 7 2 6 13 [] 5 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] [2] [3] 4 18 [4] [5] 9 15 [6] 12 14 [7] [8] [9] [10] 7 2 6 13 [] 5 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] [2] [3] 4 18 [4] [5] 9 15 [6] 12 14 [7] [8] [9] [10] 7 2 6 13 [] 5 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] [2] [3] 15 18 [4] [5] 9 4 [6] 12 14 [7] [8] [9] [10] 7 2 6 13 [] 5 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] [2] [3] 15 18 [4] [5] 9 4 [6] 12 14 [7] [8] [9] [10] 7 2 6 13 [] 5 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] [2] [3] 15 18 [4] [5] 9 13 [6] 12 14 [7] [8] [9] [10] 7 2 6 4 [] 5 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] [2] [3] 15 18 [4] [5] 9 13 [6] 12 14 [7] [8] [9] [10] 7 2 6 4 [] 5 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] 18 [2] [3] 15 [4] [5] 9 13 [6] 12 14 [7] [8] [9] [10] 7 2 6 4 [] 5 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] 18 [2] [3] 15 [4] [5] 9 13 [6] 12 14 [7] [8] [9] [10] 7 2 6 4 [] 5 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] 18 [2] [3] 15 14 [4] [5] 9 13 [6] 12 [7] [8] [9] [10] 7 2 6 4 [] 5 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο [1] 18 [2] [3] 15 14 [4] [5] 9 13 [6] 12 [7] [8] [9] [10] 7 2 6 4 [] 5 [12]
Δομή Δεδομένων Σωρού (heap) Ταξινόμηζη με ζωπό #define pq(a) a[l-1+a] void heapsort(int *a, int l, int r) { int k, N=r-l+1; for (k=n/2; k>=1; k--) fixdown(&pq(0),k,n); while (N>1) { exch(pq,1,n); fixdown(&pq(0),1,--n); } } Ταθηνπνίεζε ζσξνύ (αληηθαζηζηά ηε δηαδνρηθή εηζαγσγή ησλ ζηνηρείσλ ζηελ νπξά) O(N) ρξόλνο Απόδεημε γηα Ο αξηζκόο ησλ αληηκεηαζέζεσλ είλαη ην πνιύ
Διωνσμικός Σωρός (binomial heap) Δςαδικά δένδπα απιζηεπά διαηεηαγμένα ζε ζωπό Τν θιεηδί θάζε θόκβνπ είλαη κεγαιύηεξν ή ίζν από όια ηα θιεηδηά ηνπ αξηζηεξνύ ππνδέλδξνπ απηνύ ηνπ θόκβνπ. 20 Σωπόρ δύναμηρ ηος 2 Γέλδξν αξηζηεξά δηαηεηαγκέλν ζε ζσξό, ζην νπνίν ην δεμί ππνδέλδξν ηεο ξίδαο είλαη θελό θαη ην αξηζηεξό ππνδέλδξν είλαη πιήξεο. 16 8 12 14 18 7 5
Διωνσμικός Σωρός (binomial heap) Δςαδικά δένδπα απιζηεπά διαηεηαγμένα ζε ζωπό Τν θιεηδί θάζε θόκβνπ είλαη κεγαιύηεξν ή ίζν από όια ηα θιεηδηά ηνπ αξηζηεξνύ ππνδέλδξνπ απηνύ ηνπ θόκβνπ. 20 Σωπόρ δύναμηρ ηος 2 Γέλδξν αξηζηεξά δηαηεηαγκέλν ζε ζσξό, ζην νπνίν ην δεμί ππνδέλδξν ηεο ξίδαο είλαη θελό θαη ην αξηζηεξό ππνδέλδξν είλαη πιήξεο. 16 8 12 14 18 7 5 Διωνςμικό δένδπο 20 Γέλδξν πνπ κε ηελ αληηζηνίρεζε αξηζηεξνύ παηδηνύ θαη δεμηνύ αδειθνύ δίλεη ζσξό δύλακεο ηνπ 2. 16 12 14 18 7 5 8
Διατεταγμένα Δένδρα Γηαηεηαγκέλν δέλδξν - Υινπνίεζε πξνο επόκελν αδειθό πξνο 1 ν παηδί
Διατεταγμένα Δένδρα Γηαηεηαγκέλν δέλδξν Μεηαηξνπή ζε δπαδηθό δέλδξν
Διωνσμικός Σωρός (binomial heap) Δςαδικά δένδπα απιζηεπά διαηεηαγμένα ζε ζωπό Τν θιεηδί θάζε θόκβνπ είλαη κεγαιύηεξν ή ίζν από όια ηα θιεηδηά ηνπ αξηζηεξνύ ππνδέλδξνπ απηνύ ηνπ θόκβνπ. Σωπόρ δύναμηρ ηος 2 Γέλδξν αξηζηεξά δηαηεηαγκέλν ζε ζσξό, ζην νπνίν ην δεμί ππνδέλδξν ηεο ξίδαο είλαη θελό θαη ην αξηζηεξό ππνδέλδξν είλαη πιήξεο. 20 16 8 12 14 18 7 5 Διωνςμικό δένδπο 20 Γέλδξν πνπ κε ηελ αληηζηνίρεζε αξηζηεξνύ παηδηνύ θαη δεμηνύ αδειθνύ δίλεη ζσξό δύλακεο ηνπ 2. 16 12 14 18 7 5 8 Τν πιήζνο ησλ θόκβσλ ζε έλα ζσξό δύλακεο ηνπ 2 είλαη δύλακε ηνπ 2 Καλέλαο θόκβνο δελ έρεη θιεηδί κεγαιύηεξν από ην θιεηδί ηεο ξίδαο Τα δησλπκηθά δέληξα είλαη δηαηεηαγκέλα ζε ζσξό
Διωνσμικός Σωρός (binomial heap) 20 20 15 15 16 16 12 18 9 13 9 13 12 18 8 14 7 5 6 10 3 4 6 10 3 4 8 14 7 5 16 12 14 8 20 18 7 5 9 10 6 15 13 3 4 9 10 6 15 13 3 4 16 12 14 8 20 18 7 5
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Παξάδεηγκα: δησλπκηθή νπξά κεγέζνπο 13 = (01) 2 20 15 16 9 12 18 6 10 8 14 7 5
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ειζαγωγή ζηοισείος 20 15 16 9 12 18 6 10 8 14 7 5
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ειζαγωγή ζηοισείος 16 20 9 15 3 01 + 0001 12 18 6 10 8 14 7 5
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ειζαγωγή ζηοισείος 20 16 8 12 14 18 7 5 6 9 10 15 3 01 + 0001 0 θξαηνύκελν 1
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ειζαγωγή ζηοισείος 20 16 8 12 14 18 7 5 6 9 10 3 15 01 + 0001 10 θξαηνύκελν 0
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ειζαγωγή ζηοισείος 12 16 18 20 6 9 10 3 15 13 + 0001 10000 8 14 7 5
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ειζαγωγή ζηοισείος 16 20 9 3 15 13 4 + 0001 12 18 6 10 8 14 7 5
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ειζαγωγή ζηοισείος 20 16 8 12 14 18 7 5 6 9 10 3 15 13 4 + 0001 10000 θξαηνύκελν 1
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ειζαγωγή ζηοισείος 20 16 8 12 14 18 7 5 6 9 10 3 15 4 13 + 0001 0 θξαηνύκελν 1
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ειζαγωγή ζηοισείος 20 16 8 12 14 18 7 5 6 9 10 3 15 4 13 + 0001 00 θξαηνύκελν 1
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ειζαγωγή ζηοισείος 20 16 8 12 14 18 7 5 6 9 10 4 13 3 15 + 0001 00 θξαηνύκελν 1
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ειζαγωγή ζηοισείος 20 16 8 12 14 18 7 5 6 9 10 4 13 3 15 + 0001 000 θξαηνύκελν 1
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ειζαγωγή ζηοισείος 12 16 18 20 9 13 15 + 0001 000 8 14 7 5 6 10 3 4 θξαηνύκελν 1
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ειζαγωγή ζηοισείος 12 16 18 20 9 13 15 + 0001 0000 8 14 7 5 6 10 3 4 θξαηνύκελν 1
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ειζαγωγή ζηοισείος 20 15 16 + 0001 10000 9 13 12 18 θξαηνύκελν 0 6 10 3 4 8 14 7 5
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Διαγπαθή μέγιζηος από ζωπό δύναμηρ ηος 2 15 20 16 9 13 12 18 6 10 3 4 8 14 7 5
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Διαγπαθή μέγιζηος από ζωπό δύναμηρ ηος 2 15 16 9 13 12 18 6 10 3 4 8 14 7 5
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Διαγπαθή μέγιζηος 21 16 9 13 12 18 6 10 3 4 8 14 7 5
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Διαγπαθή μέγιζηος 16 Πξέπεη λα ενώζοςμε δύν νπξέο 9 13 12 18 6 10 3 4 8 14 7 5
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ένωζη δύο διωνςμικών οςπών 12 16 18 13 1 + 0 8 14 7 5 9 θξαηνύκελν 0
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ένωζη δύο διωνςμικών οςπών 12 16 18 13 1 + 0 0 8 14 7 5 9 θξαηνύκελν 1
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ένωζη δύο διωνςμικών οςπών 12 16 18 13 1 + 0 10 8 14 7 9 θξαηνύκελν 1 5
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ένωζη δύο διωνςμικών οςπών 12 16 1 + 0 10 8 14 18 θξαηνύκελν 1 13 9 7 5
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ένωζη δύο διωνςμικών οςπών 12 16 1 + 0 010 8 14 18 θξαηνύκελν 1 13 9 7 5
Διωνσμικός Σωρός (binomial heap) Διωνςμικόρ Σωπόρ Σύλνιν ζσξώλ δύλακεο ηνπ 2 νη νπνίνη δελ έρνπλ ην ίδην κέγεζνο. Η δνκή ηεο θαζνξίδεηαη από ηε δπαδηθή αλαπαξάζηαζε ηνπ αξηζκνύ ησλ θόκβσλ ηεο. Ένωζη δύο διωνςμικών οςπών 1 + 0 1010 16 18 θξαηνύκελν 0 12 13 8 14 9 7 5
Σωρός Fibonacci Βαζίδεηαη ζην δησλπκηθό ζσξό (δειαδή απνηειεί κηα ζπιινγή από δέλδξα) αιιά έρεη πην ραιαξή δνκή δείθηεο ζηνλ θόκβν (ξίδα) κε ειάρηζην θιεηδί 23 7 3 17 24 πιήζνο θόκβσλ 18 52 38 30 26 46 39 41 35 Αληηζηαζκηζηηθνί ρξόλνη εθηέιεζεο εηζαγσγή, έλσζε, εύξεζε ειάρηζηνπ, κείσζε θιεηδηνύ δηαγξαθή, εμαγσγή ειάρηζηνπ
Σωρός Fibonacci Βαζίδεηαη ζην δησλπκηθό ζσξό (δειαδή απνηειεί κηα ζπιινγή από δέλδξα) αιιά έρεη πην ραιαξή δνκή δείθηεο ζηνλ θόκβν (ξίδα) κε ειάρηζην θιεηδί 23 7 3 17 24 πιήζνο θόκβσλ 18 52 38 30 26 46 39 41 35 Κάζε θόκβνο απνζεθεύεη εθηόο από ην θιεηδί ηνπ ηα παξαθάησ δεδνκέλα γνλέαο αξηζκόο παηδηώλ αξηζηεξόο αδεξθόο δεμηόο αδεξθόο bit επηζήκαλζεο παηδί (νπνηνδήπνηε)
Σωρός Fibonacci Βαζίδεηαη ζην δησλπκηθό ζσξό (δειαδή απνηειεί κηα ζπιινγή από δέλδξα) αιιά έρεη πην ραιαξή δνκή δείθηεο ζηνλ θόκβν (ξίδα) κε ειάρηζην θιεηδί 23 7 3 17 24 πιήζνο θόκβσλ 18 52 38 30 26 46 39 41 35 Κάζε θόκβνο απνζεθεύεη εθηόο από ην θιεηδί ηνπ ηα παξαθάησ δεδνκέλα γνλέαο αξηζκόο παηδηώλ αξηζηεξόο αδεξθόο δεμηόο αδεξθόο bit επηζήκαλζεο παηδί (νπνηνδήπνηε)
Σωρός Fibonacci Βαζίδεηαη ζην δησλπκηθό ζσξό (δειαδή απνηειεί κηα ζπιινγή από δέλδξα) αιιά έρεη πην ραιαξή δνκή δείθηεο ζηνλ θόκβν (ξίδα) κε ειάρηζην θιεηδί 23 7 3 17 24 πιήζνο θόκβσλ 18 52 38 30 26 46 39 41 35 Κάζε θόκβνο απνζεθεύεη εθηόο από ην θιεηδί ηνπ ηα παξαθάησ δεδνκέλα γνλέαο αξηζκόο παηδηώλ αξηζηεξόο αδεξθόο δεμηόο αδεξθόο bit επηζήκαλζεο παηδί (νπνηνδήπνηε)
Σωρός Fibonacci Μέγιζηορ βαθμόρ Σε έλα ζσξό Fibonacci κε είλαη θιεηδηά ν κέγηζηνο βαζκόο πνπ κπνξεί λα έρεη νπνηνζδήπνηε θόκβνο Δςναμικό ζωπού Γηα ηελ αληηζηαζκηζηηθή αλάιπζε ησλ ιεηηνπξγηώλ ελόο ζσξνύ Fibonacci νξίδνπκε ην δπλακηθό ηνπ όπνπ ην πιήζνο ησλ δέλδξσλ ην πιήζνο ησλ επηζεκαζκέλσλ θόκβσλ ζηαζεξά Γηα λα απινπνηήζνπκε ηελ αλάιπζε ζέηνπκε ζε θάπνηα ζηαζεξή πνζόηεηα εξγαζίαο θαη ππνζέηνπκε όηη κηα κνλάδα δπλακηθνύ αληηζηνηρεί
Σωρός Fibonacci Μέγιζηορ βαθμόρ Σε έλα ζσξό Fibonacci κε είλαη θιεηδηά ν κέγηζηνο βαζκόο πνπ κπνξεί λα έρεη νπνηνζδήπνηε θόκβνο Δςναμικό ζωπού Γηα ηελ αληηζηαζκηζηηθή αλάιπζε ησλ ιεηηνπξγηώλ ελόο ζσξνύ Fibonacci νξίδνπκε ην δπλακηθό ηνπ όπνπ ην πιήζνο ησλ δέλδξσλ ην πιήζνο ησλ επηζεκαζκέλσλ θόκβσλ
Σωρός Fibonacci Μέγιζηορ βαθμόρ Σε έλα ζσξό Fibonacci κε είλαη θιεηδηά ν κέγηζηνο βαζκόο πνπ κπνξεί λα έρεη νπνηνζδήπνηε θόκβνο Δςναμικό ζωπού Γηα ηελ αληηζηαζκηζηηθή αλάιπζε ησλ ιεηηνπξγηώλ ελόο ζσξνύ Fibonacci νξίδνπκε ην δπλακηθό ηνπ όπνπ ην πιήζνο ησλ δέλδξσλ ην πιήζνο ησλ επηζεκαζκέλσλ θόκβσλ 23 7 3 18 52 38 39 41 17 30 24 26 46 35
Σωρός Fibonacci Εύπεζη ελάσιζηος κόμβος Δπηζηξέθεη ηνλ θόκβν κε ειάρηζην θιεηδί 23 7 3 18 52 38 39 41 17 30 24 26 46 35 Τν πξαγκαηηθό θόζηνο ηεο εύξεζεο είλαη Πξέπεη επίζεο λα θξάμνπκε ην αληηζηαζκηζηηθό θόζηνο. Τν δπλακηθό ηεο δνκήο κεηά ηελ πξάμε είλαη Άξα ην αληηζηαζκηζηηθό θόζηνο είλαη
Σωρός Fibonacci Ειζαγωγή κόμβος Γεκηνπξγείηαη λέν δέλδξν κε κόλν έλα θόκβν θαη εηζάγεηαη ζηε ιίζηα ησλ ξηδώλ δίπια από ην Αλ ην εηζαγόκελν θιεηδί είλαη ην ειάρηζην ηόηε ν δείθηεο δείρλεη ζην λέν θόκβν 23 7 3 18 52 38 17 30 24 26 46 ειςαγωγι(8) 39 41 35 23 7 8 3 17 24 18 52 38 30 26 46 39 41 35
Σωρός Fibonacci Ειζαγωγή κόμβος Γεκηνπξγείηαη λέν δέλδξν κε κόλν έλα θόκβν θαη εηζάγεηαη ζηε ιίζηα ησλ ξηδώλ δίπια από ην Αλ ην εηζαγόκελν θιεηδί είλαη ην ειάρηζην ηόηε ν δείθηεο δείρλεη ζην λέν θόκβν 23 7 3 18 52 38 17 30 24 26 46 ειςαγωγι(2) 39 41 35 23 7 2 3 17 24 18 52 38 30 26 46 39 41 35
Σωρός Fibonacci Ειζαγωγή κόμβος Γεκηνπξγείηαη λέν δέλδξν κε κόλν έλα θόκβν θαη εηζάγεηαη ζηε ιίζηα ησλ ξηδώλ δίπια από ην Αλ ην εηζαγόκελν θιεηδί είλαη ην ειάρηζην ηόηε ν δείθηεο δείρλεη ζην λέν θόκβν Τν πξαγκαηηθό θόζηνο ηεο εηζαγσγήο είλαη Πξέπεη επίζεο λα θξάμνπκε ην αληηζηαζκηζηηθό θόζηνο. Τν δπλακηθό ηεο δνκήο κεηά ηελ πξάμε είλαη Άξα ην αληηζηαζκηζηηθό θόζηνο εηζαγσγήο είλαη
Σωρός Fibonacci Ένωζη δύο ζωπών Fibonacci Δλώλεη ηηο αληίζηνηρεο ιίζηεο ξηδηθώλ θόκβσλ ρξεζηκνπνηώληαο ηνπο δείθηεο θαη Ο δείθηεο δείρλεη ζηνλ θόκβν κε ην ειάρηζην θιεηδί κεηαμύ ησλ θαη 23 7 3 17 24 2 5 18 52 38 30 26 46 12 33 39 41 35 53 ζνωςθ 23 7 2 5 3 17 24 12 33 18 52 38 30 26 46 53 39 41 35
Σωρός Fibonacci Ένωζη δύο ζωπών Fibonacci Δλώλεη ηηο αληίζηνηρεο ιίζηεο ξηδηθώλ θόκβσλ ρξεζηκνπνηώληαο ηνπο δείθηεο θαη Ο δείθηεο δείρλεη ζηνλ θόκβν κε ην ειάρηζην θιεηδί κεηαμύ ησλ θαη Τν πξαγκαηηθό θόζηνο ηεο έλσζεο είλαη Τν δπλακηθό ηεο δνκήο κεηά ηελ πξάμε είλαη Άξα ην αληηζηαζκηζηηθό θόζηνο έλσζεο είλαη
Σωρός Fibonacci Εξαγωγή ελάσιζηος Γηαγξάθεη ηνλ θόκβν κε ην ειάρηζην θιεηδί θαη ελνπνηεί δέλδξα ζην ξηδηθό επίπεδν 23 7 21 3 18 52 38 39 41 17 30 24 26 46 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Γηαγξάθεη ηνλ θόκβν κε ην ειάρηζην θιεηδί θαη ελνπνηεί δέλδξα ζην ξηδηθό επίπεδν
Σωρός Fibonacci Εξαγωγή ελάσιζηος Γηαγξάθεη ηνλ θόκβν κε ην ειάρηζην θιεηδί θαη ελνπνηεί δέλδξα ζην ξηδηθό επίπεδν 23 7 21 3 1 ο βιμα διαγραφισ μζγιςτου 18 52 38 39 41 17 30 24 26 46 35 23 7 21 18 52 38 39 41 17 30 24 26 46 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ Πξηλ ηελ ελνπνίεζε ζέηνπκε
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 0 1 2 3 23 7 21 18 52 38 39 41 17 30 24 26 46 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 0 1 2 3 23 7 21 18 52 38 39 41 17 30 24 26 46 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 0 1 2 3 23 7 21 18 52 38 39 41 17 30 24 26 46 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 0 1 2 3 23 7 21 18 52 38 39 41 17 30 24 26 46 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 0 1 2 3 23 7 21 18 52 38 39 41 17 30 24 26 46 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 0 1 2 3 7 21 18 52 38 17 24 23 39 41 30 26 46 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 0 1 2 3 7 21 18 52 38 17 24 23 39 41 30 26 46 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 0 1 2 3 7 21 18 52 38 24 17 23 39 41 26 46 30 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 0 1 2 3 7 21 18 52 38 24 17 23 39 41 26 46 30 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 0 1 2 3 7 21 18 52 38 24 17 23 39 41 26 46 30 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 0 1 2 3 7 21 18 52 38 24 17 23 39 41 26 46 30 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 0 1 2 3 7 21 18 52 38 24 17 23 39 41 26 46 30 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 0 1 2 3 7 21 18 38 24 17 23 52 39 41 26 46 30 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 0 1 2 3 7 18 38 24 17 23 21 39 41 26 46 30 52 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 0 1 2 3 7 18 38 24 17 23 21 39 41 26 46 30 52 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Η ξνπηίλα ελνπνίεζεο (consolidate) ρξεζηκνπνηεί έλα βνεζεηηθό πίλαθα δεηθηώλ 7 18 38 24 17 23 21 39 41 26 46 30 52 35
Σωρός Fibonacci Εξαγωγή ελάσιζηος Τν πξαγκαηηθό θόζηνο ηεο εμαγσγήο είλαη Τν δπλακηθό ηεο δνκήο πξηλ ηελ πξάμε είλαη Τν δπλακηθό ηεο δνκήο κεηά ηελ πξάμε είλαη Άξα ε κεηαβνιή ηνπ δπλακηθνύ είλαη Τν αληηζηαζκηζηηθό θόζηνο εμαγσγήο είλαη
Σωρός Fibonacci Μείωζη κλειδιού Η εθηέιεζε απηήο ηεο πξάμεο έρεη σο απνηέιεζκα ηα δέλδξα ηνπ ζσξνύ Fibonacci λα κελ παξακέλνπλ δησλπκηθά. Γηα λα κεηώζνπκε ην θιεηδί ηνπ θόκβνπ από ζε εθηεινύκε
Σωρός Fibonacci Μείωζη κλειδιού Η εθηέιεζε απηήο ηεο πξάμεο έρεη σο απνηέιεζκα ηα δέλδξα ηνπ ζσξνύ Fibonacci λα κελ παξακέλνπλ δησλπκηθά. 7 18 38 24 17 23 21 39 41 26 46 30 52 μείωςθ του 46 ςε 15 35 15 7 18 38 24 17 23 21 39 41 26 30 52 35
Σωρός Fibonacci Μείωζη κλειδιού Η εθηέιεζε απηήο ηεο πξάμεο έρεη σο απνηέιεζκα ηα δέλδξα ηνπ ζσξνύ Fibonacci λα κελ παξακέλνπλ δησλπκηθά. 15 7 18 38 24 17 23 21 39 41 26 30 52 μείωςθ του 35 ςε 5 35 15 5 7 18 38 κα εκτελεςτεί κλιμακωτι αποκοπι (cascading cut) 24 26 17 30 23 21 52 39 41
Σωρός Fibonacci Μείωζη κλειδιού Η εθηέιεζε απηήο ηεο πξάμεο έρεη σο απνηέιεζκα ηα δέλδξα ηνπ ζσξνύ Fibonacci λα κελ παξακέλνπλ δησλπκηθά. 15 35 7 18 38 κα εκτελεςτεί κλιμακωτι αποκοπι (cascading cut) 24 26 17 30 23 21 52 39 41 15 5 26 7 18 38 κα εκτελεςτεί κλιμακωτι αποκοπι (cascading cut) 24 17 30 23 21 52 39 41
Σωρός Fibonacci Μείωζη κλειδιού Η εθηέιεζε απηήο ηεο πξάμεο έρεη σο απνηέιεζκα ηα δέλδξα ηνπ ζσξνύ Fibonacci λα κελ παξακέλνπλ δησλπκηθά. 15 35 26 7 18 38 κα εκτελεςτεί κλιμακωτι αποκοπι (cascading cut) 24 17 30 23 21 52 39 41 15 5 26 24 7 18 38 θ κλιμακωτι αποκοπι τερματίηεται 17 30 23 21 52 39 41
Σωρός Fibonacci Μείωζη κλειδιού Η εθηέιεζε απηήο ηεο πξάμεο έρεη σο απνηέιεζκα ηα δέλδξα ηνπ ζσξνύ Fibonacci λα κελ παξακέλνπλ δησλπκηθά. 15 5 26 24 7 18 38 17 23 21 39 41 30 52
Σωρός Fibonacci Μείωζη κλειδιού Έζησ όηη ε δηαδηθαζία θιηκαθσηήο απνθνπήο εθηειέζηεθε θνξέο Τν πξαγκαηηθό θόζηνο ηεο κείσζεο είλαη Τν δπλακηθό ηεο δνκήο πξηλ ηελ πξάμε είλαη Τν δπλακηθό ηεο δνκήο κεηά ηελ πξάμε είλαη ε απνθνπή ηνπ δεκηνύξγεζε 1 δέλδξν νη θιηκαθσηέο απνθνπέο δεκηνύξγεζαλ δέλδξα
Σωρός Fibonacci Μείωζη κλειδιού Έζησ όηη ε δηαδηθαζία θιηκαθσηήο απνθνπήο εθηειέζηεθε θνξέο Τν πξαγκαηηθό θόζηνο ηεο κείσζεο είλαη Τν δπλακηθό ηεο δνκήο πξηλ ηελ πξάμε είλαη Τν δπλακηθό ηεο δνκήο κεηά ηελ πξάμε είλαη νη θιηκαθσηέο απνθνπέο έζβεζαλ ηελ επηζήκαλζε ε ηειηθή θιηκαθσηή απνθνπή ίζσο επηζήκαλε έλα θόκβν θόκβσλ
Σωρός Fibonacci Μείωζη κλειδιού Έζησ όηη ε δηαδηθαζία θιηκαθσηήο απνθνπήο εθηειέζηεθε θνξέο Τν πξαγκαηηθό θόζηνο ηεο κείσζεο είλαη Τν δπλακηθό ηεο δνκήο πξηλ ηελ πξάμε είλαη Τν δπλακηθό ηεο δνκήο κεηά ηελ πξάμε είλαη Άξα ε κεηαβνιή ηνπ δπλακηθνύ είλαη Τν αληηζηαζκηζηηθό θόζηνο εμαγσγήο είλαη
Σωρός Fibonacci Διαγπαθή κόμβος Έζησ ν θόκβνο πνπ ζέινπκε λα δηαγξάςνπκε. Η δηαγξαθή γίλεηαη ζε δύν βήκαηα 1. Μεηώλνπκε ην θιεηδί ηνπ ζε 2. Δθηεινύκε εμαγσγή ειάρηζηνπ Τν αληηζηαζκηζηηθό θόζηνο ηεο δηαγξαθήο είλαη
Σωρός Fibonacci Μέγιζηορ βαθμόρ Σε έλα ζσξό Fibonacci κε είλαη θιεηδηά ν κέγηζηνο βαζκόο πνπ κπνξεί λα έρεη νπνηνζδήπνηε θόκβνο Φσξίο ηελ πξάμε κείσζεο θιεηδηνύ ηα δέλδξα ελόο ζσξνύ Fibonacci είλαη δησλπκηθά, άξα Με ηε κείσζε θιεηδηνύ ην παξαπάλσ θξάγκα δελ ηζρύεη. Θα δείμνπκε όκσο όηη όπνπ Αθνινπζία Fibonacci
Σωρός Fibonacci Μέγιζηορ βαθμόρ Σε έλα ζσξό Fibonacci κε είλαη θιεηδηά ν κέγηζηνο βαζκόο πνπ κπνξεί λα έρεη νπνηνζδήπνηε θόκβνο Φσξίο ηελ πξάμε κείσζεο θιεηδηνύ ηα δέλδξα ελόο ζσξνύ Fibonacci είλαη δησλπκηθά, άξα Με ηε κείσζε θιεηδηνύ ην παξαπάλσ θξάγκα δελ ηζρύεη. Θα δείμνπκε όκσο όηη όπνπ Αθνινπζία Fibonacci Ιζρύεη
Σωρός Fibonacci Μέγιζηορ βαθμόρ Λήμμα Έζησ ην πιήζνο ησλ απνγόλσλ ηνπ θόκβνπ δέλδξν πνπ ηνλ πεξηέρεη. Αλ ηόηε 23 7 21 3 18 52 38 39 41 17 30 24 26 46 35
Σωρός Fibonacci Μέγιζηορ βαθμόρ Λήμμα Έζησ ην πιήζνο ησλ απνγόλσλ ηνπ θόκβνπ δέλδξν πνπ ηνλ πεξηέρεη. Αλ ηόηε Τόηε αλ ν έρεη κέγηζην βαζκό έρνπκε
Σωρός Fibonacci Μέγιζηορ βαθμόρ Λήμμα Έζησ ην πιήζνο ησλ απνγόλσλ ηνπ θόκβνπ δέλδξν πνπ ηνλ πεξηέρεη. Αλ ηόηε Παξαηήξεζε : Έζησ ηα παηδηά ηνπ κε ηε ζεηξά κε ηελ νπνία ηα απέθηεζε από ην πην παιηό ζην πην πξόζθαην. Τόηε θαη Ιζρύεη γηαηί όηαλ ζπλδέζεθε ν κε ηνλ ηόηε αθνύ ν είρε ήδε παηδηά ηνπο. Από εθείλε ηε ζηηγκή ν κπνξεί λα έραζε ην πνιύ έλα παηδί.
Σωρός Fibonacci Μέγιζηορ βαθμόρ Λήμμα Έζησ ην πιήζνο ησλ απνγόλσλ ηνπ θόκβνπ δέλδξν πνπ ηνλ πεξηέρεη. Αλ ηόηε Έζησ ν ειάρηζηνο δπλαηόο αξηζκόο απνγόλσλ ελόο θόκβνπ κε βαζκό Αο ππνζέζνπκε όηη θαη όηη ν έρεη παηδηά Από ηελ πξνεγνύκελε παξαηήξεζε ηζρύεη θαη Γείρλνπκε κε επαγσγή όηη. Η βάζε ηεο επαγσγήο ηζρύεη αθνύ Δπνκέλσο