SlideShare a Scribd company logo
1 of 14
Κεφ. 3 Δομές Δεδομένων
      και Αλγόριθμοι
                    Περιεχόμενα
Δεδομένα
Αλγόριθμοι  + Δομές δεδομένων =
Προγράμματα
Πίνακες
Στοίβα και ουρά
Αναζήτηση και Ταξινόμηση
Αναδρομή
Άλλες δομές δεδομένων


Ιωάννου Γιαννάκης
&3.1 Δεδομένα
Δεδομένα: είναι ακατέργαστο πληροφοριακό υλικό, το οποίο
  αναπαριστά μια μορφή της πραγματικότητας και τα
  χρησιμοποιούμε προκειμένου να τα επεξεργαστούμε με
  σκοπό την παραγωγή πληροφοριών.
Πληροφορία: είναι η γνώση που παρέχεται στον άνθρωπο ως
  αποτέλεσμα της επεξεργασίας των δεδομένων.
Αλγόριθμος: είναι το μέσο παραγωγής της πληροφορίας.




Η πληροφορική είναι η επιστήμη που μελετά τα δεδομένα από τις
   ακόλουθες σκοπιές:
 Υλικού
 Γλωσσών προγραμματισμού
 Δομών δεδομένων
 Ανάλυσης δεδομένων
&3.2 Αλγόριθμοι + Δομές Δεδομένων =
           Προγράμματα
Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που
   υφίστανται επεξεργασία από ένα σύνολο λειτουργιών.
Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες: τις στατικές
   (static) και τις δυναμικές (dynamic).

Οι βασικές λειτουργίες (πράξεις) επί των δομών δεδομένων είναι οι
   ακόλουθες:
 Προσπέλαση (access), πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να
   τροποποιηθεί το περιεχόμενο του.
 Εισαγωγή (insertion), δηλαδή η προσθήκη νέων κόμβων σε μία υπάρχουσα
   δομή.
 Διαγραφή (deletion), που αποτελεί το αντίστροφο της εισαγωγής, δηλαδή
   ένας κόμβος αφαιρείται από μία δομή.
 Αναζήτηση (searching), Κατά την οποία προσπελαύνονται οι κόμβοι μιας
   δομής, προκειμένου να εντοπιστούν ένας ή περισσότεροι που έχουν μια
   δεδομένη ιδιότητα.
 Ταξινόμηση (sorting), όπου οι κόμβοι μιας δομής διατάσσονται κατά
   αύξουσα ή φθίνουσα σειρά.
 Αντιγραφή (copying), κατά την οποία όλοι οι κόμβοι ή μερικοί από τους
   κόμβους μίας δομής αντιγράφονται σε μία άλλη δομή.
 Συγχώνευση (merging), κατά την οποία δύο ή περισσότερες δομές
   συνενώνονται σε μία ενιαία δομή
 Διαχωρισμός (separation), που αποτελεί την αντίστροφη πράξη της
   συγχώνευσης
&3.2 Αλγόριθμοι + Δομές Δεδομένων =
           Προγράμματα



Εξίσωση του Wirth:
       Αλγόριθμοι + Δομές Δεδομένων=
                   Προγράμματα
Κατηγορίες δομών δεδομένων

Στατικές δομές
Αποθηκεύονται σε συνεχόμενες θέσεις μνήμης, έχουν σταθερό
μέγεθος το οποίο καθορίζεται κατά τη στιγμή της εκτέλεσης του
προγράμματος. Υλοποιούνται με πίνακες

Δυναμικές δομές:
Δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης, δεν έχουν
σταθερό μέγεθος, αλλά ο αριθμός των κόμβων τους αυξάνεται και
μειώνεται όταν εισάγονται ή διαγράφονται δεδομένα στη δομή. Το
μέγεθος της μνήμης καθορίζεται κατά τη στιγμή της εκτέλεσης του
προγράμματος. Υλοποιούνται με λίστες.
&3.3 Πίνακες
Πίνακας (Table ή Array) είναι μια
  στατική δομή δεδομένων ή
  οποία αποτελείται από στοιχεία
  ίδιου τύπου, τα οποία έχουν
  κοινό όνομα (το όνομα του
  πίνακα) και διακρίνονται
  μεταξύ τους με τη βοήθεια
  ενός δείκτη (index) ή δεικτών
  (indexes) ανάλογα με τις
  διαστάσεις του πίνακα.

