Προηγμενη ευρετηριαση δεδομενων

38
ΠΡΟΗΓΜΕΝΗ ΕΥΡΕΤΗΡΙΑΣΗ ΔΕΔΟΜΕΝΩΝ Ταξινόμηση – Αναζήτηση

Upload: shelby-fuentes

Post on 03-Jan-2016

22 views

Category:

Documents


0 download

DESCRIPTION

Προηγμενη ευρετηριαση δεδομενων. Ταξινόμηση – Αναζήτηση. Μοντέλα Δευτερεύουσας Μνήμης. Η Ανάγκη για Μοντέλα. Ένα μοντέλο μας επιτρέπει: Ευκολία ανάλυσης-σχεδίασης χωρίς ενοχλητικές λεπτομέρειες Εμπεριέχει τα κρίσιμα χαρακτηριστικά του πραγματικού συστήματος - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Προηγμενη ευρετηριαση δεδομενων

ΠΡΟΗΓΜΕΝΗ ΕΥΡΕΤΗΡΙΑΣΗ ΔΕΔΟΜΕΝΩΝΤαξινόμηση – Αναζήτηση

Page 2: Προηγμενη ευρετηριαση δεδομενων

Μοντέλα Δευτερεύουσας Μνήμης

Page 3: Προηγμενη ευρετηριαση δεδομενων

Η Ανάγκη για Μοντέλα

Ένα μοντέλο μας επιτρέπει: Ευκολία ανάλυσης-σχεδίασης χωρίς ενοχλητικές λεπτομέρειες

Εμπεριέχει τα κρίσιμα χαρακτηριστικά του πραγματικού συστήματος

Ένα μοντέλο είναι πάντα λάθος – το θέμα είναι πόσο λάθος είναι

Page 4: Προηγμενη ευρετηριαση δεδομενων

Απλό Μοντέλο Δευτερεύουσας Μνήμης

Μέτρηση πλήθους μεταφορών μπλοκ μεταξύ των 2 επιπέδων μνήμης (κόστος)

Μοντελοποιεί το κύριο πρόβλημα Πολύ πετυχημένο (απλότητα)

Περιορισμοί Οι παράμετροι B και M πρέπει να είναι γνωστοί Δεν αντιμετωπίζει πολλαπλά επίπεδα μνημών Δεν αντιμετωπίζει δυναμική μεταβολή του M

CPU

Μνήμη

Δίσκος

I/O

M

B

Aggarwal and Vitter 1988

Page 5: Προηγμενη ευρετηριαση δεδομενων

Το πλήθος των δίσκων μπορεί να είναι ίσο, μικρότερο ή μεγαλύτερο σε σχέση με το πλήθος των επεξεργαστών.

Το Μοντέλο Παράλληλων Δίσκων(PDM – Parallel Disk Model)

Page 6: Προηγμενη ευρετηριαση δεδομενων

Παράμετροι του PDM

Ν → μέγεθος του προβλήματος

Μ → μέγεθος εσωτερικής μνήμης

Β → μέγεθος μπλοκ δίσκου

D → πλήθος δίσκων

P → πλήθος επεξεργαστών

Ισχύει: Μ<Ν

1≤DB ≤M/2

Οι ποσότητες εκφράζονται σε σχέση με το πλήθος των στοιχείων

Page 7: Προηγμενη ευρετηριαση δεδομενων

Τύποι Προβλημάτων

Μαζικές ερωτήσεις: Οι αιτήσεις για επεξεργασία μας δίνονται

όλες μαζί. Τις υπολογίζουμε όλες και έπειτα δίνουμε

την απάντηση για κάθε μία από αυτές

Άμεσες Ερωτήσεις: Οι αιτήσεις έρχονται σε σειρά. Απαντάμε κάθε ερώτηση και έπειτα μας

έρχεται η επόμενη για επεξεργασία.

Page 8: Προηγμενη ευρετηριαση δεδομενων

Κάποιες Παράμετροι Ακόμα

Q → πλήθος ερωτήσεων (για μαζικές ερωτήσεις) Ζ → μέγεθος απάντησης

Πολλές φορές θα χρησιμοποιούμε τον εξής συμβολισμό:

B

Nn

B

Mm

B

Qq

B

Zz

Page 9: Προηγμενη ευρετηριαση δεδομενων

Τι Μετράμε;

Οι κύριες μετρικές απόδοσης στο PDM είναι:

1. Το πλήθος των μεταφορών (Ι/Ος) που εκτελούνται

2. Ο χώρος που χρησιμοποιείται

3. Ο χρόνος υπολογισμού των επεξεργαστών

Ελπίζω να σας έχω πείσει ότι το (3) είναι αμελητέο (συνήθως) σε σχέση με τις υπόλοιπες δύο μετρικές.

