1 / 15

Δομές Δεδομένων στο Λ.Π.

Δομές Δεδομένων στο Λ.Π. Λίστες. Λίστα είναι ένας όρος Οι όροι αυτοί ορίζονται με τη βοήθεια μιας συνάρτησης: [ ] σταθερά για κενή λίστα – nil [t1| l] όπου t1 όρος και l λίστα η συνάρτηση έχει το σύμβολο [ | ] ( ↔ f ( , ) ) Παραδείγματα [8,6, cat] [8| [6| [cat| []]]]

Download Presentation

Δομές Δεδομένων στο Λ.Π.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Δομές Δεδομένωνστο Λ.Π.

  2. Λίστες • Λίστα είναι ένας όρος • Οι όροι αυτοί ορίζονται με τη βοήθεια μιας συνάρτησης: • [ ] σταθερά για κενή λίστα – nil • [t1| l] όπου t1 όρος και l λίστα • η συνάρτηση έχει το σύμβολο [ | ] ( ↔f( , ) ) • Παραδείγματα • [8,6,cat] [8| [6| [cat| []]]] • [a] [a| []] • [a| X] • [a, b, 3| X]

  3. Πρόγραμμα κωδικοποίησης λιστών • list ([]). list ([Χ| Χs]):- list (Χs). • ? list ([1, 3, 9]) • Yes • list ([a|[]]) • Yes • list ([a| X]) X = []; X = [A]; X = [A, B]

  4. Προγράμματα διαχείρισης λιστών • member (Χ, [Χ| Χs]). member (Χ, [Υ| Υs]):- member (Χ, Υs). • ? member (b, [a, b, c]) • Yes • ? member (a, []) • No • ? member (b, Χ) X = [b| A]; X = [A, b| B] ….

  5. Προγράμματα διαχείρισης λιστών • append ([], Χ, Χ). append ([Χ| Χ1], Υ, [Χ| Ζ]):- append (Χ1,Υ,Ζ). • ? append ([a, b], [c, d], X) X= [a, b, c, d] • ? append (X, [c, d], [a, c, d]) X= [a]

  6. Προγράμματα διαχείρισης λιστών • reverse ([], []) reverse ([X| X1], Z):- reverse (X1, Y), append (Y, [X], Z). • ? reverse ([a, b, c], X) X = [c, b, a] • length ([], 0). length ([X| Xs], L):- length (Xs, N), L is N+1

  7. Δένδρο υπολογισμού  reverse ([a, b], X) • (2ον κανόνα) •  reverse ([b], Y), append (Y, [a], X) • | (2ο κανόνα) •  reverse ([], Y1), append (Y1, [b], Y), append (Y, [a], X) • | (1ο κανόνα) •  append ([], [b], Y), append (Y, [a], X) • | (1ο κανόνα) •  append ([b], [a], X) • | (2ο κανόνα) X=[b| z] •  append ([], [a], Z)) • | Z= [a] • [] X= [b| Z], Z=[a] => X=[b|[a]]=[b,a] Yes, X=[b,a]

  8. (Ground) Δένδρο •  reverse ([a, b], [b, a]) • | •  reverse ([b], [b]), append ([b], [a], [b, a]) • | •  reverse ([], []), append ([], [b], [b], append ([b], [a], [b, a]) • | (γεγονός) •  append ([], [b], [b], append ([b], [a], [b, a] • | (γεγονός) •  append ([b], [a], [b, a] • | •  append ([], [a], [a] • | (γεγονός) • []

  9. Προγράμματα διαχείρισης λιστών • %delete(Αρχική Λίστα, Στοιχείο, Τελική Λίστα) • delete ([X| Xs], X, Ys):- delete (Xs, X, Ys). delete ([X| Xs], Z, [X| Ys]):- X ≠ Z, delete (Xs, Z, Ys). delete ([ ], X, [ ]). • Τι θα γίνει αν αφαιρέσουμε τη συνθήκη «X ≠ Z»; (not all occurrences deleted!) • ? delete ([a], b, [a]) • Yes

  10. Προγράμματα διαχείρισης λιστών • %new_delete • new_delete (X, [X| Xs], Xs). new_delete (X, [Y| Ys], [Y| Zs]):- select (X, Ys, Zs). • % select • select (X, [X| Xs], Xs) • select (X, [Y| Ys], [Y| Zs]):- select (X, Ys, Zs) • Ποιά η διαφορά των δύο “delete”;

  11. Ταξινόμηση • sort (X, Y):- permutation (X, Y), ordered (Y). Παράδειγμα«generate-and-test» Naïve permutation sort • % ordered ordered ([]) ordered ([X]) ordered ([X, Y| Ys]):- X<= Y, ordered ([Y| Ys]). • % permutation permutation (Χ, [Υ| Ζ]):- select (Υ, Χ,Υ1), permutation (Υ1, Ζ). permutation ([], []).

  12. Insertion sort • sort ([Χ| Χs], Υs):- sort (Χs, Ζs), insert (Χ, Ζs,Υs) sort ([], []) • %insert insert (Χ, [], [Χ]) insert (Χ, [Υ| Υs], [Υ| Ζs]):- Χ > Υ, insert (Χ, Υs, Ζs) insert (Χ, [Υ| Υs], [Χ, Υ| Υs]):- Χ <= Υ.

  13. Quicksort • quicksort ([Χ| Χs], Υs):- partition (Χs, Χ, Littles, Bigs), quicksort (Littles, Ls), quicksort (Bigs, Bs), append (Ls, [X| Bs], Ys). quicksort([], []) partition ([X| Xs], Y, [X| Ls], Bs):- X<=Y, partition (Xs, Y, Ls, Bs) partition ([X| Xs], Y, Ls, [X| Bs]):- X>Y, partition (Xs, Y, Ls, Bs) partition ([], Y, [], [])

  14. Δένδρα • Δένδρο είναι όρος που ορίζεται με τη βοήθεια της συνάρτησης: • void • tree (Element, Left, Right) • %binary_tree (Tree) binary_tree (void). binary_tree (tree (Element, Left, Right)):- binary_tree (Left), binary_tree (Right). • tree_member (Element, Tree) tree_member (Χ, tree (Χ, L, R)) tree_member (Χ, tree (Y, L, R)):- tree_member (X, Left) tree_member (Χ, tree (Y, L, R)):- tree_member (X,Right)

  15. Δένδρα (συνέχεια) • % substitute (X, Y, TreeX, TreeY) substitute (X, Y, void, void) substitute (X, Y, tree (N, L, R), tree (N1, L1, R1):- replace (X, Y, N, N1), substitute (X, Y, L, L1), substitute (X, Y, R, R1). replace (X, Y, X, Y) replace (X, Y, Z, Z):- X ≠ Z

More Related