Full Download Ebook PDF Data Structures Algorithm Analysis in C 4th Edition PDF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 41

(eBook PDF) Data Structures &

Algorithm Analysis in C++ 4th Edition


Visit to download the full and correct content document:
https://ebooksecure.com/download/ebook-pdf-data-structures-algorithm-analysis-in-c-
4th-edition/
CO NTE NTS

Preface xv

Chapter 1 Programming: A General Overview 1


1.1 What’s This Book About? 1
1.2 Mathematics Review 2
1.2.1 Exponents 3
1.2.2 Logarithms 3
1.2.3 Series 4
1.2.4 Modular Arithmetic 5
1.2.5 The P Word 6
1.3 A Brief Introduction to Recursion 8
1.4 C++ Classes 12
1.4.1 Basic class Syntax 12
1.4.2 Extra Constructor Syntax and Accessors 13
1.4.3 Separation of Interface and Implementation 16
1.4.4 vector and string 19
1.5 C++ Details 21
1.5.1 Pointers 21
1.5.2 Lvalues, Rvalues, and References 23
1.5.3 Parameter Passing 25
1.5.4 Return Passing 27
1.5.5 std::swap and std::move 29
1.5.6 The Big-Five: Destructor, Copy Constructor, Move Constructor, Copy
Assignment operator=, Move Assignment operator= 30
1.5.7 C-style Arrays and Strings 35
1.6 Templates 36
1.6.1 Function Templates 37
1.6.2 Class Templates 38
1.6.3 Object, Comparable, and an Example 39
1.6.4 Function Objects 41
1.6.5 Separate Compilation of Class Templates 44
1.7 Using Matrices 44
1.7.1 The Data Members, Constructor, and Basic Accessors 44
1.7.2 operator[] 45
vii
viii Contents

1.7.3 Big-Five 46
Summary 46
Exercises 46
References 48

Chapter 2 Algorithm Analysis 51


2.1 Mathematical Background 51
2.2 Model 54
2.3 What to Analyze 54
2.4 Running-Time Calculations 57
2.4.1 A Simple Example 58
2.4.2 General Rules 58
2.4.3 Solutions for the Maximum Subsequence
Sum Problem 60
2.4.4 Logarithms in the Running Time 66
2.4.5 Limitations of Worst-Case Analysis 70
Summary 70
Exercises 71
References 76

Chapter 3 Lists, Stacks, and Queues 77


3.1 Abstract Data Types (ADTs) 77
3.2 The List ADT 78
3.2.1 Simple Array Implementation of Lists 78
3.2.2 Simple Linked Lists 79
3.3 vector and list in the STL 80
3.3.1 Iterators 82
3.3.2 Example: Using erase on a List 83
3.3.3 const_iterators 84
3.4 Implementation of vector 86
3.5 Implementation of list 91
3.6 The Stack ADT 103
3.6.1 Stack Model 103
3.6.2 Implementation of Stacks 104
3.6.3 Applications 104
3.7 The Queue ADT 112
3.7.1 Queue Model 113
3.7.2 Array Implementation of Queues 113
3.7.3 Applications of Queues 115
Summary 116
Exercises 116
Contents ix

Chapter 4 Trees 121


4.1 Preliminaries 121
4.1.1 Implementation of Trees 122
4.1.2 Tree Traversals with an Application 123
4.2 Binary Trees 126
4.2.1 Implementation 128
4.2.2 An Example: Expression Trees 128
4.3 The Search Tree ADT—Binary Search Trees 132
4.3.1 contains 134
4.3.2 findMin and findMax 135
4.3.3 insert 136
4.3.4 remove 139
4.3.5 Destructor and Copy Constructor 141
4.3.6 Average-Case Analysis 141
4.4 AVL Trees 144
4.4.1 Single Rotation 147
4.4.2 Double Rotation 149
4.5 Splay Trees 158
4.5.1 A Simple Idea (That Does Not Work) 158
4.5.2 Splaying 160
4.6 Tree Traversals (Revisited) 166
4.7 B-Trees 168
4.8 Sets and Maps in the Standard Library 173
4.8.1 Sets 173
4.8.2 Maps 174
4.8.3 Implementation of set and map 175
4.8.4 An Example That Uses Several Maps 176
Summary 181
Exercises 182
References 189

Chapter 5 Hashing 193


5.1 General Idea 193
5.2 Hash Function 194
5.3 Separate Chaining 196
5.4 Hash Tables without Linked Lists 201
5.4.1 Linear Probing 201
5.4.2 Quadratic Probing 202
5.4.3 Double Hashing 207
5.5 Rehashing 208
5.6 Hash Tables in the Standard Library 210
x Contents

5.7 Hash Tables with Worst-Case O(1) Access 212


5.7.1 Perfect Hashing 213
5.7.2 Cuckoo Hashing 215
5.7.3 Hopscotch Hashing 227
5.8 Universal Hashing 230
5.9 Extendible Hashing 233
Summary 236
Exercises 237
References 241

Chapter 6 Priority Queues (Heaps) 245


6.1 Model 245
6.2 Simple Implementations 246
6.3 Binary Heap 247
6.3.1 Structure Property 247
6.3.2 Heap-Order Property 248
6.3.3 Basic Heap Operations 249
6.3.4 Other Heap Operations 252
6.4 Applications of Priority Queues 257
6.4.1 The Selection Problem 258
6.4.2 Event Simulation 259
6.5 d-Heaps 260
6.6 Leftist Heaps 261
6.6.1 Leftist Heap Property 261
6.6.2 Leftist Heap Operations 262
6.7 Skew Heaps 269
6.8 Binomial Queues 271
6.8.1 Binomial Queue Structure 271
6.8.2 Binomial Queue Operations 271
6.8.3 Implementation of Binomial Queues 276
6.9 Priority Queues in the Standard Library 282
Summary 283
Exercises 283
References 288

Chapter 7 Sorting 291


7.1 Preliminaries 291
7.2 Insertion Sort 292
7.2.1 The Algorithm 292
7.2.2 STL Implementation of Insertion Sort 293
7.2.3 Analysis of Insertion Sort 294
7.3 A Lower Bound for Simple Sorting Algorithms 295
Contents xi

7.4 Shellsort 296


7.4.1 Worst-Case Analysis of Shellsort 297
7.5 Heapsort 300
7.5.1 Analysis of Heapsort 301
7.6 Mergesort 304
7.6.1 Analysis of Mergesort 306
7.7 Quicksort 309
7.7.1 Picking the Pivot 311
7.7.2 Partitioning Strategy 313
7.7.3 Small Arrays 315
7.7.4 Actual Quicksort Routines 315
7.7.5 Analysis of Quicksort 318
7.7.6 A Linear-Expected-Time Algorithm for Selection 321
7.8 A General Lower Bound for Sorting 323
7.8.1 Decision Trees 323
7.9 Decision-Tree Lower Bounds for Selection Problems 325
7.10 Adversary Lower Bounds 328
7.11 Linear-Time Sorts: Bucket Sort and Radix Sort 331
7.12 External Sorting 336
7.12.1 Why We Need New Algorithms 336
7.12.2 Model for External Sorting 336
7.12.3 The Simple Algorithm 337
7.12.4 Multiway Merge 338
7.12.5 Polyphase Merge 339
7.12.6 Replacement Selection 340
Summary 341
Exercises 341
References 347

Chapter 8 The Disjoint Sets Class 351


8.1 Equivalence Relations 351
8.2 The Dynamic Equivalence Problem 352
8.3 Basic Data Structure 353
8.4 Smart Union Algorithms 357
8.5 Path Compression 360
8.6 Worst Case for Union-by-Rank and Path Compression 361
8.6.1 Slowly Growing Functions 362
8.6.2 An Analysis by Recursive Decomposition 362
8.6.3 An O( M log * N ) Bound 369
8.6.4 An O( M α(M, N) ) Bound 370
8.7 An Application 372
xii Contents

Summary 374
Exercises 375
References 376

Chapter 9 Graph Algorithms 379


