Download Analysis of Algorithms

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

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

Document related concepts
no text concepts found
Transcript
Trees
Make Money Fast!
Stock
Fraud
2017年7月31日4时26
分
Ponzi
Scheme
Trees
Bank
Robbery
1
Outline and Reading
Tree ADT (§2.3.1)
Preorder and postorder traversals (§2.3.2)
BinaryTree 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)
2017年7月31日4时26
分
Trees
2
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:



Computers”R”Us
Sales
International
Organization charts
File systems
Europe
Programming
environments
2017年7月31日4时26
分
Manufacturing
Trees
Asia
Laptops
R&D
Desktops
Canada
3
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,
grandparent, 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,
grandchild, grand-grandchild, etc.
2017年7月31日4时26
分
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:




integer size()
boolean isEmpty()
objectIterator elements()
positionIterator positions()



boolean isInternal(p)
boolean isExternal(p)
boolean isRoot(p)
Update methods:


position root()
position parent(p)
positionIterator children(p)
2017年7月31日4时26
分


Accessor methods:

Query methods:
Trees
swapElements(p, q)
object replaceElement(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
In a preorder traversal, a node is
visited before its descendants
Application: print a structured
document
Recursive traversal algorithm
1
Algorithm preOrder(v)
visit(v)
for each child w of v
preorder (w)
Make Money Fast!
2
5
1. Motivations
2. Methods
3
4
1.1 Greed
1.2 Avidity
2017年7月31日4时26
分
9
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: compute space
used by files in a directory and
its subdirectories
9
Algorithm postOrder(v)
for each child w of v
postOrder (w)
visit(v)
cs16/
3
8
7
homeworks/
1
2
h1c.doc
3K
h1nc.doc
2K
2017年7月31日4时26
分
todo.txt
1K
programs/
4
5
DDR.java
10K
Trees
Stocks.java
25K
6
Robot.java
20K
7
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.



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).

2017年7月31日4时26
分
Trees
8
Binary Trees
Applications:
A binary tree is a tree with the
following properties:




Each internal node has two
children
The children of a node are an
ordered pair

A
We call the children of an internal
node left child and right child
Alternative recursive definition: a
binary tree is either


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
arithmetic expressions
decision processes
Searching (IP address
lookup)
B
C
D
E
H
2017年7月31日4时26
分
Trees
F
G
I
9
Arithmetic Expression Tree
Binary tree associated with an arithmetic expression


internal nodes: operators
external nodes: operands
Example: arithmetic expression tree for the
expression (2  (a - 1) + (3  b))

Inorder for expression, postorder for evaluation
+


-
2
2017年7月31日4时26
分
a
3
b
1
Trees
10
Decision Tree
Binary tree associated with a decision process


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
Yes
No
Starbucks
Spike’s
Al Forno
Café Paragon
2017年7月31日4时26
分
Trees
11
Properties of Binary Trees
Notation
Properties:
 e = i + 1
 n = 2e - 1
 h  i
 h  (n - 1)/2
h
 e  2
 h  log2 e
 h  log2 (n + 1) - 1
n number of nodes
e number of
external nodes
i number of internal
nodes
h height
2017年7月31日4时26
分
Trees
12
BinaryTree ADT
The BinaryTree ADT
extends the Tree
ADT, i.e., it inherits
all the methods of
the Tree ADT
Additional methods:



Update methods
may be defined by
data structures
implementing the
BinaryTree ADT
position leftChild(p)
position rightChild(p)
position sibling(p)
2017年7月31日4时26
分
Trees
13
Inorder Traversal
In an inorder traversal a
node is visited after its left
subtree and before its right
subtree
Application: draw a binary
tree


Algorithm inOrder(v)
if isInternal (v)
inOrder (leftChild (v))
visit(v)
if isInternal (v)
inOrder (rightChild (v))
x(v) = inorder rank of v
y(v) = depth of v
6
2
8
1
4
3
2017年7月31日4时26
分
7
9
5
Trees
14
Print Arithmetic Expressions
Specialization of an inorder
traversal



print operand or operator
when visiting node
print “(“ before traversing left
subtree
print “)“ after traversing right
subtree
+


