discrete structure li tak sing( 李德成 ) lectures 14-15 1

Post on 02-Jan-2016

224 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Discrete Structure

Li Tak Sing(李德成 )

Lectures 14-15

1

Recursive functions for binary tree

Let "nodes" be the function that returns the number of nodes in a binary tree.

Using the pattern matching formnodes(<>)=0nodes(tree(L,a,R))=1+nodes(L)+nodes(R)

Using the if-then-else-formnodes(T) = if T=<> then 0

else 1+nodes(left(T))+nodes(right(T))fi

2

Binary search tree

Let 'insert' be a function that accepts two parameters, x and a binary search tree. The function returns another binary search tree so that x is inserted into the original tree.

insert(x,<>)=tree(<>,x,<>).insert(x,tree(L,a,R))=if (x<a) then

tree(insert(x,L),a,R) else tree(L,a,insert(x,R))

3

Binary search tree

Another form:insert(x,T)= if T=<> then tree(<>,x,<>)

else if x<root(T) then tree(insert(x,left(T)),root(T), right(T)) else tree(left(T),root(T), insert(x,right(T)))

4

Traversing Binary Trees

Preorder traversalThe preorder traversal of a binary tree starts by

visiting the root. Then there is a preorder traversal of the left subtree

Preorder procedurePreorder(T): if T<> then print(root(T)); Preorder(left(T)); Preorder(right(T)); fi.

5

A preorder function

A preorder function is defined below:preOrd(<>)=<>,preOrd(tree(L,x,R))=x::cat(preOrd(L),preOrd(R)

)

6

Inorder traversal

The inorder traversal of a binary tree starts with an inorder traversal of the left tree. Then the root is visited. Lastly there is an inorder traversal of the right subtree.

Inorder procedureInorder(T): if T<> then inorder(left(T)); print(root(T)); inorder(right(T)); fi.

7

Inorder function

A inorder function is defined below:preOrd(<>)=<>,preOrd(tree(L,x,R))=cat(preOld(L),x::preOld(R))

8

postorder traversal

The postorder traversal of a binary tree starts with a postorder of the left subtree and is followed by a postorder traversal of the right subtree. Lastly the root is visited.

9

Example.

Write a recursive definition for the procedure P such that for any binary tree T, P(T) prints those nodes of T that have two children, during inorder traverse of the tree.

Write down a recursive procedure to print out the leaves of a binary tree that are encountered during an inorder traverse of the tree.

10

The repeated element problem

To remove repeated elements from a list.remove(<a,b,a,c>)=<a,b,c>Only the left most repeated element is

kept.To find the solution, lets consider a list

with head H and tail T. The function can be done by removing all

occurrences of H in T and then concatenate H with that result.

11

The repeated element problem

So the remove function can be defined as:remove(<>)=<>remove(H::T)=H::remove(removeAll(H,T))We have assumed the existence of a function

removeAll which will remove all the occurrences of H in T.

For example removeAll(a,<a,b,a,c,d>) would return <b,c,d>

12

removeAll

removeAll(a,<>)=<>removeAll(a,a::T)=removeAll(a,T)removeAll(a,H::T)=H::removeAll(a,T)

13

removeAll

removeAll(a,M)= if M=<> then <> else if a=head(M) then removeAll(a,tail(M)) else head(M)::removeAll(a,tailM))

14

Grammars

A set of rules used to define the structure of the strings in a language.

For example, the following English sentence consists of a subject followed by a predicate: The big dog chased the catsubject: The big dogpredicate: chased the cat

15

Grammar

The grammar of the sentence is:sentence subject predicate

The subject phase can be further divided into an article, an adjective and a noun:subject article adjective nounso article=this, adjective=big, noun=dog

16

Grammer

Similarly, the predicate can have the following rule:predicate verb objectverb=chased, object=cat

17

Structure of grammas

If L is a language over an alphabet A, then a grammer for L consists of a set of grammer rules of the form

where and denotes strings of symbols taken from A.

18

Structure of grammas

The grammar rule is often called a production, and it can be read in several different ways as

replace by produces rewrites to reduces to

19

Start symbol

Every grammar has a special grammar symbol called the start symbol, and there must be at least one production with the left side consisting of only the start symbol. For example, if S is the start symbol for a grammar, then there must be at least one production of the form:

S

20

An example

SSaSSbSScSAll strings that consists of a, b and c.

21

Definition of a Grammar

An alphabet N of grammar symbols called nonterminals.

An alphabet T of symbols called terminals. The terminals are distinct from the nonterminals.

A specific nonterminal S, call the start symbol.A finite set of productions of the form , where

and are strings over the alphabet NT with the restriction that is not the empty string. There is at least one production with only the start symbol S on its left side. Each nonterminal must appear on the left side of some production.

22

Grammar

When two or more productions have the same left side, we can simplify the notation by writing one production with alternate right sides separated by the vertical line |. For example, the last grammar can be rewritten as:S | aS | bS | cS

23

Grammars

A grammar is a 4-tuple. G=(N,T,S,P)N: non-terminals,

T: terminals,S: start symbol,P: rules

In the last example, we have G=({S},{a,b,c},S,{S | aS | bS | cS

})

24

Derivations

A string made up of terminals and nonterminals is called a sentential form.

If x and y are sentential forms and is a production, then the replacement of by is called derivation, and we denote it by writing

xyxy

25

Derivations

derives in one step+ derives in one or more steps* derives in zero or more steps

26

Examples in derivatives

S=ABA=|aAB= |bB

SAB AbB Ab aAb aaAb aab

27

Rightmost and leftmost derivation

It is possible to find several different derivations of the same string.

For example, we can haveS AB AbB Ab aAb abS AB aAB aB abB ab

A derivation is called a leftmost derivation if at each step the leftmost nonterminal of the sentential is reduced by some production. Similarly, a derivation is called a rightmost derivation if at each step the rightmost nonterminal of the sentential form is reduced by some production.

28

The language of a grammar

If G is a grammar, then the language of G is the set of terminal strings derived from the start symbol of G. The language of G is denoted by

L(G).The formal definition is:

If G is a grammar with start symbol S and set of terminals T, then the language of G is the set

L(G)={s | sT* and S+s}

29

Recursive production

A production is called recursive if its left side occurs on its right side. For example, the production SaS is recursive.

A production A is indirectly recurisve if A derives a sentential form that contains A.

30

Recursive production

For example:Sb|aAA c|bSThe productions S aA and A bS are both

indirectly recurisve:SaA abSA bS baA

31

Recursive grammar

A grammar is recursive if it contains either a recursive production or an indirectly recursive production.

A grammar for an infinite language must be recursive.

32

top related