ΗΥ-240 ο%ές εδο%ένων Προγραμματιστική Εργασία Αντώνης Πα)αϊωάννου Μέρος A
Διαδικάστικά Παράδοση: Δευτέρα, 3 Απριλίου 2017, ώρα 23:59. Compile και run σε μηχανήματα της σχολής Μέρος της βαθμολογίας Τρόπος Παράδοσης: turnin http://csd.uoc.gr/~hy240b/current/submit.php Online: Main (java, C) Test files http://csd.uoc.gr/~hy240b
Overview Περιοχές Ση5εία ενδιαφέροντος Χρήστες Ενδιαφέροντα ση5εία χρηστών
Χρήσιμες Δομές
Point-of-Interest (POI) pid: Αναγνωριστικό (int) )ου χαρακτηρίζει 5οναδικά το ση5είο. : Αριθ5ός (int) )ου αντιστοιχεί στην α)όσταση του ση5είου ενδιαφέροντος α)ό το )ροηγού5ενο ση5είο ενδιαφέροντος της ίδιας το)οθεσίας type: Αναγνωριστικό (int) )ου αντιστοιχεί στην κατηγορία του ση5είου ενδιαφέροντος. Τι5ές [1,4] : είκτης (τύ)ου poi) στον )ροηγού5ενο κό5βο της λίστας. : είκτης (τύ)ου poi) στον ε)ό5ενο κό5βο της λίστας.
Location lid: Αναγνωριστικό (int) )ου χαρακτηρίζει 5οναδικά την το)οθεσία. : Ένας δείκτης (poi) στο )ρώτο στοιχείο 5ιας δι)λά συνδεδε5ένης λίστας 5ε τα ση5εία ενδιαφέροντος της το)οθεσίας. : είκτης (τύ)ου location) στον ε)ό5ενο κό5βο της λίστας το)οθεσιών.
locations_list lid 10 Λίστα το)οθεσιών Α)λά συνδεδε5ένη. lid 20 Ταξινο5η5ένη 5ε βάση το lid Aύξουσα διάταξη lid 27 lid 55
Locations & POI lid 10 lid 20 pid 44 pid 11 pid 60 pid 19 type 3 type 1 type 1 type 2 lid 27 Λίστα ση5είων ενδιαφέροντος της lid 55
Location s poi list ι)λά συνδεδε5ένη. Κό5βοι τύ)ου poi Ταξινο5η5ένη 5ε βάση την α"όσταση του ση5έιου α"ό το ση(είο αναφοράς της το"οθεσίας Προσοχή! Στο )εδίο α)οθηκεύεται η α)όσταση α)ό το )ροηγού5ενο ση5είο της λίστας. pid 44 pid 11 pid 60 pid 19 type 3 type 1 type 1 type 2
locations_list lid 10 pid 32 pid 22 pid 49 type 2 type 4 type 1 lid 20 pid 44 pid 11 pid 60 pid 19 type 3 type 1 type 1 type 2 lid 27 pid 34 pid 3 lid 55 type 2 type 4
User uid: Αναγνωριστικό (int) )ου χαρακτηρίζει 5οναδικά τον χρήστη. interesting_poi: είκτης (user_poi *) σε α)λά συνδεδε5ένη λίστα 5ε τα ση5εία ενδιαφέροντος του χρήστη. : είκτης (τύ)ου poi) στον ε)ό5ενο κό5βο της λίστας χρηστών.
users_list Λίστα χρηστών. Α)λά συνδεδε5ένη. Μη-ταξινο5η5ένη Με κό5βο φρουρό ιαχειριστικός κό5βος τύ)ου user Πεδίo uid = -1 Πεδία interesting_poi και τι5ή NULL uid 32 uid 5 uid 55 Sentinel -1 Interesting_poi Interesting_poi Interesting_poi Interesting_poi
interesting_poi Κό5βοι τύ)ου user_poi upid: Αναγνωριστικό (int) )ου χαρακτηρίζει 5οναδικά το ση5είο ενδιαφέροντος. : είκτης (user_poi) στον ε)ό5ενο κό5βο της λίστας ση5είων ενδιαφέροντος του χρήστη upid 5 upid 12 Α)λά συνδεδε5ένη. Ταξινο5η5ένη βάσει του αναγνωριστικού των ση5είων ενδιαφέροντος (upid) upid 31
users_list Sentinel uid 32 uid 5 uid 55 uid 24-1 Interesting_poi Interesting_poi Interesting_poi Interesting_poi Interesting_poi upid 5 upid 9 upid 21 upid 12 upid 27 upid 22 upid 31 upid 33 upid 44
Γεγονότα
Γεγονότα L <lid> Εισαγωγή 5ιας νέας το)οθεσίας 5ε αναγνωριστικό <lid> στο σύστη5α. Εισαγωγή σε ταξινο5η5ένη λίστα (locations_list).
Γεγονότα P <pid> <type> <> <lid> Εισαγωγή του POI 5ε αναγνωριστικό <pid> στην το)οθεσία 5ε αναγνωριστικό <lid>. Προσοχή! Η )αρά5ετρος <> αντιστοιχεί στην α)όσταση του POI α)ό το ση5είο αναφοράς της το)οθεσίας. Το )εδίο του POI α)οθηκεύει την α"όσταση του ση5είου α" τον "ροηγού(ενο κό(βο της λίστας.
Γεγονότα P 35 1 1000 22 P 44 1 6000 22 Pid=35 Distance=1000 Type=1 Pid=35 Distance=1000 Type=1 Pid=44 Distance=5000 Type=1 (1000) (6000) P 12 1 9000 22 Pid=35 Distance=1000 Type=1 Pid=44 Distance=5000 Type=1 Pid=12 Distance=3000 Type=1 (1000) (6000) (9000)
Γεγονότα Pid=35 Distance=1000 Type=1 Pid=44 Distance=5000 Type=1 Pid=12 Distance=3000 Type=1 (1000) (6000) (9000) P 50 1 8000 22 Pid=35 Pid=44 Pid=50 Pid=12 Distance=1000 Distance=5000 Distance=2000 Distance=1000 Type=1 Type=1 Type=1 Type=1 (1000) (6000) (8000) (9000)
Γεγονότα A <pid> <lid> Το ση5είο ενδιαφέροντος 5ε αναγνωριστικό pid )ου βρίσκεται στην το)οθεσία 5ε αναγνωριστικό lid δεν θα είναι )λεόν διαθέσι5ο στους ε)ισκέ)τες. ιαγραφή σε ταξινο5η5ένη λίστα () 5ια το)οθεσίας.
Γεγονότα R <uid> Εγγραφή ενός νέου χρήση 5ε αναγνωριστικό <uid> στο σύστη5α Εισαγωγή σε 5η-ταξινο5η5ένη λίστα (users_list) Πολυ)λοκότητα: Ο(1)
Γεγονότα I <uid> <upid> O χρήστης 5ε αναγνωριστικό uid ενδιαφέρεται για το ση5είο ενδιαφέροντος 5ε αναγνωριστικό pid. Αναζήτηση χρήστη στη λίστα χρηστών, εισαγωγή στην ταξινο5η5ένη λίστα (interesting_poi) του χρήστη.
Γεγονότα G <uid1> <uid2> <uid3> η5ιουργία 5ιας ο5άδας 3 χρηστών 5ε αναγνωριστικά uid1, uid2, και uid3 για να )εριηγηθούν 5αζί στα κοινά ση5εία )ου τους ενδιαφέρουν. Εντο)ισ5ός των όλων των χρηστών 5ε 5ία διάσχιση της λίστας Ο(n), 5ε n ο αριθ5ός των χρηστών στη λίστα Το5ή των λιστών (interesting_poi) των χρηστών Πολυ)λοκότητα: O(m1+m2+m3), ό)ου m1, m2 και m3 είναι οι αριθ5οί των κό5βων της λίστας ενδιαφέροντος του 1ου, 2ου και του 3ου χρήστη αντίστοιχα
Γεγονότα B <lid> <pid1> <pid2> <pid3> Υ)ολογισ5ός α)όστασης 5εταξύ των POI pid1, pid2 και pid3 5ε τη σειρά )ου αυτά δίνονται. 1.Αναζήτηση της <lid> στη λίστα το)οθεσιών. 2.Εντο)ισ5ός των pid1, pid2, pid3 στη λίστα της το)οθεσίας <lid> 5ε 5ια διάσχιση. Χρήση βοηθητικού )ίνακα 3 θέσεων 3.Κατά τη διάσχιση της λίστας () α)οθηκεύου5ε τα pid1, pid2, pid3 σε διαδοχικές θέσεις του )ίνακα 5ε τη σειρά )ου τα συναντά5ε.
B 20 60 44 19 lid 10 pid 32 pid 22 pid 49 type 2 type 4 type 1 Location 20 lid 20 pid 44 type 3 pid 11 type 1 pid 60 type 1 pid 19 type 2 lid 27 pid 34 pid 3 lid 55 type 2 type 4
B 20 60 44 19 pid 44 pid 11 pid 60 pid 19 44 type 3 type 1 type 1 type 2 60 19
B 20 60 44 19 pid 44 2 pid 11 1 pid 60 pid 19 44 type 3 type 1 type 1 type 2 60 19 3 4 5
Γεγονότα X Eκτύ)ωση όλων των το)οθεσιών α)ό τη λίστα το)οθεσιών. Y Eκτύ)ωση όλων των όλων των χρηστών της λίστας χρηστών. Z <uid> Aναζήτηση του χρήστη 5ε αναγνωριστικό uid στη λίστα χρηστών
Διαδικάστικά Παράδοση: Δευτέρα, 3 Απριλίου 2017, ώρα 23:59. Compile και run σε μηχανήματα της σχολής Μέρος της βαθμολογίας Τρόπος Παράδοσης: turnin http://csd.uoc.gr/~hy240b/current/submit.php Online: Main (java, C) Test files http://csd.uoc.gr/~hy240b