Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής και Τηλεπικοινωνιών. Παραλληλία. Κ. Χαλάτσης, Εισαγωγή στην Επιστήµη της Πληροφορικής και των Τηλεπικοινωνιών

Σχετικά έγγραφα
Ταξινόμηση με συγχώνευση Merge Sort

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

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

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

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

#2 Αλγόριθµοι, οµές εδοµένων και Πολυπλοκότητα

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

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

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

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

Δομές δεδομένων (2) Αλγόριθμοι

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

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

Αλγόριθμοι ταξινόμησης

Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ουρές Προτεραιότητας Σωροί υλοποίηση και πράξεις Ο αλγόριθμος ταξινόμησης HeapSort

Αλγόριθμοι Ταξινόμησης Μέρος 3

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

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

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

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

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

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

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

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

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

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

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

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

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

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

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

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

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

Heapsort Using Multiple Heaps

Προγραμματισμός Ι (ΗΥ120)

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

Κατ οίκον Εργασία 5 Σκελετοί Λύσεων

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

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

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

Ουρά Προτεραιότητας: Heap

Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

Σχεδίαση και Ανάλυση Αλγορίθμων

Ελάχιστα Γεννητορικά ένδρα

Α' ΤΕΛΙΚΗ ΕΞΕΤΑΣΗ - 5 ΙΟΥΝΙΟΥ 2010 ΧΡΟΝΟΣ ΕΞΕΤΑΣΗΣ 180' (Σύνολο μονάδων 115)

Ουρά Προτεραιότητας (priority queue)

Ουρές προτεραιότητας

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

Merge Sort (Ταξινόμηση με συγχώνευση) 6/14/2007 3:04 AM Merge Sort 1

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την

Ταξινόμηση κάδου και ταξινόμηση Ρίζας Bucket-Sort και Radix-Sort

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

Δομές Δεδομένων & Αλγόριθμοι

Κεφάλαιο 14 Προηγμένες Ουρές Προτεραιότητας

Διαίρει-και-Βασίλευε. Αλγόριθµοι & Πολυπλοκότητα (Χειµώνας 2011) Διαίρει-και-Βασίλευε 2

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

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

Insert(K,I,S) Delete(K,S)

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

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

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

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

Σχεδιαση Αλγοριθμων -Τμημα Πληροφορικης ΑΠΘ - Κεφαλαιο 9ο

Ενότητα 3: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

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

ΚΕΦΑΛΑΙΟ 5: Αλγόριθµοι

ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ

ιαίρει-και-βασίλευε ημήτρης Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο

Δομές Δεδομένων & Αλγόριθμοι

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο 1

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y»

Πελάτες φθάνουν στο ταμείο μιας τράπεζας Eνα μόνο ταμείο είναι ανοικτό Κάθε πελάτης παρουσιάζεται με ένα νούμερο - αριθμός προτεραιότητας Όσο ο

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

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

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

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

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

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

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

Αναζήτηση σε Γράφους. Μανόλης Κουμπαράκης. ΥΣ02 Τεχνητή Νοημοσύνη 1

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

Ενότητα 9 Ξένα Σύνολα που υποστηρίζουν τη λειτουργία της Ένωσης (Union-Find)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση

Παράλληλη Επεξεργασία Κεφάλαιο 2 Παραλληλισμός Δεδομένων

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

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

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

Αλγόριθμοι Eλάχιστα μονοπάτια

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

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

Εισαγωγή στην Επιστήμη των Υπολογιστών

Οι βασικές πράξεις που ορίζουν τον ΑΤ δυαδικό δέντρο αναζήτησης είναι οι ακόλουθες:

Σχεδίαση Αλγορίθμων -Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Ουρά Προτεραιότητας (priority queue)

Διάλεξη 09: Αλγόριθμοι Ταξινόμησης I

Κατ οίκον Εργασία 4 Σκελετοί Λύσεων

Δυαδικά Δέντρα Αναζήτησης (Binary Search Trees) Ορισμός : Ένα δυαδικό δέντρο αναζήτησης t είναι ένα δυαδικό δέντρο, το οποίο είτε είναι κενό είτε:

