Presentation is loading. Please wait.

Presentation is loading. Please wait.

Discrete Structure Li Tak Sing( 李德成 ) Lectures 14-15 1.

Similar presentations


Presentation on theme: "Discrete Structure Li Tak Sing( 李德成 ) Lectures 14-15 1."— Presentation transcript:

1 Discrete Structure Li Tak Sing( 李德成 ) Lectures 14-15 1

2 Recursive functions for binary tree Let "nodes" be the function that returns the number of nodes in a binary tree. Using the pattern matching form  nodes(<>)=0  nodes(tree(L,a,R))=1+nodes(L)+nodes(R) Using the if-then-else-form  nodes(T) = if T=<> then 0 else 1+nodes(left(T))+nodes(right(T)) fi 2

3 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

4 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

5 Traversing Binary Trees Preorder traversal  The preorder traversal of a binary tree starts by visiting the root. Then there is a preorder traversal of the left subtree Preorder procedure Preorder(T): if T  <> then print(root(T)); Preorder(left(T)); Preorder(right(T)); fi. 5

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

7 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 procedure Inorder(T): if T  <> then inorder(left(T)); print(root(T)); inorder(right(T)); fi. 7

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

9 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

10 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

11 The repeated element problem To remove repeated elements from a list. remove( )= 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

12 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, ) would return 12

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

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

15 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 cat subject: The big dog predicate: chased the cat 15

16 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 noun so article=this, adjective=big, noun=dog 16

17 Grammer Similarly, the predicate can have the following rule: predicate  verb object verb=chased, object=cat 17

18 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

19 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

20 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

21 An example S  S  aS S  bS S  cS All strings that consists of a, b and c. 21

22 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 N  T 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

23 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

24 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

25 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 x  y  x  y 25

26 Derivations  derives in one step  + derives in one or more steps  * derives in zero or more steps 26

27 Examples in derivatives S=AB A=  |aA B=  |bB S  AB  AbB  Ab  aAb  aaAb  aab 27

28 Rightmost and leftmost derivation It is possible to find several different derivations of the same string. For example, we can have  S  AB  AbB  Ab  aAb  ab  S  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

29 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 | s  T* and S  + s} 29

30 Recursive production A production is called recursive if its left side occurs on its right side. For example, the production S  aS is recursive. A production A  is indirectly recurisve if A derives a sentential form that contains A. 30

31 Recursive production For example:  S  b|aA  A  c|bS  The productions S  aA and A  bS are both indirectly recurisve: S  aA  abS A  bS  baA 31

32 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


Download ppt "Discrete Structure Li Tak Sing( 李德成 ) Lectures 14-15 1."

Similar presentations


Ads by Google