9.1 Definitions 379
9.1.1 Representation of Graphs 380
9.2 Topological Sort 382
9.3 Shortest-Path Algorithms 386
9.3.1 Unweighted Shortest Paths 387
9.3.2 Dijkstra’s Algorithm 391
9.3.3 Graphs with Negative Edge Costs 400
9.3.4 Acyclic Graphs 400
9.3.5 All-Pairs Shortest Path 404
9.3.6 Shortest Path Example 404
9.4 Network Flow Problems 406
9.4.1 A Simple Maximum-Flow Algorithm 408
9.5 Minimum Spanning Tree 413
9.5.1 Prim’s Algorithm 414
9.5.2 Kruskal’s Algorithm 417
9.6 Applications of Depth-First Search 419
9.6.1 Undirected Graphs 420
9.6.2 Biconnectivity 421
9.6.3 Euler Circuits 425
9.6.4 Directed Graphs 429
9.6.5 Finding Strong Components 431
9.7 Introduction to NP-Completeness 432
9.7.1 Easy vs. Hard 433
9.7.2 The Class NP 434
9.7.3 NP-Complete Problems 434
Summary 437
Exercises 437
References 445

Chapter 10 Algorithm Design Techniques 449


10.1 Greedy Algorithms 449
10.1.1 A Simple Scheduling Problem 450
10.1.2 Huffman Codes 453
10.1.3 Approximate Bin Packing 459
10.2 Divide and Conquer 467
10.2.1 Running Time of Divide-and-Conquer Algorithms 468
10.2.2 Closest-Points Problem 470
Contents xiii

10.2.3 The Selection Problem 475


10.2.4 Theoretical Improvements for Arithmetic Problems 478
10.3 Dynamic Programming 482
10.3.1 Using a Table Instead of Recursion 483
10.3.2 Ordering Matrix Multiplications 485
10.3.3 Optimal Binary Search Tree 487
10.3.4 All-Pairs Shortest Path 491
10.4 Randomized Algorithms 494
10.4.1 Random-Number Generators 495
10.4.2 Skip Lists 500
10.4.3 Primality Testing 503
10.5 Backtracking Algorithms 506
10.5.1 The Turnpike Reconstruction Problem 506
10.5.2 Games 511
Summary 518
Exercises 518
References 527

Chapter 11 Amortized Analysis 533


11.1 An Unrelated Puzzle 534
11.2 Binomial Queues 534
11.3 Skew Heaps 539
11.4 Fibonacci Heaps 541
11.4.1 Cutting Nodes in Leftist Heaps 542
11.4.2 Lazy Merging for Binomial Queues 544
11.4.3 The Fibonacci Heap Operations 548
11.4.4 Proof of the Time Bound 549
11.5 Splay Trees 551
Summary 555
Exercises 556
References 557

Chapter 12 Advanced Data Structures


and Implementation 559
12.1 Top-Down Splay Trees 559
12.2 Red-Black Trees 566
12.2.1 Bottom-Up Insertion 567
12.2.2 Top-Down Red-Black Trees 568
12.2.3 Top-Down Deletion 570
12.3 Treaps 576
xiv Contents

12.4 Suffix Arrays and Suffix Trees 579


12.4.1 Suffix Arrays 580
12.4.2 Suffix Trees 583
12.4.3 Linear-Time Construction of Suffix Arrays and Suffix Trees 586
12.5 k-d Trees 596
12.6 Pairing Heaps 602
Summary 606
Exercises 608
References 612

Appendix A Separate Compilation of


Class Templates 615
A.1 Everything in the Header 616
A.2 Explicit Instantiation 616

Index 619
P R E FAC E

Purpose/Goals
The fourth edition of Data Structures and Algorithm Analysis in C++ describes data structures,
methods of organizing large amounts of data, and algorithm analysis, the estimation of the
running time of algorithms. As computers become faster and faster, the need for programs
that can handle large amounts of input becomes more acute. Paradoxically, this requires
more careful attention to efficiency, since inefficiencies in programs become most obvious
when input sizes are large. By analyzing an algorithm before it is actually coded, students
can decide if a particular solution will be feasible. For example, in this text students look at
specific problems and see how careful implementations can reduce the time constraint for
large amounts of data from centuries to less than a second. Therefore, no algorithm or data
structure is presented without an explanation of its running time. In some cases, minute
details that affect the running time of the implementation are explored.
Once a solution method is determined, a program must still be written. As computers
have become more powerful, the problems they must solve have become larger and more
complex, requiring development of more intricate programs. The goal of this text is to teach
students good programming and algorithm analysis skills simultaneously so that they can
develop such programs with the maximum amount of efficiency.
This book is suitable for either an advanced data structures course or a first-year
graduate course in algorithm analysis. Students should have some knowledge of inter-
mediate programming, including such topics as pointers, recursion, and object-based
programming, as well as some background in discrete math.

Approach
Although the material in this text is largely language-independent, programming requires
the use of a specific language. As the title implies, we have chosen C++ for this book.
C++ has become a leading systems programming language. In addition to fixing many
of the syntactic flaws of C, C++ provides direct constructs (the class and template) to
implement generic data structures as abstract data types.
The most difficult part of writing this book was deciding on the amount of C++ to
include. Use too many features of C++ and one gets an incomprehensible text; use too few
and you have little more than a C text that supports classes.
The approach we take is to present the material in an object-based approach. As such,
there is almost no use of inheritance in the text. We use class templates to describe generic
data structures. We generally avoid esoteric C++ features and use the vector and string
classes that are now part of the C++ standard. Previous editions have implemented class
templates by separating the class template interface from its implementation. Although
this is arguably the preferred approach, it exposes compiler problems that have made it xv
xvi Preface

difficult for readers to actually use the code. As a result, in this edition the online code
represents class templates as a single unit, with no separation of interface and implementa-
tion. Chapter 1 provides a review of the C++ features that are used throughout the text and
describes our approach to class templates. Appendix A describes how the class templates
could be rewritten to use separate compilation.
Complete versions of the data structures, in both C++ and Java, are available on
the Internet. We use similar coding conventions to make the parallels between the two
languages more evident.

Summary of the Most Significant Changes in the Fourth Edition


The fourth edition incorporates numerous bug fixes, and many parts of the book have
undergone revision to increase the clarity of presentation. In addition,

r Chapter 4 includes implementation of the AVL tree deletion algorithm—a topic often
requested by readers.
r Chapter 5 has been extensively revised and enlarged and now contains material on
two newer algorithms: cuckoo hashing and hopscotch hashing. Additionally, a new
section on universal hashing has been added. Also new is a brief discussion of the
unordered_set and unordered_map class templates introduced in C++11.
r Chapter 6 is mostly unchanged; however, the implementation of the binary heap makes
use of move operations that were introduced in C++11.
r Chapter 7 now contains material on radix sort, and a new section on lower-bound
proofs has been added. Sorting code makes use of move operations that were
introduced in C++11.
r Chapter 8 uses the new union/find analysis by Seidel and Sharir and shows the
O( M α(M, N) ) bound instead of the weaker O( M log∗ N ) bound in prior editions.
r Chapter 12 adds material on suffix trees and suffix arrays, including the linear-time
suffix array construction algorithm by Karkkainen and Sanders (with implementation).
The sections covering deterministic skip lists and AA-trees have been removed.
r Throughout the text, the code has been updated to use C++11. Notably, this means
use of the new C++11 features, including the auto keyword, the range for loop, move
construction and assignment, and uniform initialization.

Overview
Chapter 1 contains review material on discrete math and recursion. I believe the only way
to be comfortable with recursion is to see good uses over and over. Therefore, recursion
is prevalent in this text, with examples in every chapter except Chapter 5. Chapter 1 also
includes material that serves as a review of basic C++. Included is a discussion of templates
and important constructs in C++ class design.
Chapter 2 deals with algorithm analysis. This chapter explains asymptotic analysis
and its major weaknesses. Many examples are provided, including an in-depth explana-
tion of logarithmic running time. Simple recursive programs are analyzed by intuitively
converting them into iterative programs. More complicated divide-and-conquer programs
are introduced, but some of the analysis (solving recurrence relations) is implicitly delayed
until Chapter 7, where it is performed in detail.
Preface xvii

