Post on 18-Apr-2020
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Computer Science: An Overview
Tenth Edition
by
J. Glenn Brookshear
Chapter 8:
Data Abstractions
Presentation files modified by Farn Wang
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-2
Chapter 8: Data Abstractions
• 8.1 Data Structure Fundamentals
• 8.2 Implementing Data Structures
• 8.3 A Short Case Study
• 8.4 Customized Data Types
• 8.5 Classes and Objects
• 8.6 Pointers in Machine Language
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-3
Basic Data Structures
• Homogeneous array
• Heterogeneous array
• List
– Stack
– Queue
• Tree
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-4
Lists, stacks, and queues
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-5
Terminology for Lists
• List: A collection of data whose entries are
arranged sequentially
• Head: The beginning of the list
• Tail: The end of the list
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-6
Terminology for Stacks
Stack
A list in which entries are removed and
inserted only at the head
• LIFO: Last-in-first-out
• Top: The head of list (stack)
• Bottom or base: The tail of list (stack)
• Pop: To remove the entry at the top
• Push: To insert an entry at the top
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-7
Terminology for Queues
Queue:
A list in which entries are removed at the
head and are inserted at the tail
• FIFO: First-in-first-out
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-8
Tree
- An example of an organization chart
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-9
Terminology for a Tree
Tree:
A collection of data whose entries have a
hierarchical organization
• Node: An entry in a tree
• Root node: The node at the top
• Terminal or leaf node: A node at the
bottom
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-10
Terminology for a Tree (continued)
• Parent: The node immediately above a specified node
• Child: A node immediately below a specified node
• Ancestor: Parent, parent of parent, etc.
• Descendent: Child, child of child, etc.
• Siblings: Nodes sharing a common parent
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-11
Terminology for a Tree (continued)
• Binary tree: A tree in which every node
has at most two children
• Depth: The number of nodes in longest
path from root to leaf
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-12
Tree terminology
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-13
Additional Concepts
• Static Data Structures: Size and shape of
data structure does not change
• Dynamic Data Structures: Size and shape
of data structure can change
• Pointers:
– Used to locate data
– Used for constructing dynamic structures
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-14
Dynamic linked lists
- example
Novel records arranged by title but linked
according to authorship
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-15
Storing Arrays
• Homogeneous arrays
– Row-major order versus column major order
– Address polynomial
• Heterogeneous arrays
– Components can be stored one after the other in a contiguous block
– Components can be stored in separate locations identified by pointers
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-16
The array of temperature readings
stored in memory starting at address x
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-17
A two-dimensional array with four rows and
five columns stored in row major order
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-18
Storing the heterogeneous array
Employee
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-19
Storing Lists
• Contiguous list: List stored in a
homogeneous array
• Linked list: List in which each entries are
linked by pointers
– Head pointer: Pointer to first entry in list
– NIL pointer: A “non-pointer” value used to
indicate end of list
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-20
Names stored in memory as a
contiguous list
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-21
The structure of a linked list
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-22
Deleting an entry from a linked list
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-23
Inserting an entry into a linked list
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-24
Storing Stacks and Queues
• Stacks usually stored as contiguous lists
• Queues usually stored as Circular
Queues
– Stored in a contiguous block in which the first
entry is considered to follow the last entry
– Prevents a queue from crawling out of its
allotted storage space
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-25
A stack in memory
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-26
A queue implementation with head and
tail pointers
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-27
A circular queue containing the
letters P through V
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-28
Storing Binary Trees
• Linked structure
– Each node = data cells + two child pointers
– Accessed via a pointer to root node
• Contiguous array structure
– A[1] = root node
– A[2],A[3] = children of A[1]
– A[4],A[5],A[6],A[7] = children of A[2] and A[3]
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-29
The structure of a node in a binary
tree
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-30
The conceptual and actual
organization of a binary tree using a
linked storage system
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-31
A tree stored without pointers
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-32
A sparse, unbalanced tree shown in its
conceptual form and as it would
be stored without pointers
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-33
Manipulating Data Structures
• Ideally, a data structure should be manipulated solely by pre-defined procedures.
– Example: A stack typically needs at least push and pop procedures.
– The data structure along with these procedures constitutes a complete abstract tool.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-34
A procedure for printing a linked list
procedure print_list(list) {
c = list;
while (c is not NIL) do {
print the name pointed to by c;
let c by the next element to c in the list;
} }
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-35
Case Study
Problem: Construct an abstract tool
consisting of a list of names in alphabetical
order along with the operations
search,
print, and
insert.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-36
The letters A through M arranged in
an ordered tree
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-37
The binary search as
it would appear if the list were
implemented as a linked binary tree
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-38
The successively smaller trees considered by
the procedure in Figure 8.18 when searching
for the letter J
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-39
Printing a search tree in alphabetical
order
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-40
A procedure for printing the data in a
binary tree
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-41
Inserting the entry
M into the list B, E, G, H, J, K, N, P stored
as a tree
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-42
A procedure for inserting a new entry in a
list stored as a binary tree
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-43
User-defined Data Type
• A template for a heterogeneous structure
• Example:
define type EmployeeType to be
{char Name[25];
int Age;
real SkillRating;
}
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-44
Abstract Data Type
• A user-defined data type with procedures for access and manipulation
• Example: define type StackType to be
{int StackEntries[20];
int top = 0;
procedure push(value){
StackEntries[top] ← value;
top = top + 1;
}
procedure pop . . .
}
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-45
Class
• An abstract data type with extra features
– Characteristics can be inherited
– Contents can be encapsulated
– Constructor methods to initialize new objects
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-46
A stack of integers implemented in
Java and C#
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-47
Pointers in Machine Language
• Immediate addressing: Instruction
contains the data to be accessed
• Direct addressing: Instruction contains
the address of the data to be accessed
• Indirect addressing: Instruction contains
the location of the address of the data to
be accessed
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-48
Our first attempt at expanding the machine
language in Appendix C to take advantage of
pointers
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-49
Loading a register from a memory cell
that is located by means of a
pointer stored in a register
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Indirect vs. direct addressing
2-50
PC
9C00
BR AB02
35AD
• Direct addressing
PC
AB02
BR AB02
35AD AB02
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Indirect vs. direct addressing
2-51
PC
9C00
BR *AB02
35AD
• Indirect addressing
PC
35AD
BR AB02
35AD AB02
……..
35AD
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-52
Beyond the basics
Tree applications
• heirarchical network topology of network
• cluster computing
• circuit signal propagations
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-53
Beyond the basics
Trees
• depth log(# of nodes in the tree)
• efficient membership checking
• Questions ?
Can we maintain the log depths with
dynamic node insertion and deletion ?
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-54
Beyond the basics
Trees
Maintaining the log depths with dynamic
node insertion and deletion ?
• trees implemented with pointers:
• solutions
– 2-3 trees
– red-black trees
– splay trees
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-55
Beyond the basics
Graphs
• undirected
• directed
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-56
Beyond the basics
Graph problems
• Find a path (with a cost ?) between
two nodes.
• Find a cycle in a graph.
• Find the biconnected components
• Check if a graph is planar.
• ……
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 8-57
Beyond the basics
DAG (directed acyclic graphs)
• Directed graphs without cycles
• Can be used for Boolean formula
presentation.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 58
Truth Table, DNF, and CNF
• Disjunctive normal form
(DNF)
F = (x1x2x3) (x1x2x3 )
(x1x2x3 )
• Conjunctive normal form
(CNF)
F = (x1 x2 x3) (x1 x2x3)
(x1 x2 x3) (x1x2x3)
(x1 x2 x3)
x1 x2 x3 F
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 1
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 59
Binary Decision Tree (BDT)
- predecessor of BDD with redundancies
• Same size as truth tables
• Lots of redundancy: Out of 8 subtrees rooted at b2 only 3 are distinct!!!
• Merge isomorphic subtrees BDD
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 60
Truth Table and Decision Tree
x1
x3
x2
x3 x3 x3
1 0
x2
1 1 0 0 0 0
x1 0 0 0 0 1 1 1 1
x2 0 0 1 1 0 0 1 1
x3 0 1 0 1 0 1 0 1
F 0 0 0 1 0 1 0 1 0 1
1 0 1 0
0 1 0 1 0 1 0 1
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 61
Structure sharing in BDT
(a1b1a2b2)
(a1 b1 a2 b2)
(a1 b1 a2 b2)
(a1 b1 a2 b2)
function values
determined at
b1
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 62
Binary Decision Diagram (BDD)
• BDD: A minimal canonical form
representation for Boolean formulas.
• Motivation:
– Too much space redundancy in traditional
representations
– BDD is more compact than truth tables,
conjunctive normal form, disjunctive normal
form, binary decision trees, etc.
– BDD has a canonical form
– BDD operations are efficient
minimum size
representation
(for a given var
ordering)
unique BDD for a
function
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 63
BDD (Binary Decision Diagram)
minimal canonical form of Boolean functions
• minimal efficiency (space & computation)
– for a specific variable ordering
• Canonical form:
unique BDD for a function
(x y) z
x
z
y
0 1
0
0
0
1
1
1
0 0 1
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 64
BDD function evluation
x
z
y
0 1
0
0
0
1 1
1
(x y) z x 1 y 0 z 0
0 x
0 y
1 z
x
z
y
0 1
0
0
0
1 1
1
Using path traversal to evaluate function
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 65
BDD Reduction (I)
- from bottom up
x1
x3 x3
x2 x2
0 1 0 1
0
1
0
0
0
0
1 1
1 1
x1
x3 x3
x2 x2
0 1
0
1
0
0
0
0
1 1
1 1
at leaf level
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 66
BDD Reduction (II)
- from bottom up
x1
x3
x2 x2
0 1
1
0
0
0
0
1
1 1
at level x3 x1
x3 x3
x2 x2
0 1
0
1
0
0
0
0
1 1
1 1
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 67
BDD Reduction (III)
- from bottom up
x1
x3
x2
0 1
1
0
0
0
1
1
at level x2 x1
x3
x2 x2
0 1
1
0
0
0
0
1
1 1
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 68
Relations for Logic Blocks:
Example
x1 x2 x3 y1 y2
0 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 1 1 0 1
1 0 0 0 0
1 0 1 0 1
1 1 0 1 1
1 1 1 1 1
x1
x2
x3
y1
y2
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 69
Example (continued)
x1 x2 x3 y1 y2 F
0 0 0 0 0 1
0 0 1 0 1 1
0 1 0 0 1 1
0 1 1 0 1 1
1 0 0 0 0 1
1 0 1 0 1 1
1 1 0 1 1 1
1 1 1 1 1 1
0 other
x1
x2
x3
y1
y2
0 1
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 70
Relations for FSMs: Example
Ins CS CSC NS NSC
0 A 00 B 10
0,1 A 00 A 00
0 B 10 B 10
1 B 10 A 00
0 C 01 B 10
1 C 01 A 00
C
B
A
0,1
0 1
0
1 0
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 71
Example (continued)
Relation
= ia1a2b1b2
+ a1a2b1b2
+ ia1a2b1b2
+ ia1a2b1b2
+ ia1a2b1b2
+ ia1a2b1b2
i
a1
b1
a2
b2
1 0
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 72
Efficient Operations on BDDs
• Apply – NOT, AND, OR, EXOR, etc.
• Quantification (existential, universal)
• Replace
• Compose
• Specialized operators
– Generalized cofactor (constrain, restrict)
– Compatible projection, etc.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 73
Components of BDDs and Their Use
• Nodes (represent functions; complexity)
• Terminal nodes (constant functions)
• Edges (relationship between functions)
• Paths (true and false var. assignments)
• Cuts (variable partitions and subsets)
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 74
Properties of BDDs
• Canonicity
• Compactness (with some exceptions)
• Representing a variety of discrete objects
– Boolean functions
– Compositional sets
– Encodings and labelings
• Facilitating symbolic methods
– Two-level minimization
– State traversal of FSMs
– …