Discrete Structure

advertisement
Discrete Structure
Li Tak Sing(李德成)
Lecture 13
1
More examples on inductively
defined sets
Find an inductive definition for each set S
of strings.
1.
2.
3.
4.
Even palindromes over the set {a,b}
Odd palindromes over the set {a,b}
All palindromes over the set {a,b}
The binary numerals.
2
Solution
1. Basis:Λ ∈ 𝐴
induction:𝑖𝑓 π‘₯ ∈ 𝐴 π‘‘β„Žπ‘’π‘› π‘Žπ‘₯π‘Ž, 𝑏π‘₯𝑏 ∈ 𝐴
2. Basis:π‘Ž, 𝑏 ∈ 𝐴
induction:𝑖𝑓 π‘₯ ∈ 𝐴 π‘‘β„Žπ‘’π‘› π‘Žπ‘₯π‘Ž, 𝑏π‘₯𝑏 ∈ 𝐴
3. Basis:Λ, π‘Ž, 𝑏 ∈ 𝐴
induction:𝑖𝑓 π‘₯ ∈ 𝐴 π‘‘β„Žπ‘’π‘› π‘Žπ‘₯π‘Ž, 𝑏π‘₯𝑏 ∈ 𝐴
4. Basis:0,1 ∈ 𝐴
induction:𝑖𝑓 π‘₯ ∈ 𝐴 π‘Žπ‘›π‘‘ π‘₯ ≠ 0 π‘‘β„Žπ‘’π‘› π‘₯1, π‘₯0 ∈
𝐴
3
More examples on inductively
defined sets
Find an inductive definition for each set S
of lists.
1. {<a>, <a,a>, <a,a,a>,..}
2. {<1>, <2,1>, <3,2,1>,..}
3. {<a,b>, <b,a>, <a,a,b>, <b,b,a>, <a,a,a,b>,
<b,b,b,a>,...}
4. {L| L is a list with even length over {0,1,2}}
4
Solution
1. Basis:< π‘Ž >∈ 𝐴
induction:𝑖𝑓 π‘₯ ∈ 𝐴 π‘‘β„Žπ‘’π‘› π‘π‘œπ‘›π‘ (π‘Ž, π‘₯) ∈ 𝐴
2. Basis:< 1 >∈ 𝐴
induction:𝑖𝑓 π‘₯ ∈ 𝐴 π‘‘β„Žπ‘’π‘›
π‘π‘œπ‘›π‘ (β„Žπ‘’π‘Žπ‘‘ π‘₯ + 1, π‘₯) ∈ 𝐴
3. Basis:< π‘Ž, 𝑏 >, < 𝑏, π‘Ž >∈ 𝐴
induction:𝑖𝑓 π‘₯ ∈ 𝐴 π‘‘β„Žπ‘’π‘›
π‘π‘œπ‘›π‘ (β„Žπ‘’π‘Žπ‘‘ π‘₯ , π‘₯) ∈ 𝐴
4. Basis:<>∈ 𝐴
induction:𝑖𝑓 π‘₯ ∈ 𝐴 π‘Žπ‘›π‘‘
𝑦, 𝑧 ∈ {0,1,2} π‘‘β„Žπ‘’π‘› π‘₯𝑦𝑧 ∈ 𝐴
5
More examples on inductively
defined sets
Find an inductive definition for the set B of
binary trees that represent arithmetic
expressions that are either numbers in N
or expressions that use operations + or -.
6
Solution
Basis:π‘‘π‘Ÿπ‘’π‘’(<>, 0, <>) ∈ 𝐴
induction:𝑖𝑓 𝐿, 𝑅 ∈ 𝐴 π‘‘β„Žπ‘’π‘› π‘‘π‘Ÿπ‘’π‘’ 𝐿, +, 𝑅 ,
π‘‘π‘Ÿπ‘’π‘’ 𝐿, −, 𝑅 ∈ 𝐴,
𝑖𝑓 π‘‘π‘Ÿπ‘’π‘’ <>, 𝑛, <> ∈ 𝐴,
π‘‘β„Žπ‘’π‘› π‘‘π‘Ÿπ‘’π‘’(<>, 𝑛 + 1, <>) ∈ 𝐴
7
More examples on inductively
defined sets
Find an inductive definition for each subset
S of Nο‚΄N.
1. S={(x,y)| y=x or y=x+1}
2. S={(x,y) | x is even and yο‚£x/2
8
Solution
1. Basis:(0,0) ∈ 𝐴
induction:𝑖𝑓 π‘Ž, π‘Ž ∈ 𝐴 π‘‘β„Žπ‘’π‘›
π‘Ž + 1, π‘Ž + 1 , π‘Ž, π‘Ž + 1 ∈ 𝐴
2. Basis:(0,0) ∈ 𝐴
induction:𝑖𝑓 π‘Ž, 0 ∈ 𝐴 π‘‘β„Žπ‘’π‘› π‘Ž + 2,0 ∈ 𝐴
π‘Ž
𝑖𝑓 (π‘Ž, 𝑛) ∈ 𝐴 π‘Žπ‘›π‘‘ 𝑛 + 1 ≤
2
π‘‘β„Žπ‘’π‘› (π‘Ž, 𝑛 + 1) ∈ 𝐴
9
Recursive Functions and Procedures
Procedure
ο‚‘A program that performs one or more actions.
ο‚‘A procedure may return one or more values
through its argument list. For example, a
statement like allocate(m,a,s) might perform the
action of allocating a block of m memory cells
and return the values a and s, where a is the
beginning address of the block and the s tells
whether the allocation was successful.
10
Definition of recursively defined
 A function or a procedure is said to be
recursively defined if it is defined in terms of
itself.
 If S is an inductively defined set, then we can
construct a function f with domain S as follow:
ο‚‘For each basis element xοƒŽS, specify a value for f(x).
ο‚‘Give rules that, for any inductively defined element xοƒŽS,
will define f(x) in terms of previously defined value of f.
11
Constructing a recursively defined
procedure
If S if an inductively defined set, we can
construct a procedure P to process the
elements of S as follows:
ο‚‘For each basis element xοƒŽS, specify a set of
actions for P(x).
ο‚‘Give rules that, for any inductively defined
element xοƒŽS, will define the actions of P(x) in
terms of previously defined actions of P.
12
Numbers
Sum of integers.
f(n)=0+1+2+...+n
Definition:
ο‚‘f(n)= if n=0 then 0 else f(n-1)+n
ο‚‘Alternatively, it can be written as
f(0)=0
f(n)=f(n-1)+n
This is known as the pattern matching method
13
Numbers
Adding odd numbers
f(n)=1+3+...+(2n+1)
Definition:
ο‚‘f(0)=1
ο‚‘f(n)=f(n-1)+(2n+1)
14
The rabbit program
 The Fibonacci numbers are the numbers in the sequence
0,1,1,2,3,5,8,13
where each number after the first two is computed by adding the
preceding two numbers.
 Assume that at the beginning there is one pair of rabbits. They give
birth to another pair of rabbit in one month.
 Let f(n) represents the number of pairs of rabbits at the n-th month.
At that time, there were only f(n-2) mature rabbits which give birth to
f(n-2) new rabbits. So the total number of rabbits is the total number
of rabbits at the (n-1)th month plus these newly born f(n-2) rabbits.
 So f(n)=f(n-1)+f(n-2)
 The sequence 0,1,1,2,3,... is called the Fibonacci numbers.
15
Sum and product notation
Sum of sequence a1,a2,....,an
n
οƒ₯a
ο€½ a 1  a 2  .....  a n
i
i ο€½1
 Product of a sequence a1,a2,....,an
n

a i ο€½ a 1 a 2 ..... a n
i ο€½1
16
Factorial
n!=1οƒ—2οƒ—.....οƒ—n
0!=1
n!=(n-1)!οƒ—n
17
Examples
Construct a recursive definition for each of
the following functions, where all variables
are natural numbers.
1.
2.
3.
4.
f(n)=0+2+4+...+2n.
f(n)=floor(0/2)+floor(1/2)+....+floor(n/2).
f(n,k)=k+(k+1)+(k+2)+...+(k+n).
f(n,k)=0+k+2k+...+nk.
18
1. 𝑓 0 = 0
𝑓 𝑛 = 𝑓 𝑛 − 1 + 2𝑛
2. 𝑓 0 = π‘“π‘™π‘œπ‘œπ‘Ÿ
0
2
𝑛
𝑓 𝑛 = 𝑓 𝑛 − 1 + π‘“π‘™π‘œπ‘œπ‘Ÿ
2
3. 𝑓 0,0 = 0
𝑓 0, π‘˜ = 𝑓 0, π‘˜ − 1 + 1
𝑓 𝑛, π‘˜ = 𝑓 𝑛 − 1, π‘˜ + 𝑛 + π‘˜
4. 𝑓 0, π‘˜ = 0
𝑓 𝑛, π‘˜ = 𝑓 𝑛 − 1, π‘˜ + π‘›π‘˜
19
Lists
f(n)=<n,n-1,..,1,0>
f(n)= if n=0 then <0> else cons(n,f(n-1))
Using the pattern matching method
ο‚‘f(0)=<0>
ο‚‘f(n)=cons(n,<n-1,...,1,0>)
=cons(n,f(n-1))
20
Recursive procedures
Let P(n) be the procedure that prints out
the numbers in the list <n,n-1,...,0>.
P(n): if n=0 then print(0)
else
print(n);
P(n-1)
fi
21
The distribute function
dist(3,<1,2,3>)=<(3,1),(3,2),(3,3)>
How to define this function recursively?
dist(x,L)= if L=<> then <>
else
(x,head(L))::dist(x,tail(L))
Pattern matching method:
ο‚‘dist(x,<>)=<>
ο‚‘dist(x,a::L)=(x,a)::dist(x,L)
22
The pairs function
pairs(<a,b,c>,<d,e,f>)=<(a,d),(b,e),(c,f)>
pairs(A,B)=if A=B=<> then <> else
(head(A),head(B))::pairs(tail(A),tail(B))
pairs(<>,<>)=<>,
pairs(x::T, y::U)=(x,y)::pairs(T,U)
23
Concatenation of Lists
cat(<a,b>,<c,d,e>)=<a,b,c,d,e>
cat(L,M)=if L=<> then M
else head(L)::cat(tail(L),M)
Pattern matching method:
ο‚‘cat(<>,A)=A
ο‚‘cat(x::L,A)=x::cat(L,A)
24
Sorting a list by insertion
sort(<>)=<>
sort(x::L)=insert(x,sort(L))
insert(x,S)=if S=<> then <x>
else if x<head(S) then x::s
else head(S)::insert(x,tail(S))
25
Example
Write recursive definition for the following
list functions.
1. The function "last" that returns the last elemnt
of a nonempty list. For example
last(<a,b,c>)=c
2. The function "front" that returns the list
obtained by removing the last element of a
nonempty list. For example
front(<a,b,c>)=<a,b>.
26
Solution
1. π‘™π‘Žπ‘ π‘‘ < π‘Ž > = π‘Ž
π‘™π‘Žπ‘ π‘‘ π‘Ž ∷ 𝑏 = π‘™π‘Žπ‘ π‘‘ 𝑏
π‘œπ‘Ÿ
π‘™π‘Žπ‘ π‘‘ π‘₯ = 𝑖𝑓 π‘‘π‘Žπ‘–π‘™ π‘₯ =<> π‘‘β„Žπ‘’π‘›
β„Žπ‘’π‘Žπ‘‘(π‘₯)
𝑒𝑙𝑠𝑒
π‘™π‘Žπ‘ π‘‘ π‘‘π‘Žπ‘–π‘™ π‘₯
2. π‘“π‘Ÿπ‘œπ‘›π‘‘ < π‘Ž > =<>
π‘“π‘Ÿπ‘œπ‘›π‘‘ π‘Ž ∷ 𝑏 = π‘Ž ∷ π‘“π‘Ÿπ‘œπ‘›π‘‘ 𝑏
π‘œπ‘Ÿ
π‘“π‘Ÿπ‘œπ‘›π‘‘ π‘₯ = π‘–π‘“π‘‘π‘Žπ‘–π‘™ π‘₯ =<> π‘‘β„Žπ‘’π‘› <>
𝑒𝑙𝑠𝑒
β„Žπ‘’π‘Žπ‘‘ π‘₯ ∷ π‘“π‘Ÿπ‘œπ‘›π‘‘(π‘‘π‘Žπ‘–π‘™ π‘₯ )
27
Download