Chapter 3 covers lists, stacks, and queues. This chapter includes a discussion of the STL
vector and list classes, including material on iterators, and it provides implementations
of a significant subset of the STL vector and list classes.
Chapter 4 covers trees, with an emphasis on search trees, including external search
trees (B-trees). The UNIX file system and expression trees are used as examples. AVL trees
and splay trees are introduced. More careful treatment of search tree implementation details
is found in Chapter 12. Additional coverage of trees, such as file compression and game
trees, is deferred until Chapter 10. Data structures for an external medium are considered
as the final topic in several chapters. Included is a discussion of the STL set and map classes,
including a significant example that illustrates the use of three separate maps to efficiently
solve a problem.
Chapter 5 discusses hash tables, including the classic algorithms such as sepa-
rate chaining and linear and quadratic probing, as well as several newer algorithms,
namely cuckoo hashing and hopscotch hashing. Universal hashing is also discussed, and
extendible hashing is covered at the end of the chapter.
Chapter 6 is about priority queues. Binary heaps are covered, and there is additional
material on some of the theoretically interesting implementations of priority queues. The
Fibonacci heap is discussed in Chapter 11, and the pairing heap is discussed in Chapter 12.
Chapter 7 covers sorting. It is very specific with respect to coding details and analysis.
All the important general-purpose sorting algorithms are covered and compared. Four
algorithms are analyzed in detail: insertion sort, Shellsort, heapsort, and quicksort. New to
this edition is radix sort and lower bound proofs for selection-related problems. External
sorting is covered at the end of the chapter.
Chapter 8 discusses the disjoint set algorithm with proof of the running time. This is a
short and specific chapter that can be skipped if Kruskal’s algorithm is not discussed.
Chapter 9 covers graph algorithms. Algorithms on graphs are interesting, not only
because they frequently occur in practice but also because their running time is so heavily
dependent on the proper use of data structures. Virtually all of the standard algorithms
are presented along with appropriate data structures, pseudocode, and analysis of running
time. To place these problems in a proper context, a short discussion on complexity theory
(including NP-completeness and undecidability) is provided.
Chapter 10 covers algorithm design by examining common problem-solving tech-
niques. This chapter is heavily fortified with examples. Pseudocode is used in these later
chapters so that the student’s appreciation of an example algorithm is not obscured by
implementation details.
Chapter 11 deals with amortized analysis. Three data structures from Chapters 4 and
6 and the Fibonacci heap, introduced in this chapter, are analyzed.
Chapter 12 covers search tree algorithms, the suffix tree and array, the k-d tree, and
the pairing heap. This chapter departs from the rest of the text by providing complete and
careful implementations for the search trees and pairing heap. The material is structured so
that the instructor can integrate sections into discussions from other chapters. For example,
the top-down red-black tree in Chapter 12 can be discussed along with AVL trees (in
Chapter 4).
Chapters 1 to 9 provide enough material for most one-semester data structures courses.
If time permits, then Chapter 10 can be covered. A graduate course on algorithm analysis
could cover chapters 7 to 11. The advanced data structures analyzed in Chapter 11 can
easily be referred to in the earlier chapters. The discussion of NP-completeness in Chapter 9
xviii Preface

is far too brief to be used in such a course. You might find it useful to use an additional
work on NP-completeness to augment this text.

Exercises
Exercises, provided at the end of each chapter, match the order in which material is pre-
sented. The last exercises may address the chapter as a whole rather than a specific section.
Difficult exercises are marked with an asterisk, and more challenging exercises have two
asterisks.

References
References are placed at the end of each chapter. Generally the references either are his-
torical, representing the original source of the material, or they represent extensions and
improvements to the results given in the text. Some references represent solutions to
exercises.

Supplements
The following supplements are available to all readers at http://cssupport.pearsoncmg.com/

r Source code for example programs


r Errata

In addition, the following material is available only to qualified instructors at Pearson


Instructor Resource Center (www.pearsonhighered.com/irc). Visit the IRC or contact your
Pearson Education sales representative for access.

r Solutions to selected exercises


r Figures from the book
r Errata

Acknowledgments
Many, many people have helped me in the preparation of books in this series. Some are
listed in other versions of the book; thanks to all.
As usual, the writing process was made easier by the professionals at Pearson. I’d like
to thank my editor, Tracy Johnson, and production editor, Marilyn Lloyd. My wonderful
wife Jill deserves extra special thanks for everything she does.
Finally, I’d like to thank the numerous readers who have sent e-mail messages and
pointed out errors or inconsistencies in earlier versions. My website www.cis.fiu.edu/~weiss
will also contain updated source code (in C++ and Java), an errata list, and a link to submit
bug reports.
M.A.W.
Miami, Florida
C H A P T E R 1

Programming: A General
Overview

In this chapter, we discuss the aims and goals of this text and briefly review programming
concepts and discrete mathematics. We will . . .

r See that how a program performs for reasonably large input is just as important as its
performance on moderate amounts of input.
r Summarize the basic mathematical background needed for the rest of the book.
r Briefly review recursion.
r Summarize some important features of C++ that are used throughout the text.

1.1 What’s This Book About?


Suppose you have a group of N numbers and would like to determine the kth largest. This
is known as the selection problem. Most students who have had a programming course
or two would have no difficulty writing a program to solve this problem. There are quite a
few “obvious” solutions.
One way to solve this problem would be to read the N numbers into an array, sort the
array in decreasing order by some simple algorithm such as bubble sort, and then return
the element in position k.
A somewhat better algorithm might be to read the first k elements into an array and
sort them (in decreasing order). Next, each remaining element is read one by one. As a new
element arrives, it is ignored if it is smaller than the kth element in the array. Otherwise, it
is placed in its correct spot in the array, bumping one element out of the array. When the
algorithm ends, the element in the kth position is returned as the answer.
Both algorithms are simple to code, and you are encouraged to do so. The natural ques-
tions, then, are: Which algorithm is better? And, more important, Is either algorithm good
enough? A simulation using a random file of 30 million elements and k = 15,000,000
will show that neither algorithm finishes in a reasonable amount of time; each requires
several days of computer processing to terminate (albeit eventually with a correct answer).
An alternative method, discussed in Chapter 7, gives a solution in about a second. Thus,
although our proposed algorithms work, they cannot be considered good algorithms, 1
2 Chapter 1 Programming: A General Overview

1 2 3 4

1 t h i s
2 w a t s
3 o a h g
4 f g d t

Figure 1.1 Sample word puzzle

because they are entirely impractical for input sizes that a third algorithm can handle in a
reasonable amount of time.
A second problem is to solve a popular word puzzle. The input consists of a two-
dimensional array of letters and a list of words. The object is to find the words in the puzzle.
These words may be horizontal, vertical, or diagonal in any direction. As an example, the
puzzle shown in Figure 1.1 contains the words this, two, fat, and that. The word this begins
at row 1, column 1, or (1,1), and extends to (1,4); two goes from (1,1) to (3,1); fat goes
from (4,1) to (2,3); and that goes from (4,4) to (1,1).
Again, there are at least two straightforward algorithms that solve the problem. For each
word in the word list, we check each ordered triple (row, column, orientation) for the pres-
ence of the word. This amounts to lots of nested for loops but is basically straightforward.
Alternatively, for each ordered quadruple (row, column, orientation, number of characters)
that doesn’t run off an end of the puzzle, we can test whether the word indicated is in the
word list. Again, this amounts to lots of nested for loops. It is possible to save some time
if the maximum number of characters in any word is known.
It is relatively easy to code up either method of solution and solve many of the real-life
puzzles commonly published in magazines. These typically have 16 rows, 16 columns, and
40 or so words. Suppose, however, we consider the variation where only the puzzle board is
given and the word list is essentially an English dictionary. Both of the solutions proposed
require considerable time to solve this problem and therefore might not be acceptable.
However, it is possible, even with a large word list, to solve the problem very quickly.
An important concept is that, in many problems, writing a working program is not
good enough. If the program is to be run on a large data set, then the running time becomes
an issue. Throughout this book we will see how to estimate the running time of a program
for large inputs and, more important, how to compare the running times of two programs
without actually coding them. We will see techniques for drastically improving the speed
of a program and for determining program bottlenecks. These techniques will enable us to
find the section of the code on which to concentrate our optimization efforts.

