dtw(a, B) = dtw(a n, B m )

Σχετικά έγγραφα
M i,0 = fw(0, ), 0 i nfl M i,j = min. MinCost = nfl. min

city9 city8 city6 city7 city5 28 city3 25 city1 city0 P ijk =

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Crossword1.txt, Crossword2.txt, Crossword3.txt, Crossword4.txt και Crossword5.txt, $ cat Crossword1.txt $

ΘΕΜΑ Α. Α2. Να αναφέρετε από τι εξαρτάται η επιλογή του καλύτερου αλγορίθμου ταξινόμησης. Μονάδες 4. Σελίδα 1 από 8

Να το ξαναγράψετε χρησιμοποιώντας αντί για την εντολή Για Τέλος_επανάληψης: α. την εντολή Όσο Τέλος_επανάληψης

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΘΕΜΑ Α

ΔΙΑΦΟΡΑ ΘΕΜΑΤΑ. Ως «γειτονικά» ορίζονται τα κελιά που συγγενεύουν οριζόντια, κάθετα και διαγώνια. Για παράδειγμα γειτονικά του Α[3,3] είναι τα:

Παράλληλη Επεξεργασία Εργαστηριακή Ασκηση Εαρινού Εξαµήνου 2008

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

Θέμα Α Α3.1 ΤΕΛΟΣ 1ΗΣ ΑΠΟ 9 ΣΕΛΙΔΕΣ

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Θέματα ΑΕΠΠ Πανελλήνιες Εξετάσεις 2008

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

Δομές Δεδομένων. Τι είναι η δομή δεδομένων; Έστω η ακολουθία αριθμών: 8, 10,17,19,22,5,12 Λογικό Επίπεδο. Φυσικό Επίπεδο RAM. Ταξινομημένος.

ΑΡΧΗ 2ΗΣ ΣΕΛΙΔΑΣ Γ Α... Β

A. Να γράψετε τον αριθμό της κάθε μιας από τις παρακάτω προτάσεις και δίπλα. το γράμμα Σ, εάν είναι σωστή, ή το γράμμα Λ, εάν είναι λανθασμένη.

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον 2o Επαναληπτικό Διαγώνισμα Κεφ: 2 ο 7 ο 8 ο ΗΜΕΡΟΜΗΝΙΑ 21/ 10/ 2017

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 18/12/12, 22:00

ΚΕΦΑΛΑΙΑ 3 & 9 (ΠΙΝΑΚΕΣ)

ΦΡΟΝΤΙΣΤΗΡΙΟ Μ.Ε. «ΠΕΡΙ ΓΝΩΣΕΩΣ»

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

$ hostname linux29 $ $./purerecrobot C..C.C.....C.C..C..C...C. Running purerecursive Maximum number of coins to pick up is: 5 $ $ cat

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΔΙΑΓΩΝΙΣΜΑ ΣΤΟ ΜΑΘΗΜΑ Α.Ε.Π.Π. ΟΝΟΜΑ

Γ' ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΚΦΩΝΗΣΕΙΣ

Διαγώνισμα Ανάπτυξης Εφαρμογών Σε Προγραμματιστικό Περιβάλλον

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

1 Αριθμητική κινητής υποδιαστολής και σφάλματα στρογγύλευσης

Περιγραφή των Δεδομένων

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

Εισαγωγή στις Αρχές της επιστήμης των ΗΥ

ΑΕΠΠ Ερωτήσεις θεωρίας

Επαναληπτικές Διαδικασίες

Β Ομάδα Ασκήσεων "Λογικού Προγραμματισμού" Ακαδημαϊκού Έτους

Εισαγωγή στις Αρχές της Επιστήμης των Υπολογιστών

Α2. Να γράψετε στο τετράδιο σας τον αριθμό 1-4 κάθε πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

ΘΕΜΑ 1 ο. Στήλη Β Προτάσεις. β. Ο βρόχος επανάληψης τερµατίζεται, όταν η συνθήκη είναι αληθής. όταν η συνθήκη είναι ψευδής.

Β.1. i. Να εξηγήσετε τι εννοούμε με τον όρο μεταφερσιμότητα των προγραμμάτων. Μονάδες 3

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: 5/12/10, 23:59

Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και τον αντίστοιχο χαρακτηρισμό ( Σ - σωστό, Λ - λάθος)

