slide1
Download
Skip this Video
Download Presentation
Δομές Δεδομένων στο Λ.Π.

Loading in 2 Seconds...

play fullscreen
1 / 15

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


  • 119 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Δομές Δεδομένων στο Λ.Π.' - penha


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

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

  • ? list ([1, 3, 9])
    • Yes
  • list ([a|[]])
    • Yes
  • list ([a| X])

X = [];

X = [A];

X = [A, B]

slide4
Προγράμματα διαχείρισης λιστών
  • member (Χ, [Χ| Χs]).

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

  • ? member (b, [a, b, c])
    • Yes
  • ? member (a, [])
    • No
  • ? member (b, Χ)

X = [b| A];

X = [A, b| B]

….

slide5
Προγράμματα διαχείρισης λιστών
  • 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]

slide6
Προγράμματα διαχείρισης λιστών
  • 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

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

 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]
  • | (γεγονός)
  • []
slide9
Προγράμματα διαχείρισης λιστών
  • %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
slide10
Προγράμματα διαχείρισης λιστών
  • %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”;
slide11
Ταξινόμηση
  • 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, [], [])

slide14
Δένδρα
  • Δένδρο είναι όρος που ορίζεται με τη βοήθεια της συνάρτησης:
    • 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)

slide15
Δένδρα (συνέχεια)
  • % 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

ad