Download Discrete Structure

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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
i 1
 a1  a2  .....  an
i
 Product of a sequence a1,a2,....,an
n
a

a
a
.....
a
i
1
2
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
Related documents