Α2. Να γράψετε στο τετράδιο απαντήσεών σας το κατάλληλο τμήμα κώδικα, κάνοντας τις απαραίτητες αλλαγές σύμφωνα με την εκάστοτε εκφώνηση:

5.1. Προσδοκώμενα αποτελέσματα

Β Ομάδα Ασκήσεων "Λογικού Προγραμματισμού" Ακαδημαϊκού Έτους

ΘΕΜΑ 1ο. Μονάδες 10. Β. ίνεται το παρακάτω τμήμα αλγορίθμου: Όσο Ι < 10 επανάλαβε Εμφάνισε Ι Ι Ι + 3 Τέλος_επανάληψης ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ

Αριθμητική Ανάλυση & Εφαρμογές

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

ΘΕΜΑ 1ο. Μονάδες 10. Β. ίνεται το παρακάτω τμήμα αλγορίθμου: Όσο Ι < 10 επανάλαβε Εμφάνισε Ι Ι Ι + 3 Τέλος_επανάληψης ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ ΘΕΜΑ Α

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Ονοματεπώνυμο: Βαθμός:

Γ ΤΑΞΗ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ÑÏÌÂÏÓ

ΕΡΓΑΣΙΑ 1 Ημερομηνία Ανάρτησης: 02/02/2017 Ημερομηνία Παράδοσης: 16/02/2017, 09:00 π.μ. Στόχος Ορισμός

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος


Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Εργαστήριο 2. Εαρινό Εξάμηνο Εντολές για είσοδο ακεραίων αριθμών από την κονσόλα:

Θέματα ΑΕΠΠ Πανελλήνιες Εξετάσεις 2006

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΡΤΙΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 6 (ΕΞΙ)

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΣΑΒΒΑΤΟ 31 MAΪΟΥ ΑΕΠΠ

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 2 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ' ΛΥΚΕΙΟΥ ΤΕΧΝ/ΚΗΣ ΚΑΤ/ΝΣΗΣ (Πλ. & Υπ.) 2006 ΕΚΦΩΝΗΣΕΙΣ ÈÅÌÅËÉÏ

ΦΡΟΝΤΙΣΤΗΡΙΑ ΠΡΟΟΔΟΣ

Προγραμματισμός ΙI (Θ)

επιµέλεια Θοδωρής Πιερράτος

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

Λογικός Προγραμματισμός Ασκήσεις

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2019 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ (ΚΥΚΛΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΗΡΕΣΙΩΝ) 2008

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ 2012

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. Για i από 1 μέχρι Μ Εμφάνισε A[4,i] Τέλος_επανάληψης. (μονάδες 6) ΤΕΛΟΣ 1ης ΑΠΟ 7 ΣΕΛΙΔΕΣ

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Δομημένος Προγραμματισμός (ΤΛ1006)

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

ΕΡΓΑΣΙΕΣ ΟΝΤΟΚΕΝΤΡΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΤΕΛΙΚΟ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΕΧΝΟΛΟΓΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ

Σειρά Προβλημάτων 5 Λύσεις

Τρίτη, 1 Ιουνίου 2004 ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ Γ ΛΥΚΕΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ

ΘΕΜΑ 1 ο ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Γ ΛΥΚΕΙΟΥ 3 ΩΡΕΣ

Αλγοριθμικές Τεχνικές

2.0 ΔΙΑΝΥΣΜΑΤΙΚΟΙ ΧΩΡΟΙ ΚΑΙ ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ

Ανακτήθηκε από την ΕΚΠΑΙΔΕΥΤΙΚΗ ΚΛΙΜΑΚΑ edu.klimaka.gr ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