Μονοδιάστατος πίνακας  1
  δείκτης
Δισδιάστατος πίνακας  2
  δείκτες
&3.3 Πίνακες
Παράδειγμα 1
Δίνεται ένας μονοδιάστατος πίνακας table 100 στοιχείων. Να
   σχεδιασθεί αλγόριθμος που να βρίσκει το μικρότερο του
   στοιχείο.




Λειτουργία
Το πρώτο στοιχείο του πίνακα εκχωρείται στη μεταβλητή Min.
  Στη συνέχεια κάθε επόμενο στοιχείο του πίνακα εξετάζεται,
  αν είναι μικρότερο του Min και αν ναι, τότε αντικαθιστά το
  προηγούμενο. Έτσι στο τέλος θα υπάρχει στη μεταβλητή
  Min το μικρότερο στοιχείο όλου του πίνακα.
&3.3 Πίνακες
Παράδειγμα 2
Δίνεται ένας δισδιάστατος πίνακας table m γραμμές n στήλες. Να
   βρεθεί το άθροισμα κατά γραμμή, κατά στήλη και συνολικά.




Λειτουργία
Αρχικά μηδενίζουμε τον αθροιστή Sum και τους πίνακες row
  και col. Ο διπλός εμφωλευμένος βρόχος που ακολουθεί είναι
  η καρδιά του αλγόριθμος. Σ’ αυτόν γίνονται οι υπολογισμοί
  που ζητά η εκφώνηση του παραδείγματος.
&3.4 Στοίβα
Μία στοίβα δεδομένων μοιάζει με μία στοίβα από πιάτα. Τα
  δεδομένα που βρίσκονται στη κορυφή της στοίβας
  λαμβάνονται πρώτα, ενώ αυτά που βρίσκονται στο βάθος
  της στοίβας λαμβάνονται τελευταία. Αυτή η μέθοδος
  επεξεργασίας ονομάζεται LIFO.




Οι κύριες λειτουργίες της στοίβας είναι δύο:
 Η ώθηση (push) στοιχείου στην κορυφή της στοίβας
 Η απώθηση (pop) στοιχείου από τη στοίβα.
&3.5 Ουρά
Ουρά: ονομάζεται μια δομή δεδομένων στην οποία τα δεδομένα
  τοποθετούνται σε μια σειρά. Τη σειρά αυτή μπορούμε να τη
  φανταστούμε οριζόντια, έτσι ώστε τα δεδομένα που
  τοποθετήθηκαν πρώτα στην ουρά να λαμβάνονται επίσης πρώτα
  (FIFO).




Δύο είναι οι κύριες λειτουργίες σε μία ουρά.
 Η εισαγωγή (enqueue) στοιχείου στο πίσω άκρο της ουράς, και
 Η εξαγωγή (dequeue) στοιχείου από το εμπρός μέρος της ουράς.
Στην περίπτωση της ουράς απαιτούνται δύο δείκτες: ο εμπρός (front)
   και ο πίσω (rear), που μας δίνουν τη θέση του στοιχείου που σε
   πρώτη ευκαιρία θα εξαχθεί και τη θέση του στοιχείου που μόλις
   εισήλθε.
Μια ουρά μπορεί να υλοποιηθεί με τη βοήθεια ενός μονοδιάστατου
   πίνακα.
&3.6 Αναζήτηση
Η πιο απλή μορφή αναζήτησης στοιχείου σε πίνακα είναι η
  σειριακή αναζήτηση (sequential) ή γραμμική (linear)
  μέθοδος. Έτσι για τον επόμενο αλγόριθμο
  Sequential_Search υποτίθεται ότι αναζητείται η τιμή key στο
  μη ταξινομημένο πίνακα table. Μετά την εκτέλεση του
  αλγορίθμου η μεταβλητή position επιστρέφει την τιμή 0, αν
  η αναζήτηση είναι ανεπιτυχής, ενώ αν η αναζήτηση είναι
  επιτυχής, τότε επιστρέφει τη θέση του στοιχείου στον
  πίνακα (δηλαδή, έναν αριθμό από 1 ως n).
&3.6 Αναζήτηση
Η σειριακή αναζήτηση είναι η πιο απλή, αλλά και η λιγότερη
  αποτελεσματική μέθοδος αναζήτησης. Έτσι, δικαιολογείται η
  χρήση της μόνο σε περιπτώσεις όπου:

   Ο πίνακας είναι ταξινομημένος,
   Ο πίνακας είναι μικρού μεγέθους (για παράδειγμα , n<=20),
   Η αναζήτηση σε ένα συγκεκριμένο πίνακα γίνεται σπάνια
