JDSL Java Data Structures Library

Σχετικά έγγραφα
Standard Template Library (STL) C++ library

Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ

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

Week. 6: Java Collections

1 + QS av (n + 1) = 2 + n + 2 n n + 1 QS av (n 1)

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

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

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

ΕΝΟΤΗΤΑ 7 ΟΥΡΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΣΩΡΟΙ

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

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

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

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

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

Κεφάλαιο 6 Ουρές Προτεραιότητας

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

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

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

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι

Μπαλτάς Αλέξανδρος 21 Απριλίου 2015

Δομές Δεδομένων. Λουκάς Γεωργιάδης.

Σύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης

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

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

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

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Αλγόριθμοι και πολυπλοκότητα Περιήγηση Πανεπιστημίων

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

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

Κεφάλαιο 2. Η δοµή δεδοµένων Σωρός και η Ταξινόµηση Σωρού (The Heap data structure and Heapsort) Έκδοση 1.1, 12/05/2010

Ουρές Προτεραιότητας: Υπενθύμιση. Σωροί / Αναδρομή / Ταξινόμηση. Υλοποίηση Σωρού. Σωρός (Εισαγωγή) Ορέστης Τελέλης

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

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

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

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

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

Εισαγωγή ενός νέου στοιχείου. Επιλογή i-οστoύ στοιχείου : Εύρεση στοιχείου με το i-οστό μικρότερο κλειδί

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15

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

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

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

H κλάση ArrayList. Γιώργος Θάνος. Γραφείο Γ. Γκλαβάνη 37. Αντικει ενοστραφής Προγρα. ος όροφος

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

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

Κεφάλαιο 10 Ψηφιακά Λεξικά

ΗΥ360 Αρχεία και Βάσεις εδοµένων

Advanced Data Indexing

Εισαγωγή στους Αλγόριθμους. Παύλος Εφραιμίδης, Λέκτορας

Εισαγωγή στην επιστήμη των υπολογιστών. Οργάνωση εδομένων Κεφάλαιο 11ο ομές εδομένων

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

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

Σύστηµα Αρχείων και Καταλόγων

Δομές Δεδομένων Εργαστηριακή Άσκηση Γκόγκος Νίκος Α.Μ.: 4973 Έτος: 3 ο gkogkos@ceid.upatras.gr. Εισαγωγικά:

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

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Δομές Δεδομένων. Ενότητα 7: Άλλες παραλλαγές Συνδεδεμένων Λιστών-Παράσταση Αραιού Πολυωνύμου με Συνδεδεμένη Λίστα. Καθηγήτρια Μαρία Σατρατζέμη

Ο αλγόριθμος Quick-Sort. 6/14/2007 3:42 AM Quick-Sort 1

8. Σωροί (Heaps)-Αναδρομή- Προχωρημένη Ταξινόμηση

Δοµές Δεδοµένων. ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ Φθινοπωρινό Εξάµηνο Ευάγγελος Μαρκάκης

Δομές Δεδομένων. Ενότητα 10: Πλήρη Δυαδικά Δέντρα, Μέγιστα/Ελάχιστα Δέντρα & Εισαγωγή στο Σωρό- Ο ΑΤΔ Μέγιστος Σωρός. Καθηγήτρια Μαρία Σατρατζέμη

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων

Week 7: Java Collection Classes

Δομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες

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

4. Συνδεδεμένες Λίστες

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

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

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

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

Ενότητα 7 Ουρές Προτεραιότητας

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συλλογές και Επαναλήπτες. Συλλογές - Collections

ταξινόμηση σωρού Παύλος Εφραιμίδης Δομές Δεδομένων και

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Ενδεικτικές Ερωτήσεις Θεωρίας

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

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

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

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

1. Η χειρότερη περίπτωση είναι όταν γίνου 10 επαναλήψεις, δηλαδή για n = 0.

Περιεχόμενα. Περιεχόμενα

Standard Template Library (STL)

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

3 ΑΝΑ ΡΟΜΗ ΑΝΑΖΗΤΗΣΗ - ΤΑΞΙΝΟΜΗΣΗ. n! = 1*2*3*..(n-1)*n. n! = 1 αν n = 0, = n*(n-1)! αν n > ΑΝΑ ΡΟΜΗ Εισαγωγή

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

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

Λίστες και Ακολουθίες. Λίστες και ακολουθίες 1

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

Ενότητα 7 Ουρές Προτεραιότητας

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Πληροφορική 2. Δομές δεδομένων και αρχείων

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

σωροί ταξινόμηση σωρού οόροςheap σωρός (heap) συστοιχία Α για έναν σωρό μια δομή δεδομένων που πχ.

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