1.2 Mathematics Review


This section lists some of the basic formulas you need to memorize, or be able to derive,
and reviews basic proof techniques.
1.2 Mathematics Review 3

1.2.1 Exponents
XA XB = XA+B
XA
= XA−B
XB
(XA )B = XAB
XN + XN = 2XN = X2N
2N + 2N = 2N+1

1.2.2 Logarithms
In computer science, all logarithms are to the base 2 unless specified otherwise.
Definition 1.1
XA = B if and only if logX B = A
Several convenient equalities follow from this definition.
Theorem 1.1

logC B
logA B = ; A, B, C > 0, A = 1
logC A

Proof
Let X = logC B, Y = logC A, and Z = logA B. Then, by the definition of loga-
rithms, CX = B, CY = A, and AZ = B. Combining these three equalities yields
B = CX = (CY )Z . Therefore, X = YZ, which implies Z = X/Y, proving the theorem.
Theorem 1.2

log AB = log A + log B; A, B > 0

Proof
Let X = log A, Y = log B, and Z = log AB. Then, assuming the default base of 2,
2X = A, 2Y = B, and 2Z = AB. Combining the last three equalities yields
2X 2Y = AB = 2Z . Therefore, X + Y = Z, which proves the theorem.
Some other useful formulas, which can all be derived in a similar manner, follow.

log A/B = log A − log B

log(AB ) = B log A

log X < X for all X > 0

log 1 = 0, log 2 = 1, log 1,024 = 10, log 1,048,576 = 20


4 Chapter 1 Programming: A General Overview

1.2.3 Series
The easiest formulas to remember are

N
2i = 2N+1 − 1
i=0

and the companion,



N
AN+1 − 1
Ai =
A−1
i=0

In the latter formula, if 0 < A < 1, then



N
1
Ai ≤
1−A
i=0

and as N tends to ∞, the sum approaches 1/(1 − A). These are the “geometric series”
formulas. 
We can derive the last formula for ∞i=0 A (0 < A < 1) in the following manner. Let
i

S be the sum. Then


S = 1 + A + A2 + A3 + A4 + A5 + · · ·
Then
AS = A + A2 + A3 + A4 + A5 + · · ·
If we subtract these two equations (which is permissible only for a convergent series),
virtually all the terms on the right side cancel, leaving
S − AS = 1
which implies that
1
S=
1−A

We can use this same technique to compute ∞ i
i=1 i/2 , a sum that occurs frequently.
We write
1 2 3 4 5
S = + 2 + 3 + 4 + 5 + ···
2 2 2 2 2
and multiply by 2, obtaining
2 3 4 5 6
2S = 1 + + + 3 + 4 + 5 + ···
2 22 2 2 2
Subtracting these two equations yields
1 1 1 1 1
S=1+ + + 3 + 4 + 5 + ···
2 22 2 2 2
Thus, S = 2.
1.2 Mathematics Review 5

Another type of common series in analysis is the arithmetic series. Any such series can
be evaluated from the basic formula:


N
N(N + 1) N2
i= ≈
2 2
i=1

For instance, to find the sum 2 + 5 + 8 + · · · + (3k − 1), rewrite it as 3(1 + 2 + 3 +


· · · + k) − (1 + 1 + 1 + · · · + 1), which is clearly 3k(k + 1)/2 − k. Another way to remember
this is to add the first and last terms (total 3k + 1), the second and next-to-last terms (total
3k + 1), and so on. Since there are k/2 of these pairs, the total sum is k(3k + 1)/2, which
is the same answer as before.
The next two formulas pop up now and then but are fairly uncommon.


N
N(N + 1)(2N + 1) N3
i2 = ≈
6 3
i=1

N
Nk+1
ik ≈ k = −1
|k + 1|
i=1

When k = −1, the latter formula is not valid. We then need the following formula,
which is used far more in computer science than in other mathematical disciplines. The
numbers HN are known as the harmonic numbers, and the sum is known as a harmonic
sum. The error in the following approximation tends to γ ≈ 0.57721566, which is known
as Euler’s constant.


N
1
HN = ≈ loge N
i
i=1

These two formulas are just general algebraic manipulations:


N
f(N) = Nf(N)
i=1

N 
N 0 −1
n
f(i) = f(i) − f(i)
i=n0 i=1 i=1

1.2.4 Modular Arithmetic


We say that A is congruent to B modulo N, written A ≡ B (mod N), if N divides
A − B. Intuitively, this means that the remainder is the same when either A or B is
divided by N. Thus, 81 ≡ 61 ≡ 1 (mod 10). As with equality, if A ≡ B (mod N), then
A + C ≡ B + C (mod N) and AD ≡ BD (mod N).
6 Chapter 1 Programming: A General Overview

Often, N is a prime number. In that case, there are three important theorems:

First, if N is prime, then ab ≡ 0 (mod N) is true if and only if a ≡ 0 (mod N)


or b ≡ 0 (mod N). In other words, if a prime number N divides a product of two
numbers, it divides at least one of the two numbers.
Second, if N is prime, then the equation ax ≡ 1 (mod N) has a unique solution
(mod N) for all 0 < a < N. This solution, 0 < x < N, is the multiplicative inverse.
Third, if N is prime, then the equation x2 ≡ a (mod N) has either two solutions
(mod N) for all 0 < a < N, or it has no solutions.

There are many theorems that apply to modular arithmetic, and some of them require
extraordinary proofs in number theory. We will use modular arithmetic sparingly, and the
preceding theorems will suffice.

1.2.5 The P Word


The two most common ways of proving statements in data-structure analysis are proof
by induction and proof by contradiction (and occasionally proof by intimidation, used
by professors only). The best way of proving that a theorem is false is by exhibiting a
counterexample.

Proof by Induction
A proof by induction has two standard parts. The first step is proving a base case, that is,
establishing that a theorem is true for some small (usually degenerate) value(s); this step is
almost always trivial. Next, an inductive hypothesis is assumed. Generally this means that
the theorem is assumed to be true for all cases up to some limit k. Using this assumption,
the theorem is then shown to be true for the next value, which is typically k + 1. This
proves the theorem (as long as k is finite).
As an example, we prove that the Fibonacci numbers, F0 = 1, F1 = 1, F2 = 2, F3 = 3,
F4 = 5, . . . , Fi = Fi−1 + Fi−2 , satisfy Fi < (5/3)i , for i ≥ 1. (Some definitions have F0 = 0,
which shifts the series.) To do this, we first verify that the theorem is true for the trivial
cases. It is easy to verify that F1 = 1 < 5/3 and F2 = 2 < 25/9; this proves the basis.
We assume that the theorem is true for i = 1, 2, . . . , k; this is the inductive hypothesis. To
prove the theorem, we need to show that Fk+1 < (5/3)k+1 . We have

Fk+1 = Fk + Fk−1

by the definition, and we can use the inductive hypothesis on the right-hand side,
obtaining

Fk+1 < (5/3)k + (5/3)k−1


< (3/5)(5/3)k+1 + (3/5)2 (5/3)k+1
< (3/5)(5/3)k+1 + (9/25)(5/3)k+1
which simplifies to
Another random document with
no related content on Scribd:
fact that these five officials always showed considerable
ability in handling diplomatic questions, and, as a mark of our
favour, we therefore restore to them their original rank.”

The Death of Chao Shu-ch’iao.—This Grand Councillor, one of the


