Δυναμικοί πίνακες - University of...

Post on 10-Jul-2020

1 views 0 download

Transcript of Δυναμικοί πίνακες - University of...

Δυναμικοί πίνακες

Πνιιέο δνκέο δεδνκέλσλ πινπνηνύληαη κε ρξήζε πηλάθσλ

π.ρ. Σηνίβεο

α β γ δ

θάησ

όξην

άλσ

όξην

ηξέρνπζα

θνξπθή

Οπξέο

1

0

2

3 4

5

Ν-1

tail

head % N

Δυναμικοί πίνακες

Πνιιέο δνκέο δεδνκέλσλ πινπνηνύληαη κε ρξήζε πηλάθσλ

π.ρ. Οπξέο Πξνηεξαηόηεηαο

20

18 12

11

2

5

4 13

15

7

9

6

Αλαπαξάζηαζε σο πιήξεο δπαδηθό δέλδξν: θάζε θόκβνο έρεη θιεηδί κηθξόηεξν

ή ίζν κε ην θιεηδί ηνπ γνλέα ηνπ.

[1]

[2] [3]

[7] [6]

[12] [11] [10] [9] [8]

[4] [5]

20 18 12 11 15 9 5 4 2 7 13 6

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]

Υινπνίεζε κε πίλαθα: ην ζηνηρείν ζηε

ζέζε i είλαη ν γνλέαο ησλ ζηνηρείσλ

ζηηο ζέζεηο 2i θαη 2i+1.

ε ξίδα έρεη ην κέγηζην θιεηδί.

ύςνο lgN

Δυναμικοί πίνακες

Πνιιέο δνκέο δεδνκέλσλ πινπνηνύληαη κε ρξήζε πηλάθσλ

k2

T

0

m-1

k1

k3

U

K

π.ρ. Πίλαθεο Γηαζπνξάο (Πίλαθεο Καηαθεξκαηηζκνύ)

Δυναμικοί πίνακες

Πνιιέο δνκέο δεδνκέλσλ πινπνηνύληαη κε ρξήζε πηλάθσλ

Πίλαθεο ζηε C

void initialize(int *a, int N)

{

*a = malloc(N*sizeof(int));

for (i=0; i<N; i++) a[i]=0;

}

void main()

{

int *a;

initialize(a,Ν);

}

Γπλακηθή θαηαλνκή κλήκεο

Δυναμικοί πίνακες

Πνιιέο δνκέο δεδνκέλσλ πινπνηνύληαη κε ρξήζε πηλάθσλ

Πίλαθεο ζηε C

void initialize(int *a, int N)

{

*a = malloc(N*sizeof(int));

for (i=0; i<N; i++) a[i]=0;

}

void main()

{

int *a;

initialize(a,Ν);

}

Γπλακηθή θαηαλνκή κλήκεο

Τη γίλεηαη αλ δε γλσξίδνπκε

εθ ησλ πξνηέξσλ ηε ηηκή ηνπ N;

Δυναμικοί πίνακες

k2

T

7

k1

k3

0 k4

k5

k6

k7

Δυναμικοί πίνακες

k2

T

7

k1

k3

0 k4

k5

k6

k7

k8

ν πίλαθαο είλαη γεκάηνο

Δυναμικοί πίνακες

k2

T

7

k1

k3

0 k4

k5

k6

k7

k8 k9

ν πίλαθαο είλαη γεκάηνο

Δυναμικοί πίνακες

k2

T

7

k1

k3

0 k4

k5

k6

k7

k8 k9

ν πίλαθαο είλαη γεκάηνο

Λύζε : Γεκηνπξγνύκε έλα κεγαιύηεξν πίλαθα Τ΄ θαη αληηγξάθνπκε ηα

ζηνηρεία ηνπ Τ.

Τη κέγεζνο πξέπεη λα έρεη ν T’;

Δυναμικοί πίνακες

Ακραία λύζη 1:

T

7

0

T’

7

0

8

λέν

ζηνηρείν

Δυναμικοί πίνακες

Ακραία λύζη 1:

T

7

0

T’

7

0

8

αμηνπνηνύκε όιν

ην ρώξν ηνπ Τ’

θάζε λέα εηζαγσγή

παίξλεη Ο(n) ρξόλν

λέν

ζηνηρείν

Δυναμικοί πίνακες

Ακραία λύζη 2:

T

7

0

T’

7

0

8