&3.7 Ταξινόμηση
Ορισμός της ταξινόμησης
Δοθέντων των στοιχείων a1,a2, …, an η ταξινόμηση συνίσταται
  στη μετάθεση (permutation) της θέσης των στοιχείων, ώστε
  να τοποθετηθούν σε μια σειρά ak1, ak2, … , akn έτσι ώστε,
  δοθείσης μίας συνάρτησης διάταξης (ordering function), f, ν
  ισχύει:

               F(ak1)<=f(ak2)<= … <=f(akn)

Αξίζει να σημειωθεί ότι η προηγούμενη συνάρτηση διάταξης
   μπορεί να τροποποιηθεί, ώστε να καλύπτει και την
   περίπτωση που η ταξινόμηση γίνεται με φθίνουσα τάξη
   (descending sequence) μεγέθους.
&3.7 Ταξινόμηση
Υλοποίηση ταξινόμησης ευθείας ανταλλαγής ή φυσαλίδας
(bubblesort)

More Related Content

What's hot

Μεταγνώση
ΜεταγνώσηΜεταγνώση
Μεταγνώση
pantazi
 
Σημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψης
Σημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψηςΣημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψης
Σημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψης
Θανάσης Δρούγας
 
ΖΗΤΗΣΗ ΤΩΝ ΑΓΑΘΩΝ
ΖΗΤΗΣΗ ΤΩΝ ΑΓΑΘΩΝΖΗΤΗΣΗ ΤΩΝ ΑΓΑΘΩΝ
ΖΗΤΗΣΗ ΤΩΝ ΑΓΑΘΩΝ
Stamiris Spyridon
 
ΑΕΠΠ κεφ2 μέρος Α Βασικές Εννοιες Αλγορίθμων
ΑΕΠΠ κεφ2 μέρος Α Βασικές Εννοιες ΑλγορίθμωνΑΕΠΠ κεφ2 μέρος Α Βασικές Εννοιες Αλγορίθμων
ΑΕΠΠ κεφ2 μέρος Α Βασικές Εννοιες Αλγορίθμων
evoyiatz
 
πληρης θεωρια αεππ ερωτησεις απαντησεις
πληρης θεωρια αεππ ερωτησεις απαντησειςπληρης θεωρια αεππ ερωτησεις απαντησεις
πληρης θεωρια αεππ ερωτησεις απαντησεις
Anastasios Timotheidis
 
Κεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες ΑλγορίθμωνΚεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες Αλγορίθμων
Ιωάννου Γιαννάκης
 

What's hot (20)

Εισαγωγή στις αρχές της επιστήμης των Η/Υ
Εισαγωγή στις αρχές της επιστήμης των Η/ΥΕισαγωγή στις αρχές της επιστήμης των Η/Υ
Εισαγωγή στις αρχές της επιστήμης των Η/Υ
 
2.1 Πρόβλημα
2.1 Πρόβλημα2.1 Πρόβλημα
2.1 Πρόβλημα
 
ΑΕΠΠ - Βασικές έννοιες προγραμματισμού
ΑΕΠΠ - Βασικές έννοιες προγραμματισμούΑΕΠΠ - Βασικές έννοιες προγραμματισμού
ΑΕΠΠ - Βασικές έννοιες προγραμματισμού
 
Κεφ. 9 Πίνακες
Κεφ. 9 ΠίνακεςΚεφ. 9 Πίνακες
Κεφ. 9 Πίνακες
 
Μεταγνώση
ΜεταγνώσηΜεταγνώση
Μεταγνώση
 
Σημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψης
Σημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψηςΣημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψης
Σημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψης
 
ΖΗΤΗΣΗ ΤΩΝ ΑΓΑΘΩΝ
ΖΗΤΗΣΗ ΤΩΝ ΑΓΑΘΩΝΖΗΤΗΣΗ ΤΩΝ ΑΓΑΘΩΝ
ΖΗΤΗΣΗ ΤΩΝ ΑΓΑΘΩΝ
 