Empress’s favourite Ministers, whom to the last she endeavoured to
protect from execution, was originally sentenced only to
imprisonment for life. He was confined in the prison of the Provincial
Judge at Hsi-an, where his family were allowed to visit him. On the
day before the issue of the Decree which sentenced him to
imprisonment, the Old Buddha had said, at a meeting of the Grand
Council, “I do not really believe that Chao sympathised in the very
least with the Boxers; the error that he made lay in under-estimating
the seriousness of the movement.” This was reported to Chao, who
was naturally much elated, and believed that his life would surely be
spared. A few days later, however, it was freely rumoured that the
foreign Powers were insisting upon his decapitation, and the news
created the greatest excitement throughout the city, which was his
native place. Some three hundred of the chief men of the city having
drawn up a monster petition, proceeded with it to the office of the
Grand Council, and begged, in the name of the whole community,
that his life be spared. The Grand Councillors were afraid to take the
petition to Her Majesty, but, in reply to the deputation, the President
of the Board of Punishments (who was related to Chao) declared
that his execution would be an act of monstrous injustice.
On the first day of the New Year, these rumours took more definite
shape, and on that day Her Majesty’s audience with the Grand
Council lasted from six to eleven in the morning; but even then no
decision had been come to in regard to complying with the demand
for Chao’s execution. Throughout the neighbourhood of the Drum
Tower the streets were packed with a huge crowd, who threatened
that they would certainly rescue Chao if he were taken out for
execution. So great was the clamour that the Grand Council feared a
riot, and they determined, therefore, to beg Her Majesty to permit
Chao to commit suicide. This was done, and Tzŭ Hsi reluctantly
agreeing, issued the Decree at one o’clock on the following morning,
which fixed the hour for reporting his death to Her Majesty at five
o’clock in the afternoon of the same day. Governor Ts’en was
ordered to proceed to the prison, and read the Decree to Chao,
which he did in due form. After hearing it in silence to the end, Chao
asked: “Will there be no further Decree?” “No,” said Ts’en. “Surely,
there must be,” said Chao. At this his wife, intervening, said, “There
is no hope; let us die together!” She then gave him poison, of which
he took a little, but up till 3 p.m. it appeared to have had no effect
whatsoever, for he seemed most vigorous, and discussed at great
length with his family the arrangements to be made for his funeral.
He was much exercised in mind at the effect which his death would
have upon the health of his aged mother. All day long his room was
crowded by friends and colleagues; the Governor had endeavoured
at first to prevent their coming, but had eventually yielded, so that the
number of those present was very large. Chao, addressing them,
said: “I have been brought to this pass entirely by the fault of Kang
Yi.” The Governor, observing that his voice sounded clear and firm,
and that, at this hour, there were no signs of impending death about
him, ordered one of the attendants to give him some opium to
swallow. At 5 o’clock, the opium having apparently taken no effect,
the attendants were ordered to give him a liberal dose of arsenic,
after which he rolled over on to the ground, and lay there, groaning
and beating his breast with his hands. Later, complaining of extreme
pain, he asked that friction might be applied to his chest, but so
strong was his constitution, and so determined his will, that even at
11 o’clock it was evident that there was still no little life left in him.
The Governor was much disturbed and distressed, being well aware
that the Old Buddha would require some adequate explanation of
this long delay in the execution of her orders. “I was to report his
death at 5 o’clock,” said he, “the man will not die: what is to be
done?” The attendants suggested that he should screw up some
pieces of thick paper, dip them in strong spirit, and with them close
the breathing passages; by this means he would be speedily
suffocated. Ts’en approved of the suggestion, and after five wads of
paper had been inserted, death ensued. His wife, weeping bitterly,
thereupon committed suicide. To the end, Chao could not believe
that the Empress Dowager would allow his death, and for this reason
it is probable that he purposely took an insufficient dose of opium in
order to gain time for a reprieve.
The Death of Prince Chuang.—Prince Chuang, with his concubine
and son, went to Tu Chou, in South Shansi, there to await the
decision of the Empress Dowager as to his fate. He lodged in an
official house of entertainment. When Ko Pao-hua, the Imperial
Commissioner, brought thither the Decree commanding him to
commit suicide, it was early in the morning; nevertheless, upon his
arrival, crackers were fired, in accordance with etiquette, to greet
him. The noise greatly irritated Prince Chuang, who turned savagely
upon the attendants, and asked what they meant by making such a
noise at such an hour. “An Imperial Commissioner has arrived,” they
said. “Has he come about me?” asked the Prince. “No,” they replied,
“he is merely passing through on business.” When the Imperial
Commissioner was ushered in, the Prince began to ply him with
questions about the Court, to which Ko briefly replied. After talking
for a little while Ko went off to inspect the premises, at the back of
which he found an old temple, in which he selected an unoccupied
room to be the scene of Prince Chuang’s suicide. From a beam in
the roof he hung a silken cord, and, after fastening it securely, he
directed the Prefect and the District Magistrate to send some
soldiers to keep order. Having made these preparations he returned
to the presence of the Prince, and informing him that he had an
Imperial Decree to read to him, ordered him to go down on his knees
to hear it. The Prince, drawing himself up to his full height, said, “Is it
my head that you want?” The Imperial Commissioner made no direct
reply, but proceeded to read the Decree to the Prince, who
reverently knelt.[116] When the Commissioner had finished, “So it is
suicide,” said the Prince, “I always expected they would not be
content with anything less than my life. I greatly fear that even our
Old Buddha will not be allowed to last much longer.” He next asked
the Imperial Commissioner to be permitted to bid farewell to his
family, which was allowed him. At this moment, his concubine and
his son, having learned of the Imperial Commissioner’s business,
entered the room. The Prince, addressing his son, said:
—“Remember that it is your duty to do everything in your power for
your country; at all costs, these foreigners must not be allowed to
possess themselves of the glorious Empire won for us by our
ancestors.”[117] His son, bitterly weeping, could not reply, while his
concubine passed from frantic grief to a swoon. The Prince,
unmoved, asked:—“Where is the death chamber?” The Imperial
Commissioner replied:—“Will your Highness please to come to the
empty room at the back of the house.” When the Prince, following
him, saw the silken cord hanging from the beam, he turned and said:
—“Your Excellency has indeed made most admirable and complete
arrangements.” With these words he passed the cord around his
neck, and in a very few minutes life was extinct.
The Death of Ying Nien.—Ying Nien was an arrant coward. On the
day of the issue of the first Decree, ordering his imprisonment at Hsi-
an, his family deserted him, and he remained all through the night,
weeping, in great distress of mind. To his attendants he complained
bitterly that Prince Ch’ing had not intervened to protect him. The next
day was the New Year Festival, and as everybody was busy with
preparations for the occasion, little heed was paid to him, and he
spent the day weeping. Towards midnight his crying suddenly
ceased, and on the following morning he was found by his servant,
prone upon the ground, his face covered with mud, quite dead. He
had choked himself by swallowing mud, but as the Decree ordering
him to commit suicide had not actually been issued, the fact of his
death was suppressed for forty-eight hours, after which Governor
Ts’en was informed, and he reported it to the Old Buddha.
The Decapitation of Yü Hsien.—When the Decree, commanding
his decapitation, reached Yü Hsien, he had already started under
escort for his place of banishment, but he was a sick man and could
only totter weakly along. On learning the news, he appeared as one
dazed, a very different man indeed from that fierce Governor of
Shansi, who had displayed such bloodthirsty activity. On the day
before his death he was very seriously ill, and when the time came,
he was so weak that he had to be supported to the execution
ground. On the previous day the leading citizens of Lan-chou fu
expressed their desire to offer him a valedictory banquet, but he
declined the honour with thanks, expressing his wish to spend his
last day in quietude. He wrote a pair of scrolls as an expression of
his gratitude for the courtesy thus shown to him, and the elders of
the city decided and informed him that the execution ground would
be decorated with red cloth, as for a festival, in his honour. Towards
evening, notices were placarded in the principal streets, calling on
the people to insist upon his being reprieved, but Yü Hsien knew that
this was quite useless. He composed a statement of his actions in
the form of an official proclamation, maintaining stoutly that his death
was to be regarded as a glorious and patriotic end, and bidding the
people on no account to interfere with the execution of his sentence.
Finally he wrote, with his own hand, a pair of valedictory scrolls, the
text of which was widely quoted after his death all over China. The
first may be translated as follows:—

“The Minister dies for his Sovereign; wives and concubines


die for their lord. Who shall say that this is unseemly? It is sad
that my aged mother is ninety years of age, and my little
daughter only seven. Who shall protect them in their old age
and tender youth? How shall that filial piety be fulfilled which a
man owes to his parent? The Sovereign commanded, and the
Minister obeyed. I slew others; now, in my turn, am I slain.
Why should I regret it? Only one cause for shame have I—
that I have served my Sovereign all these years, and have
held high rank in three provinces, without displaying merit
more conspicuous than a grain of sand in the desert or a drop
of water in the ocean. Alas, that I should thus unworthily
requite the Imperial bounty.”