Transcript:

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ (2016-17) Εργασία 3 Η εργασία αυτή εντάσσεται στις περιοχές της Επιστήμης των Υπολογιστών που ονομάζονται μηχανική μάθηση (machine learning) και εξόρυξη δεδομένων (data mining), για τις οποίες θα συζητήσετε εκτενέστερα σε μαθήματα επιλογής επόμενων εξαμήνων. Αντικείμενο της εργασίας είναι η κατηγοριοποίηση χρονοσειρών (time-series classification), εϕαρμόζοντας τον αλγόριθμο DTW της δυναμικής στρέβλωσης του χρόνου (dynamic time warping) για την εύρεση του βαθμού ομοιότητας δύο χρονοσειρών. Μία χρονοσειρά είναι μία ακολουθία τιμών ενός μεγέθους σε διαδοχικές ισαπέχουσες χρονικές στιγμές. Για παράδειγμα, για δεδομένα χρονικά διαστήματα, οι μέγιστες ημερήσιες θερμοκρασίες σε μία περιοχή, οι ημερήσιες τιμές κλεισίματος μίας μετοχής, οι τιμές της στιγμιαίας ταχύτητας ενός κινητού μετρημένες ανά δευτερόλεπτο, κλπ. είναι χρονοσειρές. Επίσης, κάθε χρονοσειρά από ένα σύνολο χρονοσειρών συγκεκριμένου τύπου, π.χ. χρονοσειρές μετοχών, μπορεί να ανήκει σε κάποια κατηγορία/κλάση (class), όπως τραπεζικές μετοχές, μετοχές κλάδου ενέργειας, μετοχές εταιρειών τηλεπικοινωνιών, κλπ. Εστω δύο χρονοσειρές A και B που έχουν ως στοιχεία τα a i (1 i n) και b j (1 j m), αντίστοιχα. Συμβολίζουμε με A i (1 i n) τη χρονοσειρά που περιλαμβάνει τα i πρώτα στοιχεία της A. Ομοίως, συμβολίζουμε με B j (1 j m) τη χρονοσειρά που περιλαμβάνει τα j πρώτα στοιχεία της B. Η απόσταση DTW των χρονοσειρών A i και B j συμβολίζεται με dtw(a i, B j ) και ορίζεται στη συνέχεια, θεωρώντας ότι d(a i, b j ) = (a i b j ) 2 και ότι το min{x, y, z} είναι το ελάχιστο των x, y και z. d(a i, b j ) + min{dtw(a i 1, B j ), dtw(a i, B j 1 ), dtw(a i 1, B j 1 )} αν 1 < i n, 1 < j m d(a dtw(a i, B j ) = 1, b j ) + dtw(a 1, B j 1 ) αν i = 1, 1 < j m d(a i, b 1 ) + dtw(a i 1, B 1 ) αν 1 < i n, j = 1 d(a 1, b 1 ) αν i = 1, j = 1 Η απόσταση DTW των χρονοσειρών A και B ισούται, προϕανώς, με: Αναδρομική υλοποίηση (10%) dtw(a, B) = dtw(a n, B m ) Γράψτε ένα πρόγραμμα C το οποίο να διαβάζει από την είσοδο δύο χρονοσειρές και να υπολογίζει, με τη βοήθεια μίας αναδρομικής συνάρτησης dtwrec, που θα βασίζεται στο σκεπτικό που αναϕέρθηκε προηγουμένως, την απόσταση DTW των δύο χρονοσειρών. Αρχικά, το πρόγραμμα να διαβάζει σε μία γραμμή τα μήκη των δύο χρονοσειρών και στις επόμενες δύο γραμμές τα στοιχεία των χρονοσειρών αυτών (ως double). Στο πρόγραμμά σας δεν επιτρέπεται να ορίσετε άλλους πίνακες εκτός από αυτούς που χρειάζονται για τη ϕύλαξη των στοιχείων των χρονοσειρών. Αν το εκτελέσιμο πρόγραμμα που θα κατασκευάσετε τελικά ονομάζεται distdtwrec, ενδεικτικές εκτελέσεις του ϕαίνονται στη συνέχεια. hostname linux29 time./distdtwrec 3 1.0 2.0 0.0