Πληροφορική A Γυμνασίου Διαγώνισμα 1
Πληροφορική A Γυμνασίου Διαγώνισμα 1Πληροφορική A Γυμνασίου Διαγώνισμα 1
Πληροφορική A Γυμνασίου Διαγώνισμα 1
 
ΑΕΠΠ κεφ2 μέρος Α Βασικές Εννοιες Αλγορίθμων
ΑΕΠΠ κεφ2 μέρος Α Βασικές Εννοιες ΑλγορίθμωνΑΕΠΠ κεφ2 μέρος Α Βασικές Εννοιες Αλγορίθμων
ΑΕΠΠ κεφ2 μέρος Α Βασικές Εννοιες Αλγορίθμων
 
ΠΛΗ31 ΜΑΘΗΜΑ 4.3
ΠΛΗ31 ΜΑΘΗΜΑ 4.3ΠΛΗ31 ΜΑΘΗΜΑ 4.3
ΠΛΗ31 ΜΑΘΗΜΑ 4.3
 
Η μεταβλητή
Η μεταβλητήΗ μεταβλητή
Η μεταβλητή
 
πληρης θεωρια αεππ ερωτησεις απαντησεις
πληρης θεωρια αεππ ερωτησεις απαντησειςπληρης θεωρια αεππ ερωτησεις απαντησεις
πληρης θεωρια αεππ ερωτησεις απαντησεις
 
Δομή και υπηρεσίες Διαδικτύου
Δομή και υπηρεσίες ΔιαδικτύουΔομή και υπηρεσίες Διαδικτύου
Δομή και υπηρεσίες Διαδικτύου
 
σύγχρονες μέθοδοι διδασκαλίας Karakousis athanasios
σύγχρονες μέθοδοι διδασκαλίας   Karakousis athanasiosσύγχρονες μέθοδοι διδασκαλίας   Karakousis athanasios
σύγχρονες μέθοδοι διδασκαλίας Karakousis athanasios
 
ΑΕΠΠ ΚΕΦ 7
ΑΕΠΠ ΚΕΦ 7ΑΕΠΠ ΚΕΦ 7
ΑΕΠΠ ΚΕΦ 7
 
Κεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες ΑλγορίθμωνΚεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες Αλγορίθμων
 
Senario απλής και σύνθετης δομής επιλογής
Senario απλής και σύνθετης δομής επιλογής Senario απλής και σύνθετης δομής επιλογής
Senario απλής και σύνθετης δομής επιλογής
 
Ασκήσεις δομή Επιλογής
Ασκήσεις δομή ΕπιλογήςΑσκήσεις δομή Επιλογής
Ασκήσεις δομή Επιλογής
 
Μια άσκηση για επανάληψη της ΠΛΗΡΟΦΟΡΙΚΗΣ στη ΝΕΑ ΥΛΗ Πανελλαδικών
Μια άσκηση για επανάληψη της ΠΛΗΡΟΦΟΡΙΚΗΣ στη ΝΕΑ ΥΛΗ Πανελλαδικών  Μια άσκηση για επανάληψη της ΠΛΗΡΟΦΟΡΙΚΗΣ στη ΝΕΑ ΥΛΗ Πανελλαδικών
Μια άσκηση για επανάληψη της ΠΛΗΡΟΦΟΡΙΚΗΣ στη ΝΕΑ ΥΛΗ Πανελλαδικών
 
αεππ κεφαλαιο 1ο.ppt
αεππ   κεφαλαιο 1ο.pptαεππ   κεφαλαιο 1ο.ppt
αεππ κεφαλαιο 1ο.ppt
 

Viewers also liked

Viewers also liked (8)

2016 BrandZ™ Top 100 Most Valuable Global Brands increased 3 percent, to $3.4...
2016 BrandZ™ Top 100 Most Valuable Global Brands increased 3 percent, to $3.4...2016 BrandZ™ Top 100 Most Valuable Global Brands increased 3 percent, to $3.4...
2016 BrandZ™ Top 100 Most Valuable Global Brands increased 3 percent, to $3.4...
 
Linux εντολές cp ,mv, ln
Linux εντολές cp ,mv, lnLinux εντολές cp ,mv, ln
Linux εντολές cp ,mv, ln
 
Bücherverbrennung
BücherverbrennungBücherverbrennung
Bücherverbrennung
 
Slide Redesign Final Product
Slide Redesign Final ProductSlide Redesign Final Product
Slide Redesign Final Product
 