And the second reads:—

“The Minister has by his guilt incurred the sentence of


decapitation. At this moment there is no thought in my mind
except the hope that my death may be as glorious as my life
has been honest.[118] I would far rather die than pine away
the rest of my life in degrading imprisonment. I have ill-
requited Her Majesty’s kindness. Who shall now relieve her
grief? I sincerely hope that you, the Statesmen who surround
the Throne, may yet find means to restore our fallen fortunes,
and that you will honourably fulfil your bounden duty in
ministering to the distress of their Imperial Majesties.”

On the following day, at one o’clock of the afternoon, Yü Hsien’s


head was severed from his body, in the presence of a great crowd,
which greeted his end with sounds of lamentation.
The Death of Ch’i Hsiu.—Ch’i Hsin was executed, together with
Hsü Ching-yu, outside the wall of the Tartar city, in Peking, early one
morning in February, 1901, the execution being witnessed by more
than one European. When informed that he was to die, Ch’i Hsiu’s
only question was: “By whose commands?” and when told that a
Decree had come from Hsi-an fu, he said, “It is by the will of the
Empress Dowager; I die happy then, so long as it is not by order of
the foreigners.” This Grand Councillor had been arrested several
months before by the Japanese, and Prince Ch’ing had been able to
obtain his release on the ground that his aged mother was very ill;
but when she subsequently died, he strongly advised Ch’i Hsiu “to
make his filial piety coincide with his loyalty by committing suicide.”
Coming from Prince Ch’ing, the suggestion was one hardly to be
misunderstood, but Ch’i Hsiu failed to act upon it, thereby incurring a
certain amount of criticism.
XXII
THE OLD BUDDHA PENITENT

When the wrath of the Powers had been appeased by the death
and banishment of the leading Boxers, and when the Empress
Dowager had come to realise that her future policy must be one of
conciliation and reform, she proceeded first of all to adjust the annals
of her reign for the benefit of posterity, in the following remarkable
Edict (13th February, 1901):—

“In the summer of last year, the Boxers, after bringing about
a state of war, took possession of our Capital and dominated
the very Throne itself. The Decrees issued at that time were
the work of wicked Princes and Ministers of State, who, taking
advantage of the chaotic condition of affairs, did not hesitate
to issue documents under the Imperial seal, which were quite
contrary to our wishes. We have on more than one previous
occasion hinted indirectly at the extraordinary difficulty of the
position in which we were placed, and which left us no
alternative but to act as we did. Our officials and subjects
should have no difficulty in reading between the lines and
appreciating our meaning.
“We have now punished all the guilty, and we hereby order
that the Grand Secretariat shall submit for our perusal all
Decrees issued between the 24th day of the 5th moon and
the 20th day of the 7th moon (20th June to 14th August), so
that all spurious or illegal documents may be withdrawn and
cancelled. Thus shall historical accuracy be attained and our
Imperial utterances receive the respect to which they are
properly entitled.”
Having thus secured the respect of posterity, Tzŭ Hsi proceeded to
make the “amende honorable,” (with due regard to the Imperial
“face,”) for so many of her sins as she was prepared to admit. In
another Decree, in the name of the Emperor, which gives a
Munchausen account of the Throne’s part and lot in the crisis of
1900, and a pathetic description of her own and the Emperor’s
sufferings during the flight, she makes solemn confession of error
and promise of reform. As an example of the manner in which history
is made in China, the Edict is of permanent interest and value.

“A Penitential Decree
“26th day, 12th moon of Kuang-Hsü’s 26th year (Feb. 13th,
1901).
“Last summer the Boxers sowed the seeds of rebellion,
which led to our being involved in a war with friendly Powers.
Thereafter, our Capital being thrown into a state of great
disorder, we escorted the Empress Dowager, our mother, on a
progress of inspection throughout the Western Provinces. To
Prince Ch’ing and to the Grand Secretary Li Hung-chang we
entrusted full powers, and bade them negotiate with the
foreign Ministers for the cessation of hostilities and a Treaty of
peace. These Plenipotentiaries having lately telegraphed to
us the twelve principal clauses of the proposed protocol, we
have consented thereto, but at the same time have instructed
them carefully to scrutinise their various provisions in the light
of China’s ability to fulfil them.
“It having been accorded to us to retrieve our disastrous
mistakes, we are in duty bound to promulgate this Penitential
Decree, and to let every one of our subjects know how vast
and harassing were the perplexities with which the Throne
has been beset.
“There are ignorant persons who believe that the recent
crisis was partly caused by our government’s support of the
Boxers; they must have overlooked our reiterated Decrees of
the 5th and 6th moons, that the Boxers should be
exterminated, and the Christians protected. Unfortunately
these rebels and their evil associates placed us in a position
from which it was impossible to escape; we exhausted every
possible effort of strong remonstrance, appalled at the
impending ruin of our Empire. Events moved swiftly until, on
the 21st of the 7th moon, our Capital fell; on that day, both
Her Majesty the Empress Dowager and ourselves decided to
commit suicide in the presence of the tutelary deities of our
Dynasty and the gods of the soil, thus making atonement and
offering propitiation to the spirits of our nine Imperial
ancestors. But, at the critical moment of dire lamentation and
confusion, we were seized by our Princes and Ministers, and
forcibly led away from that place where bullets fell like rain,
and where the enemies’ guns gathered thick as forest trees.
Hastily, and with souls perturbed, we started on our Western
tour. Were not all these disasters caused by the Boxers? The
imminent danger of her sacred Majesty, the overwhelming
ruin of our ancestors’ inheritance, our prosperous Capital
turned to a howling wilderness, its ravines filled with the dead
bodies of our greatest men: how can it possibly be said that
the Throne could protect the rebels who brought such
disasters upon us?
“There was, however, an explicable cause for the Boxer
movement and for its disastrous results.” (The Decree
proceeds here to ascribe blame to local Magistrates for not
administering even justice between Christians and non-
Christians, and thus producing a state of discontent and
unrest, which afforded opportunities to the Boxers. The latter
received a further impetus by reason of the inefficiency of the
Imperial troops sent to quell the first rising. Finally, references
are made to the evil advice and ignorance of the highly placed
clansmen and Ministers of State who favoured the Boxer
cause. This Decree is in fact a complete justification of the
views expressed in the three memorials by Yüan Ch’ang and
Hsü Ching-ch’eng, for which these patriotic officials laid down
their lives. After describing the entry of the Boxers into
Peking, and lamenting the position of the Throne as
resembling “a tail which is too big to wag,” the Decree
proceeds):—“Nevertheless, and while the Legations were
being besieged, we repeatedly directed our Ministers of the
Tsungli Yamên to put a stop to hostilities, and at the same
time to keep up communication with the foreign Ministers,
assuring them of our kindly and sympathetic regard. This
latter order, however, was not carried out because of the
continuous artillery and rifle fire between the besiegers and
the besieged, and it was impossible for us, under such
conditions, to insist upon its execution. Supposing, by some
horrible fatality, the Legations had actually fallen, how could
China have hoped to preserve her integrity? To the Throne’s
strenuous efforts is really due the avoidance of such a
dreadful catastrophe, and the gifts of wine, fruit and water-
melons to the besieged Legations, were an indication of Her
Majesty’s benevolent intentions. It was but natural and right
that the friendly Powers should appreciate these our feelings,
and the fact that at such a crisis they have respected the
integrity of our Empire as a Sovereign State, goes to prove
that the Allies attribute no longer any blame to the Throne.
This, however, only adds to our wrath at the ignorance and
violence of our offending subjects; when we look back upon
the past, we are filled with shame and indignation. We are
convinced that, in these peace negotiations, the foreign
Powers will not attempt to extract from us more than we are
able to concede. We have ordered Prince Ch’ing and Li
Hung-chang, negotiating this Treaty, to continue patiently in
friendly discussion, maintaining all questions of vital principle,
while recognising the special circumstances which attach to
any given case. Foreign Powers are lovers of justice, and
they are bound to consider what China is capable of doing if
they wish to see this negotiation brought to a successful
conclusion. To this end we expect that our Plenipotentiaries
will display their virtue of patriotism to the very best of their
ability.
“At the time of the terror in Peking, our provincial authorities
were ordered to keep the peace in their respective provinces,
and to take no part in provoking hostilities. If the Southern and
Eastern parts of our Empire enjoyed full protection from
disorders, the fact was solely due to our Decrees, which
insisted upon the rigid maintenance of peace. The trade of
foreign Powers was in no way injured, our Viceroys and
Governors being able to preserve normal conditions in those
parts of our Empire. As regards the Southern provinces,
however, which are always talking loudly of strengthening
their defences, it cannot be gainsaid that, upon the outbreak
of any trouble, they fall into a state of hopeless confusion.
Caring nothing for the innumerable difficulties which beset our
Throne, they stand idly by, contenting themselves with
delivering oracular opinions and catch-words, and they even
go so far as to reproach their Sovereign, the father of his
people. We would have them bear in mind that when our
Imperial chariot departed in haste from the Forbidden City, the
moaning of the wind and the cry of the heron overhead
seemed to our startled ears as the tramp of an advancing
enemy. As we fled through Ch’ang-ping chou northward to
Hsüan-hua, we personally attended on the wants of the
Empress Dowager. We were both clad in the meanest of
garments, and to relieve our hunger we were scarcely able to
obtain a dish of beans or porridge. Few of our poorest
subjects have suffered greater hardships of cold and hunger
than befell us in this pitiful plight. We wonder whether those
who call themselves our faithful Ministers and servants have
ever taken real thought of their bounden duty towards their
afflicted and outraged Sovereigns?
“To sum up the matter in a word, is it not the case that,
when either our Statesmen or our people are guilty of any
offence, it is upon our Imperial persons that the blame must
fall? In recalling this fact to mind, we do not desire to rake up
bygone offences, but rather because it is our duty to warn our
subjects against their repetition. For the past twenty years,
whenever difficulties have arisen with foreign nations, it has
been our duty to issue solemn warnings and reproofs. But the
saying which is in common use, that we ‘sleep on brushwood
and taste gall’ has, by lapse of time, become almost
meaningless; when we talk of putting our house in order, and
reforming our finances, the words have no real significance.
The time of danger once over, favouritism and the neglect of
public business go on as of old; as of old, money purchases
rank, and the Throne continues to be persistently misled. Let
our officials ask themselves in the silence of the night
watches whether, even had there been no Boxer rebellion,
China could possibly have become a great Power? Even
before these disasters occurred there was great difficulty in
maintaining our position as a nation, and now, after this awful
visitation, it must be obvious to the dullest amongst us that
our weakness and poverty have been greatly increased. To
our Ministers of State, who have received high favour from
the Throne, we would say that, at this time of our nation’s
history, it is essential to display new qualities of integrity and
patriotism. Taxation should now be re-arranged in such a
manner as to enable us to repay the foreign indemnities,
while bearing in mind the poverty of the lower classes of the
people. In the selection of officials, good character should be
considered the first essential, and men of talent should be
encouraged to the utmost.
“The whole duty of a Minister of State may be summed up
in two words: to abolish corrupt tendencies, and to put off the
abuses of former days. Justice and energy should be the
principles guiding towards economical and military efficiency;
on this the spirit of the nation and its future depend as upon
its very life blood.
“For nearly thirty years our mother, the Empress Dowager,
has laboured without ceasing to instruct us and train us in the
right way, and now, at one blow, all the results of her labour
are brought to nought. We cannot but remember the
abomination of desecration which has overthrown our
ancestral shrines and the temples of our gods. Looking to the
North, we think upon our Capital ruined and profaned, upon
the thousands of our highest officials whose families have lost
their all, of the millions of our subjects whose lives and
property have been sacrificed in this cataclysm. We can never
cease to reproach ourselves: how then should we reproach
others? Our object in issuing this solemn warning is to show
that the prosperity or the ruin of a State depends solely upon
the energy or apathy of its rulers and people, and that the
weakness of an Empire is the direct result of rottenness in its
administration. We desire to reiterate our commands that
friendly relations with foreign Powers are to be encouraged,
that at the same time our defences are to be strengthened,
that freedom of speech and the employment of trustworthy
servants are to be encouraged. We expect obedience to
these commands, and sincere patriotism from our subjects.
Earnestly the Empress Dowager and ourselves pray that it
may be brought home to our Ministers of State, that only out
of suffering is wisdom developed, and that a sense of duty
insists upon unceasing effort. Let this Decree be made known
throughout the entire Empire.”