Transcript:

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ JDSL Java Data Structures Library Δομές Δεδομένων Μπαλτάς Αλέξανδρος 24 Μαρτίου 2015 ampaltas@ceid.upatras.gr

Εισαγωγή Η JDSL είναι μια βιβλιοθήκη ομών εδομένων σε Java που αναπτύχθηκε από Brown University and Johns Hopkins University. Είναι μια συλλογή από interfaces και κλάσεις σε Java, που υλοποιούν βασικές δομές δεδομένων και αλγορίθμους όπως: Sequences Binary trees Priority Queues αλγόριθμους αναζήτησης 24 Μαρτίου 2015 2

Πλεονεκτήματα της JDSL Λειτουργικότητα: Μεγάλη ποικιλία υλοποιημένων δομών και αλγορίθμων. Απόδοση: Στις υλοποιήσεις των δομών της JDSL συναντούμε τις θεωρητικές ασυμπτωτικές πολυπλοκότητες χώρου και χρόνου. Ευελιξία: Η JDSL παρέχει διαφορετικές υλοποιήσεις για κάποιες δομές δεδομένων για διαφορετική χρήση ανάλογα σε εφαρμογή. Επεκτασιμότητα: Παρέχει λεπτομερή interfaces για πολλές δομές δεδομένων ώστε να μπορεί κανείς να κάνει μια νέα υλοποίηση. 24 Μαρτίου 2015 3

Δομή της JDSL [Container & Element] Container: Κάθε δομή δεδομένων αντιμετωπίζεται από την JDSL σαν μια οργανωμένη συλλογή αντικειμένων που καλούνται elements της δομής. Όλες οι δομές δεδομένων της JDSL υλοποιούν το Container Interface το οποίο ορίζει βασικές μεθόδους όπως την αναφορά του αριθμού των στοιχείων της δομής, και την επιστροφή ενός iterator για τα στοιχεία. Element: Ένα element μιας δομής δεδομένων της JDSL μπορεί να είναι ένα οποιοδήποτε java.lang.object. To ίδιο αντικείμενο μπορεί να αποθηκευτεί σε πολλές δομές δεδομένων, η πολλές φορές στην ίδια. 24 Μαρτίου 2015 4

Δομή της JDSL [Container] H JDSL υλοποιεί 2 ειδών containers: Key- based Containers Αποθηκεύουν ζευγάρια από key- element. Τα keys χρησιμοποιούνται συνήθως ως μηχανισμός για τη δημιουργία ευρετηρίου στα στοιχεία που συνδέονται. Π.χ. στο λεξικό, που είναι μια key- based δομή δεδομένων, κάποιες μέθοδοι που υποστηριζονται είναι η εισαγωγή ενός ζέυγους (key, element), η αναζήτηση σε ένα key κλπ. Posi onal Containers Είναι Δομές δεδομένων που δημιουργούν τοπολογικές σχέσεις μεταξύ των elements τους, όπως ακολουθίες, δέντρα κλπ. Τα στοιχεία προσπελαύνονται μέσω της θέσης τους. 24 Μαρτίου 2015 5

Δομή της JDSL [Accessor] Η JDSL παρέχει πρόσβαση στα στοιχεία μιας δομής δεδομένων μέσω των accessors. Ένας accessor παρέχει πρόσβαση σε ένα στοιχείο μια δομής δεδομένων συνεχώς, ανεξάρτητα από την υλοποίηση της (πχ στην JDSL ένα sequence υλοποιείται είτε ως ένας πίνακας, είτε ως μια linked list). Κάθε element μιας δομής δεδομένων διαθέτει έναν accessor που σχετίζεται με αυτό. 24 Μαρτίου 2015 6

Δομή της JDSL [Accessor] Posi onal Containers: Posi on Ένα posi on συμβολίζει τη «θέση» ενός element σε ενα posi onal container. Τα posi onal containers είναι δομές που μπορούμε να αναπαραστήσουμε με κόμβους (π.χ. Sequences, graphs κλπ), και το posi on ενός element εκφράζει τον κόμβο στον οποίο αυτό αποθηκεύεται. Key- based Containers: Locator Στα key- based Containers η έννοια της «θέσης» ενός element στο χώρο δεν υπάρχει, και κάθε στοιχείο εντοπίζεται από το κλειδί με το οποίο συνδέεται. Όταν προστίθεται ένα ζεύγος (key, element) σε έναν container αυτός θα επιστρέψει έναν locator για αυτό, και στη συνέχεια μπορεί να γίνει αναφορά στο ζεύγος μέσω του locator. 24 Μαρτίου 2015 7

