Data Structures and Algorithms 12 · 2015-02-07 · 15 Ming Zhang “Data Structures and...
Transcript of Data Structures and Algorithms 12 · 2015-02-07 · 15 Ming Zhang “Data Structures and...
Data Structures and Algorithms(12)
Instructor: Ming ZhangTextbook Authors: Ming Zhang, Tengjiao Wang and Haiyan Zhao
Higher Education Press, 2008.6 (the "Eleventh Five-Year" national planning textbook)
https://courses.edx.org/courses/PekingX/04830050x/2T2014/
Ming Zhang "Data Structures and Algorithms"
2
目录页
Ming Zhang “Data Structures and Algorithms”
Chapter 12
Advanced Data
Structure
Chapter 12 Advanced Data Structure
• 12.1 Multidimensional array
• 12.1.1 Basic Concepts
• 12.1.2 Structure of Array
• 12.1.3 Storage of Array
• 12.1.4 Declaration of Array
• 12.1.5 Special Matrices Implemented by Arrays
• 12.1.6 Sparse Matrix
• 12.2 Generalized List
• 12.3 Storage management
• 12.4 Trie
• 12.5 Improved BST
3 Ming Zhang “Data Structures and Algorithms”
Basic Concepts
• Array is an ordered sequence with
fixed number of elements and type.
• The size and type of static array
must be specified at compile time
• Dynamic array is allocated memory
at runtime
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
44 Ming Zhang “Data Structures and Algorithms”
Basic Concepts
• Multidimensional array is an extension of one-
dimensional array (vector).
• Vector of vectors make up an multidimensional
array.
• Represented as
ELEM A[c1..d
1][c
2..d
2]…[c
n..d
n]
• ci and d
i are upper and lower bounds of the
indices in the i-th dimension. Thus, the total
number of elements is:
n
i
ii cd1
)1(
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
55 Ming Zhang “Data Structures and Algorithms”
d1=3,d2=5
d1
d2
a[1][1]
d1
d2
d3
a[1][3][5]
Structure of Array
2-dimensional array 3-dimensional array
d1[0..2], d2[0..3], d3[0..1] are the three dimensions respectively
d1=3,d2=4, d3=2
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
6 Ming Zhang “Data Structures and Algorithms”
Storage of Array
• Memory is one-dimensional, so arrays are
stored linearly
• Stored row by row (row-major)
• Stored column by column (column-major)
X=
1 2 3
4 5 6
7 8 9
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
7 Ming Zhang “Data Structures and Algorithms”
Row-Major in Pascal
a112
a113
… a11n
a122
a123
… a12n
a1m2
a1m3
… a1mn
…………………………
a211
a212
a213
… a21n
a221
a222
a223
… a22n
…………………………
a2m1
a2m2
a2m3
… a2mn
┇a
k11a
k12a
k13… a
k1n
ak21
ak22
ak23
… ak2n
…………………………
akm1
akm2
akm3
… akmn
a111
a121
a1m1
a[1..k,1..m,1..n]
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
8
目录页
Ming Zhang “Data Structures and Algorithms”
Chapter 12
Advanced Data
Structure
Column-Major in FORTRANa111 a211 a311 … ak11
a121 a221 a321 … ak21
…………………………a1m1 a2m1 a3m1 … akm1
a112 a212 a312 … ak12
a122 a222 a322 … ak22
…………………………a1m2 a2m2 a3m2 … akm2
┇a11n a21n a31n … ak1n
a12n a22n a32n … ak2n
…………………………a1mn a2mn a3mn … akmn
12.1 Multidimensional Array
a[1..k, 1..m, 1..n]
99 Ming Zhang “Data Structures and Algorithms”
• C++ multidimensional array
ELEM A[d1][ d
2]…[d
n];
1 2
1 2 2 3
1
1
1 1
( [ , , , ]) ( [0,0, ,0])
[
]
( [0,0, ,0]) [ ]
n
n n
n n n
nn
i k n
i k i
loc A j j j loc A
d j d d j d d
j d j
loc A d j d j
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
1010 Ming Zhang “Data Structures and Algorithms”
Special Matrices Implemented by Arrays
•Triangular matrix (upper/lower)
•Symmetric matrix
•Diagonal matrix
•Sparse matrix
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
1111 Ming Zhang “Data Structures and Algorithms”
Lower Triangular Matrix
• One-dimensional array: list[0.. (n2+n)/2-1]
• The matrix element ai,j
is stored in
list[ (i2+i) /2 + j] (i>=j)
0
0 0
7 5 0
0 0 1 0
9 0 0 1 8
0 6 2 2 0 7
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
1212 Ming Zhang “Data Structures and Algorithms”
Symmetric Matrix
• Satisfies that ai,j
= aj,i
, 0 ≤ i, j < n
The matrix on the right is a (symmetric) adjacent
matrix for a undirected graph
• Store the lower triangle in a 1-dimensional
array
sa[0..n (n+1) /2-1]
•There is a one-to-one mapping between sa[k] and ai,j
:
3 15
3 4
4
0 0
0 0
0 0
0 0
6
15 6
jijii
jiijjk
,2/)1(
,2/)1(
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
1313 Ming Zhang “Data Structures and Algorithms”
Diagonal Matrix
• Diagonal matrix: all non-zero elements are
located at diagonal lines.
• Band matric: a[i][j] = 0 when |i-j| > 1
• A band matrix with bandwidth 1 is shown as below
a0,0
a1,1
a0,1
a1,0
an-1,n-2
an-1,n-1
an-2,n-1
a1,2
0
0
……
……
……
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
14 Ming Zhang “Data Structures and Algorithms”
Sparse Matrix
• Few non-zero elemens, and these elements
distribute unevenly
6 7
0 0 0 7 0 0 5
0 15 0 0 0 0 0
0 0 0 6 0 17 0A
0 78 0 0 0 22 0
11 0 0 0 0 0 0
0 0 42 0 0 0 0
0
0
0
0
0
0
0
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
15 Ming Zhang “Data Structures and Algorithms”
• Sparse Factor
•In a m×n matrix, there are t non-zero elements, and the sparse factor
is:
•When this value is lower than 0.05, the matrix could be considered a
sparse matrix.
• 3-tuple (i, j, aij): commonly used for input/output
•i is the row number
•j is the column number
•aij
is the element value
nm
t
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
1616 Ming Zhang “Data Structures and Algorithms”
Orthogonal Lists of a Sparse Matrix
• An orthogonal list consists of two sets of lists
• pointer sequense for rows and columns
• Each node has two pointers: one points to the
successor on the same row; the other points to
the successor on the same column
0 3 0
0 5 6
2 0 0
0 1 3
1 1 5
2 0 2
head pointer for columns
1 2 6
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
head p
oin
ter fo
r row
s
1717 Ming Zhang “Data Structures and Algorithms””
Classic Matrix Multiplication
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
1818 Ming Zhang “Data Structures and Algorithms”
Time Cost of Classic Matrix Multiplication
•p=d1-c1+1,m=d3-c3+1,n=d2-c2+1;
•A is a p×m matrix, B is a m×n matrix, resulting in C, a p×n
matrix
•So the time cost of the classic matrix multiplication is O (p×m×n)
for (i=c1; i<=d1; i++)
for (j=c2; j<=d2; j++){
sum = 0;
for (k=c3; k<=d3; k++)
sum = sum + A[i,k]*B[k,j];
C[i,j] = sum;
}
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
1919 Ming Zhang “Data Structures and Algorithms”
Sparse Matrix Multiplication
3 0 0 5 0 -1 0 0 2 0 0 0
0 2 1 0-2 4 0 0
=
0 1 2
1 0 1
0 2 -2 2 1 4
-1 0
0 4
0 6
6
-1
head pointer for columns
0 0 3 0 3 5
1 1 -1
0 2 2
4
finish
head
p
oin
ter for row
s
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
2020 Ming Zhang “Data Structures and Algorithms”
Time Cost of Sparse Matrix Multiplication
• A is a p×m matrix, B is a m×n matrix, resulting
in C, a p×n matrix.
• If the number of non-zero elements in a row of A is at
most ta
• and the number of non-zero elements in a column of
B is at most tb
• Overall running time is reduced to O ( (ta+t
b)
×p×n)
• Time cost of classic matrix multiplication is O
(p×m×n)
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
2121 Ming Zhang “Data Structures and Algorithms”
Applications of Sparse Matrix
in
i
i
n
nn
xa
xaxaxaaxP
0
2
210
)( polynomial of one
indeterminate
12.1 Multidimensional Array目录页
Chapter 12
Advanced Data
Structure
Data Structures and Algorithms
Thanks
the National Elaborate Course (Only available for IPs in China)http://www.jpk.pku.edu.cn/pkujpk/course/sjjg/
Ming Zhang, Tengjiao Wang and Haiyan ZhaoHigher Education Press, 2008.6 (awarded as the "Eleventh Five-Year" national planning textbook)
Ming Zhang “Data Structures and Algorithms”