εηζαγσγή λένπ ζηνηρείνπ

ζε Ο(1) ρξόλν

αμηνπνηνύκε ειάρηζην

από ην ρώξν ηνπ Τ’

λέν

ζηνηρείν

Δυναμικοί πίνακες

Ενδιάμεζη λύζη :

T

7

0

T’

7

0

εηζαγσγή λένπ ζηνηρείνπ

ζε ανηιζηαθμιζηικό

Ο(1) ρξόλν

αμηνπνηνύκε πάλσ

από ην κηζό ρώξν

ηνπ Τ’

λέν

ζηνηρείν

15

8

Δυναμικοί πίνακες

Ενδιάμεζη λύζη :

Ανάλυζη με ηην αθροιζηική μέθοδο

Τν θόζηνο ηεο i-νζηήο εηζαγσγήο είλαη: όηαλ ην i-1 είλαη δύλακε ηνπ 2

δηαθνξεηηθά

Δυναμικοί πίνακες

Ενδιάμεζη λύζη :

Ανάλυζη με ηην αθροιζηική μέθοδο

Τν θόζηνο ηεο i-νζηήο εηζαγσγήο είλαη: όηαλ ην i-1 είλαη δύλακε ηνπ 2

δηαθνξεηηθά

Δπνκέλσο γηα αθνινπζία n εηζαγσγώλ έρνπκε ζπλνιηθό θόζηνο

Δυναμικοί πίνακες

Ενδιάμεζη λύζη :

Ανάλυζη με ηην χρεωπιζηωηική μέθοδο

T

7

0

λέν

ζηνηρείν

Σε θάζε πξάμε εηζαγσγήο απνδίδνπκε 3 κνλάδεο πίζησζεο

1 1 1

Δυναμικοί πίνακες

Ενδιάμεζη λύζη :

Ανάλυζη με ηην χρεωπιζηωηική μέθοδο

T

7

0

λέν

ζηνηρείν

Σε θάζε πξάμε εηζαγσγήο απνδίδνπκε 3 κνλάδεο πίζησζεο

1 1 1

Δυναμικοί πίνακες

Ενδιάμεζη λύζη :

Ανάλυζη με ηην χρεωπιζηωηική μέθοδο

T

7

0

λέν

ζηνηρείν

Σε θάζε πξάμε εηζαγσγήο απνδίδνπκε 3 κνλάδεο πίζησζεο

1

1 1

Δυναμικοί πίνακες

Ενδιάμεζη λύζη :

Ανάλυζη με ηην χρεωπιζηωηική μέθοδο

Σε θάζε πξάμε εηζαγσγήο απνδίδνπκε 3 κνλάδεο πίζησζεο

T

7

0

T’

7

0

15

8

1 1 1 1 1 1 1 1

πξηλ ην δηπιαζηαζκό

ηνπ πίλαθα θάζε ζέζε

έρεη 1 κνλάδα πίζησζεο

Δυναμικοί πίνακες

Ενδιάμεζη λύζη :

Ανάλυζη με ηην χρεωπιζηωηική μέθοδο

Σε θάζε πξάμε εηζαγσγήο απνδίδνπκε 3 κνλάδεο πίζησζεο

T

7

0

T’

7

0

15

8

πξηλ ην δηπιαζηαζκό

ηνπ πίλαθα θάζε ζέζε

έρεη 1 κνλάδα πίζησζεο

1 1

1

1 1

1 1

1 απνπιεξώλεη ηε

κεηαθίλεζε ηνπ

ζηνηρείνπ

ζηνλ Τ’ δελ ππάξρεη

θακία πίζησζε

Δυναμικοί πίνακες

Ενδιάμεζη λύζη :

Ανάλυζη με ηην χρεωπιζηωηική μέθοδο

Σε θάζε πξάμε εηζαγσγήο απνδίδνπκε 3 κνλάδεο πίζησζεο

T

7

0

T’

7

0

λέν

ζηνηρείν

15

8

1 1 1

Δυναμικοί πίνακες

Ενδιάμεζη λύζη :

Ανάλυζη με ηην χρεωπιζηωηική μέθοδο

Σε θάζε πξάμε εηζαγσγήο απνδίδνπκε 3 κνλάδεο πίζησζεο

T

7

0

T’

7

0

λέν

ζηνηρείν

15

8

1

1

1

κέρξη ηνλ επόκελν

δηπιαζηαζκό θάζε

