Βασικές Δοµές Δεδοµένων. Σύντοµη επανάληψη (ΕΠΛ 035).

Σχετικά έγγραφα
Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Αφηρημένες Δομές Δεδομένων. Στοίβα (Stack) Υλοποίηση στοίβας

ΕΠΛ 231 Δοµές Δεδοµένων και Αλγόριθµοι 11-1

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

Αλγόριθµοι και Πολυπλοκότητα

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

ΑΝΤΙΣΤΟΙΧΗΣΕΙΣ ΟΡΩΝ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙOΥΝΤΑΙ ΣΤΟΥΣ ΤΟΜΟΥΣ Α ΚΑΙ Β ΤΗΣ ΘΕ «ΔΙΑΚΡΙΤΑ ΜΑΘΗΜΑΤΙΚΑ» Ένα γράφημα αποτελείται από ένα σύνολο 94.

Διάλεξη 21: Γράφοι II - Τοπολογική Ταξινόμηση

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Γράφηµα (Graph) Εργαστήριο 10. Εισαγωγή

Διάλεξη 29: Γράφοι. Διδάσκων: Παναγιώτης Ανδρέου

ιαφάνειες παρουσίασης #11

Αλγόριθμοι Γραφημάτων

Γράφοι. Ορολογία. Ορισµός: G = (V, E) όπου. Ορολογία (συνέχεια) γράφος ή γράφηµα (graph) V:ένα σύνολο E:µια διµελής σχέση στο V

Συλλογές, Στοίβες και Ουρές

8.6 Κλάσεις και αντικείμενα 8.7 Δείκτες σε γλώσσα μηχανής

Διάλεξη 11: Δέντρα Ι Εισαγωγή σε Δενδρικές Δομές Δεδομένων

Στοιχεία Θεωρίας Γράφων (Graph Theory)

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Διάλεξη 18: Γράφοι I Εισαγωγή

ΑΛΓΟΡΙΘΜΟΙ Άνοιξη I. ΜΗΛΗΣ

Διάλεξη 11: Δέντρα Ι - Εισαγωγή σε Δενδρικές Δομές Δεδομένων