モバイルクラウドセキュリティのエコシステムとDevOps
モバイルクラウドセキュリティのエコシステムとDevOpsモバイルクラウドセキュリティのエコシステムとDevOps
モバイルクラウドセキュリティのエコシステムとDevOps
 
top 10 most powerful brands in Indonesia
top 10 most powerful brands in Indonesiatop 10 most powerful brands in Indonesia
top 10 most powerful brands in Indonesia
 
programmatic Buying in Mobile Advertising
 programmatic Buying in Mobile Advertising  programmatic Buying in Mobile Advertising
programmatic Buying in Mobile Advertising
 
SAP Cloud for Insurance Partner
SAP Cloud for Insurance PartnerSAP Cloud for Insurance Partner
SAP Cloud for Insurance Partner
 

Similar to Κεφ. 3 Δομές Δεδομένων και Αλγόριθμοι

Κεφ. 3 Δομές Δεδομένων και Αλγόριθμοι
Κεφ. 3 Δομές Δεδομένων και ΑλγόριθμοιΚεφ. 3 Δομές Δεδομένων και Αλγόριθμοι
Κεφ. 3 Δομές Δεδομένων και Αλγόριθμοι
Ιωάννου Γιαννάκης
 
Παρουσίαση Ουράς και Στοίβας για τη "Γλώσσα"
Παρουσίαση Ουράς και Στοίβας για τη "Γλώσσα"Παρουσίαση Ουράς και Στοίβας για τη "Γλώσσα"
Παρουσίαση Ουράς και Στοίβας για τη "Γλώσσα"
Nikolaos Politopoulos
 
βάσεις δεδομένων κεφ2
βάσεις δεδομένων κεφ2βάσεις δεδομένων κεφ2
βάσεις δεδομένων κεφ2
marygeorg
 
Ασκήσεις στις Δυναμικές Δομές Δεδομένων.pdf
Ασκήσεις στις Δυναμικές Δομές Δεδομένων.pdfΑσκήσεις στις Δυναμικές Δομές Δεδομένων.pdf
Ασκήσεις στις Δυναμικές Δομές Δεδομένων.pdf
dekaeptaDEKAEPTA
 

Similar to Κεφ. 3 Δομές Δεδομένων και Αλγόριθμοι (19)

Κεφ. 3 Δομές Δεδομένων και Αλγόριθμοι
Κεφ. 3 Δομές Δεδομένων και ΑλγόριθμοιΚεφ. 3 Δομές Δεδομένων και Αλγόριθμοι
Κεφ. 3 Δομές Δεδομένων και Αλγόριθμοι
 
κεφ 3
κεφ 3κεφ 3
κεφ 3
 
ΑΕΠΠ ΚΕΦ 3
ΑΕΠΠ ΚΕΦ 3ΑΕΠΠ ΚΕΦ 3
ΑΕΠΠ ΚΕΦ 3
 
Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 2 2 6
Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 2 2 6Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 2 2 6
Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 2 2 6
 
αναπαράσταση αλγορίθμων και δεδομένων
αναπαράσταση αλγορίθμων και δεδομένωναναπαράσταση αλγορίθμων και δεδομένων
αναπαράσταση αλγορίθμων και δεδομένων
 
Εισαγωγή στις αρχές της επιστήμης των ΗΥ Κεφ 2 2 8
Εισαγωγή στις αρχές της επιστήμης των ΗΥ Κεφ 2 2 8Εισαγωγή στις αρχές της επιστήμης των ΗΥ Κεφ 2 2 8
Εισαγωγή στις αρχές της επιστήμης των ΗΥ Κεφ 2 2 8
 
εντοτητα 2.2
εντοτητα 2.2εντοτητα 2.2
εντοτητα 2.2
 
Παρουσίαση Ουράς και Στοίβας για τη "Γλώσσα"
Παρουσίαση Ουράς και Στοίβας για τη "Γλώσσα"Παρουσίαση Ουράς και Στοίβας για τη "Γλώσσα"
Παρουσίαση Ουράς και Στοίβας για τη "Γλώσσα"
 
Python Κεφ. 1.6.1 Πίνακες
Python Κεφ. 1.6.1 ΠίνακεςPython Κεφ. 1.6.1 Πίνακες
Python Κεφ. 1.6.1 Πίνακες
 
Τύποι δεδομένων
Τύποι δεδομένωνΤύποι δεδομένων
Τύποι δεδομένων
 
Algorithms
AlgorithmsAlgorithms
Algorithms
 