This Edict was issued in February, coincidently with Her Majesty’s


acceptance of the conditions imposed by the Powers in the peace
negotiations at Peking. From that date until, in June, the terms of the
Protocol were definitely settled by the plenipotentiaries, her attitude
continued to be one of nervous apprehension, while the discomfort
of life at Hsi-an, as well as the advice repeatedly given her by Jung
Lu and the provincial Viceroys, combined to make her look forward
with impatience to the day when she might set out for her capital.
There remained only one source of difficulty, namely, the presence
of Prince Tuan’s son, the Heir Apparent, at her Court. Tzŭ Hsi was
well aware that she could hardly look for cordial relations with the
representatives of the Powers at Peking, or for sympathy abroad, so
long as this son of the Boxer chief remained heir to the Throne. It
would clearly be impossible, in the event of his becoming Emperor,
for him to consent to his father remaining under sentence of
banishment, and equally impossible to expect the Powers to consent
to Prince Tuan’s rehabilitation and return. Yet the youth had been
duly and solemnly appointed to succeed to the Throne, a thing not
lightly to be set aside. Once again the Old Buddha showed that the
sacred laws of succession were less than a strong woman’s will.
Politics apart, it was common knowledge that Tzŭ Hsi had for
some time repented of her choice of Prince Tuan’s ill-mannered,
uncouth son as Heir Apparent. More than once had she been
brought to shame by his wild, and sometimes disgraceful, conduct.
Even in her presence, the lad paid little heed to the formalities of
Court etiquette, and none at all to the dignity of his own rank and
future position. Tzŭ Hsi was therefore probably not sorry of the
excuse for deposing him from that high estate. In the Decree
cancelling his title to the Throne, she observed that his father, Prince
Tuan, had brought the Empire to the verge of ruin, and that the guilt
which he had thus incurred towards his august ancestors could
never be wiped out. In order to save the “face” of the Heir Apparent
and her own, in a difficult position, the Edict describes him as being
fully convinced of the impossibility of his succeeding to the Throne
under existing conditions, and that he himself had therefore
petitioned Her Majesty to cancel her previous decision. In granting
this request and directing him to remove himself forthwith from the
Palace precincts, the Empress conferred upon him the rank of an
Imperial Duke of the lowest grade, excusing him at the same time
from performance of any official duties in that capacity. By this
decision she meant to mark the contempt into which the Heir
Apparent had fallen, for the rank thus granted him was a low one,
and, without any official duties or salary, he was condemned to a life
of poverty and obscurity. This fallen Heir to the Dragon Throne is a
well-known figure to-day in the lowest haunts of the Chinese City at
Peking: a drunkard and disreputable character, living the life of a
gambler, notorious only as a swashbuckler of romantic past and
picturesque type,—one who, but for adverse fate and the accursed
foreigner, would have been Emperor of China at this moment.
Having deposed him, the Empress let it be known that the
selection of an heir to the disconsolate shade of T’ung-Chih would
be postponed “until a suitable candidate should be found,” an
intimation generally understood to mean that the vital question of
providing an heir in legitimate and proper succession to the Throne
could not well be determined until China’s foreign relations, as well
as her internal affairs, had been placed upon a basis of greater
security. It is curious to note how, in all such utterances, it appears to
have been tacitly understood that the Emperor Kuang Hsü was a
“bad life.”
Thus, in exile, the Old Buddha wore philosophically the white
sheet of penance and burned the candle of expiation, preparatory to
re-entering anon upon a new lease of power in that Peking where, as
she well knew, the memory of the foreigner is short and his patience
long. In June, 1901, the terms of peace were settled; on the 7th
September the Peace Protocol was solemnly signed by the
representatives of all the Powers, that “monument of collective
inefficiency” which was to sow the seeds of trouble to last for many
years to come. At Hsi-an “in the profound seclusion of the Palace”
she knew remorse, not unstimulated by fear; on the return journey to
her capital (from 20th October, 1901, to 6th January, 1902), while
preparing her arts and graces to captivate the barbarian, she was
still a victim to doubt and apprehension. Meanwhile, at Peking, the
mandarin world, reassured by the attitude of the peace negotiators
and their terms, was fast shedding its garments of fear and
peacocking as of yore, in renewed assurance of its own indisputable
superiority. Evidence of this spirit was to be met with on all sides,
gradually coming to its fine flower in the subsequent negotiations for
the revision of the commercial Treaties, and bringing home once
more, to those who study these things, the unalterable truth of the
discovery made years ago by one of the earliest British
representatives in China, namely, that “this people yields nothing to
reason and everything to fear.”
One of the most remarkable instances of this revival of the
mandarin’s traditional arrogance of superiority occurred, significantly
enough, in connection with the penitential mission of the Emperor’s
brother, Prince Ch’un (now Regent) to Berlin, an episode which
threatened for a moment to lead to a rupture between Germany and
China. By Article 1 of the Peace Protocol, Prince Ch’un had been
specially designated for this mission to convey in person to the
German Emperor the regrets of the Chinese Government for the
murder of Baron von Ketteler. He left Peking for the purpose on the
12th July, 1901, with definite instructions as to the manner in which
the Chinese Government’s regrets were to be expressed. The
German Emperor’s proposals as to the form of ceremony to be
followed in this matter were regarded by Prince Ch’un as
incompatible with his instructions, and it will be remembered that,
after some hesitation on the part of the German Government, the
Chinese policy of passive resistance eventually carried the day. The
following telegraphic correspondence on the subject is of permanent
interest. Prince Ch’un (whose personal name is Tsai Feng)
telegraphed from Germany on the 26th September to the Peace
Plenipotentiaries, Prince Ch’ing and Li Hung-chang, as follows:—

