Chapter 3 1
Download
1 / 35

Chapter 3 - 1 - PowerPoint PPT Presentation


  • 72 Views
  • Uploaded on

Chapter 3 - 1. Construction Techniques. Section 3.1 Inductively Defined Sets. To define a set S inductively is to do three things: Basis: Specify one or more elements of S. Induction: Specify one or more rules to construct elements of S from existing elements of S.

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 'Chapter 3 - 1' - milly


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
Chapter 3 1

Chapter 3 - 1

Construction Techniques


Section 3 1 inductively defined sets
Section 3.1 Inductively Defined Sets

  • To define a set S inductively is to do three things:

  • Basis: Specify one or more elements of S.

  • Induction: Specify one or more rules to construct elements of S from existing elements of S.

  • Closure: Specify that no other elements are in S (always assumed).

  • Note: The basis elements and the induction rules are called constructors.


Example 1
Example 1

  • Find an inductive definition for S = {3, 16, 29, 42, …}.

  • Solution: Basis: 3 ∈ S.

    Induction: If x ∈ S then x + 13 ∈ S.

  • The constructors are 3 and the operation of adding 13.

  • Also, without closure, many sets would satisfy the basis and induction rule. e.g., 3 ∈ Z and x ∈ Z implies x + 13 ∈ Z.


Example 2
Example 2

  • Find an inductive definition for S = {3, 4, 5, 8, 9, 12, 16, 17, 20, 24, 33,…}.

  • Solution: To simplify things we might try to “divide and conquer” by writing S as the union of more familiar sets as follows:

    S = {3, 5, 9, 17, 33, …} ⋃ {4, 8, 12, 16, 20, 24, …}.

  • Basis: 3, 4 ∈ S.

  • Induction: If x ∈ S then (if x is odd then 2x – 1 ∈ S else x + 4 ∈ S).


Example 3
Example 3

  • Describe the set S defined inductively as follows:

  • Basis: 2 ∈ S;

  • Induction: x ∈ S implies x ± 3 ∈ S.

  • Solution: S = {2, 5, 8, 11, … } ⋃ {–1, –4, –7, –10, … }.


Example 4
Example 4

  • Find an inductive definition for S = {٨, ac, aacc, aaaccc, …} = {ancn | n ∈ N}.

  • Solution: Basis: ٨∈ S.

    Induction: If x ∈ S then axc ∈ S.


Example 5
Example 5

  • Find an inductive definition for S = {an+1bcn | n ∈ N}.

  • Solution: Basis: ab ∈ S.

  • Induction: If x ∈ S then axc ∈ S.


Example 6
Example 6

  • Describe the set S defined by:

    • Basis: a, b ∈ S

    • Induction: x ∈ S implies ƒ(x) ∈ S.

  • Solution: S = {a, ƒ(a), ƒ(ƒ(a)), …} ⋃ {b, ƒ(b), ƒ(ƒ(b)), …}, which could also be written as

    S = {ƒn(a) | n ∈ N} ⋃ {ƒn(b) | n ∈ N} = {ƒn(x) | x ∈ {a, b} and n ∈ N}.


Example 7
Example 7

  • Describe the set S defined by:

    • Basis: < 0 > ∈ S

    • Induction: x ∈ S implies cons(1, x) ∈ S.

  • Solution: S = {< 0 >, < 1, 0 >, <1, 1, 0 >, …}.


Infix notation
Infix notation

  • cons(h, t) = h :: t. Associate to the right. e.g., x :: y :: z = x :: (y :: z).

  • Example 8. Find an inductive definition for S = {<>, <a, b >, <a, b, a, b >, …}.

  • Solution:

    • Basis: <> ∈ S.

    • Induction: x ∈ S implies a :: b :: x ∈ S.


Example 9
Example 9

  • Find an inductive definition for S = {<>, <<>>, <<<>>>, …}.

  • Solution: Basis: <> ∈ S.

    Induction: x ∈ S implies x :: <> ∈ S.


Notation for binary trees
Notation for Binary Trees

  • Let t(L, x, R) denote the tree with root x, left subtree L, and right subtree R. Let <> denote the empty binary tree. If T = t(L, x, R), then root(T) = x, left(T) = L, and right(T) = R.


Example 10
Example 10

  • Describe the set S defined inductively as follows:

    • Basis: t(<>, •, <>) ∈ S.

    • Induction: T ∈ S implies t(T, •, t(<>, •, <>)) ∈ S.

  • Solution (picture): The first few trees constructed from the definition are pictured as follows:

    and so on.


Example 11
Example 11

  • Find an inductive definition for the set S of binary trees indicated by the following picture.

    and so on.

  • Solution: Basis: t(<>, •, <>) ∈ S.

    Induction: T ∈ S implies

    t(t(left(T), •, <>), •, t(<>, •, right(T))) ∈ S.


