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

Σχετικά έγγραφα
Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις

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

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους

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

Διοικητική Λογιστική

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Εισαγωγή στους Αλγορίθμους

Ψηφιακή Επεξεργασία Εικόνων

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Κβαντική Επεξεργασία Πληροφορίας

Εισαγωγή στους Υπολογιστές

Αλγόριθμοι και πολυπλοκότητα Συγχωνευτική Ταξινόμηση

Κβαντική Επεξεργασία Πληροφορίας

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Μηχανολογικό Σχέδιο Ι

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Βάσεις Περιβαλλοντικών Δεδομένων

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Πληροφορική ΙΙ Θεματική Ενότητα 5

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

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές Δεδομένων. Ιωάννης Γ. Τόλλης Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης

Διοικητική Λογιστική

Δομές Δεδομένων Ενότητα 1

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

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Αλγόριθμοι και πολυπλοκότητα Δυναμικός Προγραμματισμός

Δομές Δεδομένων Ενότητα 3

Κβαντική Επεξεργασία Πληροφορίας

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Βάσεις Περιβαλλοντικών Δεδομένων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εισαγωγή στους Υπολογιστές

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Προγραμματισμός Η/Υ. 4 η ενότητα: Δομές Δεδομένων. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Τεχνικό Σχέδιο - CAD

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

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

Θέματα Εφαρμοσμένης. Ενότητα 14.2: Η ψήφος στα πρόσωπα. Θεόδωρος Χατζηπαντελής Τμήμα Πολιτικών Επιστημών ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

Εννοιες και Παράγοντες της Ψηφιακής Επεξεργασίας Εικόνας

Τεχνικό Σχέδιο - CAD

Τεχνικό Σχέδιο - CAD. Τόξο Κύκλου. Τόξο Κύκλου - Έλλειψη. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Δομημένος Προγραμματισμός

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Ψηφιακή Επεξεργασία Εικόνων

Ψηφιακή Επεξεργασία Εικόνων

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 5

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Ιστορία της μετάφρασης

Τεχνολογία Πολιτισμικού Λογισμικού

Δομημένος Προγραμματισμός

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Δομές δεδομένων. Ενότητα 7η: Ουρές Προτεραιότητας Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Βέλτιστος Έλεγχος Συστημάτων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Κοινωνία & Υγεία Υγεία Πρόληψη Προαγωγή υγείας: Βαθμίδες πρόληψης

Διδακτική Πληροφορικής

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

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

Οντοκεντρικός Προγραμματισμός

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

Αλγόριθμοι και πολυπλοκότητα Μελανέρυθρα δεντρα

Διοίκηση Επιχειρήσεων

ΟΙΚΟΝΟΜΙΚΑ ΜΑΘΗΜΑΤΙΚΑ

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

Διδακτική Πληροφορικής

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 4: Συναρτήσεις

Συστήματα Αναμονής. Ενότητα 3: Στοχαστικές Ανελίξεις. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Διαφήμιση και Δημόσιες Σχέσεις Ενότητα 9: Σχέσεις διαφημιστή-διαφημιζόμενου

Transcript:

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Δομές δεδομένων Άσκηση αυτοαξιολόγησης 2 Παναγιώτα Φατούρου Τμήμα Επιστήμης Υπολογιστών

