Download presentation

Presentation is loading. Please wait.

Published byJaylin Baty Modified over 2 years ago

1
cs7120 (Prasad)L10-COMB-FN1 Combinatorial Functions Recursion for problem solving

2
cs7120 (Prasad)L10-COMB-FN2 Enumerating Initial segments (prefixes) inits [1,2,3] = [[],[1],[1,2],[1,2,3]] inits [2,3] = [ [], [2], [2,3] ] fun inits [] = [[]] | inits (x::xs) = []:: (map (fn ys => x::ys) (inits xs) ); fun inits [] = [[]] | inits xs = (inits (init xs))@[xs];

3
cs7120 (Prasad)L10-COMB-FN3 Enumerating Subsequences subseq [2,3] = [[],[2],[3],[2,3]]; subseq [1,2,3] = [[], [1],[2],[3], [1,2],[1,3],[2,3],[1,2,3] ]; fun subseq [] = [[]] | subseq (x::xs) = let val ss = subseq xs in ss@(map (fn ys => x::ys) ss) end;

4
cs7120 (Prasad)L10-COMB-FN4 Enumerating permutations perms [2] = [[2]] perms [1,2] = [[1,2], [2,1]] perms [0,1,2] = [[0,1,2],[1,0,2],[1,2,0], [0,2,1],[2,0,1],[2,1,0]] fun interleave x [] = [[x]] | interleave x (y::ys) = (x::y::ys) :: (map(fn xs=>y::xs)(interleave x ys)); fun perms [] = [[]] | perms (x::xs) = foldr (op @) [] (map (interleave x) (perms xs)) ;

5
cs7120 (Prasad)L10-COMB-FN5 List partitions list-partitionThe list of non-empty lists [L1,L2,…,Lm] forms a list-partition of a list L iff concat [L1,L2,…,Lm] = L [] [1,2] -> [[ [1,2] ], [ [1],[2] ]] [ [0,1,2] -> [ [ [0,1,2] ], ] [ [0,1],[2] ], [ [0],[1,2] ], [ [0],[1],[2] ] ]

6
cs7120 (Prasad)L10-COMB-FN6 Counting problem fun cnt_lp 0 = 0 | cnt_lp 1 = 1 | cnt_lp n = 2 * (cnt_lp (n-1)); (* cnt_lp n = 2^(n-1) for n > 0 *) Property: cnt_lp (length xs) = (length (list_partition xs))

7
cs7120 (Prasad)L10-COMB-FN7 Constructing List Partitions fun lp [] = [] | lp (x::[]) = [ [[x]] ] | lp (y::x::xs) = let val aux = lp (x::xs) in () (map (fn ss => [y]::ss) aux)@ ( (map (fn ss => ( y:: ( hd ss ) ) ) :: ( tl ss )) aux) ; end;

8
cs7120 (Prasad)L10-COMB-FN8 Set partition set partitionThe set of (non-empty) sets [s1,s2,…,sm] forms a set partition of s iff the sets si ’s are collectively exhaustive and pairwise-disjoint. E.g., set partitions of {1,2,3} -> { { { 1,2,3 } }, { { 1 }, { 2,3 } }, { { 1,2 }, { 3 } }, { { 2 }, { 1,3 } }, { { 1},{2},{3 } } } (Cf. list partition, number partition, etc.)

9
cs7120 (Prasad)L10-COMB-FN9 (m-1) -partition of {2,3} Divide and Conquer m -partition of {1,2,3} 1 occurring with with a part in m -partition of {2,3} solitary part {1}:: 2-partitions of {1,2,3} = {1} { { {1},{2,3} } } U 11 { { {1,2},{3} }, { {2},{1,3} } }

10
cs7120 (Prasad)L10-COMB-FN10 Counting problem fun cnt_m_sp 1 n = 1 | cnt_m_sp m n = if m > n then 0 else if m = n then 1 else (cnt_m_sp (m-1) (n-1)) + (m * (cnt_m_sp m (n-1))); Dependency (visualization) –Basis: Row 1 and diagonal (Half-plane inapplicable) –Recursive step: Previous row, previous column

11
cs7120 (Prasad)L10-COMB-FN11 (cont’d) upto 3 6 = [3,4,5,6] fun upto m n = if (m > n) then [] else if (m = n) then [m] else m:: upto (m+1) n; fun cnt_sp n = foldr (op +) 0 (map (fn m => cnt_m_sp m n) (upto 1 n));

12
cs7120 (Prasad)L10-COMB-FN12 Constructing set partitions fun set_parts s = foldr (op@) [] ( map (fn m => (m_set_parts m s)) (upto 1 (length s)) ); fun ins_all e [] = [] | ins_all e (s::ss) = (((e::s)::ss) :: ( ( map (fn ts => s :: ts) ) (ins_all e ss) ) );

13
cs7120 (Prasad)L10-COMB-FN13 fun m_set_parts 1 s = [[s]] | m_set_parts m (s as hs::ts)= let val n = (length s) in if m > n then [] else if m = n then [foldr (fn (e,ss)=>[e]::ss ) [] s] else let val p1 = (m_set_parts (m-1) ts) val p2 = (m_set_parts m ts) in (map (fn ss => [hs]::ss) p1) @ (foldr (op@) [] ( map (ins_all hs) p2 ) ) end end ;

Similar presentations

OK

ML: a quasi-functional language with strong typing Conventional syntax: - val x = 5; (*user input *) val x = 5: int (*system response*) - fun len lis =

ML: a quasi-functional language with strong typing Conventional syntax: - val x = 5; (*user input *) val x = 5: int (*system response*) - fun len lis =

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google

Download ppt on gender discrimination in india Ppt on iron and steel industry in india Ppt on carbon and its compounds questions Jit ppt on manufacturing plants Ppt on job evaluation questionnaire Ppt on sea level rise chart Ppt on stress management for students Maths ppt on surface area and volume for class 10 Ppt on mathematics use in daily life Free pdf converter to ppt online