-2.0 0.0 1.0 3.0 1.0 Distance of time series is 12.000000 0.000u 0.000s 0:10.97 0.0% 0+0k 0+0io 0pf+0w time./distdtwrec 6 10 1.0 2.0 0.0 1.0 2.0 0.0-2.0 0.0 1.0 3.0 1.0-2.0 0.0 1.0 3.0 1.0 Distance of time series is 18.000000 4.004u 0.000s 0:13.94 28.6% 0+0k 0+0io 0pf+0w time./distdtwrec 8 10 1.0 2.0 0.0 1.0 2.0 0.0 1.0-1.0-2.0 0.0 1.0 3.0 1.0-2.0 0.0 1.0 3.0 1.0 Distance of time series is 22.000000 83.937u 0.004s 1:47.24 78.2% 0+0k 0+0io 0pf+0w Επαναληπτική υλοποίηση Δυναμικός προγραμματισμός (1%) Παρατηρήστε στις ενδεικτικές εκτελέσεις του προγράμματος distdtwrec την απότομη αύξηση του χρόνου εκτέλεσης όταν τα μήκη των χρονοσειρών δεν είναι πλέον πάρα πολύ μικρά. Εχετε κάποια εξήγηση γι αυτό; Για την αντιμετώπιση αυτού του προβλήματος, δώστε μία εναλλακτική υλοποίηση του υπολογισμού της απόστασης DTW δύο χρονοσειρών μέσω μίας συνάρτησης dtwdp η οποία θα λειτουργεί επαναληπτικά με τον εξής τρόπο. Με τη βοήθεια ενός δισδιάστατου πίνακα θα υπολογίζει και θα αποθηκεύει όλες τις τιμές των dtw(a i, B j ), για κάθε i και j, μία ϕορά την κάθε μία. Η τεχνική αυτή, που ουσιαστικά υλοποιεί μία αναδρομική σχέση, αποϕεύγοντας τη χρήση αναδρομής, ονομάζεται δυναμικός προγραμματισμός (dynamic programming). Αν το εκτελέσιμο πρόγραμμα που θα κατασκευάσετε τελικά ονομάζεται distdtwdp, ενδεικτικές εκτελέσεις του ϕαίνονται στη συνέχεια. hostname linux29 time./distdtwdp 3 1.0 2.0 0.0-2.0 0.0 1.0 3.0 1.0 Distance of time series is 12.000000 0.000u 0.000s 0:14.46 0.0% 0+0k 0+0io 0pf+0w time./distdtwdp 6 10 1.0 2.0 0.0 1.0 2.0 0.0-2.0 0.0 1.0 3.0 1.0-2.0 0.0 1.0 3.0 1.0 Distance of time series is 18.000000 0.000u 0.000s 0:02.38 0.0% 0+0k 0+0io 0pf+0w

time./distdtwdp 8 10 1.0 2.0 0.0 1.0 2.0 0.0 1.0-1.0-2.0 0.0 1.0 3.0 1.0-2.0 0.0 1.0 3.0 1.0 Distance of time series is 22.000000 0.000u 0.000s 0:23.34 0.0% 0+0k 0+0io 0pf+0w time./distdtwdp 20 20 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 Distance of time series is 20.000000 0.000u 0.000s 0:04.7 0.0% 0+0k 0+0io 0pf+0w Συγχώνευση των μεθόδων σε ενιαίο πρόγραμμα (%) Υλοποιήσατε δύο διαϕορετικές μεθόδους εύρεσης της απόστασης DTW δύο χρονοσειρών, μέσω των συναρτήσεων dtwrec και dtwdp. Μπορείτε να οργανώσετε έτσι τον κώδικά σας σε ένα ενιαίο πηγαίο αρχείο, έστω με όνομα distdtw.c, ώστε τελικά να καλείται για την επίλυση του προβλήματος η κατάλληλη συνάρτηση μεταξύ των δύο, ανάλογα με το αν έχει ορισθεί μία συμβολική σταθερά με όνομα REC. Δηλαδή, αν έχει ορισθεί η σταθερά αυτή, να καλείται η dtwrec, αλλιώς η dtwdp. Για το πώς μπορεί να γίνει αυτό, δείτε τα σχετικά με #ifdef και #endif στη σελίδα 19 των σημειώσεων/διαϕανειών του μαθήματος. Άπαξ και γίνει η συγχώνευση, μπορείτε να δημιουργήσετε τα εκτελέσιμα που αντιστοιχούν σε κάθε μέθοδο ως εξής: gcc -o distdtwrec distdtw.c -DREC gcc -o distdtwdp distdtw.c Απόσταση DTW υπό περιορισμό (20%) Συνήθως, όταν μας ενδιαϕέρει να βρούμε την απόσταση DTW δύο χρονοσειρών, αυτές έχουν το ίδιο μήκος. Στην περίπτωση αυτή, είναι πολύ πιθανό να θεωρούμε ότι δεν είναι λογικό να συνεισϕέρουν στην απόσταση των δύο χρονοσειρών και οι αποστάσεις στοιχείων τους που είναι σε αρκετά απομακρυσμένες θέσεις. Τότε, βάζουμε ένα όριο (περιορισμό) c στην απόσταση των θέσεων δύο στοιχείων a i και b j, δηλαδή στο i j, για να μπορεί να συνεισϕέρει η απόστασή τους στην απόσταση DTW των χρονοσειρών. Για την παραλλαγή αυτή, ισχύει ακριβώς ο ίδιος ορισμός για το dtw(a i, B j ) που δόθηκε προηγουμένως, μόνο που τώρα έχουμε: d(a i, b j ) = { (ai b j ) 2 αν i j c + αν i j > c Τροποποιήστε το πρόγραμμα που έχετε ήδη γράψει, συντάσσοντας ένα καινούργιο πηγαίο, έστω με όνομα distcdtw.c, το οποίο να έχει τη δυνατότητα να δεχθεί από τη γραμμή εντολής ένα μη αρνητικό ακέραιο ως όρισμα. Το όρισμα αυτό, όταν δίνεται, να αντιπροσωπεύει το όριο/περιορισμό c που θα χρησιμοποιηθεί στον υπολογισμό της απόστασης DTW υπό περιορισμό δύο χρονοσειρών. Αν δεν δοθεί όρισμα, να θεωρείται ότι το c ισούται με +, το οποίο πρακτικά σημαίνει ότι η απόσταση των στοιχείων a i και b j θα είναι πάντοτε (a i b j ) 2. Το πρόγραμμα να διαβάζει από την είσοδο