ένδρα u o Κόµβοι (nodes) o Ακµές (edges) o Ουρά και κεφαλή ακµής (tail, head) o Γονέας Παιδί Αδελφικός κόµβος (parent, child, sibling) o Μονοπάτι (pat

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

Οι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες

Διδάσκων: Παναγιώτης Ανδρέου

Βασικές Έννοιες Δοµών Δεδοµένων

ένδρα (tail, head) Γονέας Παιδί (ancestor, descendant) Φύλλο Εσωτερικός Κόµβος (leaf, non-leaf) που αποτελεί το γονέα του v.

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Γράφοι. Ένας γράφος ή αλλιώς γράφηµα αποτελείται απο. Εφαρµογές: Τηλεπικοινωνιακά και Οδικά ίκτυα, Ηλεκτρονικά Κυκλώµατα, Β.. κ.ά.

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Βασικές Ιδιότητες και Διάσχιση Κεφάλαιο 5 ( και ) Ε. Μαρκάκης Επίκουρος Καθηγητής

Δοµές Δεδοµένων. 11η Διάλεξη Ταξινόµηση Quicksort και Ιδιότητες Δέντρων. Ε. Μαρκάκης

Διάλεξη 18: Γράφοι I - Εισαγωγή

Γράφοι. Αλγόριθμοι και πολυπλοκότητα. Στάθης Ζάχος, Δημήτρης Φωτάκης

Διάλεξη 20: Γράφοι I - Εισαγωγή

Βασικές δοµές δεδοµένων. Ορολογία λιστών. 8.1 Βασικές έννοιες δοµών δεδοµένων 8.2 Υλοποίηση δοµών δεδοµένων 8.3 Μια σύντοµη υπόθεση εργασίας

Initialize each person to be free. while (some man is free and hasn't proposed to every woman) { Choose such a man m w = 1 st woman on m's list to

Κεφάλαιο 3. Γραφήµατα v1.0 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Κεφάλαιο 3. Γραφήματα. v1.3 ( ) Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Διδάσκων: Κωνσταντίνος Κώστα

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

Διδάσκων: Παναγιώτης Ανδρέου

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

Αλγόριθµοι Γραφηµάτων

2.2.5 ΑΝΑΠΑΡΑΣΤΑΣΗ ΑΛΓΟΡΙΘΜΟΥ

ΚΕΦΑΛΑΙΟ 8: Αφαίρεση δεδοµένων

Πληροφοριακά Συστήματα Διοίκησης (ΜΒΑ) Ενότητα 1: Δικτυωτή Ανάλυση (Θεωρία Γράφων)

ΓΛΩΣΣΑΡΙ Ακολουθία Fibonacci Άκυκλο γράφημα Αλγόριθμος Αλγόριθμος Dijkstra Αλγόριθμος Kruskal Αλγόριθμος Prim Αλγόριθμος Strassen Αλγόριθμος

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

Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων

ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ. ΗΥ240 - Παναγιώτα Φατούρου 1

Αναζήτηση Κατά Πλάτος

Αναζήτηση Κατά Πλάτος

ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές

Διάλεξη 10: Δομές Δεδομένων Ι (Στοίβες & Ουρές)

Αλγόριθµοι Τύπου Μείωσης Προβλήµατος

ΠΛΗ111. Ανοιξη Μάθηµα 10 ο. Γράφοι. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

Αλγόριθµοι + οµές εδοµένων = Προγράµµατα

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

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

Αναζήτηση Κατά Βάθος. ιδάσκοντες: Σ. Ζάχος,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΑΛΓΟΡΙΘΜΟΙ ΜΕ C. ΝΙΚΟΛΑΟΣ ΣΑΜΑΡΑΣ Αναπληρωτής Καθηγητής. CMOR Lab. Computational Methodologies and Operations Research

Οι δυναμικές δομές δεδομένων στην ΑΕΠΠ

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Δένδρα. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Δομές Δεδομένων (Data Structures)

Αναζήτηση Κατά Πλάτος

Επίλυση Προβληµάτων µε Greedy Αλγόριθµους

Δυναμικές Δομές Δεδομένων Λίστες Δένδρα - Γράφοι

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Κεφάλαιο 3. Γραφήματα. ver. 21/12/2014. Χρησιμοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

οµές εδοµένων 3 ο Εξάµηνο ΕΝΟΤΗΤΑ 4 ΕΝ ΡΑ

Γράφοι. κόµβοι) και ένα σύνολο από γραµµές (που λέγονται ακµές) οι οποίες

ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΠΑΤΡΑ) ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

υναµικές οµές εδοµένων

(elementary graph algorithms)

ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Κεφάλαιο 3. Γραφήµατα v1.1 ( ) Χρησιµοποιήθηκε υλικό από τις αγγλικές διαφάνειες του Kevin Wayne.

Άσκηση 3 (ανακοινώθηκε στις 14 Μαΐου 2018, προθεσμία παράδοσης: 8 Ιουνίου 2018, 12 τα μεσάνυχτα).

Αλγόριθμοι Γραφημάτων

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

ΚΕΦΑΛΑΙΟ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Αναζήτηση Κατά Βάθος. Επιμέλεια διαφανειών: Δ. Φωτάκης Συμπληρώσεις: Α. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Αναζήτηση Κατά Βάθος. Επιµέλεια διαφανειών:. Φωτάκης διαφάνειες για SCC: A. Παγουρτζής. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής T.E.I. ΘΕΣΣΑΛΟΝΙΚΗΣ

ΗΥ240 - Παναγιώτα Φατούρου 1

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Γραφήματα. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

13/5/2015 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ. Δομές Δεδομένων. Ουρές Προτεραιότητας