Example 12
Example 12

  • Find an inductive definition for the set S = {a}* × N.

  • Solution: Basis: (٨, 0) ∈ S.

    Induction: (s, n) ∈ S implies

    (as, n), (s, n + 1) ∈ S.


Example 13
Example 13

  • Find an inductive definition for the set S = {(x, –y) | x, y ∈ N and x ≥ y}.

  • Solution: To get an idea about S we can write out a few tuples:

    (0, 0), (1, 0), (1, –1), (2, 0), (2, –1), (2, –2), and so on.

    We can also get an idea about S by graphing a few points, as indicated in the picture.

    One solution can be written as follows:

    • Basis: (0, 0) ∈ S.

    • Induction: (x, y) ∈ S implies (x + 1, y), (x + 1, y – 1) ∈ S.

      Notice that this definition constructs some repeated points.

      For example, (2, –1) is constructed twice.


Quiz 2 minutes
Quiz (2 minutes)

  • Try to find a solution that does not construct repeated elements.

  • Solution: We might use two separate rules. One rule to construct the diagonal points and one rule to construct horizontal lines that start at the diagonal points.

    • Basis: (0, 0) ∈ S.

    • Induction:

      1. (x, y) ∈ S implies (x + 1, y) ∈ S.

      2. (x, –x) ∈ S implies (x + 1, – (x + 1)) ∈ S.


Section 3 2 recursively defined functions and procedures
Section 3.2 Recursively Defined Functions and Procedures

  • A function f is recursively defined if at least one value f(x) is defined in terms of another value f(y), where x ≠ y. Similarly, a procedure P is recursively defined if the action of P(x) is defined in terms of another action P(y), where x ≠ y.


Technique for recursive definitions
Technique for recursive definitions

  • Technique for recursive definitions when the argument domain is inductively defined.

    1. Specify a value f(x), or action P(x), for each basis element x of S.

    2. Specify rules that, for each inductively defined element x in S, define the value f(x), or action P(x), in terms of previously defined values of f or actions of P.


Example 14
Example 1

  • Find a recursive definition for the function f: N → N defined by

    f(n) = 0 + 3 + 6 + … + 3n.

  • Solution: Notice that N is an inductively defined set: 0 ∈ N; n ∈ N implies n + 1 ∈ N. So we need to give f(0) a value in N and we need to define f(n + 1) in terms of f(n). The given definition of f tells us to set f(0) = 0. To discover a definition for f(n + 1) we can write

    f(n + 1) = (0 + 3 + 6 + … + 3n) + 3(n + 1)

    = f(n) + 3(n + 1).

    So we have a recursive definition for f

    • f(0) = 0

    • f(n + 1) = f(n) + 3(n + 1).


Two alternative definitions
Two alternative definitions

  • f(0) = 0

    f(n) = f(n - 1) + 3n (n > 0).

  • (if-then-else form):

    f(n) = if n = 0 then 0 else f(n - 1) + 3n.


Example 21
Example 2

  • Find a recursive definition for cat : A* × A* → A* defined by cat(s, t) = st.

  • Solution: Notice that A* is inductively defined: ٨∈ A*; a ∈ A and x ∈ A* imply ax ∈ A*,

    where ax denotes the string version of cons. We can define cat recursively using the first argument. The definition of cat gives cat(٨, t) = ٨t = t. For the recursive part we can write

    cat(ax, t) = axt = a(xt) = acat(x, t).

    So we have a definition:

    • cat(٨, t) = t

    • cat(ax, t) = acat(x, t).

  • If-then-else form using head and tail for strings:

    cat(s, t) = if s = ٨ then t else head(s)cat(tail(s), t).


