reverse reverse X X 1 Z reverse X

  • Slides: 15
Download presentation

Προγράμματα διαχείρισης λιστών • reverse ([], []) reverse ([X| X 1], Z): - reverse

Προγράμματα διαχείρισης λιστών • reverse ([], []) reverse ([X| X 1], Z): - reverse (X 1, 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

Ταξινόμηση • sort (X, Y): - permutation (X, Y), ordered (Y). Παράδειγμα «generate-and-test» Naïve

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

Quicksort • quicksort ([Χ| Χs], Υs): partition (Χs, Χ, Littles, Bigs), quicksort (Littles, Ls),

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

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

Δένδρα • Δένδρο είναι όρος που ορίζεται με τη βοήθεια της συνάρτησης: – void – tree (Element, Left, Right) • %binary_tree (Tree) binary_tree (void). binary_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)

Δένδρα (συνέχεια) • % substitute (X, Y, Tree. X, Tree. Y) substitute (X, Y,

Δένδρα (συνέχεια) • % substitute (X, Y, Tree. X, Tree. Y) substitute (X, Y, void) substitute (X, Y, tree (N, L, R), tree (N 1, L 1, R 1): replace (X, Y, N, N 1), substitute (X, Y, L, L 1), substitute (X, Y, R, R 1). replace (X, Y, X, Y) replace (X, Y, Z, Z): - X ≠ Z