βάσεις δεδομένων κεφ2
βάσεις δεδομένων κεφ2βάσεις δεδομένων κεφ2
βάσεις δεδομένων κεφ2
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
 
Linux εντολή find
Linux εντολή findLinux εντολή find
Linux εντολή find
 
Python Κεφ. 1.6 Λίστες
Python Κεφ. 1.6 ΛίστεςPython Κεφ. 1.6 Λίστες
Python Κεφ. 1.6 Λίστες
 
Ασκήσεις στις Δυναμικές Δομές Δεδομένων.pdf
Ασκήσεις στις Δυναμικές Δομές Δεδομένων.pdfΑσκήσεις στις Δυναμικές Δομές Δεδομένων.pdf
Ασκήσεις στις Δυναμικές Δομές Δεδομένων.pdf
 
ΠΛΗ10 ΤΕΣΤ 31
ΠΛΗ10 ΤΕΣΤ 31ΠΛΗ10 ΤΕΣΤ 31
ΠΛΗ10 ΤΕΣΤ 31
 
Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetup
Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetupΠαρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetup
Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetup
 
Exercise3
Exercise3Exercise3
Exercise3
 

More from Ιωάννου Γιαννάκης

More from Ιωάννου Γιαννάκης (20)

Karel The Robot
Karel The RobotKarel The Robot
Karel The Robot
 
MakeCode.ppt
MakeCode.pptMakeCode.ppt
MakeCode.ppt
 
App inventor2
App inventor2App inventor2
App inventor2
 
Pencil code
Pencil codePencil code
Pencil code
 
Cloud computing
 Cloud computing Cloud computing
Cloud computing
 
Proxy server
Proxy serverProxy server
Proxy server
 
Alice 3
Alice 3Alice 3
Alice 3
 
Εισαγωγή στο Alice 3
Εισαγωγή στο Alice 3Εισαγωγή στο Alice 3
Εισαγωγή στο Alice 3
 
11 συγχρονισμός ώρας συστήματος
11 συγχρονισμός ώρας συστήματος11 συγχρονισμός ώρας συστήματος
11 συγχρονισμός ώρας συστήματος
 
Σωληνώσεις cat sort tee
Σωληνώσεις cat sort teeΣωληνώσεις cat sort tee
Σωληνώσεις cat sort tee
 
Παρακολούθηση διεργασιών
Παρακολούθηση διεργασιώνΠαρακολούθηση διεργασιών
Παρακολούθηση διεργασιών
 
Eντολή Chmod
Eντολή ChmodEντολή Chmod
Eντολή Chmod
 
Eντολές More less head tail
Eντολές More less head tailEντολές More less head tail
Eντολές More less head tail
 
Εντολές lp wc grep
Εντολές lp wc grepΕντολές lp wc grep
Εντολές lp wc grep
 
10 εντολές cp mv rm ln
10 εντολές cp mv rm ln10 εντολές cp mv rm ln
10 εντολές cp mv rm ln
 
09 εντολές mkdir rmdir
09 εντολές mkdir rmdir09 εντολές mkdir rmdir
09 εντολές mkdir rmdir
 
08 εντολή cd
08 εντολή cd08 εντολή cd
08 εντολή cd
 
07 εντολές pwd ls
07 εντολές pwd ls07 εντολές pwd ls
07 εντολές pwd ls
 
06 εντολές clear cal date finger
06 εντολές clear cal date finger06 εντολές clear cal date finger
06 εντολές clear cal date finger
 
