Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh,...

77
Project Phase II ΗΥ-240 – Dοmές Dεδοmένων Dιδάσκουσα: Παναγιώτα Φατούρου Ιάκωβος Γ. Κολοκάσης 21 Απριλίου 2018 Τmήmα Επιστήmης Υπολογιστών Πανεπιστήmιο Κρήτης

Transcript of Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh,...

Page 1: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Project Phase II

ΗΥ-240 – Δομές Δεδομένων

Διδάσκουσα: Παναγιώτα Φατούρου

Ιάκωβος Γ. Κολοκάσης

21 Απριλίου 2018

Τμήμα Επιστήμης Υπολογιστών

Πανεπιστήμιο Κρήτης

Page 2: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Περιεχόμενα

1. Εισαγωγή

2. Περιγραφή Δομών

3. Δομές Χρηστών

4. Πίνακας Κατακερματισμού Tweets

5. Γεγονότα

6. Είδη Γεγονότων

ΗΥ-240 – Δομές Δεδομένων 1 of 69 [email protected]

Page 3: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Εισαγωγή

Page 4: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Πληροφορίες

• Ιστοσελίδα Μαθήματος: http://www.csd.uoc.gr/∼hy240b

• Τρόπος Παράδοσης: Με το πρόγραμμα turnin

• Ημερομηνία Παράδοση: Δευτέρα 14 Μαϊου 2018, ώρα 23:59• Διαθέσιμες Υλοποιήσεις: C/C++ / JAVA

• Ερωτήσεις/Διευκρινήσεις: [email protected]

• ΠΡΟΣΟΧΗ: Compile / Run στα μηχανήματα της σχολής

ΗΥ-240 – Δομές Δεδομένων 2 of 69 [email protected]

Page 5: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Θεματολογία

Αντίστοιχα με την 1η Φάση έχουμε:

• Χρήστες που στέλνουν και διαβάζουν σύντομα μηνύματα,τα οποία ονομάζονται τουίτς (tweets)

• Ο κάθε χρήστης μπορεί να ακολουθεί (follow) άλλους

χρήστες με σκοπό να εμφανίζονται τα tweets τους στην

περιοχή του (Wall)

ΗΥ-240 – Δομές Δεδομένων 3 of 69 [email protected]

Page 6: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Θεματολογία

΄Εχουμε λοιπόν δύο βασικές οντότητες:

1. Χρήστες

2. Tweets

ΗΥ-240 – Δομές Δεδομένων 4 of 69 [email protected]

Page 7: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Περιγραφή Δομών

Page 8: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Γνωστικό Αντικείμενο

Οι γνώσεις που θα χρειαστούν για την υλοποίηση της 2ης φάσης

της εργασίας, μεταξύ άλλων, είναι οι εξής:

• Δυαδικά Δέντρα Αναζήτησης (Δ.Δ.Α)• Αναζήτηση, Εισαγωγή, Διαγραφή• Διάσχιση ταξινομημένου Δ.Δ.Α• Κόμβοι φρουροί

• Εμπλουτισμένα Φυλλοπροσανατολισμένα Δ.Δ.Α• Αναζήτηση, Εισαγωγή, Διαγραφή, Διάσχιση

• Πίνακες Κατακερματισμού• Τεχνική Διπλού κατακερματισμού με ανοικτήδιευθυνσιοδότηση (double hashing) (για την επίληση

συγκρούσεων)

ΗΥ-240 – Δομές Δεδομένων 5 of 69 [email protected]

Page 9: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Ιδέα

Η εργασία αποτελείται από 2 ομάδες δομών:

1. Δομές που αφορούν τους χρήστες

2. Δομές που αφορούν τα tweets

ΗΥ-240 – Δομές Δεδομένων 6 of 69 [email protected]

Page 10: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Δομές Χρηστών

Page 11: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Γενικά

Οι δομές χρηστών οργανώνονται ως εξής:

• Οι χρήστες αποθηκεύονται σε ένα διπλά συνδεδεμένοδυαδικό δένδρο αναζήτησης, με κόμβο φρουρό ταξινομημένο

με βάση το αναγνωριστίκό του χρήστη

• Ο κάθε χρήστης είναι ένα αντικείμενο τύπου struct Tree user

ΗΥ-240 – Δομές Δεδομένων 7 of 69 [email protected]

Page 12: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Γενικά

• Κάθε χρήστης περιέχει ένα δείκτη που δείχνει στον κόμβορίζα ενός απλού δυαδικού δένδρου αναζήτησης, που

ονομάζεται δένδρο οπαδών (followers)

• Κάθε χρήστης περιέχει ένα δείκτη που δείχνει στον κόμβορίζα ενός εμπλουτισμένου φυλλοπροσανατολισμένου

δένδρου δυαδικής αναζήτησης, που ονομάζεται δένδρο των

tweets (Wall)

ΗΥ-240 – Δομές Δεδομένων 8 of 69 [email protected]

Page 13: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Δομή Χρηστών

uid Αναγνωριστικό χρήστη (int)

followers R Δείκτης που δείχνει στον κόμβο ρίζα ενός απλού

δυαδικού δένδρου αναζήτης (struct follower *)

wall R Δείκτης που δείχνει στον κόμβο ρίζα ενός εμπλου-

τισμένου φυλλοπροσανατολισμένου δένδρου δυα-

δικής αναζήτης (struct tweet *)

p node Δείκτης προς τον γονικό κόμβο (struct user*)

lc Δείκτης στο αριστερό θυγατρικό κόμβο (struct u-

ser*)

rc Δείκτης στο δεξί θυγατρικό κόμβο (struct user*)

ΗΥ-240 – Δομές Δεδομένων 9 of 69 [email protected]

Page 14: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Δομή Οπαδών – Followers

uid Αναγνωριστικό χρήστη / οπαδού (int)

lc Δείκτης στο αριστερό θυγατρικό κόμβο (struct follower*)

rc Δείκτης στο δεξί θυγατρικό κόμβο (struct follower*)

ΗΥ-240 – Δομές Δεδομένων 10 of 69 [email protected]

Page 15: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Δομή Tweets – Wall

tid Αναγνωριστικό tweet (int)

uid Αναγνωριστικό χρήστη που δημοσίευσε το tweet

(int)

timestamp Ακέραιος που αντιστοιχεί στην ημερομηνία δημο-

σίευσης του tweet (int)

lc Δείκτης στο αριστερό θυγατρικό κόμβο (struct tw-

eet*)

rc Δείκτης στο δεξί θυγατρικό κόμβο (struct tweet*)

next Δείκτης προς το επόμενο φύλλο (struct tweet*)

ΗΥ-240 – Δομές Δεδομένων 11 of 69 [email protected]

Page 16: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 12 of 69 [email protected]

Page 17: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 13 of 69 [email protected]

Page 18: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Πίνακας Κατακερματισμού

Tweets

Page 19: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Γενικά

Ο πίνακας κατακερματισμού των tweets οργανώνεται ως εξής:

• Αποθηκεύει όλα τα tweets που υπάρχουν στο σύστημα

• Η επίλυση των συγκρούσεων γίνεται βάσει της τεχνικής τουδιπλού κατακερματισμού με ανοικτή διευθυνσιοδότηση

• Οι συναρτήσεις κατακερματισμού που θα χρησιμοποιήσετεείναι:

Hash Functions

h1(x) = x % size of hashTable

h2(x) = x2 % size of hashTable

• Ο μέγιστος πλήθος tweets που μπορεί να υπάρξουν στο

σύστημα είναι 1000

ΗΥ-240 – Δομές Δεδομένων 14 of 69 [email protected]

Page 20: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Πίνακας Κατακερματισμού Tweets

tid Αναγνωριστικό tweet (int)

uid Αναγνωριστικό χρήστη που δημοσίευσε το tweet