Example 31
Example 3

  • Find a definition for f: lists(Q) → Q defined by f(<x1, …, xn>) = x1 + … + xn.

  • Solution: The set lists(Q) is inductively defined:

    <> ∈ lists(Q); h ∈ Q and t ∈ lists(Q) imply h :: t ∈ lists(Q).

    To discover a recursive definition, we can use the definition of f as follows:

    f(<x1, …, xn>) = x1 + … + xn

    = x1 + (x2 + … + xn)

    = x1 + f(<x2, … , xn>)

    = head(<x1, …, xn>) + f(tail(<x1, …, xn>).

    So if we let f(<>) = 0, we have a recursive definition:

    • f(<>) = 0

    • f(h :: t) = h + f(t).

  • If-then-else form: f(L) = if L = <> then 0 else head(L) + f(tail(L)).


Example 41
Example 4

  • Given f: N → N defined recursively by

    • f(0) = 0

    • f(1) = 0

    • f(x + 2) = 1 + f(x).

      The if-then-else form for f can be written as follows:

      f(x) = if x = 0 or x = 1 then 0 else 1 + f(x - 2).

      What does f do?

  • Answer: List a few values to get the idea. For example,

    map(f, <0, 1, 2, 3, 4, 5, 6, 7, 8, 9>) = <0, 0, 1, 1, 2, 2, 3, 3, 4, 4>.

    So f(x) returns the floor of x/2. i.e., f(x) = ⌊x/2⌋.


Example 51
Example 5

  • Find a recursive definition for f: lists(Q) → Q defined by

    f(<x1, …, xn>) = x1x2 + x2x3 + … + xn-1xn.

  • Solution: Let f(<>) = 0 and f(<x>) = 0. Then for n ≥ 2 we can write

    f(<x1, …, xn>) = x1x2 + (x2x3 + … + xn-1xn) = x1x2 + f(<x2, …, xn>).

    So we have the following recursive definition.

    • f(<>) = 0

    • f(<x>) = 0

    • f(h :: t) = h • head(t) + f(t).

  • If-then-else form:

    f(L) = if L = <> or tail(L) = <> then 0 else head(L) • head(tail(L)) + f(tail(L)).


Example 61
Example 6

  • Find a recursive definition for isin : A × lists(A) → {true, false} where isin(x, L) means that x is in the list L.

  • Solution: isin(x, <>) = false

    isin(x, x :: t) = true

    isin(x, h :: t) = isin(x, t).

  • If-then-else form:

    isin(x, L) = if L = <> then false else if x = head(L) then true else isin(x, tail(L)).


Example 71
Example 7

  • Find a recursive definition for sub : lists(A) × lists(A) → {true, false} where sub(L, M) means the elements of L are elements of M.

  • Solution: sub(<>, M) = true

    sub(h :: t, M) = if isin(h, M)

    then sub(t, M) else false.

  • If-then-else form:

    sub(L, M) = if L = <> then true else if isin(head(L), M) then sub(tail(L), M) else false.


Example 8
Example 8

  • Find a recursive definition for intree : Q × binSearchTrees(Q) → {true, false} where intree(x, T) means x is in the binary search tree T.

  • Solution: intree(x, <>) = false

    intree(x, tree(L, x, R)) = true

    intree(x, tree(L, y, R)) = if x < y then intree(x, L)

    else intree(x, R).

  • If-then-else form:

    intree(x, T) = if T = <> then false

    else if x = root(T) then true

    else if x < root(T) then intree(x, left(T))

    else intree(x, right(T)).


Traversing binary trees
Traversing Binary Trees

  • The three standard procedures to traverse a binary tree are defined recursively as follows:

  • preorder(T): if T ≠ <> then visit root(T); preorder(left(T)); preorder(right(T)) fi.

  • inorder(T): if T ≠ <> then inorder(left(T)); visit root(T); inorder(right(T)) fi

  • postorder(T): if T ≠ <> then postorder(left(T)); postorder(right(T)); visit root(T) fi.


Example 91
Example 9

  • Traverse the following tree in each of the three orders.

  • Solution:

    • Preorder: a b c d e

    • Inorder: b a d c e

    • Postorder: b d e c a

a

c

b

d

e


Example 101
Example 10

  • Find a recursive definition for post : binaryTrees(A) → lists(A) where post(T) is the list of nodes from a postorder traversal of T.

  • Solution: post(<>) = <>

    post(tree(L, x, R)) =

    cat(post(L), cat(post(R), <x >))

    where cat concatenates two lists and can be defined by,

    • cat(<>, L) = L

    • cat(h :: t, L) = h :: cat(t, L).


Example 111
Example 11

  • Find a recursive definition for ƒ : binaryTrees(Q) → Q where ƒ(T) is the sum of the nodes in T.

  • Solution: ƒ( <>) = 0

    ƒ(tree(L, x, R)) = x + ƒ(L) + ƒ(R).


Infinite sequences
Infinite Sequences

  • We can construct recursive definitions for infinite sequences by defining a value ƒ(x) in terms of x and ƒ(y) for some value y in the sequence.

  • Example 12. Suppose we want to represent the infinite sequence ƒ(x) = <x, x2, x4, x8, … >.

  • Solution: Use the definition to discover a solution as follows:

    ƒ(x) = <x, x2, x4, x8, …>

    = x :: <x2, x4, x8, …>

    = x :: ƒ(x2).

    So define ƒ(x) = x :: ƒ(x2).


More examples
More examples

  • Example 13. What sequence is defined by g(x, k) = xk :: g(x, k + 1)?

  • Answer: g(x, k) = xk :: g(x, k + 1)

    = xk :: xk+1 :: g(x, k + 2)

    =…

    = < xk, xk+1, xk+2, … >.

  • Example 14. How do we obtain the sequence <x, x3, x5, x7, … >?

  • A Solution. Define ƒ(x) = h(x, 1), where

    h(x, k) = xk :: h(x, k + 2).

  • Example 15. How do we obtain the sequence <1, x2, x4, x6, x8, … >?

  • A Solution: Use h(x, 0) from Example 14.