-
2
a
3
Algorithm printExpression(v)
if isInternal (v)
print(“(’’)
inOrder (leftChild (v))
print(v.element ())
if isInternal (v)
inOrder (rightChild (v))
print (“)’’)
b
((2  (a - 1)) + (3  b))
1
2017年7月31日4时26
分
Trees
15
Evaluate Arithmetic Expressions
Specialization of a postorder
traversal


recursive method returning
the value of a subtree
when visiting an internal
node, combine the values
of the subtrees
+

Algorithm evalExpr(v)
if isExternal (v)
return v.element ()
else
x  evalExpr(leftChild (v))
y  evalExpr(rightChild (v))
  operator stored at v
return x  y

-
2
5
2017年7月31日4时26
分
3
2
1
Trees
16
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:
 on the left (preorder)
 from below (inorder)
 on the right (postorder)
+
L
2


R
B
5
2017年7月31日4时26
分
3
2
1
Trees
17
Template Method Pattern
public abstract class EulerTour {
Generic algorithm that
protected BinaryTree tree;
can be specialized by
protected void visitExternal(Position p, Result r) { }
redefining certain steps
protected void visitLeft(Position p, Result r) { }
Implemented by means of
protected void visitBelow(Position p, Result r) { }
an abstract Java class
protected void visitRight(Position p, Result r) { }
Visit methods that can be
protected Object eulerTour(Position p) {
redefined by subclasses
Result r = new Result();
Template method eulerTour
if tree.isExternal(p) { visitExternal(p, r); }


Recursively called on the
left and right children
A Result object with fields
leftResult, rightResult and
finalResult keeps track of
the output of the
recursive calls to eulerTour
2017年7月31日4时26
分
else {
visitLeft(p, r);
r.leftResult = eulerTour(tree.leftChild(p));
visitBelow(p, r);
r.rightResult = eulerTour(tree.rightChild(p));
visitRight(p, r);
return r.finalResult;
}…
Trees
18
Specializations of EulerTour
We show how to
specialize class
EulerTour to evaluate
an arithmetic
expression
Assumptions


public class EvaluateExpression
extends EulerTour {
protected void visitExternal(Position p, Result r) {
r.finalResult = (Integer) p.element();
}
protected void visitRight(Position p, Result r) {
Operator op = (Operator) p.element();
r.finalResult = op.operation(
(Integer) r.leftResult,
(Integer) r.rightResult
);
}
External nodes store
Integer objects
Internal nodes store
Operator objects
supporting method
operation (Integer, Integer)
…
}
2017年7月31日4时26
分
Trees
19
Data Structure for Trees
A node is represented by
an object storing



Element
Parent node
Sequence of children
nodes

B

Node objects implement
the Position ADT
A
B
D
A
C
2017年7月31日4时26
分

D
F
F

E
C
Trees

E
20
Data Structure for Binary Trees
A node is represented
by an object storing





Element
Parent node
Left child node
Right child node
B
Node objects implement
the Position ADT

B
A
A
D
C
2017年7月31日4时26
分

D

E

C
Trees


E
21
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:



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
2017年7月31日4时26
分
Trees
5
E
6
7
C
F
10
J
11
G
H
22
Java Implementation
Tree interface
BinaryTree interface
extending Tree
Classes implementing Tree
and BinaryTree and
providing



expandExternal(v)
v
A

Constructors
Update methods
Print methods

expandExternal(v)
removeAboveExternal(w)
2017年7月31日4时26
分

removeAboveExternal(w)
Examples of updates for
binary trees

A
v
A
B
Trees
B
C
w
23
Trees in JDSL
JDSL is the Library of Data
Structures in Java
Tree interfaces in JDSL




InspectableBinaryTree
InspectableTree
BinaryTree
Tree
Inspectable versions of the
interfaces do not have
update methods
Tree classes in JDSL


JDSL was developed at
Brown’s Center for Geometric
Computing
See the JDSL documentation
and tutorials at http://jdsl.org
InspectableTree
Tree
InspectableBinaryTree
NodeBinaryTree
NodeTree
2017年7月31日4时26
分
BinaryTree
Trees
24
Related documents