Page 10: Προηγμενη ευρετηριαση δεδομενων

Κάποιες Στοιχειώδης Πράξεις

Page 11: Προηγμενη ευρετηριαση δεδομενων

11

Ι/Ο Αποδοτική Διαπέραση Στοιχείων

sum = 0

for i = 1 to N do sum = sum + A[i]

sum = 0

for i = 1 to N do sum = sum + A[i]

N

B

A

Πόσα I/Oς;

O(N/B) ή O(n) I/Oς

Page 12: Προηγμενη ευρετηριαση δεδομενων

Cache Memory Model

N: μέγεθος προβλήματος Β: μέγεθος cache line M: Μέγεθος cache α: συσχετισιμότητα cache

Μοντέλο κόστους: Πλήθος από cache αποτυχίες Πλήθος εντολών

Page 13: Προηγμενη ευρετηριαση δεδομενων

Internal Memory Model

Όπως στο CMM συν: Β΄: το πλήθος των δεδομένων σε μία

σελίδα μνήμης Τ: το πλήθος των μεταφράσεων στην TLB

Μοντέλο Κόστους όπως στο CMM συν: TLB αποτυχίες

Page 14: Προηγμενη ευρετηριαση δεδομενων

Τοπικότητα σε PDM

. . .

Page 15: Προηγμενη ευρετηριαση δεδομενων

Λωρίδες σε PDM

Πώς να προγραμματίζεις για έναν δίσκο και αυτόματα το πρόγραμμα να μπορεί να εκμεταλλευτεί τον παραλληλισμό των πολλών σε PDM;

Απλή ιδέα (λωριδοποίηση δίσκων): Το μέγεθος του λογικού μπλοκ δεν είναι B αλλά DB. Μεταφέρουμε στην μνήμη μία λωρίδα και όχι ένα

μπλοκ.

Page 16: Προηγμενη ευρετηριαση δεδομενων

Λωρίδες σε PDM

Θέλουμε τα δεδομένα να είναι αποθηκευμένα και στους D δίσκους. Αυτό το κάνουμε αποθηκεύοντάς τα με την μορφή λωρίδας:

D0 D1 D2 D3 D4

Ρίγα 0

0 1 2 3 4 5 6 7 8 9

Ρίγα 1

10 11 12 13 14 15 16 17 18 19

Ρίγα 2

20 21 22 23 24 25 26 27 28 29

Ρίγα 3

30 31 32 33 34 35 36 37 38 39Επομένως μία πράξη μπορεί να γίνει σε Ο(n/D) Ι/Ος.

Page 17: Προηγμενη ευρετηριαση δεδομενων

Λωριδοποίηση Δίσκων

Από τα βασικά προβλήματα: 3 στα 4 έχουν βέλτιστες λύσεις εφαρμόζοντας αυτή την τεχνική: Διαπέραση (scanning) Αναζήτηση (search) Έξοδος (output)

Το πρόβλημα της ταξινόμησης δεν λύνεται βέλτιστα με αυτή την τεχνική.

Page 18: Προηγμενη ευρετηριαση δεδομενων

18

Διαπέραση Στοιχείων – D δίσκοι

sum = 0

for i = 1 to N do sum = sum + A[i]

sum = 0

for i = 1 to N do sum = sum + A[i]

N

B

A

Πόσα I/Oς;

O(N/DB) ή O(n/D) I/Oς

Page 19: Προηγμενη ευρετηριαση δεδομενων

Η Ταξινόμηση – D δίσκοι

Βέλτιστη πολυπλοκότητα για ταξινόμηση:

m

n

D

n

log

log

Με λωριδοποίηση δίσκων από την περίπτωση D=1:

Dm

Dn

D

n

/log

/log

Στην πράξη είναι εξαιρετικά αποδοτικό

Page 20: Προηγμενη ευρετηριαση δεδομενων

Ταξινόμηση

Page 21: Προηγμενη ευρετηριαση δεδομενων

Ταξινόμηση (D=1)

<M/B ταξινομημένες λίστες συγχωνεύονται σε O(N/B) I/Oς

M/B μπλοκ στην κύρια μνήμη

Μη ταξινομημένη λίστα μπορεί να διαχωρισθεί χρησιμοποιώντας <M/B στοιχεία σε O(N/B) I/Oς

Page 22: Προηγμενη ευρετηριαση δεδομενων

Απλή Ιδέα: Ταξινόμηση 2-δρόμων

Πέρασμα 1: Διάβασε ένα μπλοκ, ταξινόμηση και έπειτα αποθήκευση.

Πέρασμα 2, 3, …, κτλ: Διάβασε 2 προηγούμενα περάσματα, ταξινόμηση,

αποθήκευση.

Κύρια Μνήμη

ΕΙΣΟΔΟΣ 1

ΕΙΣΟΔΟΣ 2