ζέζε ηνπ Τ’ ζα έρεη

1 κνλάδα πίζησζεο

Δυναμικοί πίνακες

Ενδιάμεζη λύζη :

Ανάλυζη με ηην ενεργειακή μέθοδο

Δπηιέγνπκε

πιήζνο απνζεθεπκέλσλ ζηνηρείσλ ζηνλ Τ

κέγεζνο ηνπ Τ

όπνπ

Αξρηθά, πξηλ ηελ πξώηε εηζαγσγή

Δυναμικοί πίνακες

Ενδιάμεζη λύζη :

Ανάλυζη με ηην ενεργειακή μέθοδο

Δπηιέγνπκε

πιήζνο απνζεθεπκέλσλ ζηνηρείσλ ζηνλ Τ

κέγεζνο ηνπ Τ

όπνπ

Έζησ όηη ε i-νζηή εηζαγσγή δελ πξνθαιεί δηπιαζηαζκό ηνπ πίλαθα

ηόηε θαη

επνκέλσο έρνπκε αληηζηαζκηζηηθό θόζηνο

Δυναμικοί πίνακες

Ενδιάμεζη λύζη :

Ανάλυζη με ηην ενεργειακή μέθοδο

Δπηιέγνπκε

πιήζνο απνζεθεπκέλσλ ζηνηρείσλ ζηνλ Τ

κέγεζνο ηνπ Τ

όπνπ

Έζησ όηη ε i-νζηή εηζαγσγή πξνθαιεί δηπιαζηαζκό ηνπ πίλαθα

Τόηε θαη

επνκέλσο έρνπκε αληηζηαζκηζηηθό θόζηνο

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Σπληειεζηήο πιεξόηεηαο πίλαθα Τ :

πιήζνο απνζεθεπκέλσλ ζηνηρείσλ ζηνλ Τ

κέγεζνο ηνπ Τ

όπνπ

Δπηζπκεηέο ηδηόηεηεο :

α) πεξηνξηζκέλε ζπαηάιε ρώξνπ : ζηαζεξά

β) κηθξό αληηζηαζκηζηηθό θόζηνο αλά πξάμε

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Σπληειεζηήο πιεξόηεηαο πίλαθα Τ :

πιήζνο απνζεθεπκέλσλ ζηνηρείσλ ζηνλ Τ

κέγεζνο ηνπ Τ

όπνπ

Δπηζπκεηέο ηδηόηεηεο :

α) πεξηνξηζκέλε ζπαηάιε ρώξνπ : ζηαζεξά

β) κηθξό αληηζηαζκηζηηθό θόζηνο αλά πξάμε

Γηα λα πεηύρνπκε ηελ ηδηόηεηα (α) πξέπεη λα αληηγξάθνπκε

ηα ζηνηρεία ζε κηθξόηεξν πίλαθα κεηά από αξθεηέο δηαγξαθέο

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Γνθηκάδνπκε λα επεθηείλνπκε ηελ πξνεγνύκελε ιύζε

7

0

7

0

15

8

εηζαγσγή κε

δηπιαζηαζκόο

δηαγξαθή κε

7

0

ππνδηπιαζηαζκόο

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Γνθηκάδνπκε λα επεθηείλνπκε ηελ πξνεγνύκελε ιύζε

7

0

7

0

15

8

εηζαγσγή κε

δηπιαζηαζκόο

δηαγξαθή κε

7

0

ππνδηπιαζηαζκόο

επηηπγράλεη

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Γνθηκάδνπκε λα επεθηείλνπκε ηελ πξνεγνύκελε ιύζε

7

0

7

0

15

8

εηζαγσγή κε

δηπιαζηαζκόο

δηαγξαθή κε

7

0

ππνδηπιαζηαζκόο

επηηπγράλεη Ο(n) αληηζηαζκηζηηθό

θόζηνο αλά πξάμε

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

7

0

7

0

15

8

εηζαγσγή

Ο(n) αληηζηαζκηζηηθό

θόζηνο αλά πξάμε

Π.ρ.

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

7

0

7

0

15

8

εηζαγσγή

Ο(n) αληηζηαζκηζηηθό

θόζηνο αλά πξάμε

Π.ρ.

δηαγξαθή

7

0

15

8

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

7

0

7

0

15

8

εηζαγσγή

Ο(n) αληηζηαζκηζηηθό

θόζηνο αλά πξάμε

