Δίνεται σύνολο μοριακών διαμορφώσεων εκ των οποίων κάθε διαμόρφωση αποτελείται από μία συγκεκριμένη ακολουθία Ν σημείων στον τριδιάστατο Ευκλείδειο χώρο.
Α. Υλοποίηση της συνάρτησης απόστασης c-RMSD, με την χρήση εξωτερικής της βιβλιοθήκης γραμμικής άλγεβρας LAPACKE και συσταδοποίηση των διαμορφώσεων σε k clusters, για δοσμένο k, με αλγόριθμο τύπου k-medoids και χρήση της c-RMSD.
Β. Συσταδοποίηση με την προσέγγιση k-medoids με χρήση της απόστασης Discrete Frechét. Πριν τον υπολογισμό της απόστασης οι διαμορφώσεις μετατοπίζονται και περιστρέφονται με κριτήριο την ελαχιστοποίηση της απόστασης c-RMSD.
Σε κάθε περίπτωση γίνεται εύρεση του βέλτιστου k μέσω του μέτρου silhouette.
Έγινε λήψη των χαρτογραφικών δεδομένων της πλατφόρμας Open Street Map για την περιοχή της Αθήνας και κατάτμηση των οδών σε τμήματα. Οι οδοί κατατέμνονται στα σημεία που ακολουθούν διασταυρώσεις ή όταν αλλάζει η καμπυλότητά τους πάνω από ένα κατώφλι. Τα οδικά τμήματα αποθηκεύονται σε αρχείο segment.csv
Σύνδεσμοι για τον parser και τα αρχεία athens.csv και crossroads.csv (χρησιμοποιούνται και τα δύο για την παραγωγή του segment.csv) : https://www.dropbox.com/s/q60nrpjd77r9jpg/osmParser.zip?dl=0 https://www.dropbox.com/s/eqxb2pbs4p444cd/athens.zip?dl=0 https://www.dropbox.com/s/v9mbbnul2i8sdcs/crossroads.zip?dl=0
Συσταδοποίηση σε k συστάδες, για δοσμένο k, με αλγόριθμο k-medoids και χρήση των αποστάσεων Discrete Frechét και DTW. Πριν τον υπολογισμό της απόστασης οι πολυγωνικές καμπύλες μετατοπίζονται και περιστρέφονται με κριτήριο την ελαχιστοποίηση της απόστασης c-RMSD. Εύρεση του βέλτιστου k μέσω του μέτρου αξιολόγησης silhouette.
proteins.cpp : main για τη συσταδοποίηση μοριακών διαμορφώσεων, εκτελεί και τα δύο υποερωτήματα στη σειρά
segmentation.cpp : χρησιμοποιείται για την παραγωγή του αρχείου segment.csv
roads.cpp : main για την συσταδοποίηση οδικών τμημάτων με χρήση cRMSD
roadsLSH.cpp : main για την LSH συσταδοποίηση οδικών τμημάτων
curve.cpp, curve.h : Κλάση για δημιουργία αντικειμένου που αντιπροσωπεύει μία καμπύλη.
curveList.cpp, curveList.h : Δομή λίστας στην οποία αποθηκεύονται τα curves.
limits.cpp, limits.h : χρησιμοποιούνται για να υπολογιστούν τα όρια μέσα στα οποία θα κινούνται τα σημεία του grid
grid.cpp, grid.h : Αναπαράσταση grid ως τετραδιάστατο πίνακα στον οποίο ανάλογα με τις διαστάσεις που δίνονται γεμίζουμε τα αντίστοιχα σημεία
gridCurve.cpp, gridCurve.h : αναπαράσταση των καμπυλών πλέγματος ως μία λίστα με αποφυγή διαδοχικών διπλοτύπων
bucketList.cpp, bucketList.h : λίστα από bucket nodes του hash table
distanceFunctions.cpp, distanceFunctions.h : συναρτήσεις ευκλείδειας απόστασης, Frechet, Warping και cRMSD
hashFunctions.cpp, hashFunctions.h : χρήση μόνο συνάρτησης κατακερματισμού LSH
hashTable.cpp, hashTable.h : δημιουργία hash table, εισαγωγή στοιχείου και αναζητήσεις
assignment.cpp, assignment.h : Περιέχει συναρτήσεις για ανάθεση αντικειμένων σε cluster σύμφωνα με τις μεθόδους Llloyd’s ή ANN Range Search. Για τη δεύτερη μέθοδο χρησιμοποιούνται οι κατάλληλες συναρτήσεις από την πρώτη εργασία για δημιουργία lsh πινάκων.
clusterInfo.cpp, clusterInfo.h : Αναπαράσταση cluster ως κλάση που περιέχει μία καμπύλη κέντρο και μια λίστα με τα αντικείμενα που ανήκουν σε αυτό.
evaluation.cpp, evaluation.h : Συνάρτηση Silhouette
initialization.cpp, initialization.h : Συναρτήσεις για αρχική επιλογή κέντρων των cluster με τυχαία επιλογή ή την μέθοδο k-means++
update.cpp, update.h : Συναρτήσεις για ενημέρωση κέντρων των cluster σύμφωνα με τις μεθόδους Mean Frechet ή PAM.