ΕΞΟΔΟΣ

Δίσκος Δίσκος

Page 23: Προηγμενη ευρετηριαση δεδομενων

Παράδειγμα Σε κάθε πέρασμα

διαβάζουμε και γράφουμε στον δίσκο κάθε διάστημα.

n μπλοκ στο αρχείο ⇒ πλήθος περασμάτων;

Συνολικό κόστος;

Ιδέα: Διαίρει και Βασίλευε

Αρχείο Εισόδου3,4 6,2 9,4 8,7 5,6 3,1 2

Ταξ. 1 μπλοκΠΕΡΑΣΜΑ 0

3,4 5,62,6 4,9 7,8 1,3 2

Ταξ. 2 μπλοκ

ΠΕΡΑΣΜΑ 1

2,34,6

4,7

8,91,35,6 2

Ταξ. 4 μπλοκ

ΠΕΡΑΣΜΑ 22,3

4,46,7

8,9

1,23,56

Ταξ. 8 μπλοκ

ΠΕΡΑΣΜΑ 3

9

1,22,3

3,4

4,56,6

7,8

nnO 2log

nO 2log

Page 24: Προηγμενη ευρετηριαση δεδομενων

Ταξινόμηση Συγχώνευσης (Mergesort)Συγχωνευτής k-δρόμων

Η συγχώνευση k ακολουθιών με N στοιχεία απαιτεί O(N/B) I/Oς (δεδομένου ότι k ≤ M/B – 1)

εγγραφή

ανάγνωση

Συγχωνευτής 4-δρόμων

2 3 5 6 92 3 5 6 9

5733414951521 4 7 101429

81216182224 313435384246321 4 5 6 7 8 9 1011121314

11131519212527

172023262830323739434550

Page 25: Προηγμενη ευρετηριαση δεδομενων

25

Λειτουργία Αλγόριθμου

Η MergeSort απαιτεί O(N/B·logM/B(N/B)) I/Oς Στην πράξη τα Ι/Ος είναι: 4-6 x διαπέραση εισόδου

M M

Διαχωρισμός σε διαστήματαΤαξινόμησε κάθε διάστημα

Συγχώνευση 1

...

Διάστημα 1 Διάστημα 2 Διάστημα N/M

N

Ταξινομημένο

Αταξινόμητη Είσοδος

Ταξινομημένο

Ταξινομημένο

Ταξινομημένο

Ταξινομημένο

Ταξινομημένη ΈξοδοςΣυγχώνευση 2

Page 26: Προηγμενη ευρετηριαση δεδομενων

Ταξινόμηση Συγχώνευσης - Απόδοση

Κτίσε N/M ταξινομημένες λίστες μεγέθους Μ Επαναληπτικά συγχώνευσε λίστες