το κοινό μήκος δύο χρονοσειρών και στη συνέχεια, σε δύο γραμμές, τα στοιχεία των χρονοσειρών αυτών. Επίσης, στο πρόγραμμα να επιλέγεται ποια από τις δύο μεθόδους (αναδρομική ή δυναμικού προγραμματισμού) θα είναι ενεργοποιημένη μέσω του ορισμού (ή όχι) της συμβολικής σταθεράς REC, έτσι ώστε να μπορεί να προκύψει κατά τη μεταγλώττιση και σύνδεση το κατάλληλο εκτελέσιμο αρχείο. Παραδείγματα εκτέλεσης για την παραλλαγή του υπολογισμού απόστασης DTW υπό περιορισμό είναι τα εξής: hostname linux29 gcc -o distcdtwrec distcdtw.c -DREC gcc -o distcdtwdp distcdtw.c./distcdtwrec Distance of time series is 20.000000./distcdtwrec 1 Distance of time series is 27.000000./distcdtwrec 0 Distance of time series is 37.000000./distcdtwdp Distance of time series is 20.000000./distcdtwdp 1 Distance of time series is 27.000000./distcdtwdp 0 Distance of time series is 37.000000 time./distcdtwrec

9 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 Distance of time series is 9.000000 32.238u 0.000s 0:3.49 90.8% 0+0k 0+0io 0pf+0w time./distcdtwdp 9 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 Distance of time series is 9.000000 0.000u 0.000s 0:14.14 0.0% 0+0k 16+0io 0pf+0w Κατηγοριοποίηση χρονοσειρών (0% + 0% + 20%) Το τελικό πρόγραμμα που καλείσθε να αναπτύξετε και να παραδώσετε σχετίζεται με την κατηγοριοποίηση χρονοσειρών. Δηλαδή, έχοντας διαθέσιμο ένα σύνολο από χρονοσειρές, όπου κάθε μία ανήκει σε μία εκ των προτέρων γνωστή κατηγορία/κλάση, επιθυμούμε να μπορούμε για μία χρονοσειρά που δεν γνωρίζουμε σε ποια κλάση ανήκει (ή, και αν γνωρίζουμε, το αγνοούμε), να την εντάξουμε σε κάποια κλάση. Η ένταξή της γίνεται στην κλάση στην οποία ανήκει εκείνη από τις χρονοσειρές για τις οποίες γνωρίζουμε την κλάση τους που είναι πλησιέστερη, με μέτρο την απόσταση DTW, στη χρονοσειρά με άγνωστη κλάση. Στη συνέχεια περιγράϕονται τα χαρακτηριστικά του προγράμματος που καλείσθε να υλοποιήσετε. Το πρόγραμμα πρέπει να μπορεί να δέχεται στη γραμμή εντολής ένα μη αρνητικό ακέραιο που θα είναι το όριο/περιορισμός για τον υπολογισμό των αποστάσεων DTW, όπου αυτές χρειάζονται στη συνέχεια. Αν δεν δοθεί όρισμα, θεωρείται ότι δεν υπάρχει περιορισμός (ή, ισοδύναμα, αυτό είναι το + ). Το πρόγραμμα πρέπει μέσω του ορισμού ή όχι της συμβολικής σταθεράς REC να μπορεί να λειτουργεί είτε με την αναδρομική μέθοδο, είτε με αυτήν του δυναμικού προγραμματισμού. Η είσοδος του προγράμματος θα είναι η εξής: Αρχικά δίνονται σε μία γραμμή το πλήθος των χρονοσειρών με γνωστή κλάση, δηλαδή του συνόλου εκπαίδευσης (training set), και το μήκος των χρονοσειρών αυτών, που είναι το ίδιο για όλες τις χρονοσειρές. Στη συνέχεια, δίνονται κατά γραμμές τα δεδομένα για κάθε χρονοσειρά, που περιλαμβάνουν αρχικά την κλάση της χρονοσειράς (ένας ακέραιος) και τα στοιχεία της. Ακολουθούν τα δεδομένα για τις χρονοσειρές που αποτελούν το σύνολο ελέγχου (test set), που δίνονται στην ίδια μορϕή με αυτή του συνόλου εκπαίδευσης. Δηλαδή, αρχικά δίνονται σε μία γραμμή το πλήθος των χρονοσειρών του συνόλου ελέγχου και το μήκος των χρονοσειρών αυτών (ίδιο για όλες, επίσης). Στη συνέχεια, δίνονται κατά γραμμές και τα δεδομένα για τις χρονοσειρές ελέγχου. Και γι αυτές σαν πρώτο στοιχείο θα δίνεται η κλάση τους, παρότι υποτίθεται ότι δεν την γνωρίζουμε. Ο λόγος που δίνεται είναι για να μπορούμε να ελέγξουμε εκ των υστέρων τον βαθμό επιτυχίας της μεθόδου κατηγοριοποίησης χρονοσειρών που βασίζεται στην απόσταση DTW. Θα πρέπει να σημειωθεί ότι το μήκος των χρονοσειρών ελέγχου πρέπει να είναι το ίδιο με το μήκος των χρονοσειρών εκπαίδευσης, διαϕορετικά το πρόγραμμα θα πρέπει να τερματίζει με κάποιο μήνυμα λάθους. Για κάθε χρονοσειρά από το σύνολο ελέγχου, το πρόγραμμα θα πρέπει να βρίσκει την πλησιέστερη με αυτήν από το σύνολο εκπαίδευσης, με βάση την απόσταση DTW μεταξύ τους (με ή

χωρίς περιορισμό, ανάλογα με το αν έχει δοθεί όρισμα στη γραμμή εντολής ή όχι), οπότε να κατατάσσει τη χρονοσειρά ελέγχου στην κλάση στην οποία ανήκει η πλησιέστερή της στο σύνολο εκπαίδευσης. Αν η κατάταξη αυτή είναι λάθος, με βάση την κλάση στην οποία γνωρίζουμε ότι ανήκει η χρονοσειρά ελέγχου (αλλά δεν χρησιμοποιήσαμε κατά την κατηγοριοποίηση), θεωρούμε ότι έχουμε μία αποτυχία. Αϕού το πρόγραμμα κατηγοριοποιήσει με αυτόν τον τρόπο όλες τις χρονοσειρές ελέγχου, να εκτυπώνει και το σϕάλμα της κατηγοριοποίησης ως το πηλίκο του πλήθος των αποτυχιών προς το πλήθος των χρονοσειρών ελέγχου. Είναι προϕανές ότι όταν οι χρονοσειρές έχουν μεγάλο πλήθος στοιχείων, η αναδρομική μέθοδος δεν μπορεί να δώσει αποτέλεσμα, όπως έχετε ήδη παρατηρήσει. Δεν ζητείται να κάνετε κάτι γι αυτό (δεν είναι δυνατόν, άλλωστε). Ομως, αν τα σύνολα εκπαίδευσης και ελέγχου περιέχουν μεγάλο αριθμό χρονοσειρών με πολύ μεγάλο πλήθος στοιχείων, ενδέχεται και η μέθοδος του δυναμικού προγραμματισμού να έχει πρόβλημα στην απόδοση. Σκεϕτείτε ότι για την εύρεση της απόστασης δύο χρονοσειρών μήκους N, ο προϕανής τρόπος υλοποίησης θα έχει πολυπλοκότητα χρόνου O(N 2 ). Είναι δυνατόν όμως, αν έχει δοθεί όριο/περιορισμός c, ο αλγόριθμος να έχει πολυπλοκότητα χρόνου O(cN). Είναι ζητούμενο της εργασίας να υλοποιήσετε τη γρήγορη εκδοχή της μεθόδου του δυναμικού προγραμματισμού (η υιοθέτηση της αργής εκδοχής θα επιϕέρει μείωση στη βαθμολογία κατά 10%). Είναι εύκολο να δει κανείς ότι ο προϕανής τρόπος υλοποίησης θα έχει πολυπλοκότητα μνήμης O(N 2 ). Σε περιπτώσεις χρονοσειρών με εξαιρετικά μεγάλο πλήθος στοιχείων (π.χ. > 100000), θα υπάρχει πρόβλημα μνήμης. Είναι δυνατόν όμως να υλοποιηθεί η μέθοδος του δυναμικού προγραμματισμού για το πρόβλημα αυτό με πολυπλοκότητα μνήμης O(N). Δεν απαιτείται στα ζητούμενα της εργασίας να υλοποιηθεί η οικονομική εκδοχή της μεθόδου του δυναμικού προγραμματισμού, αν όμως αυτό γίνει, μπορεί να οδηγήσει σε bonus στη βαθμολογία της άσκησης μέχρι και 20%. Θα πρέπει να δομήσετε το πρόγραμμά σας σε ένα σύνολο από τουλάχιστον δύο πηγαία αρχεία C (με κατάληξη.c) και τουλάχιστον ένα αρχείο επικεϕαλίδας (με κατάληξη.h). Δεδομένου ότι το πρόγραμμα που καλείσθε να αναπτύξετε και να παραδώσετε υπερκαλύπτει τη λειτουργικότητα των προγραμμάτων που περιγράϕηκαν σε προηγούμενες ενότητες και ζητούσαν απλώς την εύρεση της DTW απόστασης (με ή χωρίς περιορισμό) μεταξύ δύο χρονοσειρών, δεν χρειάζεται να παραδώσετε τα προηγούμενα προγράμματα. Αυτό θα το κάνετε μόνο αν δεν ολοκληρώσετε το πρόγραμμα για την κατηγοριοποίηση χρονοσειρών, ώστε να πάρετε το μέρος της βαθμολογίας της εργασίας που θα αντιστοιχεί σε ό,τι παραδώσατε. Η έννοια των ποσοστών στον τίτλο της ενότητας είναι ότι το πρώτο 0% αναϕέρεται στα ζητούμενα των προηγούμενων ενοτήτων, το δεύτερο 0% στην υλοποίηση της κατηγοριοποίησης χρονοσειρών που ζητήθηκε σ αυτή την ενότητα και το 20% αναϕέρεται στην ενδεχόμενη υλοποίηση της οικονομικής εκδοχής σε μνήμη. Παραδείγματα εκτέλεσης του προγράμματος, μόνο της εκδοχής του δυναμικού προγραμματισμού, αϕού για την αναδρομική δεν υπάρχει ελπίδα τερματισμού σε πεπερασμένο χρόνο για χρονοσειρές μη τετριμμένου μεγέθους, δίνονται στη συνέχεια. Τα αρχεία δεδομένων μπορείτε να τα κατεβάσετε από τις διευθύνσεις http://www.di.uoa.gr/~ip/hwfiles/dtw/train FaceFour.txt http://www.di.uoa.gr/~ip/hwfiles/dtw/test FaceFour.txt http://www.di.uoa.gr/~ip/hwfiles/dtw/train ECG000.txt http://www.di.uoa.gr/~ip/hwfiles/dtw/test ECG000.txt http://www.di.uoa.gr/~ip/hwfiles/dtw/bigseries.txt