“I have duly received the Grand Council’s message, and


note that I am commanded to act as circumstances may
require, and that a middle course is suggested as expedient. I
fully appreciate the intelligent caution of your policy, and
fortunately had already taken steps to act in the sense
indicated. On the 14th of this moon the German Emperor had
given orders to stop preparations for the ceremony, but as I
noticed that the Royal train had not been withdrawn nor had
his aide-de-camp left my suite, I inferred that there was a
possibility of his yielding the points in dispute. Accordingly,
after a long discussion of the situation with Yin Ch’ang, I
directed him to write in German to Jeng-yintai[119] requesting
his friendly intervention at the Foreign Office with a definite
explanation that China could not possibly agree that the
mission should be received kneeling, that Germany had
nothing to gain on insisting upon such a procedure, and that
the only result of a fiasco would be to make both countries
appear extremely ridiculous. I therefore begged that the
Emperor should accede to my personal appeal and waive the
point. At the same time I requested the German gentleman
who acts as Chinese Consul for Bavaria to address the
Foreign Office to the same effect, and with a request that we
might enter upon discussion of the point. Four days later I
directed Lü Hai-huan to return to his post at Berlin to make
such arrangements as might be possible, and on the following
day I telegraphed to him a summary of the Grand Council’s
views on the matter. In the afternoon of the 20th I received the
Consul for Bavaria, who informed me that he had received a
telegram from the Foreign Office inquiring when I proposed to
start for Berlin, and hoping that I would do so speedily, as the
Emperor had now consented to waive the question of our
kneeling, but required that only Yin Ch’ang should accompany
me when presenting the letter of regret, the remainder of my
suite to remain in another place.
“The same evening I received a message from Lü Hai-
huan, stating that the Emperor would undoubtedly receive
me, and that, since all other difficult questions had been
settled, His Majesty wished to leave for the country in a few
days. Under these circumstances I did not consider it
advisable to insist too strictly on minor details of etiquette,
being pressed for time, and I therefore requested the German
Emperor’s Chamberlain to have a special train prepared for
my journey. We reached Potsdam at 3 p.m. on the 21st[120]; I
was met by a General sent by the Emperor with his state
carriage. Myself and my suite were lodged in the Palace,
where every attention was shown to us, and it was arranged
that I should fulfil my mission on the following day, after
depositing a wreath on the grave of the late Empress. On the
morning of the following day I visited her tomb, and at noon
the state carriage came to take me to the New Palace, where,
after being ushered into the Emperor’s presence, I read aloud
Their Majesties’ complimentary letter. The members of my
suite were awaiting in an adjoining apartment. After the
ceremony I was escorted back to my residence, and at 2 p.m.
the Emperor came to call upon me. He was very cordial and
remained talking with me for a long time. By his orders a
steam launch was provided for me, in which I visited the Lake
and Peacock Island; on the following day I saw a review of
the troops, and was presented to the Empress. The Emperor
begged me to remain longer in Berlin, suggesting that I
should visit the arsenals and inspect the fleet under Prince
Henry at Stettin. I could scarcely decline these polite
attentions, and after visiting the Empress I took lodging in an
hotel at Berlin. Thanks to the glorious prestige of our Empire,
matters have thus been satisfactorily settled, and the
knowledge that my mission has been satisfactorily carried out
will, I hope, bring comfort to Their Imperial Majesties in their
anxiety. I beg that you will memorialise the Throne
accordingly. Tsai Feng.”

The Empress Dowager was pleased to express her approval of


the result of this mission, which in the eyes of the Chinese
Government was undoubtedly one of those diplomatic triumphs
which China appears to attain most easily when her material
resources have completely failed. Reading the above despatch, it is
difficult to realise that the Prince’s mission had for its object the
expiation of a brutal murder committed, with the full approval of the
Chinese Government and Court, on the representative of a friendly
nation. The opinion is commonly believed, held by the Legations at
Peking, that the present Regent has learned much since he returned
from that penitential mission to the German capital. During the
present year his brothers have been engaged on missions ostensibly
intended to acquire knowledge for the sorely-needed reorganisation
of China’s army and navy, missions which have been received with
royal honours by almost every civilised Power; but there are many
close observers of the changing conditions at Peking who see in
these missions merely a repetition of farces that have often been
played before, and an attempt to gain prestige in the eyes of the
Chinese people for the Regent’s family and the Court, rather than
any definite intention or desire to reform the official system.
His Highness Prince Tsai Hsün.

Brother of the late Emperor and Present Regent—recently head of the Naval
Mission to Europe and America.
XXIII
THE RETURN OF THE COURT TO PEKING

The state of mind of the Empress Dowager during the flight from
the Capital, and subsequently while the Court remained in exile at
Hsi-an, was marked by that same quality of indecision and vacillating
impulse which had characterised her actions throughout the Boxer
crisis and the siege of Peking. This may be ascribed partly to her
advancing age and partly to the conflicting influences of astrologers
and fortune-tellers, to whose advice she attached the greatest
importance in all times of peril. We have dealt in another place with
her marked susceptibility to omens and superstitious beliefs; its
effect is most noticeable, however, at this stage of her life, and was
conspicuous in matters of small detail throughout the return journey
to Peking.
The influence of Jung Lu at Hsi-an, and that of Li Hung-chang at
Peking, had been systematically exercised to induce Her Majesty to
return to the Capital; but until the Peace Protocol conditions had
been definitely arranged, and until she had been persuaded to
decree adequate punishment upon the Boxer leaders, the
predominant feeling in her mind was evidently one of suspicion and
fear, as was shown when she ordered the hurried flight from T’ai-
yüan fu to Hsi-an. The influence of Li Hung-chang, who, from the
outset, had realised the folly committed by the Chinese Government
in approving the attack upon the Legations, was exercised to create
in the mind of Her Majesty a clearer sense of the folly of that policy.
At the height of the crisis (21st July, 1900), realising that the foreign
forces brought to bear upon China were steadily defeating both
Boxers and Imperial troops, she appointed Li Hung-chang to be
Viceroy of Chihli, and directed that he should proceed from Canton
with all haste, there being urgent need of the services of a diplomat
versed in foreign affairs. Her Majesty went so far as to suggest that

You might also like