φάσεις με I/Oς η κάθε μία I/Oς)( B

NO)(logMN

BMO )log(

BN

BN

BMO

)(MN

)/(BM

MN

))/(( 2BM

MN

1

Page 27: Προηγμενη ευρετηριαση δεδομενων

Γενική Τεχνική – Double Buffering

Για να μειώσουμε το χρόνο αναμονής για την ολοκλήρωση Ι/Ο, μπορούμε να το φέρουμε σε ένα `σκιώδες μπλοκ’.

ΕΞΟΔΟΣ

ΕΞΟΔΟΣ΄

Δίσκος Δίσκος

ΕΙΣΟΔΟΣ1

ΕΙΣΟΔΟΣ k

ΕΙΣΟΔΟΣ 2

ΕΙΣΟΔΟΣ 1΄

ΕΙΣΟΔΟΣ 2΄

ΕΙΣΟΔΟΣ k΄

Μέγεθος μπλοκB

Page 28: Προηγμενη ευρετηριαση δεδομενων

Ταξινόμηση Διαχωρισμού(Γρήγορη Ταξινόμηση πολλών δρόμων)

Υπολόγισε Θ(M/B) στοιχεία διαχωρισμού Διαχώρισε την αταξινόμητη λίστα σε Θ(M/B) αταξινόμητες λίστες ίδιου

μεγέθους Αναδρομικά διαχώρισε τις λίστες μέχρι να χωρέσουν στην μνήμη

Þ φάσεις

Þ I/Oς αν τα στοιχεία διαχωρισμού εντοπίζονται σε O(N/B) I/Oς

)(logMN

BMO

)log(BN

BN

BMO

Page 29: Προηγμενη ευρετηριαση δεδομενων

Παράδειγμα με 1 στοιχείο διαχωρισμού

Σε κάθε πέρασμα διαχωρίζουμε με βάση 1 στοιχείο.

n μπλοκ στο αρχείο ⇒ πλήθος περασμάτων;

Συνολικό κόστος;

Ιδέα: Διαίρει και Βασίλευε (αντίστροφα από συγχώνευση)

3,4

6,2

9,4

8,7

5,6

3,1

2

5

3,4

2,4

3,1

25,6

9,8

7,6

3 7

2,1

23,4

4,3

5,6

67,9

8

.

.

.

nO 2log

nnO 2log

Page 30: Προηγμενη ευρετηριαση δεδομενων

Πιθανοτική Επιλογή Στοιχείων Διαχωρισμού (Εύκολη)

Επιλογή S=Θ(min{m,n/m}) στοιχείων διαχωρισμού. Απλές μέθοδοι:

1. Επέλεξε τα πρώτα S στοιχεία από τη λίστα που ταξινομούμε (σε αντιστοιχία με quicksort) και ευχόμαστε να δουλέψει

2. Τυχαία δειγματοληψία:1. Επιλέγουμε τυχαία SlogS στοιχεία από τη λίστα

2. Τα ταξινομούμε και έπειτα επιλέγουμε κάθε logS-οστό στοιχείο για διαχωρισμό

Page 31: Προηγμενη ευρετηριαση δεδομενων

Τυχαία Δειγματοληψία

Χρειαζόμαστε Ο(SlogS+Sort(SlogS)) Ι/Ος. Το S μπορεί να είναι το πολύ n½:

)(log2 nonnO

Κάθε καινούργια λίστα θα έχει μέσο μέγεθος Ο(Ν/S):

Πιθανότητα κάθε στοιχείου να πέσει σε μία υπολίστα 1/S

Άρα μέσο μέγεθος είναι O(N/S)

NSlogS. . .S

Page 32: Προηγμενη ευρετηριαση δεδομενων

Αναδιάταξη

Permutation – Hans LoffelΤαξινόμησε Ν στοιχεία με βάση μία αντιμετάθεση των {1,2,3,…,Ν}

)(,min NSortN

Γιατί δεν έχουμε Ν/Β;

Page 33: Προηγμενη ευρετηριαση δεδομενων

Κάτω Φράγμα για Ταξινόμηση

Page 34: Προηγμενη ευρετηριαση δεδομενων

Κάτω Φράγμα Ταξινόμησης

Υπόθεση: Τα στοιχεία που ταξινομούμε είναι αδιαίρετα (indivisibility assumption)

Όλοι οι αλγόριθμοι ταξινόμησης δευτερεύουσας μνήμης στο μοντέλο PDM (για D=1) θα πρέπει να κάνουν τουλάχιστον

O(nlogmn) I/Oς.

Page 35: Προηγμενη ευρετηριαση δεδομενων

Κάποια Βασικά…

Μοντέλο Μνήμης: PDM, D=1

Μοντέλο συγκρίσεων: τα στοιχεία μπορούν να συγκριθούν μόνο στην κύρια μνήμη. Μπορούμε να τα μεταφέρουμε, να τα αντιγράψουμε και να τα διαγράψουμε – τίποτα άλλο.

Υποθέτουμε ότι M2B.

Τα μπλοκ στην αρχή είναι τοποθετημένα όλα μαζί σε μία περιοχή του δίσκου.

Η σειρά των στοιχείων στην εσωτερική μνήμη δίνεται δωρεάν.

Δοθείσης μία εκτέλεσης ενός αλγορίθμου ταξινόμησης ορίζουμε το St = πλήθος δυνατών αναδιατάξεων έπειτα από t I/Oς. (S0=Ν!)

Ν στοιχεία δίνουν Ν! αναδιατάξεις. Στόχος μας είναι να δούμε πως μειώνεται το πλήθος των αναδιατάξεων έπειτα από

κάθε πράξη, μέχρι να γίνει 1.

Page 36: Προηγμενη ευρετηριαση δεδομενων

Πράξεις και Μείωση St

Εγγραφή μπλοκ στο δίσκο: Δεν επηρεάζει

Όσες αναδιατάξεις είχαμε πριν την εγγραφή έχουμε και μετά

Ανάγνωση για πρώτη φορά μπλοκ:

Ανάγνωση μπλοκ (όχι για πρώτη φορά):

!BB

M

B

M

Page 37: Προηγμενη ευρετηριαση δεδομενων

Μείωση Αναδιατάξεων

Αν X είναι η μείωση κατά την πράξη Ι/Ο t+1, τότε:St+1St/Χ

Υπάρχουν το πολύ Ν/Β αναγνώσεις μπλοκ που γίνονται για πρώτη φορά.

Αφού S0=Ν! και St+1St/Χ προκύπτει ότι για τις Ν/Β αναγνώσεις (και για να φτάσουμε σε μία αντιμετάθεση) :

BN

t

BB

M

N

!

!1

Page 38: Προηγμενη ευρετηριαση δεδομενων

ΤΈΛΟΣ