Δομές Δεδομένων
This presentation is the property of its rightful owner.
Sponsored Links
1 / 15

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


  • 89 Views
  • Uploaded on
  • Presentation posted in: General

Δομές Δεδομένων στο Λ.Π. Λίστες. Λίστα είναι ένας όρος Οι όροι αυτοί ορίζονται με τη βοήθεια μιας συνάρτησης: [ ] σταθερά για κενή λίστα – 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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


3215854

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


3215854

Λίστες

  • Λίστα είναι ένας όρος

    • Οι όροι αυτοί ορίζονται με τη βοήθεια μιας συνάρτησης:

      • [ ] σταθερά για κενή λίστα – nil

      • [t1| l] όπου t1 όρος και l λίστα

    • η συνάρτηση έχει το σύμβολο [ | ] ( ↔f( , ) )

  • Παραδείγματα

    • [8,6,cat][8| [6| [cat| []]]]

    • [a][a| []]

    • [a| X]

    • [a, b, 3| X]


3215854

Πρόγραμμα κωδικοποίησης λιστών

  • list ([]).

    list ([Χ| Χs]):- list (Χs).

  • ? list ([1, 3, 9])

    • Yes

  • list ([a|[]])

    • Yes

  • list ([a| X])

    X = [];

    X = [A];

    X = [A, B]


3215854

Προγράμματα διαχείρισης λιστών

  • member (Χ, [Χ| Χs]).

    member (Χ, [Υ| Υs]):- member (Χ, Υs).

  • ? member (b, [a, b, c])

    • Yes

  • ? member (a, [])

    • No

  • ? member (b, Χ)

    X = [b| A];

    X = [A, b| B]

    ….


3215854

Προγράμματα διαχείρισης λιστών

  • 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]


3215854

Προγράμματα διαχείρισης λιστών

  • 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


3215854

Δένδρο υπολογισμού

 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]


Ground

(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]

  • | (γεγονός)

  • []


3215854

Προγράμματα διαχείρισης λιστών

  • %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


3215854

Προγράμματα διαχείρισης λιστών

  • %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”;


3215854

Ταξινόμηση

  • 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 ([], []).


Insertion sort

Insertion sort

  • sort ([Χ| Χs], Υs):- sort (Χs, Ζs), insert (Χ, Ζs,Υs)

    sort ([], [])

  • %insert

    insert (Χ, [], [Χ])

    insert (Χ, [Υ| Υs], [Υ| Ζs]):- Χ > Υ, insert (Χ, Υs, Ζs)

    insert (Χ, [Υ| Υs], [Χ, Υ| Υs]):- Χ <= Υ.


Quicksort

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, [], [])


3215854

Δένδρα

  • Δένδρο είναι όρος που ορίζεται με τη βοήθεια της συνάρτησης:

    • 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)


3215854

Δένδρα (συνέχεια)

  • % 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


  • Login