(int)

timestamp Ακέραιος που αντιστοιχεί στην ημερομηνία δημο-

σίευσης του tweet (int)

remove ΄Ενα bit το οποίο υποδηλώνει αν το tweet έχει δια-

γραφεί ή όχι (char)

ΗΥ-240 – Δομές Δεδομένων 15 of 69 [email protected]

Page 21: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 16 of 69 [email protected]

Page 22: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Γεγονότα

Page 23: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Ιδέα

΄Ενα γεγονός αποτελεί μία ενέργεια που εκτελείται μέσα στο

σύστημά μας. Για παράδειγμα :

• Εισαγωγή ενός χρήστη• Ανάρτηση ενός τωεετ• κ.τ.λ.

ΗΥ-240 – Δομές Δεδομένων 17 of 69 [email protected]

Page 24: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Αρχεία Γεγονότων

• Τα γεγονότα αυτά είναι καταχωρημένα σε κάποια αρχεία(test files)

• Τα αρχεία υπάρχουν στη σελίδα του μαθήματος• Το πρόγραμμα κάνει parse αυτά τα αρχεία και εκτελεί τη

συνάρτηση που αντιστοιχεί στο εκάστοτε γεγονός

• Δεν χρειάζεται να γραφτεί επιπλέον κώδικας για τοχειρισμό των γεγονότων

• Το μόνο που απουσιάζει είναι η υλοποίηση τωνσυναρτήσεων

ΗΥ-240 – Δομές Δεδομένων 18 of 69 [email protected]

Page 25: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Μορφή Γεγονότος

΄Ενα γεγονός έχει την εξής μορφή:

event id [arithmetic arguments [...]]

ΗΥ-240 – Δομές Δεδομένων 19 of 69 [email protected]

Page 26: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Είδη Γεγονότων

Page 27: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Register

Εισαγωγή ενός νέου χρήστη στο σύστημα

R uid

Ορίσματα:

uid Αναγνωριστικό του νέου χρήστη

ΗΥ-240 – Δομές Δεδομένων 20 of 69 [email protected]

Page 28: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Register

Κατά το γεγονός αυτό:

1. Θα γίνει εισαγωγή ενός νέου χρήστη με αναγνωριστικό

[uid ] στο δένδρο χρηστών

2. Προσοχή: Μετά από κάθε εισαγωγή, το δένδρο χρηστών

πρέπει να παραμένει ταξινομημένο

ΗΥ-240 – Δομές Δεδομένων 21 of 69 [email protected]

Page 29: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Subscribe

Εγγραφή του χρήστη με αναγνωριστικό [uid2] στο δένδρο των

followers του χρήστη με αναγνωριστικό [uid1]

Subscribe

S uid1 uid2

Ορίσματα :

uid1 Αναγνωριστικό του χρήστη που έλα-

βε ένα νέο follower

uid2 Αναγνωριστικό χρήστη που κάνει fol-

low

ΗΥ-240 – Δομές Δεδομένων 22 of 69 [email protected]

Page 30: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Subscribe

Κατά το γεγονός αυτό:

1. Αναζητούμε στο δένδρο χρηστών, το χρήστη με

αναγνωριστικό uid1

2. Εισάγουμε στο δένδρο των followers ένα νέο κόμβο με

αναγνωριστικό uid2

3. Προσοχή: Μετά από κάθε εισαγωγή, το δένδρο των

followers θα πρέπει να παραμένει ταξινομημένο

ΗΥ-240 – Δομές Δεδομένων 23 of 69 [email protected]

Page 31: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Tweet

Δημοσίευση ενός tweet με αναγνωριστικό tid από τον χρήστη με

αναγνωριστικό uid

Tweet

T uid tid timestamp

Ορίσματα :

uid Αναγνωριστικό του χρήστη που δημοσίευσε

το tweet

tid Αναγνωριστικό του tweet

timestamp Χρονική στιγμή στην οποία δημοσιεύτηκε το