Κεφάλαιο 2. Η δομή δεδομένων Σωρός και η Ταξινόμηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.3, 14/11/2014

Αλγόριθμοι και Πολυπλοκότητα Φώτης Ε. Ψωμόπουλος, Περικλής Α. Μήτκας

Transcript:

Αλγόριθµοι-Προγραµµατισµός /2 Παραλληλία οµές εδοµένων

Παραλληλία (Parallelism) Παραλληλία, ταυτοχρονισµός Παράλληλος αλγόριθµος - σειριακός αλγόριθµος Παράδειγµα : υπολογισµός κέρδους module σειριακό_κέρδος(λ_α, Λ_Π) {ένας επεξεργαστής, Χρόνος: Ο(Ν) } {υπολόγισε λίστα κέρδους από λίστες αγοράς & πώλησης } ξεκίνα από την κορυφή κάθε λίστας repear N φορές αφαίρεσε τιµή αγοράς από τιµή πώλησης βάλε την απάντηση στη λίστα κέρδους πάρε τις επόµενες τιµές από τις λίστες module παράλληλο_κέρδος(i) {i-οστός επεξεργαστής, Χρόνος: Ο() } {Ν επεξεργαστές εκτελούν παράλληλα το ίδιο πρόγραµµα} { υπολόγισε το i-οστό κέρδος } αφαίρεσε την i-οστή τιµή αγοράς από αυτή της πώλησης βάλε την απάντηση στην i-οστή θέση της λίστας κέρδους Speed-up = O(N) 2

Παραλληλία (Parallelism) Παράδειγµα 2: Άθροιση αριθµών module σειρακό_αθροισµα(ν) {ένας επεξεργαστής, χρόνος = Ο(Ν) { πρόσθεσε µια σειρά Ν αριθµών } άθροισµα = πάρε τον πρώτο αριθµό στη σειρά repeat N φορές άθροισµα = άθροισµα + αριθµός πάρε τον επόµενο αριθµό στη σειρά module παράλληλο_aθροισµα(i) { αλγόριθµος πρόσθεσης i επεξεργαστή } repeat log 2 N φορές θέσε num(i) = num(2i-)+num(2i) Χρόνος = Ο(log 2 N) num(i) 2 3 4 5 6 7 8 ' 3 7 5 2' 26 3' 36 = + 2 + 3 + 4 + 5 + 6 + 7 + 8 ' 3 7 5 2' 26 3' 36 Speed-up = N / log 2 N 3

Παραλληλία (Parallelism) Παράδειγµα 3: {ταξινόµηση λίστας Ν ονοµάτων} module σειριακή_ταξινόµιση(λίστα) (ένας επεξεργαστής, χρόνος = Ο(Ν 2 ) repeat πάρε το άνοµα στη κορυφή της λίστας repeat N- φορές if όνοµα ακολουθεί αλφαβητικά το επόµενο όνοµα στηλίστα τότε αντάλλαξε τα θεώρησε το επόµενο όνοµα στη λίστα until δεν γίνει ανταλλαγή module αναδροµική_ταξινόµιση(λίστα) {Ν ονόµατα} (ένας επεξεργαστής) εάν Ν> τότε αναδροµική ταξινόµηση (ο ήµισυ λίστας) αναδροµική ταξινόµηση (2ο ήµισυ λίστας) συγχώνευσε τα δύο ήµισυ Χρόνος: T(N)= 2 T(N/2) + c N T(N) = cnlogn + kn O(Nlog 2 N) 4

Παραλληλία (Parallelism) εκάστη Ηλάτη Σελάνη Βριώ Αρίµνη Παράλληλη ταξινόµηση α) σύγκριση των ονοµάτων ανά δυο χρησιµοποιώντας Ν 2 επεξεργαστές j N i 4 5 7 2 module παραλληλη_σύγκριση(i,j) if όνοµα(i) προηγείται του όνοµα(j) then βάλε στην θέση (i,j) του πίνακα else βάλε Χρωµή Οπένια 8 6 χρόνος Ο() Γαύδω N 3 β) module παράλληλο_aθροισµα(i) {πρόσθεσε παράλληλα τα '' κάθε γραµµής χρησιµοποιώντας Ν/2 επεξεργαστές / γραµµή, δηλαδή συνολικά Ν Ν/2 επεξεργαστές} χρόνος Ο(log 2 Ν) γ) µετακίνησε παράλληλα κάθε όνοµα στην σωστή του θέση χρησιµοποιώντας Ν επεξεργαστές χρόνος Ο() Συνολικά χρόνος Ο(log 2 Ν) 5

