Μεθοδολογίες Πινάκων 3 ο 9 ο ΕΙΣΑΓΩΓΗ ΣΤΟΙΧΕΙΩΝ ΣΕ ΠΙΝΑΚΕΣ 1. Εισαγωγή σε µονοδιάστατο Α Ν (αντίστοιχα σε δισδιάστατο) και πιθανός έλεγχος εγκυρότητας των τιµών ή Αρχή_Επανάληψης ιάβασε Α[Ι] Μέχρις_ότου Α[Ι] ιάβασε Α[Ι] Όσο Α[Ι]. επανάλαβε ιάβασε Α[Ι] 2. Εισαγωγή ανά γραµµή σε δισδιάστατο Α ΝxM ιάβασε Α[Ι,J] 3. Εισαγωγή ανά στήλη σε δισδιάστατο Α ΝxM ιάβασε Α[Ι,J] Α. Αλεξίου ΠΕ19 Ph.D., Γ. Παπαπαναγιώτου ΠΕ19 M.Sc. 1
ΥΠΟΛΟΓΙΣΜΟΙ ΑΝΑ ΓΡΑΜΜΗ-ΣΤΗΛΗ ΣΕ ΙΣ ΙΑΣΤΑΤΟ 1. Άθροισµα ανά γραµµή και αποθήκευση σε νέο πίνακα για περαιτέρω επεξεργασία των τιµών (και για υπολογισµό τυχόν Μέσου Όρου κλπ.) Σ 0 Σ Σ+Α[Ι,J] Β[Ι] Σ 2. Οµοίως Άθροισµα ανά Στήλη και αποθήκευση σε νέο πίνακα κλπ. Σ 0 Σ Σ+Α[Ι,J] Β[J] Σ 3. Μέγιστο ανά γραµµή και αποθήκευση σε νέο πίνακα Μax Α[Ι,1] Για J από 2 µέχρι M Αν Α[Ι,J]>Μax τότε Μax Α[ι,J] Χ[Ι] Μax 4. Εύρεση πλήθους στοιχείων, ανά γραµµή και αποθήκευση σε νέο πίνακα π 0 Για J από 1 µέχρι M Αν συνθήκη τότε π π+1 Χ[Ι] π Α. Αλεξίου ΠΕ19 Ph.D., Γ. Παπαπαναγιώτου ΠΕ19 M.Sc. 2
ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ 1. Σειριακή αναζήτηση στοιχείου Χ σε πίνακα Α Ν, όπου η αναζήτηση τερµατίζεται όταν βρεθεί η τιµή Αναζήτηση ψευδής Ι 1 Όσο (Αναζήτηση = ψευδής) ΚΑΙ (Ι <= Ν) επανάλαβε Αν Α[Ι]=Χ τότε Αναζήτηση αληθής Εµφάνισε Η τιµή, Χ, βρέθηκε στην, Ι, θέση του πίνακα Θ Ι Ι Ι + 1 Αν Αναζήτηση = ψευδής τότε Εµφάνισε Η τιµή, Χ, δε βρέθηκε στον πίνακα 2. Σειριακή αναζήτηση στοιχείου Χ σε πίνακα Α Ν όπου ελέγχουµε σε πόσες και σε ποιες θέσεις υπάρχει η τιµή και αποθηκεύουµε σε νέο κατάλληλο πίνακα B Ν τις θέσεις Αναζήτηση ψευδής Π 0 Αν Α[Ι]=Χ τότε Αναζήτηση αληθής Εµφάνισε Η τιµή, Χ, βρέθηκε στην, Ι, θέση του πίνακα Π Π+1 Β[Π] Ι Αν Αναζήτηση = ψευδής τότε Εµφάνισε Η τιµή, Χ, δε βρέθηκε στον πίνακα Εµφάνισε βρέθηκε, Π, φορές και συγκεκριµένα στις θέσεις: Για Ι από 1 µέχρι Π Εµφάνισε Β[Ι] Α. Αλεξίου ΠΕ19 Ph.D., Γ. Παπαπαναγιώτου ΠΕ19 M.Sc. 3
3. Σειριακή αναζήτηση στοιχείου σε δισδιάστατο πίνακα Α ΝxM, όπου η αναζήτηση τερµατίζεται όταν βρεθεί η τιµή Αναζήτηση ψευδής Ι 1 Όσο (Αναζήτηση = ψευδής) ΚΑΙ (Ι <= Ν) επανάλαβε J 1 Όσο (Αναζήτηση = ψευδής) ΚΑΙ (J <= Μ) επανάλαβε Αν Α[Ι,J]=Χ τότε Αναζήτηση αληθής Εµφάνισε Η τιµή, Χ, βρέθηκε στην, Ι,J, θέση του πίνακα ΘΓ Ι ΘΣΤ J J J + 1 I I+1 Αν Αναζήτηση = ψευδής τότε Εµφάνισε Η τιµή, Χ, δε βρέθηκε στον πίνακα 4. Σειριακή αναζήτηση στοιχείου Χ σε δισδιάστατο πίνακα Α ΝxM όπου ελέγχουµε σε πόσες και σε ποιες θέσεις υπάρχει η τιµή και αποθηκεύουµε σε νέο κατάλληλο πίνακα B (N*M)x2 τις θέσεις Αναζήτηση ψευδής Π 0 Αν Α[Ι,J]=Χ τότε Αναζήτηση αληθής Εµφάνισε Η τιµή, Χ, βρέθηκε στην, Ι, J, θέση του πίνακα Π Π+1 Β[Π,1] Ι Β[Π,2] J Αν Αναζήτηση = ψευδής τότε Εµφάνισε Η τιµή, Χ, δε βρέθηκε στον πίνακα Εµφάνισε βρέθηκε, Π, φορές και συγκεκριµένα στις θέσεις: Για Ι από 1 µέχρι Π Εµφάνισε Β[Ι,1], Β[Ι,2] Α. Αλεξίου ΠΕ19 Ph.D., Γ. Παπαπαναγιώτου ΠΕ19 M.Sc. 4
ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΤΗ ΜΕΘΟ Ο ΤΗΣ ΕΥΘΕΙΑΣ ΑΝΤΑΛΛΑΓΗΣ ΤΙΜΩΝ 1) Ταξινόµηση (κατά αύξουσα σειρά, αν αλλάξουµε τη φορά της ανίσωσης γίνεται φθίνουσα) µονοδιάστατου πίνακα Α Ν Για ι από 2 µέχρι Ν Για j από Ν µέχρι ι µε_βήµα -1 Αν Α[j-1]>A[j] τότε Temp A[j-1] A[j-1] A[j] A[j] Temp 2) Ταξινόµηση δύο ή περισσοτέρων συσχετισµένων (παράλληλων) µονοδιάστατων πινάκων Α Ν, Β Ν, Γ Ν ως προς τον έναν από αυτούς. Για παράδειγµα εδώ έστω ως προς τον Α Ν Για ι από 2 µέχρι Ν Για j από Ν µέχρι ι µε_βήµα -1 Αν Α[j-1]>A[j] τότε Temp A[j-1] A[j-1] A[j] A[j] Temp Temp1 Β[j-1] Β[j-1] Β[j] Β[j] Temp1 Temp2 Γ[j-1] Γ[j-1] Γ[j] Γ[j] Temp2 3) Ταξινόµηση των γραµµών ή των στηλών ενός δισδιάστατου πίνακα Α ΝxM ως προς µια γραµµή ή στήλη του αντίστοιχα. Για παράδειγµα εδώ έστω ότι ταξινοµούµε τις στήλες του ως προς την πρώτη στήλη Για ι από 2 µέχρι Ν Για j από Ν µέχρι ι µε_βήµα -1 Αν Α[j-1,1]>A[j,1] τότε Για κ από 1 µέχρι Μ Temp A[j-1,κ] A[j-1,κ] A[j,κ] A[j,κ] Temp Α. Αλεξίου ΠΕ19 Ph.D., Γ. Παπαπαναγιώτου ΠΕ19 M.Sc. 5
4) Ταξινόµηση κάθε γραµµής ή κάθε στήλης αντίστοιχα ενός δισδιάστατου πίνακα Α ΝxM. Για παράδειγµα εδώ έστω ότι ταξινοµούµε κάθε γραµµή ξεχωριστά. Για κ από 1 µέχρι Ν Για ι από 2 µέχρι Μ Για j από Μ µέχρι ι µε_βήµα -1 Αν Α[κ,j-1]>A[κ,j] τότε Temp A[κ,j-1] A[κ,j-1] A[κ,j] A[κ,j] Temp 5) Έξυπνη φυσαλίδα : Παραλλαγή της κλασσικής ταξινόµησης φυσαλίδας µονοδιάστατου πίνακα Α Ν, έτσι ώστε να ελαχιστοποιούνται οι περιττές επαναλήψεις-έλεγχοι που πιθανόν να πραγµατοποιούνται όταν ταξινοµούνται όλα τα στοιχεία του πίνακα ι 2 ταξ ψευδής Όσο (ταξ=ψευδής) και (ι<=ν) επανάλαβε ταξ αληθής Για j από Ν µέχρι ι µε_βήµα -1 Αν Α[j-1]>A[j] τότε Temp A[j-1] A[j-1] A[j] A[j] Temp ταξ ψευδής ι ι+1 6) Ταξινόµηση όλων των στοιχείων ενός δισδιάστατου πίνακα Α ΝxM µε τη σειρά, βάζοντας για παράδειγµα στη θέση (1,1) το µικρότερο και στη θέση (Ν,Μ) το µεγαλύτερο κ 0 κ κ+1 Β[κ] Α[ι,j] Για ι από 2 µέχρι (Ν*Μ) Για j από (Ν*Μ) µέχρι ι µε_βήµα -1 Αν Β[j-1]>Β[j] τότε Temp Β[j-1] Β[j-1] Β[j] Β[j] Temp κ 0 κ κ+1 Α[ι,j] Β[κ] Α. Αλεξίου ΠΕ19 Ph.D., Γ. Παπαπαναγιώτου ΠΕ19 M.Sc. 6
ΣΥΓΧΩΝΕΥΣΗ ΠΙΝΑΚΩΝ 1) Κανονική µέθοδος, όπου όµως οι υπό συγχώνευση πίνακες Α Ν και Β Μ είναι ήδη ταξινοµηµένοι και ο τελικός Γ Ν+Μ που προκύπτει είναι και αυτός ταξινοµηµένος χωρίς τη χρήση ταξινόµησης Ι 1 J 1 K 1 Όσο (Ι<=Ν) ΚΑΙ (J<=Μ) επανέλαβε Αν Α[Ι]<Β[J]τότε Γ[Κ] Α[Ι] Ι Ι+1 Γ[Κ] Β[J] J J+1 Κ Κ+1 Αν Ι>Ν τότε Για Λ από Κ µέχρι Ν+Μ Γ[Λ] Β[J] J J+1 Για Λ από Κ µέχρι Ν+Μ Γ[Λ] Α[Ι] Ι Ι+1 Για Λ από 1 µέχρι Ν+Μ Εµφάνισε Γ[Λ] 2) Εναλλακτική µέθοδος, όπου όµως οι υπό συγχώνευση πίνακες Α Ν, Β Μ και Γ Κ είναι ταξινοµηµένοι µπορεί όµως και όχι, και ο τελικός Ν+Μ+Κ που προκύπτει από αντιγραφή των άλλων δύο, πρέπει να ταξινοµηθεί [Ι] Α[Ι] Για Ι από Ν+1 µέχρι Ν+Μ [Ι] Β[Ι-Ν] Για Ι από Ν+Μ+1 µέχρι Ν+Μ+Κ [Ι] Γ[Ι-(Ν+Μ)] Ταξινόµηση του µονοδιάστατου Ν+Μ+Κ Α. Αλεξίου ΠΕ19 Ph.D., Γ. Παπαπαναγιώτου ΠΕ19 M.Sc. 7
ΠΡΑΞΕΙΣ ΠΙΝΑΚΩΝ 1) Άθροισµα πινάκων ίδιας διάστασης και ίδιων θέσεων, είτε για µονοδιάστατους είτε για δισδιάστατους ΤΥΠΟΙ: {γ ι =α ι +β ι } {γ ιj =α ιj +β ιj } Γ[ι] Α[ι]+Β[ι] Γ[ι,j] Α[ι,j]+Β[ι,j] 2) Γινόµενο πινάκων έστω Α ΝxΛ και Β ΛxΜ, όπου οι πίνακες για να πολλαπλασιαστούν πρέπει να ισχύει ότι: το πλήθος των στηλών του πρώτου είναι ίσο µε το πλήθος των γραµµών του δεύτερου οπότε και ο πίνακας που προκύπτει έχει γραµµές όσες και ο πρώτος και στήλες όσες και ο δεύτερος, δηλαδή εδώ Γ ΝxΜ (Ο πολλαπλασιασµός υλοποιείται αθροίζοντας όλα τα γινόµενα των αντίστοιχων στοιχείων της ι γραµµής του Α πίνακα µε τα στοιχεία της στήλης j του πίνακα Β. Στην περίπτωση που αναφερόµαστε σε µονοδιάστατους πίνακες τότε ο Α Ν θα γραφτεί ανάλογα Α Νx1 ή Α 1xΝ δηλαδή πίνακας γραµµή ή στήλη αντίστοιχα) ΤΥΠΟΣ: γ ij = Λ k=1 a ik * b kj Γ[ι,j] 0 Για k από 1 µέχρι Λ Γ[ι,j] Γ[ι,j]+Α[ι,k]*Β[k,j] 2 1 4 1 3 0 Α 2x3 5 1 2 3 = 0 4 B 3x2 2*5+1*2+4*0 2*1+1*3+4*4 1*5+3*2+0*0 1*1+3*3+0*4 Γ 2x2 Α. Αλεξίου ΠΕ19 Ph.D., Γ. Παπαπαναγιώτου ΠΕ19 M.Sc. 8
Ι ΙΟΤΗΤΕΣ ΠΙΝΑΚΩΝ 1) Κατασκευή αραιού πίνακα: όταν ο δισδιάστατος πίνακας αποτελείται κυρίως από µηδενικά, συνήθως πάνω από το 80% των στοιχείων του, τότε µετασχηµατίζεται σε κατάλληλο µονοδιάστατο, όπου περιέχονται µόνο τα µη µηδενικά στοιχεία και οι συντεταγµένες τους. ηλαδή ισχύει ο τύπος: <γραµµή1,στήλη1,τιµή1, γραµµή2,στήλη2,τιµή2,.> Μετασχηµατίζεται σε: Όπου δηλαδή, η τιµή 4 βρίσκεται στη θέση (2,1) και η τιµή 5 βρίσκεται στη θέση (3,3) κ 0 0 0 0 4 0 0 0 0 5 Α 3x3 2 1 4 3 3 5 B 6 Αν Α[ι,j]<>0 τότε κ κ+1 Β[κ] ι Β[κ+1] j Β[κ+2] Α[ι,j] κ κ+2 ΣΥΧΝΟΤΗΤΑ ΓΝΩΣΤΩΝ ΣΤΟΙΧΕΙΩΝ ΠΙΝΑΚΩΝ Παράδειγµα: υπολογισµός της συχνότητας κάθε ζαριάς, µετά από ρίψη Ν ζαριών. Καθώς ο δειγµατικός χώρος του ζαριού είναι {1,2,3,4,5,6}, µηδενίζουµε ένα πίνακα Σ 6 θέσεων και αποθηκεύουµε στις αντίστοιχες θέσεις το αποτέλεσµα κάθε ζαριάς. Για i από 1 µέχρι 6 Σ[i] 0 Για i από 1 µέχρι N x Z[i]!το αποτέλεσµα κάθε ζαριάς Σ[x] Σ[x]+1 Α. Αλεξίου ΠΕ19 Ph.D., Γ. Παπαπαναγιώτου ΠΕ19 M.Sc. 9