6η Διάλεξη Διάσχιση Γράφων και Δέντρων

Δομές Αναζήτησης. κλειδί από ολικά διατεταγμένο σύνολο. Θέλουμε να υποστηρίξουμε δύο βασικές λειτουργίες: Εισαγωγή ενός νέου στοιχείου

Βασικές Δομές Δεδομένων

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 3 : Γραφήματα & Αποδείξεις. Αλέξανδρος Τζάλλας

Αλγόριθµοι και Πολυπλοκότητα

Διάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις

Standard Template Library (STL) C++ library

Transcript:

Βασικές Δοµές Δεδοµένων Σύντοµη επανάληψη (ΕΠΛ 035).

Περίληψη Γραµµικές Δοµές Δεδοµένων Πίνακες Λίστες Στοίβες Ουρές Γράφοι Δέντρα

Γραµµικές Δοµές Πίνακας (array) A[0] A[1] A[2] A[ ] A[n-1] Προκαθορισµένη χωρητικότητα (n) Ο χρόνος πρόσβασης (access time) σε οποιοδήποτε στοιχείο του πίνακα είναι σταθερός, ανεξάρτητα από τη θέση του Συνδεδεµένη Λίστα (Linked List) Item 0 Item 1 Item n Μη προκαθορισµένη χωρητικότητα Ο χρόνος πρόσβασης σε οποιοδήποτε στοιχείο του πίνακα πιθανόν να εξαρτάτε από τη θέση του Πώς προσθέτουµε και διαγράφουµε στοιχεία στις πιο πάνω δοµές;

Στοίβα Βασικές Λειτουργίες Push Pop Υλοποίηση µε πίνακα A[0] A[1] A[2] A[ ] A[k] A[ ] A[n-1] A[], top. A[], top. push(item) pop() 1. top= top+1; 1. top= top-1; 2. A[top]= item; 2. Return A[top+1]; Έλεγχος για να µην ξεπεραστούν τα όρια του πίνακα.

Στοίβα Υλοποίηση µε συνδεδεµένη λίστα top Item n-1 Item n-2 Item 0 top. top. push(item) pop() 1. item.next=top; 1. item= top; 2. top= item; 2. top= item.next; 3. item.next=null; 4. Return item; Έλεγχος για µη ορισµένους (null) δείκτες.

Ουρά (FIFO Queue) Βασικές Λειτουργίες enqueue dequeue Υλοποίηση µε πίνακα Q[0] Q[1] Q[2] Q[ ] Q[k] Q[k+1] Q[ ] Q[n-1] Q[], head, tail. enqueue(item) 1. tail= (top+1)mod n; 2. Q[tail]= item; Απαραίτητοι έλεγχοι; Q[], head, tail dequeue() 1. item= Q[head]; 2. head= (head+1)mod n 3. Return item;

Ουρά (FIFO Queue) Υλοποίηση µε συνδεδεµένη λίστα head tail Item n+1 Item n+2 Item k Item k+1 head, tail. head, tail. enqueue(item) dequeue() 1. tail.next=item; 1. item= head; 2. tail= item; 2. head= head.next; 3. item.next=null; 4. Return item; Απαραίτητοι έλεγχοι;

Πρόβληµα Υποθέστε πώς χρειάζεται να αποθηκεύσετε περίπου 300 στοιχεία σε µία λίστα χρειάζεται να έχετε άµεση πρόσβαση στα δεδοµένα Το «κλειδί» κάθε στοιχείου µπορεί να πάρει τιµές στο διάστηµα από 1 µέχρι 2 32 Ποιά δοµή θα χρησιµοποιούσατε για την αποθήκευση των δεδοµένων; Πίνακας (array) Ο χρόνος πρόσβασης (access time) σε οποιοδήποτε στοιχείο του πίνακα είναι µικρό και σταθερός, ανεξάρτητα από τη θέση του Χρειάζεται πίνακας µεγέθους της τάξης του 2 32 Συνδεδεµένη λίστα (linked list) Ο χρόνος πρόσβασης (access time) εξαρτάτε από τη θέση του κάθε στοιχείου και µπορεί να είναι µεγάλος. Χρειάζεται µνήµη µόνο για 300 στοιχεία