tweet

ΗΥ-240 – Δομές Δεδομένων 24 of 69 [email protected]

Page 32: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Tweet

Κατά το γεγονός αυτό:

1. Αναζητάμε στο δένδρο χρηστών το χρήστη με

αναγνωριστικό uid

2. Εισάγουμε στο δένδρο των tweets του, ένα νέο κόμβο με

αναγνωριστικό tid

3. Διατρέχουμε το δένδρο των followers του χρήστη αυτού και

για κάθε κόμβο στο δένδρο:

3.1 Αναζητούμε το χρήστη με το τρέχον uid στο δένδρο χρηστών

3.2 Αφού τον εντοπίσουμε, εισάγουμε στη δένδρο των tweets

του, ένα νέο κόμβο με αναγνωριστικό tid

3.3 Προσοχή: Η διαδικασία αυτή θα πρέπει να ολοκληρώνεται

σε χρόνο O(n), όπου n το πλήθος των κόμβων στο δένδρο

χρηστών

4. Τέλος, εισάγουμε και μια νέα εγγραφή στον πίνακα

κατακερματισμού των tweetsΗΥ-240 – Δομές Δεδομένων 25 of 69 [email protected]

Page 33: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Παράδειγμα

Tweet

T 30 300 20180420

ΗΥ-240 – Δομές Δεδομένων 26 of 69 [email protected]

Page 34: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 27 of 69 [email protected]

Page 35: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 28 of 69 [email protected]

Page 36: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 29 of 69 [email protected]

Page 37: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 30 of 69 [email protected]

Page 38: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 31 of 69 [email protected]

Page 39: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 32 of 69 [email protected]

Page 40: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 33 of 69 [email protected]

Page 41: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 34 of 69 [email protected]

Page 42: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 35 of 69 [email protected]

Page 43: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 36 of 69 [email protected]

Page 44: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 37 of 69 [email protected]

Page 45: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 38 of 69 [email protected]

Page 46: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 39 of 69 [email protected]

Page 47: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Unsubscribe

Διαγραφή του χρήστη με αναγνωριστικό uid2 από τη λίστα των

followers του χρήστη με αναγνωριστικό uid1

Unsubsribe

U uid1 uid2

Ορίσματα :

uid1 Αναγνωριστικό του χρήστη που έχασε ένα follower

uid2 Αναγνωριστικό του χρήστη που κάνει unsubscribe

ΗΥ-240 – Δομές Δεδομένων 40 of 69 [email protected]

Page 48: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Unsubscribe

Κατά το γεγονός αυτό:

1. Αναζητούμε στο δένδρο χρηστών το χρήστη με

αναγνωριστικό uid1

2. Αφαιρούμε από το δένδρο των followers τον κόμβο με

αναγνωριστικό uid2

3. Αναζητούμε στο δένδρο χρηστών το χρήστη με

αναγνωριστικό uid2

4. Διατρέχουμε το δένδρο των tweets του χρήστη με

αναγνωριστικό uid2

5. Αφαιρούμε από αυτή τους κόμβους που έχουν το πεδίο uid

ίσο με uid1

ΗΥ-240 – Δομές Δεδομένων 41 of 69 [email protected]

Page 49: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Παράδειγμα

Unsubscribe

U 50 60

ΗΥ-240 – Δομές Δεδομένων 42 of 69 [email protected]

Page 50: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 43 of 69 [email protected]

Page 51: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 44 of 69 [email protected]

Page 52: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 45 of 69 [email protected]

Page 53: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 46 of 69 [email protected]

Page 54: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 47 of 69 [email protected]

Page 55: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 48 of 69 [email protected]

Page 56: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 49 of 69 [email protected]

Page 57: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 50 of 69 [email protected]

Page 58: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Delete

Διαγραφή του χρήστη με αναγνωριστικό uid από το σύστημα

Delete

D uid

Ορίσματα:

uid Αναγνωριστικό του χρήστη προς δια-