Παραλληλία (Parallelism) Σύγκριση των αλγορίθµων ταξινόµησης Ν Ο(Ν 2 ) Ο(Ν log 2 N) Ο(log 2 N) Μέγεθος Λίστας Σειριακή Ταξινόµηση Με αναδροµή Παράλληλη Ταξινόµηση, sec,3 sec,3 sec, sec,7 sec,7 sec. sec, sec, sec.,7 min,3 sec,3 sec. 2,8 hours,7 sec,7 sec 6

ΟΜΕΣ Ε ΟΜΕΝΩΝ Αφορά τη µορφοποίηση των δεδοµένων ενός προγράµµατος Βασικές δοµές: Στοιχειoσειρά (array) {τύπος όνοµα[µέγεθος]} Ουρά (queue) { push > > pull Στοίβα (stack) { get< >put Σωρός (heap) { Λίστα (list) {head, tail, next Γράφος (graph) {G=(V,E) ένδρο (tree) { T=(root, L, R) 7

ΥΑ ΙΚΟ ΕΝ ΡΟ (Binary tree) Από κάθε κόµβο του ξεκινούν δύο το πολύ κλαδιά Tree= (root, L, R) = (ρίζα, α-κλαδί, δ-κλαδί) Πολύ χρήσιµη δοµή Π.Χ., Ταξινοµηµένο δυαδικό δένδρο: για κάθε διακλάδωση ισχύει Αριστερός κόµβος > α ρίζας > α δεξιός κόµβος Μάρκος Γιάννης Σταύρος Ανδρέας Γιώργος Νίκος Φώτης Βασίλης Μηνάς Όµηρος Στέλιος Χρήστος Φάνης Η ταξινόµηση µε τη βοήθεια δυαδικού δένδρου έχει τις φάσεις: Κατασκευή ταξινοµηµένου δυαδικού δένδρου µε είσοδο τα προς ταξινόµηση δεδοµένα Εκτύπωση του ταξινοµηµένου δυαδικού δένδρου 8

Ταξινόµηση µε δυαδικό δένδρο Κτίσιµο δένδρου: module buildtree(λίστα,tree) while Lista δεν έχει εξαντληθεί do πάρε το επόµενο_όνοµα από τη Λίστα addname(επόµενο_όνοµα, Tree) module addname(name, T) if T άδειο then δηµιούργησε Τ µε name=root του Τ else if name > a root του Τ then addname(name, L_subtree_of_T) else addname(name, R_subtree_of_T) Εκτύπωση δένδρου module output_tree(t) if T δεν είναι άδειο then output_tree( L_subtree_of_T) write root of T output_tree(r_subtree_of_t) Άρα έχουµε: module sort (L) build(l,t) output_tree(t) 9

Παράδειγµα Λίστα προς ταξινόµηση: {Μάρκος, Σταύρος, Νίκος, Γιάννης, Γιώργος, Μηνάς, Ανδρέας, Στέλιος, Φώτης, Βασίλης, Χρήστος, Όµηρος, Αναστάσιος, Φάνης, Γιάννης} Κτίσιµο δένδρου: Μάρκος Γιάννης Σταύρος Ανδρέας Γιώργος Νίκος Στέλιος Αναστάσιος Βασίλης Εκτύπωση δένδρου: Γιάννης Μηνάς Όµηρος Φώτης Αναστάσιος Ανδρέας Βασίλης Γιάννης Γιάννης Γιώργος Χρήστος Φάνης Μάρκος Μηνάς Νίκος Όµηρος Σταύρος Στέλιος Φάνης Φώτης Χρήστος