Από την ιστοσελίδα http://www.cs.ucr.edu/~eamonn/time series data/ μπορείτε να κατεβάσετε πολλά αρχεία δεδομένων με χρονοσειρές. Για να μετατρέψετε τα αρχεία αυτά στη μορϕή που απαιτείται για την εργασία, μπορείτε να χρησιμοποιήσετε το πρόγραμμα κελύϕους από τη διεύθυνση http://www.di.uoa.gr/~ip/hwfiles/dtw/convform hostname linux29 cat train_facefour.txt test_facefour.txt./dtwdp Series 1 (class 3) is nearest (distance 84.826912) to series 1 (class 3) Series 2 (class 1) is nearest (distance 14.78062) to series 22 (class 1) Series 3 (class 2) is nearest (distance 32.433863) to series 1 (class 2) Series 4 (class 4) is nearest (distance 36.686934) to series 23 (class 2) Series (class 1) is nearest (distance 10.463726) to series 22 (class 1)... Series 86 (class 4) is nearest (distance 11.613004) to series 6 (class 4) Series 87 (class 2) is nearest (distance 26.171747) to series 14 (class 2) Series 88 (class 4) is nearest (distance 16.11664) to series 11 (class 4) Error rate: 0.170 CPU time:.49 secs cat train_facefour.txt test_facefour.txt./dtwdp 0 Series 1 (class 3) is nearest (distance 428.32433) to series 17 (class 3) Series 2 (class 1) is nearest (distance 90.726199) to series 22 (class 1) Series 3 (class 2) is nearest (distance 271.997783) to series 3 (class 1) Series 4 (class 4) is nearest (distance 202.823627) to series 11 (class 4) Series (class 1) is nearest (distance 79.813) to series 24 (class 1)... Series 86 (class 4) is nearest (distance 38.488262) to series 6 (class 4) Series 87 (class 2) is nearest (distance 14.1277) to series 16 (class 2) Series 88 (class 4) is nearest (distance 94.73967) to series 7 (class 4) Error rate: 0.216 CPU time: 0.03 secs cat train_facefour.txt test_facefour.txt./dtwdp 7 Series 1 (class 3) is nearest (distance 143.983927) to series 1 (class 3) Series 2 (class 1) is nearest (distance 14.906337) to series 22 (class 1) Series 3 (class 2) is nearest (distance 37.187481) to series 1 (class 2) Series 4 (class 4) is nearest (distance 3.81606) to series 6 (class 4) Series (class 1) is nearest (distance 10.693162) to series 22 (class 1)... Series 86 (class 4) is nearest (distance 11.613004) to series 6 (class 4) Series 87 (class 2) is nearest (distance 48.6023) to series 14 (class 2) Series 88 (class 4) is nearest (distance 16.670844) to series 7 (class 4) Error rate: 0.114