Hash Table Χρησιµοποιούµε πίνακα µεγέθους «λίγο» µεγαλύτερου από ότι χρειάζεται (π.χ. 400) Μετατρέπουµε το κλειδί έτσι ώστε να πέρνει τιµές µόνο µεταξύ 1 και του µεγέθους του πίνακα (π.χ. 1 έως 400) Χρησιµοποιώντας ένα «καλό» Hash function Σε περίπτωση σύγκρουσης, χρησιµοποιούµε συνδεδεµένη λίστα. Hash Function Προκαθορισµένο και γνωστό Θα πρέπει να αντιστοιχεί κάθε ένα από τα αναµενόµενα κλειδιά σε «διαφορετική» θέση (µε µεγάλη πιθανότητα).

Hash Table Πιθανά κλειδιά από 1 έως 2 32 x y z Πίνακας µε n θέσεις

Γράφοι (Graphs) G=(V, E) V: σύνολο κόµβων (κορυφών vertices/nodes) E: σύνολο των ακµών (τόξων edges/arcs) Κατευθυνόµενες και µη κατευθυνόµενες ακµές (directed and undirected edges) Παράδειγµα V={a,b,c,d} E={(a,b), (a,c), (b,c), (b,d)} a b a b c d c d Μη Κατευθυνόµενες ακµές Κατευθυνόµενες ακµές

Γράφοι (Graphs) Γειτονικοί κόµβοι (neighboring/adjacent): Κόµβοι συνδεδεµένοι µε µια ακµή Μονοπάτι (path) µεταξύ 2 κόµβων: Ακολουθία από γειτονικούς κόµβους που ξεκινά από τον ένα και καταλήγει στον άλλο. Απλό (simple) µονοπάτι: Μονοπάτι στο οποίο όλοι οι κόµβοι εµφανίζονται µόνο µια φορά µε πιθανή εξαίρεση τον πρώτο και τελευταίο κόµβο. Κυκλική διαδροµή (cycle): Απλό µονοπάτι στο οποίο ο πρώτος και τελευταίος κόµβος είναι ο ίδιος Απόσταση (distance) µεταξύ κόµβων: Το µήκος του ελάχιστου µονοπατιού µεταξύ των κόµβων

Γράφοι (Graphs) Συνδεδεµένος (connected) γράφος: Γράφος στον οποίο υπάρχει µονοπάτι µεταξύ οποιωνδήποτε δύο κόµβων. Άκυκλος (acyclic) γράφος: Γράφοι στους οποίους δεν υπάρχουν µονοπάτια που να επιστρέφουν στον κόµβο από όπου ξεκίνησαν. Γράφος µε βάρη (weighted graph): Γράφος στον οποίο κάθε ακµή συσχετίζεται µε κάποιο βάρος (ή κόστος). Αραιός (sparse) γράφος: γράφος µε σχετικά λίγες ακµές Πυκνός (dense) γράφος: µη αραιός γράφος Μέγιστος αριθµός ακµών (δεν επιτρέπονται self-loops) Μη Κατευθυνόµενος Κατευθυνόµενος

Απεικόνιση Γράφων (Graph Representation) Πίνακας Γειτνίασης (Adjacency Matrix) A: Πίνακας V x V A[i,j]= 1 Εάν υπάρχει ακµή µεταξύ του κόµβου i και j A[i,j]= 0 Εάν δεν υπάρχει ακµή µεταξύ του κόµβου i και j Εάν πρόκειται για γράφο µε βάρη A[i,j]= w ij όπου w ij είναι το βάρος της ακµής µεταξύ του κόµβου i και j A[i,j]= Εάν δεν υπάρχει ακµή µεταξύ του κόµβου i και j Πόσος ο ελάχιστος χώρος που χρειάζεται ο πίνακας (δεν επιτρέπονται self-loops); Μη Κατευθυνόµενος Κατευθυνόµενος