γραφή

ΗΥ-240 – Δομές Δεδομένων 51 of 69 [email protected]

Page 59: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Delete

Κατά το γεγονός αυτό:

1. Αναζητούμε στο δένδρο χρηστών το χρήστη με

αναγνωριστικό uid

2. Διαγράφουμε όλα τα στοιχεία του δένδρου των tweets

αυτού του χρήστη

3. Διατρέχουμε το δένδρο των οπαδών και για κάθε κόμβο:

3.1 Καλούμε κατάλληλα τη συνάρτηση που υλοποιεί το γεγονός

unsubscribe

4. Διαγράφουμε από το δένδρο χρηστών το χρήστη με

αναγνωριστικό uid

5. Τέλος διαγράφουμε όλα τα tweets του χρήστη με

αναγνωριστικό uid από τον πίνακα κατακερματισμού των

tweets θέτοντας το πεδίο remove = true

ΗΥ-240 – Δομές Δεδομένων 52 of 69 [email protected]

Page 60: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Παράδειγμα

Delete

D 30

ΗΥ-240 – Δομές Δεδομένων 53 of 69 [email protected]

Page 61: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 54 of 69 [email protected]

Page 62: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 55 of 69 [email protected]

Page 63: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 56 of 69 [email protected]

Page 64: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 57 of 69 [email protected]

Page 65: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 58 of 69 [email protected]

Page 66: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 59 of 69 [email protected]

Page 67: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 60 of 69 [email protected]

Page 68: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 61 of 69 [email protected]

Page 69: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 62 of 69 [email protected]

Page 70: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 63 of 69 [email protected]

Page 71: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

ΗΥ-240 – Δομές Δεδομένων 64 of 69 [email protected]

Page 72: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

History

Αναζήτηση των tweets που έχει δημοσιεύσει ο χρήστης με

αναγνωριστικό uid μεταξύ των ημερομηνιών date1 date2

History

H uid date1 date2

Ορίσματα:

uid Αναγνωριστικό του χρήστη

date1 Αρχική ημερομηνία

date2 Τελική ημερομηνία

ΗΥ-240 – Δομές Δεδομένων 65 of 69 [email protected]

Page 73: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

History

Κατά το γεγονός αυτό:

• Αναζητούμε στο δένδρο χρηστών το χρήστη μεαναγνωριστικό uid

• Αναζητούμε στο δένδρο των tweets του χρήστη το tweet που

έχει ημερομηνία ίση ή ακριβώς μεγαλύτερη από date1

• Διατρέχουμε και εκτυπώνουμε όλα τα tweets που είναι

μεταξύ του διαστήματος date1 και date2 μέσω των next

δεικτών

ΗΥ-240 – Δομές Δεδομένων 66 of 69 [email protected]

Page 74: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Look Up

Αναζήτηση ενός tweet με αναγνωριστικό tid στον πίνακα

κατακερματισμού των tweets

Look Up

L tid

Ορίσματα:

tid Αναγνωριστικό του tweet

ΗΥ-240 – Δομές Δεδομένων 67 of 69 [email protected]

Page 75: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Print Users

Εκτύπωση όλων των χρηστών από το δέντρο χρηστών

Print all Users

X

ΗΥ-240 – Δομές Δεδομένων 68 of 69 [email protected]

Page 76: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Print Tweets

Εκτύπωση όλων των tweets από τον πίνακα κατακερματισμού

Tweets

Print all Tweets

Y

ΗΥ-240 – Δομές Δεδομένων 69 of 69 [email protected]

Page 77: Project Phase II - csd.uoc.grhy240a/old_websites/hy240b-2017-2018/material/...Anaz€thsh, Eisagwg€, Diagraf€ Di‹sqish taxinomhmŁnou D.D.A Kìmboi frouro— EmploutismŁna FulloprosanatolismŁna

Thanks!

ΗΥ-240 – Δομές Δεδομένων 69 of 69 [email protected]