1 / 24

Recursive Data Structures and Grammars

Recursive Data Structures and Grammars. Themes Recursive Description of Data Structures Grammars and Parsing Recursive Definitions of Properties of Data Structures Recursive Algorithms for Manipulating and Traversing Data Structures Examples Lists Trees Expressions and Expression Trees.

faye
Télécharger la présentation

Recursive Data Structures and Grammars

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Recursive Data Structures and Grammars • Themes • Recursive Description of Data Structures • Grammars and Parsing • Recursive Definitions of Properties of Data Structures • Recursive Algorithms for Manipulating and Traversing Data Structures • Examples • Lists • Trees • Expressions and Expression Trees

  2. Lists • A 2-tuple • The data (for this node), and the rest of the list • List = () – empty list • List = ( d, List ), where d is some element • E.g., L = () L = (24, L) – now (24, ()) L = (3, L ) – now (3, ( 24, ()))

  3. Grammars - Example • Syntactic Categories (non-terminals) • <number> • <digit> • <expr> • Production Rules (replace syntactic category on the rhs by the lhs. “|” is or) • <expr>  <expr> + <expr> • <expr>  <number> • <number>  <digit> <number> | <digit> • <digit>  0|1|2|3|4|5|6|7|8|9

  4. Derivation • Repeatedly replace syntactic categories by the lhs of rules whose rhs is equal to the syntactic category • <expr>  <expr>+<expr>  <expr>+<expr>+<expr>  <number>+<expr>+<expr>  <number>+<number>+<expr>  <number>+<number>+<number>

  5. Derivation (e.g. 2) • <number>  <digit><number>  <digit><digit><number>  <digit><digit><digit>  <digit><digit>3  <digit>23  123 • When there are no more syntactic categories, the process stops and the resulting string is said to be derived from the initial syntactic category.

  6. Languages • The language, L(<S>), derivable from the syntactic category <S> using the grammar G is defined inductively. • Initially L(<S>) is empty • If <S>  X1    Xn is a production in G and si = Xi is a terminal or si  L(Xi), then the concatenation s1s2 …sn is in L(<S>)

  7. Language • The number of strings of length n in the language L(<number>) is 10n. • Proof is by induction.

  8. Example – nested parenthesis • <B>  () | (<B>) • L(<B>) = strings of n left parens followed by n right parens, for n >= 0.

  9. Systematic Generation • C statement example

  10. n-Trees • Finite collection of nodes • Each node has exactly one parent, but for the root node • Each node may have up to n children • A leaf node has no children • An interior node is a node that is not a leaf • Each subtree is a tree rooted at a given node

  11. Binary Trees • A binary tree is a 2-tree • Each node has, at most, 2 sub-trees • A binary tree is • Empty, or • Consists of a node with 3 elements • value • left, which is a tree • right, which is a tree • A subtree of a binary tree is a binary tree

  12. Number of Nodes of a Binary Trees • Nnodes(T) = 0 if T is empty • Nnodes(T.left) + Nnodes(T.right) + 1

  13. Paths, Ancestors, Descendants • Given a sequence of nodes: m1, m2, m3, ... , mk , wheremi is parent of mi+1 i < k • mi is an ancestor of mj if i ≤ j • mi is an proper ancestor of mj if i < j • mi is an descendent of mj if i ≥ j • mi is an proper descendant of mj if i > j • m1, m2, m3, ... , mk is a path from m1 to mk, of length k-1

  14. Height of Binary Trees • Height of tree T, H(T), is the max length of the paths from the root all of the leaves • Height(T) = -1 if T is empty • max(Height(T.left),Height(T.right)) + 1 • Alternative: Max over all nodes of the level of the node.

  15. Internal Path Length • Sum of the depths of all of the nodes in a tree • IPL(T) = 0 if T is empty • IPL(T) = IPL(T.left) + IPL(T.right) + Nnodes(T)-1 • Alternative: Sum over all nodes of the level of the node.

  16. External Format for Binary Trees • <bintree>  []  [<value>,<bintree>,<bintree>] • [], • [1,[],[]], • [2,[1,[],[]],[]], [2,[[],[1,[],[]]] • [3, [2,[1,[],[]],[]], []], [3, [2,[[],[1,[],[]]],[]] [3, [1,[],[]], [1,[],[]]], [3, [],[2,[1,[],[]],[]]], [3, [],[2,[[],[1,[],[]]]]

  17. Recurrence for the Number of Binary Trees • Let Tn be the number of binary trees with n nodes. • T0 = 1, T1 = 1, T2 = 2, T3 = 5

  18. Binary Search Trees • Binary Tree • All elements in T->left are < T->value • All elements in T->right are >= T->value

  19. Inorder traversal • Recursively visit nodes in T.left • visit root • Recursively visit nodes in T.right • An in order traversal of a BST lists the elements in sorted order. Proof by induction.

  20. Parse Tree • A derivation is conveniently stored in a tree, where internal nodes correspond to syntactic categories and the children of a node correspond to the element of the rhs in the rule that was applied

  21. Example Parse Tree <number> / \ <digit> <number> | / \ 1 <digit> <number> | | 2 <digit> | 3

  22. Recursive Decent Parser • Balanced parentheses

  23. Ambiguous Grammars <expr> <expr> / | \ / | \ <expr>+<expr> <expr>+<expr> / | \ / | \ <expr>+<expr> <expr>+<expr>

  24. (blank, for notes)

More Related