Απεικόνιση Γράφων (Graph Representation) Λίστα Γειτνίασης (Adjacency List) Ένα διάνυσµα (µονοδιάστατος πίνακας) µεγέθους V. Από το στοιχείο i του πίνακα ξεκινά µια συνδεδεµένη λίστα Εάν πρόκειται για γράφο µε βάρη Σε κάθε στοιχείο της λίστας υπάρχει επίσης και το βάρος της ακµής που συνδέει τους κόµβους Χώρος που χρειάζεται στη µνήµη: Στη χειρότερη περίπτωση: V x( V -1) Στην περίπτωση αραιών γράφων: V + Ε

Παράδειγµα a b c d A = 0 1 1 1 0 0 1 0 a b c d a b c

Παράδειγµα µε βάρη a 2 b 3 7 4 c d a b,2 c,3 null b c d a,2 c,4 d,7 a,3 b,4 b,7

Δέντρα (Trees) Συνδεδεµένος Άκυκλος Γράφος Σε ένα συνδεδεµένο δέντρο ισχύει πάντα: Υπάρχει ένα και µόνο µονοπάτι µεταξύ δύο κόµβων Ριζωµένα (rooted) δέντρα: δέντρα στα οποία αυθαίρετα επιλέγεται ένας κόµβος σαν ρίζα (root) Ρίζα a b e b c d a c d e Ελεύθερο δέντρο Ριζωµένο δέντρο

Δέντρα αδέλφια (siblings) b a Ρίζα (root) d e f Βαθµός (degree) ενός κόµβου: αριθµός των παιδιών του. Βαθµός του δέντρου: µέγιστος βαθµός από τους κόµβους του δέντρου. Βάθος (depth) ενός κόµβου είναι η απόσταση του κόµβου από τη ρίζα Ύψος του δέντρου είναι η απόσταση της ρίζας από το πιο αποµακρυσµένο φύλλο. c γονέας (parent) του f φύλλο (leaf) Παιδί (child) του b

Απεικόνιση Δέντρων Δυσδιάστατους Πίνακες (όπως οι γράφοι) Όχι πολύ αποδοτική λύση αφού ένα δέντρο είναι ένας αραιός γράφος! Μονοδιάστατος Πίνακας Τα παιδιά κάθε κόµβου εµφανίζονται σε συγκεκριµένες θέσεις του πίνακα Για αποδοτικότερη διαχείριση των δεδοµένων, στον πίνακα εµφανίζονται δείκτες προς τα δεδοµένα και όχι τα δεδοµένα τα ίδια. Παράδειγµα δυαδικού δέντρου Τα παιδιά του κόµβου i είναι στις θέσεις 2i, και 2i+1. Ο γονέας του κόµβου j βρίσκεται στη θέση 1 2 3 4 5 i 2i 2i+1 n

Απεικόνιση Δέντρων Μη γραµµικές λίστες Κάθε κόµβος µπορεί να έχει ένα ή περισσότερα παιδιά Παράδειγµα δυαδικού δέντρου Αριστερό παιδί lc Item 0 rc δεξί παιδί lc Item 1 rc lc Item 2 rc lc Item 3 rc lc Item 4 rc lc Item 5 rc Η ακόλουθη σχέση ισχύει για δυαδικά δέντρα µε n κόµβους τους οποίους το ύψος είναι h

Ταξινοµηµένα Δέντρα Δυαδικά ταξινοµηµένα δέντρα Το κλειδί του αριστερού παιδιού είναι µικρότερο από αυτό του γονιού Το κλειδί του δεξιού παιδιού είναι µεγαλύτερο ή ίσο µε αυτό του γονιού 45