05 απόλυτη σχετική διαδρομή
05 απόλυτη  σχετική διαδρομή05 απόλυτη  σχετική διαδρομή
05 απόλυτη σχετική διαδρομή
 

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

  • 1. Κεφ. 3 Δομές Δεδομένων και Αλγόριθμοι Περιεχόμενα Δεδομένα Αλγόριθμοι + Δομές δεδομένων = Προγράμματα Πίνακες Στοίβα και ουρά Αναζήτηση και Ταξινόμηση Αναδρομή Άλλες δομές δεδομένων Ιωάννου Γιαννάκης
  • 2. &3.1 Δεδομένα Δεδομένα: είναι ακατέργαστο πληροφοριακό υλικό, το οποίο αναπαριστά μια μορφή της πραγματικότητας και τα χρησιμοποιούμε προκειμένου να τα επεξεργαστούμε με σκοπό την παραγωγή πληροφοριών. Πληροφορία: είναι η γνώση που παρέχεται στον άνθρωπο ως αποτέλεσμα της επεξεργασίας των δεδομένων. Αλγόριθμος: είναι το μέσο παραγωγής της πληροφορίας. Η πληροφορική είναι η επιστήμη που μελετά τα δεδομένα από τις ακόλουθες σκοπιές:  Υλικού  Γλωσσών προγραμματισμού  Δομών δεδομένων  Ανάλυσης δεδομένων
  • 3. &3.2 Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα Δομή δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία από ένα σύνολο λειτουργιών. Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες: τις στατικές (static) και τις δυναμικές (dynamic). Οι βασικές λειτουργίες (πράξεις) επί των δομών δεδομένων είναι οι ακόλουθες:  Προσπέλαση (access), πρόσβαση σε ένα κόμβο με σκοπό να εξεταστεί ή να τροποποιηθεί το περιεχόμενο του.  Εισαγωγή (insertion), δηλαδή η προσθήκη νέων κόμβων σε μία υπάρχουσα δομή.  Διαγραφή (deletion), που αποτελεί το αντίστροφο της εισαγωγής, δηλαδή ένας κόμβος αφαιρείται από μία δομή.  Αναζήτηση (searching), Κατά την οποία προσπελαύνονται οι κόμβοι μιας δομής, προκειμένου να εντοπιστούν ένας ή περισσότεροι που έχουν μια δεδομένη ιδιότητα.  Ταξινόμηση (sorting), όπου οι κόμβοι μιας δομής διατάσσονται κατά αύξουσα ή φθίνουσα σειρά.  Αντιγραφή (copying), κατά την οποία όλοι οι κόμβοι ή μερικοί από τους κόμβους μίας δομής αντιγράφονται σε μία άλλη δομή.  Συγχώνευση (merging), κατά την οποία δύο ή περισσότερες δομές συνενώνονται σε μία ενιαία δομή  Διαχωρισμός (separation), που αποτελεί την αντίστροφη πράξη της συγχώνευσης
  • 4. &3.2 Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα Εξίσωση του Wirth: Αλγόριθμοι + Δομές Δεδομένων= Προγράμματα
  • 5. Κατηγορίες δομών δεδομένων Στατικές δομές Αποθηκεύονται σε συνεχόμενες θέσεις μνήμης, έχουν σταθερό μέγεθος το οποίο καθορίζεται κατά τη στιγμή της εκτέλεσης του προγράμματος. Υλοποιούνται με πίνακες Δυναμικές δομές: Δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης, δεν έχουν σταθερό μέγεθος, αλλά ο αριθμός των κόμβων τους αυξάνεται και μειώνεται όταν εισάγονται ή διαγράφονται δεδομένα στη δομή. Το μέγεθος της μνήμης καθορίζεται κατά τη στιγμή της εκτέλεσης του προγράμματος. Υλοποιούνται με λίστες.
  • 6. &3.3 Πίνακες Πίνακας (Table ή Array) είναι μια στατική δομή δεδομένων ή οποία αποτελείται από στοιχεία ίδιου τύπου, τα οποία έχουν κοινό όνομα (το όνομα του πίνακα) και διακρίνονται μεταξύ τους με τη βοήθεια ενός δείκτη (index) ή δεικτών (indexes) ανάλογα με τις διαστάσεις του πίνακα. Μονοδιάστατος πίνακας  1 δείκτης Δισδιάστατος πίνακας  2 δείκτες
  • 7. &3.3 Πίνακες Παράδειγμα 1 Δίνεται ένας μονοδιάστατος πίνακας table 100 στοιχείων. Να σχεδιασθεί αλγόριθμος που να βρίσκει το μικρότερο του στοιχείο. Λειτουργία Το πρώτο στοιχείο του πίνακα εκχωρείται στη μεταβλητή Min. Στη συνέχεια κάθε επόμενο στοιχείο του πίνακα εξετάζεται, αν είναι μικρότερο του Min και αν ναι, τότε αντικαθιστά το προηγούμενο. Έτσι στο τέλος θα υπάρχει στη μεταβλητή Min το μικρότερο στοιχείο όλου του πίνακα.
  • 8. &3.3 Πίνακες Παράδειγμα 2 Δίνεται ένας δισδιάστατος πίνακας table m γραμμές n στήλες. Να βρεθεί το άθροισμα κατά γραμμή, κατά στήλη και συνολικά. Λειτουργία Αρχικά μηδενίζουμε τον αθροιστή Sum και τους πίνακες row και col. Ο διπλός εμφωλευμένος βρόχος που ακολουθεί είναι η καρδιά του αλγόριθμος. Σ’ αυτόν γίνονται οι υπολογισμοί που ζητά η εκφώνηση του παραδείγματος.
  • 9. &3.4 Στοίβα Μία στοίβα δεδομένων μοιάζει με μία στοίβα από πιάτα. Τα δεδομένα που βρίσκονται στη κορυφή της στοίβας λαμβάνονται πρώτα, ενώ αυτά που βρίσκονται στο βάθος της στοίβας λαμβάνονται τελευταία. Αυτή η μέθοδος επεξεργασίας ονομάζεται LIFO. Οι κύριες λειτουργίες της στοίβας είναι δύο:  Η ώθηση (push) στοιχείου στην κορυφή της στοίβας  Η απώθηση (pop) στοιχείου από τη στοίβα.
  • 10. &3.5 Ουρά Ουρά: ονομάζεται μια δομή δεδομένων στην οποία τα δεδομένα τοποθετούνται σε μια σειρά. Τη σειρά αυτή μπορούμε να τη φανταστούμε οριζόντια, έτσι ώστε τα δεδομένα που τοποθετήθηκαν πρώτα στην ουρά να λαμβάνονται επίσης πρώτα (FIFO). Δύο είναι οι κύριες λειτουργίες σε μία ουρά.  Η εισαγωγή (enqueue) στοιχείου στο πίσω άκρο της ουράς, και  Η εξαγωγή (dequeue) στοιχείου από το εμπρός μέρος της ουράς. Στην περίπτωση της ουράς απαιτούνται δύο δείκτες: ο εμπρός (front) και ο πίσω (rear), που μας δίνουν τη θέση του στοιχείου που σε πρώτη ευκαιρία θα εξαχθεί και τη θέση του στοιχείου που μόλις εισήλθε. Μια ουρά μπορεί να υλοποιηθεί με τη βοήθεια ενός μονοδιάστατου πίνακα.
  • 11. &3.6 Αναζήτηση Η πιο απλή μορφή αναζήτησης στοιχείου σε πίνακα είναι η σειριακή αναζήτηση (sequential) ή γραμμική (linear) μέθοδος. Έτσι για τον επόμενο αλγόριθμο Sequential_Search υποτίθεται ότι αναζητείται η τιμή key στο μη ταξινομημένο πίνακα table. Μετά την εκτέλεση του αλγορίθμου η μεταβλητή position επιστρέφει την τιμή 0, αν η αναζήτηση είναι ανεπιτυχής, ενώ αν η αναζήτηση είναι επιτυχής, τότε επιστρέφει τη θέση του στοιχείου στον πίνακα (δηλαδή, έναν αριθμό από 1 ως n).
  • 12. &3.6 Αναζήτηση Η σειριακή αναζήτηση είναι η πιο απλή, αλλά και η λιγότερη αποτελεσματική μέθοδος αναζήτησης. Έτσι, δικαιολογείται η χρήση της μόνο σε περιπτώσεις όπου:  Ο πίνακας είναι ταξινομημένος,  Ο πίνακας είναι μικρού μεγέθους (για παράδειγμα , n<=20),  Η αναζήτηση σε ένα συγκεκριμένο πίνακα γίνεται σπάνια
  • 13. &3.7 Ταξινόμηση Ορισμός της ταξινόμησης Δοθέντων των στοιχείων a1,a2, …, an η ταξινόμηση συνίσταται στη μετάθεση (permutation) της θέσης των στοιχείων, ώστε να τοποθετηθούν σε μια σειρά ak1, ak2, … , akn έτσι ώστε, δοθείσης μίας συνάρτησης διάταξης (ordering function), f, ν ισχύει: F(ak1)<=f(ak2)<= … <=f(akn) Αξίζει να σημειωθεί ότι η προηγούμενη συνάρτηση διάταξης μπορεί να τροποποιηθεί, ώστε να καλύπτει και την περίπτωση που η ταξινόμηση γίνεται με φθίνουσα τάξη (descending sequence) μεγέθους.
  • 14. &3.7 Ταξινόμηση Υλοποίηση ταξινόμησης ευθείας ανταλλαγής ή φυσαλίδας (bubblesort)