Πνιιέο δνκέο δεδνκέλσλ πινπνηνύληαη κε ρξήζε πηλάθσλ π.ρ. Σηνίβεο θάησ όξην α β γ δ ηξέρνπζα θνξπθή άλσ όξην Οπξέο 5 Ν- tail 2 head % N 4 3
Πνιιέο δνκέο δεδνκέλσλ πινπνηνύληαη κε ρξήζε πηλάθσλ π.ρ. Οπξέο Πξνηεξαηόηεηαο Αλαπαξάζηαζε σο πιήξεο δπαδηθό δέλδξν: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ. [] 2 ε ξίδα έρεη ην κέγηζην θιεηδί. [2] [3] 8 2 ύςνο lgn [8] [4] [5] 5 [9] [] 4 2 3 [] [6] 6 9 [2] 5 [] Υινπνίεζε κε πίλαθα: ην ζηνηρείν ζηε ζέζε i είλαη ν γνλέαο ησλ ζηνηρείσλ ζηηο ζέζεηο 2i θαη 2i+. [] [2] [3] [4] [5] [6] [] [8] [9] [] [] [2] 2 8 2 5 9 5 4 2 3 6
Πνιιέο δνκέο δεδνκέλσλ πινπνηνύληαη κε ρξήζε πηλάθσλ π.ρ. Πίλαθεο Γηαζπνξάο (Πίλαθεο Καηαθεξκαηηζκνύ) T U K k 2 k k 3 m-
Πνιιέο δνκέο δεδνκέλσλ πινπνηνύληαη κε ρξήζε πηλάθσλ Πίλαθεο ζηε C Γπλακηθή θαηαλνκή κλήκεο void initialize(int *a, int N) { *a = malloc(n*sizeof(int)); for (i=; i<n; i++) a[i]=; } void main() { int *a; initialize(a,ν); }
Πνιιέο δνκέο δεδνκέλσλ πινπνηνύληαη κε ρξήζε πηλάθσλ Πίλαθεο ζηε C Γπλακηθή θαηαλνκή κλήκεο void initialize(int *a, int N) { *a = malloc(n*sizeof(int)); for (i=; i<n; i++) a[i]=; } void main() { int *a; initialize(a,ν); } Τη γίλεηαη αλ δε γλσξίδνπκε εθ ησλ πξνηέξσλ ηε ηηκή ηνπ N;
T k 4 k k 6 k 2 k k 3 k 5
T k 6 k 4 k ν πίλαθαο είλαη γεκάηνο k 2 k 8 k k 3 k 5
T k 6 k 4 k ν πίλαθαο είλαη γεκάηνο k 9 k 2 k 8 k k 3 k 5
T k 6 k 4 k ν πίλαθαο είλαη γεκάηνο k 9 k 2 k 8 k k 3 k 5 Λύζε : Γεκηνπξγνύκε έλα κεγαιύηεξν πίλαθα Τ θαη αληηγξάθνπκε ηα ζηνηρεία ηνπ Τ. Τη κέγεζνο πξέπεη λα έρεη ν T ;
Ακραία λύζη : T T 8 λέν ζηνηρείν
Ακραία λύζη : T T αμηνπνηνύκε όιν ην ρώξν ηνπ Τ θάζε λέα εηζαγσγή παίξλεη Ο(n) ρξόλν 8 λέν ζηνηρείν
Ακραία λύζη 2: T T εηζαγσγή λένπ ζηνηρείνπ ζε Ο() ρξόλν αμηνπνηνύκε ειάρηζην από ην ρώξν ηνπ Τ 8 λέν ζηνηρείν
Ενδιάμεζη λύζη : T T εηζαγσγή λένπ ζηνηρείνπ ζε ανηιζηαθμιζηικό Ο() ρξόλν 8 αμηνπνηνύκε πάλσ από ην κηζό ρώξν ηνπ Τ λέν ζηνηρείν 5
Ενδιάμεζη λύζη : Ανάλυζη με ηην αθροιζηική μέθοδο Τν θόζηνο ηεο i-νζηήο εηζαγσγήο είλαη: όηαλ ην i- είλαη δύλακε ηνπ 2 δηαθνξεηηθά
Ενδιάμεζη λύζη : Ανάλυζη με ηην αθροιζηική μέθοδο Τν θόζηνο ηεο i-νζηήο εηζαγσγήο είλαη: όηαλ ην i- είλαη δύλακε ηνπ 2 δηαθνξεηηθά Δπνκέλσο γηα αθνινπζία n εηζαγσγώλ έρνπκε ζπλνιηθό θόζηνο
Ενδιάμεζη λύζη : Ανάλυζη με ηην χρεωπιζηωηική μέθοδο Σε θάζε πξάμε εηζαγσγήο απνδίδνπκε 3 κνλάδεο πίζησζεο T λέν ζηνηρείν
Ενδιάμεζη λύζη : Ανάλυζη με ηην χρεωπιζηωηική μέθοδο Σε θάζε πξάμε εηζαγσγήο απνδίδνπκε 3 κνλάδεο πίζησζεο T λέν ζηνηρείν
Ενδιάμεζη λύζη : Ανάλυζη με ηην χρεωπιζηωηική μέθοδο Σε θάζε πξάμε εηζαγσγήο απνδίδνπκε 3 κνλάδεο πίζησζεο T λέν ζηνηρείν
5 Δυναμικοί πίνακες Ενδιάμεζη λύζη : Ανάλυζη με ηην χρεωπιζηωηική μέθοδο Σε θάζε πξάμε εηζαγσγήο απνδίδνπκε 3 κνλάδεο πίζησζεο πξηλ ην δηπιαζηαζκό ηνπ πίλαθα θάζε ζέζε έρεη κνλάδα πίζησζεο T T 8
5 Δυναμικοί πίνακες Ενδιάμεζη λύζη : Ανάλυζη με ηην χρεωπιζηωηική μέθοδο Σε θάζε πξάμε εηζαγσγήο απνδίδνπκε 3 κνλάδεο πίζησζεο πξηλ ην δηπιαζηαζκό ηνπ πίλαθα θάζε ζέζε έρεη κνλάδα πίζησζεο απνπιεξώλεη ηε κεηαθίλεζε ηνπ ζηνηρείνπ T T 8 ζηνλ Τ δελ ππάξρεη θακία πίζησζε
5 Δυναμικοί πίνακες Ενδιάμεζη λύζη : Ανάλυζη με ηην χρεωπιζηωηική μέθοδο Σε θάζε πξάμε εηζαγσγήο απνδίδνπκε 3 κνλάδεο πίζησζεο T T 8 λέν ζηνηρείν
5 Δυναμικοί πίνακες Ενδιάμεζη λύζη : Ανάλυζη με ηην χρεωπιζηωηική μέθοδο Σε θάζε πξάμε εηζαγσγήο απνδίδνπκε 3 κνλάδεο πίζησζεο T T κέρξη ηνλ επόκελν δηπιαζηαζκό θάζε ζέζε ηνπ Τ ζα έρεη κνλάδα πίζησζεο λέν ζηνηρείν 8
Ενδιάμεζη λύζη : Ανάλυζη με ηην ενεργειακή μέθοδο Δπηιέγνπκε όπνπ πιήζνο απνζεθεπκέλσλ ζηνηρείσλ ζηνλ Τ κέγεζνο ηνπ Τ Αξρηθά, πξηλ ηελ πξώηε εηζαγσγή
Ενδιάμεζη λύζη : Ανάλυζη με ηην ενεργειακή μέθοδο Δπηιέγνπκε όπνπ πιήζνο απνζεθεπκέλσλ ζηνηρείσλ ζηνλ Τ κέγεζνο ηνπ Τ Έζησ όηη ε i-νζηή εηζαγσγή δελ πξνθαιεί δηπιαζηαζκό ηνπ πίλαθα ηόηε θαη επνκέλσο έρνπκε αληηζηαζκηζηηθό θόζηνο
Ενδιάμεζη λύζη : Ανάλυζη με ηην ενεργειακή μέθοδο Δπηιέγνπκε όπνπ πιήζνο απνζεθεπκέλσλ ζηνηρείσλ ζηνλ Τ κέγεζνο ηνπ Τ Έζησ όηη ε i-νζηή εηζαγσγή πξνθαιεί δηπιαζηαζκό ηνπ πίλαθα Τόηε θαη επνκέλσο έρνπκε αληηζηαζκηζηηθό θόζηνο
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Σπληειεζηήο πιεξόηεηαο πίλαθα Τ : όπνπ πιήζνο απνζεθεπκέλσλ ζηνηρείσλ ζηνλ Τ κέγεζνο ηνπ Τ Δπηζπκεηέο ηδηόηεηεο : α) πεξηνξηζκέλε ζπαηάιε ρώξνπ : ζηαζεξά β) κηθξό αληηζηαζκηζηηθό θόζηνο αλά πξάμε
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Σπληειεζηήο πιεξόηεηαο πίλαθα Τ : όπνπ πιήζνο απνζεθεπκέλσλ ζηνηρείσλ ζηνλ Τ κέγεζνο ηνπ Τ Δπηζπκεηέο ηδηόηεηεο : α) πεξηνξηζκέλε ζπαηάιε ρώξνπ : ζηαζεξά β) κηθξό αληηζηαζκηζηηθό θόζηνο αλά πξάμε Γηα λα πεηύρνπκε ηελ ηδηόηεηα (α) πξέπεη λα αληηγξάθνπκε ηα ζηνηρεία ζε κηθξόηεξν πίλαθα κεηά από αξθεηέο δηαγξαθέο
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Γνθηκάδνπκε λα επεθηείλνπκε ηελ πξνεγνύκελε ιύζε δηπιαζηαζκόο ππνδηπιαζηαζκόο εηζαγσγή κε δηαγξαθή κε 8 5
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Γνθηκάδνπκε λα επεθηείλνπκε ηελ πξνεγνύκελε ιύζε δηπιαζηαζκόο ππνδηπιαζηαζκόο εηζαγσγή κε δηαγξαθή κε 8 επηηπγράλεη 5
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Γνθηκάδνπκε λα επεθηείλνπκε ηελ πξνεγνύκελε ιύζε δηπιαζηαζκόο ππνδηπιαζηαζκόο εηζαγσγή κε δηαγξαθή κε 8 επηηπγράλεη Ο(n) αληηζηαζκηζηηθό θόζηνο αλά πξάμε 5
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Π.ρ. Ο(n) αληηζηαζκηζηηθό θόζηνο αλά πξάμε εηζαγσγή 8 5
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Π.ρ. Ο(n) αληηζηαζκηζηηθό θόζηνο αλά πξάμε εηζαγσγή δηαγξαθή 8 8 5 5
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Ο(n) αληηζηαζκηζηηθό θόζηνο αλά πξάμε Π.ρ. εηζαγσγή δηαγξαθή δηαγξαθή 8 8 5 5
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Ο(n) αληηζηαζκηζηηθό θόζηνο αλά πξάμε Π.ρ. γσγή εηζαγσγή δηαγξαθή δηαγξαθή εηζα Μπνξνύκε λα επαλαιάβνπκε ηελ ίδηα δηαδηθαζία πνιιέο θνξέο 8 8 5 5
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Βειηησκέλε ιύζε δηπιαζηαζκόο ππνδηπιαζηαζκόο εηζαγσγή κε δηαγξαθή κε 8 5
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Βειηησκέλε ιύζε δηπιαζηαζκόο ππνδηπιαζηαζκόο εηζαγσγή κε δηαγξαθή κε 8 επηηπγράλεη Ο() αληηζηαζκηζηηθό θόζηνο αλά πξάμε 5
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Ανάλυζη με ηην ενεργειακή μέθοδο Δπηιέγνπκε, Ιδηόηεηεο
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Ανάλυζη με ηην ενεργειακή μέθοδο Δπηιέγνπκε, Ιδηόηεηεο Τν δπλακηθό αξθεί γηα λα θαιύςεη ηελ αληηγξαθή ησλ αληηθεηκέλσλ
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Ανάλυζη με ηην ενεργειακή μέθοδο Δπηιέγνπκε, Αξρηθά, πξηλ ηελ πξώηε εηζαγσγή θαη κεηά από θάζε πξάμε ηζρύεη Δπνκέλσο ην ζπλνιηθό αληηζηαζκηζηηθό θόζηνο είλαη
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Ανάλυζη με ηην ενεργειακή μέθοδο Δπηιέγνπκε, Πξέπεη λα δείμνπκε όηη ε i-νζηή πξάμε (εηζαγσγή ή δηαγξαθή) έρεη αληηζηαζκηζηηθό θόζηνο Πξέπεη λα αλαιύζνπκε δηάθνξεο πεξηπηώζεηο αλάινγα κε ην είδνο ηεο πξάμεο θαη αλ πξνθαιείηαη δηπιαζηαζκόο ή ππνδηπιαζηαζκόο ηνπ πίλαθα
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Ανάλυζη με ηην ενεργειακή μέθοδο Δπηιέγνπκε, Έζησ όηη ε i-νζηή πξάμε είλαη εηζαγσγή. Δάλ θαη έρνπκε
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Ανάλυζη με ηην ενεργειακή μέθοδο Δπηιέγνπκε, Έζησ όηη ε i-νζηή πξάμε είλαη εηζαγσγή. Δάλ θαη έρνπκε
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Ανάλυζη με ηην ενεργειακή μέθοδο Δπηιέγνπκε, Έζησ όηη ε i-νζηή πξάμε είλαη δηαγξαθή. Δάλ θαη δελ πξνθαιείηαη ππνδηπιαζηαζκόο έρνπκε
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Ανάλυζη με ηην ενεργειακή μέθοδο Δπηιέγνπκε, Έζησ όηη ε i-νζηή πξάμε είλαη δηαγξαθή. Δάλ θαη πξνθαιείηαη ππνδηπιαζηαζκόο έρνπκε θαη νπόηε
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Ανάλυζη με ηην ενεργειακή μέθοδο Δπηιέγνπκε, Έζησ όηη ε i-νζηή πξάμε είλαη δηαγξαθή. Δάλ θαη πξνθαιείηαη ππνδηπιαζηαζκόο έρνπκε θαη, άξα
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Ανάλυζη με ηην ενεργειακή μέθοδο Δπηιέγνπκε, Με όκνην ηξόπν αλαιύνληαη θαη νη ππόινηπεο πεξηπηώζεηο. Έηζη ιακβάλνπκε ζηαζεξό αληηζηαζκηζηηθό θόζηνο γηα θάζε πξάμε.
Δσναμικοί πίνακες με ειζαγωγές και διαγραθές Δγρεηξίδην ηεο C++ ζηε δηεύζπλζε http://www.cplusplus.com/ Vector Vectors are a kind of sequence containers. As such, their elements are ordered following a strict linear sequence. Vector containers are implemented as dynamic arrays; Just as regular arrays, vector containers have their elements stored in contiguous storage locations, which means that their elements can be accessed not only using iterators but also using offsets on regular pointers to elements. But unlike regular arrays, storage in vectors is handled automatically, allowing it to be expanded and contracted as needed. Vectors are good at: Accessing individual elements by their position index (constant time). Iterating over the elements in any order (linear time). Add and remove elements from its end (constant amortized time).