Δομή της JDSL [Iterator] Παρέχουν έναν απλό μηχανισμό για επαναλήψεις στα αντικείμενα μίας συλλογής. Οι containers παρέχουν μεθόδους που επιστρέφουν iterators που διατρέχουν όλα τα elements του container. Οι iterators μπορούν να κινηθούν μόνο προς τα εμπρός. Μπορούν να επανέλθουν στην αρχή για να επαναλάβουν την διαδικασία. 24 Μαρτίου 2015 8

Posi onal Containers (Sequence) Ένα sequence είναι μια βασική δομή δεδομένων για την αποθήκευση στοιχείων με ένα γραμμικό τρόπο. InspectableSequence & Sequence: Τα interfaces της JDSL για sequences. Παρέχει μεθόδους για προσπέλαση και τροποποίηση των θέσεων στο τέλος του sequence αλλά και σε συγκεκριμένες θέσεις της. NodeSequence: Υλοποίηση του sequence με χρήση διπλά συνδεδεμένης λίστας. ArraySequence: Υλοποίηση του sequence με χρήση ενός πίνακα αυξανόμενου μεγέθους. 24 Μαρτίου 2015 9

Posi onal Containers (Sor ng Algorithms) H JDSL παρέχει σειρά αλγόριθμων ταξινόμησης για sequences που υλοποιούν το interface SortObject. Ταξινομήσεις με πρόθεμα List είναι πιο αποτελεσματικές όταν χρησιμοποιούνται με την ακολουθία NodeSequence ενώ με πρόθεμα Array είναι πιο αποτελεσματικές με την ArraySequence. ListQuickSort/ArrayQuickSort: Γρήγορος αλγόριθμος, τρέχει σε Ο(ΝlogΝ). Η επίδοσή του υποβαθμίζεται σε μεγάλο βαθμό, αν η σειρά εχει σχεδόν ταξινομηθεί. εν είναι σταθερός, δεν εγγυάται ότι τα στοιχεία με ίδια τιμή θα παραμείνουν στην ίδια σειρά που είχαν πριν από τη ταξινόμηση. ListMergeSort/ArrayMergeSort: Πιο αργός από QuickSort, με την ίδια όμως πολυπλοκότητα Ο(ΝlogΝ). Η απόδοση του δεν υποβαθμιζεται λόγω ιδιαιτεροτήτων στα δεδομένα εισόδου. HeapSort: Βασίζεται στο ArrayHeap. Η επίδοσή του επίσης δεν υποβαθμίζεται, λόγω ιδιαιτεροτήτων στην εισαγωγή δεδομένων. 24 Μαρτίου 2015 10

Key- based Containers (PriorityQueue) Ένα PriorityQueue είναι μια δομή δεδομένων για την αποθήκευση μιας συλλογής στοιχείων στα οποία δίνεται προτεραιότητα με βάση τα κλειδιά, όπου η μικρότερη τιμή κλειδιού υποδεικνύει την υψηλότερη προτεραιότητα. Υποστηρίζει αυθαίρετες εισαγωγές, διαγραφές στοιχείων και παρακολουθεί τα κλειδιά υψηλότερης- προτεραιότητας. Είναι χρήσιμη, στις εφαρμογές όπου αποθηκεύεται μια ουρά διεργασιών με ποικίλες προτεραιότητες, και πάντα η επόμενη διεργασία που επεξεργάζεται είναι η σημαντικότερη. 24 Μαρτίου 2015 11

Key- based Containers (PriorityQueue) PriorityQueue: Το interface για Priority Queues. Παρέχει μεθόδους για να προσπελάσει ή να αφαιρέσει το ζευγάρι κλειδί- στοιχείο με την πιό υψηλή προτεραιότητα και για να αλλάξει την προτεραιότητα ενός στοιχείου. ArrayHeap: αποδοτική υλοποίηση του PriorityQueue που χτίζεται επάνω σε έναν σωρό. Η εισαγωγή, η αφαίρεση, ή η αλλαγή του κλειδιού ενός ζευγαριού κλειδιού- στοιχείου παίρνουν λογαριθμικό χρόνο και η εξέταση του ζευγαριού κλειδιού- στοιχείου με το ελάχιστο κλειδί μπορεί να γίνει σε σταθερό χρόνο. 24 Μαρτίου 2015 12

Demo 24 Μαρτίου 2015 13

14

15

References h p://cs.brown.edu/cgc/jdsl/ 11 Μαρτίου 2014 16

Ευχαριστώ!? 24 Μαρτίου 2015 17