Ενότητα 2: Στοίβες Ουρές - Λίστες Ασκήσεις και Λύσεις Άσκηση 1 Έστω ότι µια βιβλιοθήκη σας παρέχει πρόσβαση σε στοίβες ακεραίων. Η βιβλιοθήκη σας επιτρέπει να ορίσετε µια στοίβα και να καλέσετε τις 5 βασικές λειτουργίες σε αυτή. Για παράδειγµα, ο ορισµός µιας στοίβας (ή µιας ουράς) S1 γίνεται µε τη δήλωση: Stack S1, ενώ υποστηρίζονται οι εξής λειτουργίες: void MakeEmptyStack(stack S) boolean IsEmptyStack(stack S) int Top(Stack S) int Pop(Stack S) void Push(Stack S, int x) Έστω ότι θέλετε να δηµιουργήσετε ένα πρόγραµµα το οποίο απαιτεί επιπρόσθετα των παραπάνω λειτουργιών και την εκτέλεση της λειτουργίας PrintStack(Stack S), η οποία εκτυπώνει όλα τα στοιχεία της στοίβας S. Η εκτέλεση της PrintStack() δεν θα πρέπει να επηρεάζει τη µορφή της στοίβας (δηλαδή η στοίβα θα πρέπει να περιέχει τα ίδια στοιχεία και µε την ίδια σειρά πριν και µετά την εκτέλεση της PrintStack()). Παρουσιάστε ψευδο-κώδικα που θα υλοποιεί την PrintStack(). Υπόδειξη: Επιτρέπεται να χρησιµοποιήσετε µια ή περισσότερες extra στοίβες προκειµένου να υλοποιήσετε τις παραπάνω λειτουργίες. Λύση void PrintStack(Stack S) { int element; Stack tmps; MakeEmptyStack(tmpS); // βοηθητική στοίβα while(!isemptystack(s)){ // ιατρέχουµε τη στοίβα S, εκτελώντας επαναληπτικά την Pop. // Τα στοιχεία που αφαιρούνται από την S τοποθετούνται στην tmps // για να µεταφερθούν και πάλι στην S µετά την περάτωση της εκτύπωσης element = Pop(S); // αφαίρεσε το επόµενο στοιχείο από την S Push(tmpS, element); // τοποθέτησέ το στην στοίβα tmps print(element); // τύπωσε το while (!IsEmptyStack(tmpS)) { element = Pop(tmpS); Push(S, element); // επαναφορά της S στην αρχική της µορφή // αφαίρεσε στοιχείο από την S // τοποθέτησέ το στην S, όπου και υπήρχε αρχικά

Άσκηση 2 ίνεται η ακόλουθη υλοποίηση για αραιούς δυσδιάστατους πίνακες. O αραιός δισδιάστατος πίνακας Α[n][m] υλοποιείται µε έναν boolean δυσδιάστατο πίνακα B[n][m] (κάθε στοιχείο του B έχει την τιµή 0 ή 1) και µια δυναµική συνδεδεµένη λίστα που περιέχει τα µη-µηδενικά στοιχεία του πίνακα Α. Για τον πίνακα Β ισχύουν τα ακόλουθα. Για κάθε i, j, µε 0 i n, 1 j m, B[i][j] = 1 αν και µόνο αν Α[i][j] 0, και Β[i][j] = 0 αν και µόνο αν Α[i][j] = 0. Τα µη-µηδενικά στοιχεία στη λίστα αποθηκεύονται ως εξής: «τα µη-µηδενικά στοιχεία οποιασδήποτε γραµµής i είναι αποθηκευµένα στη λίστα πριν από τα µη-µηδενικά στοιχεία οποιαδήποτε γραµµής j > i και τα µη-µηδενικά στοιχεία οποιασδήποτε στήλης k απαντώνται στη λίστα πριν από τα µη-µηδενικά στοιχεία οποιασδήποτε στήλης m > k». Για παράδειγµα, δίνεται ο αραιός πίνακας Α: 0 7 0 0 0 1 2 0 0 3 0 0 4 0 0 12 0 0 0 0 Ο πίνακας Β που αντιστοιχεί στον Α είναι ο ακόλουθος: και η λίστα έχει την εξής µορφή: 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 7 1 2 3 4 12 Παρουσιάστε αλγόριθµο που θα υλοποιεί τη λειτουργία: int Access(int i, int j) η οποία επιστρέφει το στοιχείο στη γραµµή i και στη στήλη j του Α, δεδοµένου ότι ο Α υλοποιείται όπως περιγράφτηκε παραπάνω. Λύση int Search(int i, int j){ int k,l; struct node *p; int cnt = 0; if (i > n OR i < 0 OR j > m OR j < 0) { error(); // το στοιχείο προς πρόσβαση είναι εκτός ορίων πίνακα if (B[i][j]==0) return 0; // το στοιχείο προς πρόσβαση είναι 0

for (k = 0; k < i; k++) { // διατρέχουµε τις γραµµές 0 ως i του B for (l = 0; l < m; l++) // διατρέχουµε όλα τα στοιχεία κάθε τέτοιας γραµµής if (B[k][l] == 1) cnt++; // µετράµε πόσα µη-µηδενικά στοιχεία υπάρχουν σε αυτές τις γραµµές for (l = 0; l < j; l++){ if (B[i][l]) cnt++; // διατρέχουµε τη γραµµή i // και συναθροίζουµε στη cnt τα µη µηδενικά στοιχεία // που προηγούνται του στοιχείου j σε αυτή p = L; while (p!= NULL) { // διατρέχουµε τη λίστα L, στην οποία βρίσκονται τα µη-µηδενικά στοιχεία, // µέχρι να φτάσουµε στο (cnt+1)-οστό στοιχείο της L, // το οποίο αντιστοιχεί στο στοιχείο [i,j] που ζητείται if (cnt == 0) return p->data; p = p->next; cnt--; Άσκηση 3 Υλοποιήστε αλγόριθµο για την διαγραφή στοιχείου από µια ταξινοµηµένη λίστα. Λύση: Node * ListDelete(Node *L, int x) { Node *prev = NULL, *curr = L; // βοηθητικοί δείκτες while(curr!= NULL && curr->data < x){ // όσο δεν έχω διατρέξει όλη τη λίστα // και δεν έχω βρει το στοιχείο prev=curr; // αποθηκεύω δείκτη στο προηγούµενο στοιχείο πριν προχωρήσω τον curr curr=curr->next; // µετακινώ τον curr στο επόµενο στοιχείο της L if (curr == NULL curr->data > x) { // αν δεν υπάρχει το x στη λίστα printf("element x does not exist in L"); return L; if (prev == NULL) // το x είναι το πρώτο στοιχείο της L L = L->next; // αφαίρεσέ το µετακινώντας τον L στο επόµενο στοιχείο else // το x δεν είναι το πρώτο στοιχείο της L prev->next = curr->next; // διαγραφή του x return L; // επιστροφή (ενδεχόµενης) νέας τιµής του δείκτη L

Άσκηση 4 Να παρουσιαστεί υλοποίηση δύο στοιβών, τα στοιχεία των οποίων αποθηκεύονται στον ίδιο πίνακα Α[Ν] (τα στοιχεία του πίνακα είναι τα Α[0],..., Α[Ν-1]). Η υλοποίηση πρέπει να γίνει µε τέτοιο τρόπο ώστε καµία στοίβα να µην υπερχειλίζει παρά µόνο αν το συνολικό πλήθος των στοιχείων και στις δύο στοίβες να ισούται µε n. Όλες οι λειτουργίες στις στοίβες θα πρέπει να εκτελούνται σε χρόνο Θ(1). Λύση Έστω S0 και S1 οι δύο στοίβες. Έστω επίσης ότι τα στοιχεία Length[0] και Length[1] ενός πίνακα Length[] δύο θέσεων περιέχουν το µήκος των στοιβών S1 και S2, αντίστοιχα. Στην υλοποίηση που ακολουθεί, η S1 αυξάνει από αριστερά προς τα δεξιά, ενώ η S2 από δεξιά προς τα αριστερά. Κάθε µια από τις λειτουργίες, παίρνει ως παράµετρο µια ακέραια µεταβλητή which που υποδηλώνει σε ποια στοίβα θα πρέπει να εφαρµοστεί η λειτουργία. Συγκεκριµένα, όταν η which έχει την τιµή 0 (1) η λειτουργία πρέπει να εφαρµοστεί στην S0 (S1, αντίστοιχα). Απλή υλοποίηση (στην οποία οι πίνακες A[] και Length[] είναι καθολικές µεταβλητές). Type A[n]; int Length[2] = {0,0; void MakeEmptyStack(boolean which){ Length[which] = 0; boolean IsEmptyStack(boolean which){ if (Length[which] == 0) return 1; else return 0; Type Top(boolean which){ if (IsEmptyStack(which)) { print( Stack is empty ); else if (which==0) return A[Length[which] - 1]; // η S0 αναπτύσσεται από την αρχή του πίνακα προς το τέλος του else return A[N Length[which]]; // η S1 αναπτύσσεται από το τέλος του πίνακα προς της αρχή του // άρα το κορυφαίο στοιχείο της βρίσκεται στη θέση N Length[1] του Α Type Pop(boolean which) { Type x; if (Length[which] == 0) { print( Stack is empty );

x=top(which); // αποθηκεύω στο x το κορυφαίο στοιχείο της στοίβας και Length[which] = Length[which] - 1; // το αφαιρώ, µειώνοντας το µήκος της στοίβας κατά 1 return x; void Push(Type x, boolean which) { if (Length[0] + Length[1] == N) { print( Stack is full ); Length[which] = Length[which] + 1; if (which == 0) A[Length[which] - 1] = x; else A[N - Length[which]] = x; Πιο πολύπλοκη υλοποίηση (στην οποία οι πίνακες A[] και Length[] είναι πεδία ενός struct). typedef struct stack{ int Length[2]; Type A[N]; STACK; pointer MakeEmptyStack(boolean which) { pointer S; // βοηθητικός δείκτης int flag = 0; if (flag == 0) { S=newcell(STACK); flag = 1; S->Length[which] = 0; return S; // η ανάθεση µνήµης πρέπει να γίνει µόνο µια φορά boolean IsEmptyStack(pointer S, boolean which){ if (S->Length[which] == 0) return 1; else return 0; Type Top(pointer S, boolean which){ if (IsEmptyStack(S, which)) { print( Stack is empty ); else if (which==0) return (S->A)[S->Length[which] - 1]; else return (S->A)[N S->Length[which]];

Type Pop(pointer S, boolean which){ Type x; if (S->Length[which] == 0) { print( Stack is empty ); x = Top(S, which); S->Length[which] = S->Length[which] - 1; return x; void Push(pointer S, Type x, boolean which){ if (S->Length[0] + S->Length[1] == N) { print( Stack is full ); S->Length[which] = S->Length[which] + 1; if (which == 0) (S->A)[S->Length[which] - 1] = x; else (S->A)[N S->Length[which]] = x; Ευχαριστίες Ευχαριστούµε την πρώην βοηθό του µαθήµατος Κατερίνα Τζοµπανάκη για την παραγωγή της ηλεκτρονικής έκδοσης του παραπάνω υλικού.

Σημειώματα Σημείωμα αναφοράς Copyright Πανεπιστήμιο Κρήτης, Παναγιώτα Φατούρου. Παναγιώτα Φατούρου. «Δομές Δεδομένων. Άσκηση αυτοαξιολόγησης 2». Έκδοση: 1.0. Ηράκλειο 2013. Διαθέσιμο από τη δικτυακή διεύθυνση: http://www.csd.uoc.gr/~hy240/. Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση, Όχι Παράγωγο Έργο 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-nd/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Κρήτης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.