CPU time: 0.26 secs cat train_ecg000.txt test_ecg000.txt./dtwdp > /dev/null Error rate: 0.076 CPU time: 934.48 secs cat train_ecg000.txt test_ecg000.txt./dtwdp 0 > /dev/null Error rate: 0.07 CPU time: 11.0 secs cat train_ecg000.txt test_ecg000.txt./dtwdp 4 > /dev/null Error rate: 0.076 CPU time: 21.41 secs./dtwdp 000 < bigseries.txt Series 1 (class 1) is nearest (distance 1181916.309344) to series 1 (class 1) Error rate: 0.000 CPU time: 30.3 seconds Παραδοτέο Για να παραδώσετε το σύνολο των αρχείων που θα έχετε δημιουργήσει για την άσκηση αυτή, ακολουθήστε την εξής διαδικασία. Τοποθετήστε όλα τα αρχεία μέσα σ ένα κατάλογο που θα δημιουργήσετε, έστω με όνομα dtw, στους σταθμούς εργασίας του Τμήματος. Χρησιμοποιώντας την εντολή zip ως εξής zip -r dtw.zip dtw δημιουργείτε ένα συμπιεσμένο (σε μορϕή zip) αρχείο, με όνομα dtw.zip, στο οποίο περιέχεται ο κατάλογος dtw μαζί με όλα τα περιεχόμενά του. 1 Το αρχείο αυτό είναι που θα πρέπει να υποβάλετε μέσω του eclass. 2 1 Αρχεία zip μπορείτε να δημιουργήσετε και στα Windows, με διάϕορα προγράμματα, όπως το WinZip. 2 Μην υποβάλετε ασυμπίεστα αρχεία ή αρχεία που είναι συμπιεσμένα σε άλλη μορϕή εκτός από zip (π.χ. rar, 7z, tar, gz, κλπ.), γιατί δεν θα γίνουν δεκτά για αξιολόγηση.