Π.ρ.

δηαγξαθή

7

0

15

8

δηαγξαθή

7

0

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

7

0

7

0

15

8

εηζαγσγή

Ο(n) αληηζηαζκηζηηθό

θόζηνο αλά πξάμε

Π.ρ.

δηαγξαθή

7

0

15

8

δηαγξαθή

7

0

Μπνξνύκε λα

επαλαιάβνπκε

ηελ ίδηα δηαδηθαζία

πνιιέο θνξέο

εηζα γσγή

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Βειηησκέλε ιύζε

7

0

7

0

15

8

εηζαγσγή κε

δηπιαζηαζκόο

δηαγξαθή κε

7

0

ππνδηπιαζηαζκόο

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Βειηησκέλε ιύζε

7

0

7

0

15

8

εηζαγσγή κε

δηπιαζηαζκόο

δηαγξαθή κε

7

0

ππνδηπιαζηαζκόο

επηηπγράλεη Ο(1) αληηζηαζκηζηηθό

θόζηνο αλά πξάμε

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Ανάλυζη με ηην ενεργειακή μέθοδο

Δπηιέγνπκε ,

Ιδηόηεηεο

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Ανάλυζη με ηην ενεργειακή μέθοδο

Δπηιέγνπκε ,

Ιδηόηεηεο

Τν δπλακηθό αξθεί γηα λα θαιύςεη ηελ αληηγξαθή ησλ αληηθεηκέλσλ

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Ανάλυζη με ηην ενεργειακή μέθοδο

Δπηιέγνπκε ,

Αξρηθά, πξηλ ηελ πξώηε εηζαγσγή

Δπνκέλσο ην ζπλνιηθό αληηζηαζκηζηηθό θόζηνο είλαη

θαη κεηά από θάζε πξάμε ηζρύεη

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Ανάλυζη με ηην ενεργειακή μέθοδο

Δπηιέγνπκε ,

Πξέπεη λα δείμνπκε όηη ε i-νζηή πξάμε (εηζαγσγή ή δηαγξαθή) έρεη

αληηζηαζκηζηηθό θόζηνο

Πξέπεη λα αλαιύζνπκε δηάθνξεο πεξηπηώζεηο αλάινγα κε ην είδνο ηεο πξάμεο

θαη αλ πξνθαιείηαη δηπιαζηαζκόο ή ππνδηπιαζηαζκόο ηνπ πίλαθα

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Ανάλυζη με ηην ενεργειακή μέθοδο

Δπηιέγνπκε ,

Έζησ όηη ε i-νζηή πξάμε είλαη εηζαγσγή.

Δάλ θαη έρνπκε

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Ανάλυζη με ηην ενεργειακή μέθοδο

Δπηιέγνπκε ,

Έζησ όηη ε i-νζηή πξάμε είλαη εηζαγσγή.

Δάλ θαη έρνπκε

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Ανάλυζη με ηην ενεργειακή μέθοδο

Δπηιέγνπκε ,

Έζησ όηη ε i-νζηή πξάμε είλαη δηαγξαθή.

Δάλ θαη δελ πξνθαιείηαη ππνδηπιαζηαζκόο έρνπκε

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Ανάλυζη με ηην ενεργειακή μέθοδο

Δπηιέγνπκε ,

Έζησ όηη ε i-νζηή πξάμε είλαη δηαγξαθή.

Δάλ θαη πξνθαιείηαη ππνδηπιαζηαζκόο έρνπκε

θαη

νπόηε

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Ανάλυζη με ηην ενεργειακή μέθοδο

Δπηιέγνπκε ,

Έζησ όηη ε i-νζηή πξάμε είλαη δηαγξαθή.

Δάλ θαη πξνθαιείηαη ππνδηπιαζηαζκόο έρνπκε

θαη , άξα

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

Ανάλυζη με ηην ενεργειακή μέθοδο

Δπηιέγνπκε ,

Με όκνην ηξόπν αλαιύνληαη θαη νη ππόινηπεο πεξηπηώζεηο.

Έηζη ιακβάλνπκε ζηαζεξό αληηζηαζκηζηηθό θόζηνο γηα θάζε πξάμε.

Δυναμικοί πίνακες

Δσναμικοί πίνακες με ειζαγωγές και διαγραθές

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).

Δγρεηξίδην ηεο C++ ζηε δηεύζπλζε http://www.cplusplus.com/