Trees Make Money Fast Stock Fraud Ponzi Scheme

  • Slides: 24
Download presentation
Trees Make Money Fast! Stock Fraud Ponzi Scheme Trees Bank Robbery 1

Trees Make Money Fast! Stock Fraud Ponzi Scheme Trees Bank Robbery 1

Outline and Reading Tree ADT (§ 2. 3. 1) Preorder and postorder traversals (§

Outline and Reading Tree ADT (§ 2. 3. 1) Preorder and postorder traversals (§ 2. 3. 2) Binary. Tree ADT (§ 2. 3. 3) Inorder traversal (§ 2. 3. 3) Euler Tour traversal (§ 2. 3. 3) Template method pattern Data structures for trees (§ 2. 3. 4) Java implementation (http: //jdsl. org) Trees 2

What is a Tree In computer science, a tree is an abstract model of

What is a Tree In computer science, a tree is an abstract model of a hierarchical structure A tree consists of nodes with a parent-child relation US Applications: n n n Computers”R”Us Sales Manufacturing International Organization charts File systems Europe Programming environments Trees Asia Laptops R&D Desktops Canada 3

Tree Terminology Root: node without parent (A) Internal node: node with at least one

Tree Terminology Root: node without parent (A) Internal node: node with at least one child (A, B, C, F) External node (a. k. a. leaf ): node without children (E, I, J, K, G, H, D) Ancestors of a node: parent, grand-grandparent, etc. Depth of a node: number of ancestors E Height of a tree: maximum depth of any node (3) Descendant of a node: child, grand-grandchild, etc. Trees Subtree: tree consisting of a node and its descendants A B C F G D H subtree I J K 4

Tree ADT We use positions to abstract nodes Generic methods: n n integer size()

Tree ADT We use positions to abstract nodes Generic methods: n n integer size() boolean is. Empty() object. Iterator elements() position. Iterator positions() Accessor methods: n n n position root() position parent(p) position. Iterator children(p) Trees Query methods: n n n boolean is. Internal(p) boolean is. External(p) boolean is. Root(p) Update methods: n n swap. Elements(p, q) object replace. Element(p, o) Additional update methods may be defined by data structures implementing the Tree ADT 5

Preorder Traversal A traversal visits the nodes of a tree in a systematic manner

Preorder Traversal A traversal visits the nodes of a tree in a systematic manner In a preorder traversal, a node is visited before its descendants Application: print a structured document Recursive traversal algorithm 1 Algorithm pre. Order(v) visit(v) for each child w of v preorder (w) Make Money Fast! 2 5 1. Motivations 9 2. Methods 3 4 1. 1 Greed 1. 2 Avidity 6 7 2. 1 Stock Fraud Trees 2. 2 Ponzi Scheme References 8 2. 3 Bank Robbery 6

Postorder Traversal In a postorder traversal, a node is visited after its descendants Application:

Postorder Traversal In a postorder traversal, a node is visited after its descendants Application: compute space used by files in a directory and its subdirectories 9 Algorithm post. Order(v) for each child w of v post. Order (w) visit(v) cs 16/ 3 8 7 homeworks/ todo. txt 1 K programs/ 1 2 h 1 c. doc 3 K h 1 nc. doc 2 K 4 5 DDR. java 10 K Trees Stocks. java 25 K 6 Robot. java 20 K 7

Amortized Analysis of Tree Traversal Time taken in preorder or postorder traversal of an

Amortized Analysis of Tree Traversal Time taken in preorder or postorder traversal of an n-node tree is proportional to the sum, taken over each node v in the tree, of the time needed for the recursive call for v. n n The call for v costs $(cv + 1), where cv is the number of children of v For the call for v, charge one cyber-dollar to v and charge one cyber-dollar to each child of v. Each node (except the root) gets charged twice: once for its own call and once for its parent’s call. Therefore, traversal time is O(n). Trees 8

Binary Trees Applications: A binary tree is a tree with the following properties: n

Binary Trees Applications: A binary tree is a tree with the following properties: n n Each internal node has two children The children of a node are an ordered pair n A We call the children of an internal node left child and right child Alternative recursive definition: a binary tree is either n n a tree consisting of a single node, or a tree whose root has an ordered pair of children, each of which is a binary tree Trees arithmetic expressions decision processes Searching (IP address lookup) B C D F E H G I 9

Arithmetic Expression Tree Binary tree associated with an arithmetic expression n n internal nodes:

Arithmetic Expression Tree Binary tree associated with an arithmetic expression n n internal nodes: operators external nodes: operands Example: arithmetic expression tree for the expression (2 (a - 1) + (3 b)) n Inorder for expression, postorder for evaluation + - 2 a 3 b 1 Trees 10

Decision Tree Binary tree associated with a decision process n n internal nodes: questions

Decision Tree Binary tree associated with a decision process n n internal nodes: questions with yes/no answer external nodes: decisions Example: dining decision Want a fast meal? No Yes How about coffee? On expense account? Yes No Starbucks Spike’s Al Forno Café Paragon Trees 11

Properties of Binary Trees Notation Properties: n e = i + 1 n n

Properties of Binary Trees Notation Properties: n e = i + 1 n n = 2 e - 1 n h i n h (n - 1)/2 n e 2 h n h log 2 e n h log 2 (n + 1) - 1 n number of nodes e number of external nodes i number of internal nodes h height Trees 12

Binary. Tree ADT The Binary. Tree ADT extends the Tree ADT, i. e. ,

Binary. Tree ADT The Binary. Tree ADT extends the Tree ADT, i. e. , it inherits all the methods of the Tree ADT Additional methods: n n n Update methods may be defined by data structures implementing the Binary. Tree ADT position left. Child(p) position right. Child(p) position sibling(p) Trees 13

Inorder Traversal In an inorder traversal a node is visited after its left subtree

Inorder Traversal In an inorder traversal a node is visited after its left subtree and before its right subtree Application: draw a binary tree n n Algorithm in. Order(v) if is. Internal (v) in. Order (left. Child (v)) visit(v) if is. Internal (v) in. Order (right. Child (v)) x(v) = inorder rank of v y(v) = depth of v 6 2 8 1 4 3 7 9 5 Trees 14

Print Arithmetic Expressions Specialization of an inorder traversal n n n print operand or

Print Arithmetic Expressions Specialization of an inorder traversal n n n print operand or operator when visiting node print “(“ before traversing left subtree print “)“ after traversing right subtree + - 2 a 3 Algorithm print. Expression(v) if is. Internal (v) print(“(’’) in. Order (left. Child (v)) print(v. element ()) if is. Internal (v) in. Order (right. Child (v)) print (“)’’) b ((2 (a - 1)) + (3 b)) 1 Trees 15

Evaluate Arithmetic Expressions Specialization of a postorder traversal n n recursive method returning the

Evaluate Arithmetic Expressions Specialization of a postorder traversal n n recursive method returning the value of a subtree when visiting an internal node, combine the values of the subtrees + Algorithm eval. Expr(v) if is. External (v) return v. element () else x eval. Expr(left. Child (v)) y eval. Expr(right. Child (v)) operator stored at v return x y - 2 5 3 2 1 Trees 16

Euler Tour Traversal Generic traversal of a binary tree Includes special cases of the

Euler Tour Traversal Generic traversal of a binary tree Includes special cases of the preorder, postorder and inorder traversals Walk around the tree and visit each node three times: n on the left (preorder) n from below (inorder) n on the right (postorder) + L 2 R B 5 3 2 1 Trees 17

Template Method Pattern Generic algorithm that can be specialized by redefining certain steps Implemented

Template Method Pattern Generic algorithm that can be specialized by redefining certain steps Implemented by means of an abstract Java class Visit methods that can be redefined by subclasses Template method euler. Tour n n public abstract class Euler. Tour { protected Binary. Tree tree; protected void visit. External(Position p, Result r) { } protected void visit. Left(Position p, Result r) { } protected void visit. Below(Position p, Result r) { } protected void visit. Right(Position p, Result r) { } protected Object euler. Tour(Position p) { Recursively called on the Result r = new Result(); left and right children if tree. is. External(p) { visit. External(p, r); } A Result object with else { fields left. Result, visit. Left(p, r); right. Result and r. left. Result = final. Result keeps track of euler. Tour(tree. left. Child(p)); the output of the visit. Below(p, r); recursive calls to r. right. Result = euler. Tour Trees 18 euler. Tour(tree. right. Child(p));

Specializations of Euler. Tour We show to specialize class Euler. Tour to evaluate an

Specializations of Euler. Tour We show to specialize class Euler. Tour to evaluate an arithmetic expression Assumptions n n External nodes store Integer objects Internal nodes store Operator objects supporting method operation (Integer, Integer) public class Evaluate. Expression extends Euler. Tour { protected void visit. External(Position p, Result r) { r. final. Result = (Integer) p. element(); } protected void visit. Right(Position p, Result r) { Operator op = (Operator) p. element(); r. final. Result = op. operation( (Integer) r. left. Result, (Integer) r. right. Result ); } … } Trees 19

Data Structure for Trees A node is represented by an object storing n n

Data Structure for Trees A node is represented by an object storing n n n Element Parent node Sequence of children nodes B Node objects implement the Position ADT A B D A C D F F E C Trees E 20

Data Structure for Binary Trees A node is represented by an object storing n

Data Structure for Binary Trees A node is represented by an object storing n n Element Parent node Left child node Right child node B Node objects implement the Position ADT B A A D C D E C Trees E 21

Array-Based Representation of Binary Trees nodes are stored in an array 1 A …

Array-Based Representation of Binary Trees nodes are stored in an array 1 A … 2 3 B D let rank(node) be defined as follows: n n n 4 rank(root) = 1 if node is the left child of parent(node), rank(node) = 2*rank(parent(node)) if node is the right child of parent(node), rank(node) = 2*rank(parent(node))+1 Trees 5 E 6 7 C F 10 J 11 G H 22

Java Implementation Tree interface Binary. Tree interface extending Tree Classes implementing Tree and Binary.

Java Implementation Tree interface Binary. Tree interface extending Tree Classes implementing Tree and Binary. Tree and providing n n n expand. External(v) v A Constructors Update methods Print methods n expand. External(v) remove. Above. External(w) Examples of updates for binary trees n A v A B Trees C w B 23

Trees in JDSL is the Library of Data Structures in Java Tree interfaces in

Trees in JDSL is the Library of Data Structures in Java Tree interfaces in JDSL n n Inspectable. Binary. Tree Inspectable. Tree Binary. Tree Inspectable versions of the interfaces do not have update methods Tree classes in JDSL n n JDSL was developed at Brown’s Center for Geometric Computing See the JDSL documentation and tutorials at http: //jdsl. org Inspectable. Tree Inspectable. Binary. Tree Node. Tree Binary. Trees 24