100% found this document useful (2 votes)
96 views

Problems on algorithms 1st Edition Ian Parberry instant download

The document provides a collection of problems on algorithms, aimed at helping programmers and students enhance their skills in algorithm design, analysis, and verification. It includes supplementary materials and solutions to facilitate self-study, while emphasizing key areas of algorithm theory without delving into advanced topics. The work is offered free of charge under specific conditions, with a request for donations to support research on Multiple Sclerosis.

Uploaded by

mistancuo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
96 views

Problems on algorithms 1st Edition Ian Parberry instant download

The document provides a collection of problems on algorithms, aimed at helping programmers and students enhance their skills in algorithm design, analysis, and verification. It includes supplementary materials and solutions to facilitate self-study, while emphasizing key areas of algorithm theory without delving into advanced topics. The work is offered free of charge under specific conditions, with a request for donations to support research on Multiple Sclerosis.

Uploaded by

mistancuo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 77

Problems on algorithms 1st Edition Ian Parberry

pdf download

https://ebookgate.com/product/problems-on-algorithms-1st-edition-
ian-parberry/

Get Instant Ebook Downloads – Browse at https://ebookgate.com


Instant digital products (PDF, ePub, MOBI) available
Download now and explore formats that suit you...

Algorithms Illuminated Part 4 Algorithms for NP Hard


Problems 1st Edition Tim Roughgarden

https://ebookgate.com/product/algorithms-illuminated-
part-4-algorithms-for-np-hard-problems-1st-edition-tim-roughgarden/

ebookgate.com

Mathematical finance core theory problems and statistical


algorithms Nikolai Dokuchaev

https://ebookgate.com/product/mathematical-finance-core-theory-
problems-and-statistical-algorithms-nikolai-dokuchaev/

ebookgate.com

Algorithms on Strings 1st Edition Maxime Crochemore

https://ebookgate.com/product/algorithms-on-strings-1st-edition-
maxime-crochemore/

ebookgate.com

Optimization algorithms on matrix manifolds P.-A. Absil

https://ebookgate.com/product/optimization-algorithms-on-matrix-
manifolds-p-a-absil/

ebookgate.com
Hume on Causation Problems of Philosophy 1st Edition Helen
Beebee

https://ebookgate.com/product/hume-on-causation-problems-of-
philosophy-1st-edition-helen-beebee/

ebookgate.com

Geometric Problems on Maxima and Minima 1st Edition Titu


Andreescu

https://ebookgate.com/product/geometric-problems-on-maxima-and-
minima-1st-edition-titu-andreescu/

ebookgate.com

Algorithms 1st Edition Umesh Vazirani

https://ebookgate.com/product/algorithms-1st-edition-umesh-vazirani/

ebookgate.com

Essential Algorithms 1st Edition Rod Stephens

https://ebookgate.com/product/essential-algorithms-1st-edition-rod-
stephens/

ebookgate.com

Approximate iterative algorithms 1st Edition Almudevar

https://ebookgate.com/product/approximate-iterative-algorithms-1st-
edition-almudevar/

ebookgate.com
Problems on Algorithms
Second Edition

Ian Parberry and William Gasarch


July 2002

Consisting of

Problems on Algorithms, First Edition, by Ian


Parberry, formerly published in 1994 by Prentice-
Hall, Inc.
Errata to the First Edition, published in 1998.
Supplementary Problems, by William Gasarch.
© Ian Parberry and William Gasarch, 2002.
License Agreement
This work is copyright Ian Parberry and William Gasarch. All rights reserved. The authors offer
this work, retail value US$20, free of charge under the following conditions:
• No part of this work may be made available on a public forum (including, but not limited to a
web page, ftp site, bulletin board, or internet news group) without the written permission of
the authors.
• No part of this work may be rented, leased, or offered for sale commercially in any form or
by any means, either print, electronic, or otherwise, without written permission of the authors.
• If you wish to provide access to this work in either print or electronic form, you may do so by
providing a link to, and/or listing the URL for the online version of this license agreement:

http://hercule.csci.unt.edu/ian/books/free/license.html.

You may not link directly to the PDF file.


• All printed versions of any or all parts of this work must include this license agreement.
Receipt of a printed copy of this work implies acceptance of the terms of this license
agreement. If you have received a printed copy of this work and do not accept the terms of
this license agreement, please destroy your copy by having it recycled in the most appropriate
manner available to you.
• You may download a single copy of this work. You may make as many copies as you wish
for your own personal use. You may not give a copy to any other person unless that person
has read, understood, and agreed to the terms of this license agreement.
• You undertake to donate a reasonable amount of your time or money to the charity of your
choice as soon as your personal circumstances allow you to do so. The author requests that
you make a cash donation to The National Multiple Sclerosis Society in the following amount
for each work that you receive:
• $5 if you are a student,
• $10 if you are a faculty member of a college, university, or school,
• $20 if you are employed full-time in the computer industry.

Faculty, if you wish to use this work in your classroom, you are requested to:
• encourage your students to make individual donations, or
• make a lump-sum donation on behalf of your class.

If you have a credit card, you may place your donation online at:

https://www.nationalmssociety.org/donate/donate.asp.

Otherwise, donations may be sent to:

National Multiple Sclerosis Society - Lone Star Chapter


8111 North Stadium Drive
Houston, Texas 77054

If you restrict your donation to the National MS Society's targeted research campaign, 100% of
your money will be directed to fund the latest research to find a cure for MS. For the story of Ian
Parberry's experience with Multiple Sclerosis, see http:// multiplesclerosissucks.com.
Problems on Algorithms

by

Ian Parberry
([email protected])
Dept. of Computer Science
University of North Texas
Denton, TX 76203

August, 1994
Contents

Preface ix

1 Introduction 1
1.1 How to Use This Book 1
1.2 Overview of Chapters 1
1.3 Pseudocode 3
1.4 Useful Texts 4

2 Mathematical Induction 8
2.1 Summations 8
2.2 Inequalities 10
2.3 Floors and Ceilings 10
2.4 Divisibility 11
2.5 Postage Stamps 11
2.6 Chessboard Problems 12
2.7 Fibonacci Numbers 14
2.8 Binomial Coefficients 14
2.9 What is Wrong? 15
2.10 Graphs 16
2.11 Trees 17
2.12 Geometry 18
2.13 Miscellaneous 19
2.14 Hints 20
2.15 Solutions 21
2.16 Comments 23

iii
iv Contents

3 Big-O and Big-Ω 28


3.1 Rank the Functions 28
3.2 True or False? 30
3.3 Proving Big-O 31
3.4 Manipulating Big-O 32
3.5 Alternative Definitions 33
3.6 Find the Functions 34
3.7 Hints 35
3.8 Solutions 35
3.9 Comments 36

4 Recurrence Relations 37
4.1 Simple Recurrences 37
4.2 More Difficult Recurrences 38
4.3 General Formulae 39
4.4 Recurrences with Full History 39
4.5 Recurrences with Floors and Ceilings 40
4.6 Hints 41
4.7 Solutions 41
4.8 Comments 44

5 Correctness Proofs 46
5.1 Iterative Algorithms 46
5.1.1 Straight-Line Programs 47
5.1.2 Arithmetic 47
5.1.3 Arrays 49
5.1.4 Fibonacci Numbers 51
5.2 Recursive Algorithms 51
5.2.1 Arithmetic 52
5.2.2 Arrays 53
5.2.3 Fibonacci Numbers 54
5.3 Combined Iteration and Recursion 54
5.4 Hints 55
5.5 Solutions 56
5.6 Comments 58

6 Algorithm Analysis 59
6.1 Iterative Algorithms 59
Contents v

6.1.1 What is Returned? 59


6.1.2 Arithmetic 61
6.1.3 Arrays 61
6.1.4 Fibonacci Numbers 62
6.2 Recursive Algorithms 62
6.2.1 Arithmetic 63
6.2.2 Arrays 63
6.2.3 Fibonacci Numbers 64
6.3 Combined Iteration and Recursion 64
6.4 Hints 64
6.5 Solutions 65
6.6 Comments 66

7 Divide-and-Conquer 67
7.1 Maximum and Minimum 67
7.2 Integer Multiplication 68
7.3 Strassen’s Algorithm 73
7.4 Binary Search 74
7.5 Quicksort 75
7.6 Towers of Hanoi 77
7.7 Depth-First Search 78
7.8 Applications 79
7.9 Hints 81
7.10 Solutions 83
7.11 Comments 85

8 Dynamic Programming 87
8.1 Iterated Matrix Product 87
8.2 The Knapsack Problem 89
8.3 Optimal Binary Search Trees 90
8.4 Floyd’s Algorithm 91
8.5 Applications 92
8.6 Finding the Solutions 97
8.7 Hints 99
8.8 Solutions 99
8.9 Comments 100
vi Contents

9 Greedy Algorithms 101


9.1 Continuous Knapsack 101
9.2 Dijkstra’s Algorithm 102
9.3 Min-Cost Spanning Trees 103
9.4 Traveling Salesperson 109
9.5 Applications 109
9.6 Hints 111
9.7 Solutions 111
9.8 Comments 115

10 Exhaustive Search 116


10.1 Strings 116
10.2 Permutations 118
10.3 Combinations 120
10.4 Other Elementary Algorithms 121
10.5 Backtracking 122
10.6 Applications 123
10.7 Hints 130
10.8 Solutions 131
10.9 Comments 133

11 Data Structures 135


11.1 Heaps 135
11.2 AVL Trees 138
11.3 2–3 Trees 141
11.4 The Union-Find Problem 142
11.5 Applications 142
11.6 Hints 145
11.7 Solutions 145
11.8 Comments 146

12 N P-completeness 147
12.1 General 147
12.2 Cook Reductions 148
12.3 What is Wrong? 150
12.4 Circuits 152
12.5 One-in-Three 3SAT 153
12.6 Factorization 154
Contents vii

12.7 Hints 154


12.8 Solutions 155
12.9 Comments 155

13 Miscellaneous 156
13.1 Sorting and Order Statistics 156
13.2 Lower Bounds 157
13.3 Graph Algorithms 158
13.4 Maximum Flow 160
13.5 Matrix Reductions 161
13.6 General 162
13.7 Hints 164
13.8 Solutions 166
13.9 Comments 166

Bibliography 168

Index 174
viii Contents
Preface

The ability to devise effective and efficient algorithms in new situations is a skill
that separates the master programmer from the merely adequate coder. The best
way to develop that skill is to solve problems. To be effective problem solvers,
master-programmers-in-training must do more than memorize a collection of stan-
dard techniques and applications — they must in addition be able to internalize and
integrate what they have learned and apply it in new circumstances. This book is a
collection of problems on the design, analysis, and verification of algorithms for use
by practicing programmers who wish to hone and expand their skills, as a supple-
mentary text for students enrolled in an undergraduate or beginning graduate class
on algorithms, and as a self-study text for graduate students who are preparing for
the qualifying (often called “breadth” or “comprehensive”) examination on algo-
rithms for a Ph.D. program in Computer Science or Computer Engineering. It is
intended to augment the problem sets found in any standard algorithms textbook.
Recognizing that a supplementary text must be cost-effective if it is to be useful,
I have made two important and perhaps controversial decisions in order to keep its
length within reasonable bounds. The first is to cover only what I consider to be
the most important areas of algorithm design and analysis. Although most instruc-
tors throw in a “fun” advanced topic such as amortized analysis, computational
geometry, approximation algorithms, number-theoretic algorithms, randomized al-
gorithms, or parallel algorithms, I have chosen not to cover these areas. The second
decision is not to search for the origin of the problems that I have used. A lengthy
discussion of the provenance of each problem would help make this book more schol-
arly, but would not make it more attractive for its intended audience — students
and practicing programmers.
To make this book suitable for self-instruction, I have provided at the end of
each chapter a small collection of hints, solutions, and comments. The solutions are
necessarily few for reasons of brevity, and also to avoid hindering instructors in their
selection of homework problems. I have included various preambles that summarize
the background knowledge needed to solve the problems so that students who are
familiar with the notation and style of their textbook and instructor can become
more familiar with mine.

ix
x Preface

The organization of this book is a little unusual and requires a few words of
explanation. After a chapter of introduction, it begins with five chapters on back-
ground material that most algorithms instructors would like their students to have
mastered before setting foot in an algorithms class. This will be the case at some
universities, but even then most students would profit from brushing up on this
material by attempting a few of the problems. The introductory chapters include
mathematical induction, big-O notation, recurrence relations, correctness proofs,
and basic algorithm analysis methods. The correctness proof chapter goes beyond
what is normally taught, but I believe that students profit from it once they over-
come their initial aversion to mathematical formalism.
The next four chapters are organized by algorithm design technique: divide-and-
conquer, dynamic programming, greedy algorithms, and exhaustive search. This
organization is somewhat nonstandard, but I believe that the pedagogical benefits
outweigh the drawbacks (the most significant of which seems to be the scattering of
problems on graph algorithms over several chapters, mainly in Sections 2.10, 2.11,
7.7, 8.4, 9.2, 9.3, 9.4, 13.3, and 13.4). Standard textbooks usually devote little time
to exhaustive search because it usually requires exponential time, which is a pity
when it contains many rich and interesting opportunities to practice the application
of algorithm design, analysis, and verification methods. The manuscript is rounded
out with chapters on advanced data structures and N P-completeness. The final
chapter contains miscellaneous problems that do not necessarily fit into the earlier
chapters, and those for which part of the problem is to determine the algorithmic
technique or techniques to be used.
The algorithms in this book are expressed in a Pascal-like pseudocode. Two
problems (Problems 326 and 327) require the reader to examine some code written
in Pascal, but the details of the programming language are not a major factor in
the solutions. In any case, I believe that students of Computer Science should be
literate in many different programming languages.
For those who are interested in technical details, this manuscript was produced
from camera-ready copy provided by the author using LATEX version 2.09 (which
used TEX C Version 3.14t3), using the Prentice Hall macros phstyle.sty writ-
ten by J. Kenneth Shultis, and the twoside, epsf, and makeidx style files. The
Bibliography was created by BibTEX. The index was produced using the program
makeindex. The figures were prepared in encapsulated Postscript form using idraw,
and the graphs using xgraph. The dvi file produced by LATEX was translated into
Postscript using dvips.
A list of errata for this book is available by anonymous ftp from ftp.unt.edu
(IP address 129.120.1.1), in the directory ian/poa. I will be grateful to receive
feedback, suggestions, errata, and in particular any new and interesting problems
(including those from areas not presently covered), which can be sent by electronic
mail to [email protected].
Chapter 1

Introduction

Problems on Algorithms contains 668 problems on the design, verification, and


analysis of algorithms. This chapter is the only background that you will get before
we start listing problems. It is divided into four sections. The first section describes
the philosophy of this book and how to get the best out of it. The second section
contains an overview of the remaining chapters. The third section briefly touches
on the pseudocode used to describe algorithms. The fourth section gives a quick
review of some of the textbooks available on algorithms and related subjects.

1.1 HOW TO USE THIS BOOK


Most chapters have sections with hints for, solutions to, and comments on selected
problems. It is recommended that readers first attempt the problems on their own.
The hints should be consulted only when encountering serious difficulty in getting
started. The solutions can be used as examples of the type of answers that are
expected. Only a limited number of solutions are given so that students are not
tempted to peek, and to ensure that there remains a large number of problems that
instructors can assign as homework.
Each problem is labeled with a sequence of icons. The more mortarboards
a problem has, the more difficult it is. Problems with one or two mortarboards are
suitable for a senior-level undergraduate class on algorithms. Problems with two or
three mortarboards are suitable for a graduate class on algorithms. The remaining
icons indicate the existence of additional material: The lightbulb indicates that
there is a hint, the scroll and feather indicates that there is a solution, and the
smiley face indicates that there is a comment. This is summarized for the
reader’s convenience in Table 1.1.

1.2 OVERVIEW OF CHAPTERS


Chapters 2–4 contain problems on some background material on discrete mathe-
matics that students should already have met before entering an undergraduate
algorithms course; respectively mathematical induction, big-O notation, and recur-
rence relations. If you are a student in an algorithms class, I strongly recommend

1
2 Chap. 1. Introduction

Symbol Meaning
easy
medium
difficult
hint
solution
comment

Table 1.1. Problem symbols and their meaning.

that you review this material and attempt some of the problems from Chapters 2–4
before attending the first class. Some kind instructors may spend a few lectures
“reminding” you of this material, but not all of them can afford the time to do so.
In any case, you will be ahead of the game if you devote some time to look over
the material again. If you ignored the material on mathematical induction in your
discrete mathematics class, thinking that it is useless to a programmer, then think
again. If you can master induction, you have mastered recursion — they are two
sides of the same coin.
You may also meet the material from Chapters 5 and 6 in other classes. Chap-
ter 5 contains problems on correctness proofs. Not all instructors will emphasize
correctness proofs in their algorithms class, but mastering them will teach you im-
portant skills in formalization, expression, and design. The approach to correctness
proofs taken in Chapter 5 is closer to that taken by working researchers than the
formal-logic approach expounded by others such as Dijkstra [21]. Chapter 6 con-
tains some problems involving the analysis of some naive algorithms. You should
have met this material in earlier classes, but you probably don’t have the depth of
knowledge and facility that you can get from working the problems in this chapter.
Chapters 7–10 consist of problems on various algorithm design techniques: re-
spectively, divide-and-conquer, dynamic programming, greedy algorithms, and ex-
haustive search. The problems address some of the standard applications of these
techniques, and ask you to demonstrate your knowledge by applying the techniques
to new problems. Divide-and-conquer has already been foreshadowed in earlier
chapters, but the problems in Chapter 7 will test your knowledge further. The
treatment of exhaustive search in Chapter 10 goes beyond what is normally covered
in algorithms courses. The excuse for skimming over exhaustive search is usually a
natural distate for exponential time algorithms. However, extensive problems are
provided here because exhaustive search contains many rich and interesting oppor-
tunities to practice the application of algorithm design, analysis, and verification
methods.
Chapter 11 contains problems on advanced data structures, and Chapter 12
Sec. 1.3. Pseudocode 3

contains problems on N P-completeness, Finally, Chapter 13 contains miscellaneous


problems, defined to be those that do not necessarily fit into the earlier chapters,
and those for which part of the problem is to determine the algorithmic technique
to be used.

1.3 PSEUDOCODE
The algorithms in this text are described in a Pascal-like pseudocode. Here is a
quick overview of the conventions used:

Data Types: Most variables are either integers or one- or two-dimensional arrays
of integers. The notation P [i..j] is shorthand for an array P , whose elements
are P [i], P [i + 1], . . . , P [j]. Occasionally, variables will be other mathematical
objects such as sets or lists.

Block-Structuring: Indentation is used to indicate block-structuring, in an at-


tempt to save space.

Assignment Statements: The “:=” symbol is the assignment operator.

Sequencing: A sequence of commands will be on separate lines or separated by


semicolons.

Selection: The selection command uses Pascal’s if-then-else syntax, which has
the form

if condition
then S1
else S2

If the condition is true at time of execution, then S1 is executed; otherwise


S2 is executed. The else clause will be omitted if it is empty.

Indefinite Iteration: Indefinite iteration uses Pascal’s pre-tested while loop or


post-tested repeat loop. The while loop has the form

while condition do
S

If the condition is true, then S is executed. The condition is then re-evaluated.


If it is false, the loop terminates. Otherwise S is executed again. The process
repeats until the condition is false. The repeat loop has the form

repeat
S
until condition
4 Chap. 1. Introduction

and is equivalent to

S
while not condition do
S

Definite Iteration: Definite (count-controlled) iteration is achieved using Pascal’s


for loop. Some loops count up (using the keyword to), and some count
down (using the keyword downto). An upward-counting for-loop will be
done zero times if the start value is larger than the finish value (analogously
for downward-counting for-loops). The syntax is as follows, with the upward-
counting loop on the left, and the downward-counting loop on the right:

for i := s to f do for i := s downto f do


S S

which are equivalent to, respectively,

i := s i := s
while i ≤ f do while i ≥ f do
S S
i := i + 1 i := i − 1

Subroutines and Parameters: Subroutines are expressed using Pascal-style pro-


cedures and functions. Functions return a value, which unlike Pascal may
be a complicated object. I have chosen to follow the lead of Aho, Hopcroft,
and Ullman [2] in using a C-like return statement to describe the value re-
turned by a function. Procedures return values through their parameters.
Most parameters are value parameters, though some are variable parameters.
You’ll be able to tell the difference by context — those that return values are
obviously variable parameters! Comments in the algorithms should give you
an extra hint.

1.4 USEFUL TEXTS


There are many good algorithms texts available, and more get published every
year. Here is a quick thumbnail sketch of some of them, and some related texts
that you might find useful. I recommend that the conscientious student examine
as many texts as possible in the library and choose one that suits their individual
taste. Remember, though, that different texts have differing areas of strength, and
appeal to different types of reader. I also strongly recommend that the practicing
programmer include in their library a copy of Bentley [9, 10]; Cormen, Leiserson,
and Rivest [19]; Garey and Johnson [28]; Graham, Knuth, and Patashnik [30]; and
Knuth [45, 46, 47].
Sec. 1.4. Useful Texts 5

Aho, Hopcroft, and Ullman [1] This was the standard graduate text on algo-
rithms and data structures for many years. It is written quite tersely, with
some sentences requiring a paragraph of explanation for some students. If you
want the plain facts with no singing or dancing, this is the book for you. It is
a little dated in presentation and material, but not particularly so.

Aho, Hopcroft, and Ullman [2] This is the undergraduate version of the pre-
vious book, with more emphasis on programming. It is full of minor errors.
A large number of the Pascal program fragments don’t work, even when you
correctly implement their C-like return statement.

Aho and Ullman [3] This textbook is redefining the undergraduate computer sci-
ence curriculum at many leading institutions. It is a good place to go to brush
up on your discrete mathematics, data structures, and problem solving skills.

Baase [7] A good algorithms text at the upper-division undergraduate level.

Bentley [9, 10] This delightful pair of books are a collection of Jon Bentley’s Pro-
gramming Pearls column from Communications of the ACM. They should be
recommended reading for all undergraduate computer science majors. Bent-
ley explores the problems and pitfalls of algorithm design and analysis, and
pays careful attention to implementation and experimentation. The subjects
chosen are too idiosyncratic and anecdotal to be a textbook, but nonetheless
a useful pair of books.

Brassard and Bratley [14] This is another good algorithms text with a strong
emphasis on design techniques. The title comes from the French word algo-
rithmique, which is what they (perhaps more aptly) call Computer Science.

Cormen, Leiserson, and Rivest [19] This is an excellent text for those who can
handle it. In the spirit of Aho, Hopcroft, and Ullman [1], it does not mess
around. A massive tome, it contains enough material for both a graduate and
undergraduate course in algorithms. It is the definitive text for those who
want to get right down to business, but it is not for the faint of heart.

Even [26] This is the canonical book on graph algorithms covering most of the
graph algorithm material taught in the typical algorithms course, plus more.
It is a little dated, but still very useful.

Garey and Johnson [28] This is the canonical book on N P-completeness. It is


particularly useful for its large list of N P-complete problems. It is showing
its age a little, but David Johnson has expressed an intention to work on a
Second Edition. More modern subjects are covered by David Johnson in “The
NP-Completeness Column: An On-Going Guide” published on a semiregular
basis in Journal of Algorithms (the latest was in September 1992, but David
Johnson recently assured me that more are planned).
6 Chap. 1. Introduction

Gibbons [29] A more modern and carefully presented text on graph algorithms,
superior in many ways to Even [26].

Graham, Knuth, and Patashnik [30] An excellent book on discrete mathemat-


ics for computer science. However, many students find it quite difficult going.
It is noted for its marginal (and often obscure) graffiti.

Greene and Knuth [33] A highly mathematical text for an advanced course on
algorithm analysis at Stanford. Recommended for the serious graduate stu-
dent.

Harel [34] This is another good text along the lines of Brassard and Bratley. It
contains excellent high-level descriptions of subjects that tend to confuse the
beginning student if they are presented in all their detailed glory. It is noted
for its biblical quotes.

Horowitz and Sahni [37] This is a reasonable text for many of the topics found
in the typical algorithms class, but it is weak on analysis and but its approach
to backtracking is somewhat idiosyncratic and hard to follow.

Kingston [44] A strong textbook for the elementary undergraduate algorithms


course, but the coverage is a little shallow for advanced undergraduates. The
chapter on correctness proofs is an unusual but welcome addition. Divide-
and-conquer and dynamic programming are covered very sketchily, and the
approach to greedy algorithms is idiosyncratic but likely to strike a chord with
some students.

Knuth [45, 46, 47] The Knuth three-volume series is the standard reference text
for researchers and students. The material in it has aged well, except for
Knuth’s penchant for an obscure fictitious assembly-level code instead of the
more popular and easy to understand pseudocode.

Kozen [50] A text for graduate students containing 40 lectures on algorithms. The
terse presentation is not for everybody. It contains enough material for a single
graduate course, as opposed to the normal text that allows the instructor
to pick and choose the material to be covered. The choice of material is
strong but not to everybody’s taste. The homework problems (all of which
have solutions) and miscellaneous exercises (some of which have solutions) are
particularly useful.

Lewis and Denenberg [52] A strong data structures text that also covers some
of the material in the typical algorithms course.

Manber [56] Some students find the approach taken in this book, which is algo-
rithm design by successive refinement of intuitive but flawed version of the
algorithm, very helpful. Others, who do not think this way, hate it. It is
certainly more realistic in its approach to algorithm design than more formal
Sec. 1.4. Useful Texts 7

texts, but perhaps it encourages the wrong habits. Some important topics are
not covered in very great detail.
Moret and Shapiro [58] This is planned as the first volume of a two-volume set.
This volume covers tractable problems, and the second volume (unsighted
as yet) will cover intractable problems. It has a definite combinatorial opti-
mization flavor. Dynamic programming is a notable omission from the first
volume.
Papadimitriou and Steiglitz [59] A reasonable text for an algorithms course,
but one which is very heavy with the jargon and mind-set of the combinatorial
optimization and numerical analysis community, which makes it a difficult
book to just dip into at random for the parts of it that are useful.
Purdom and Brown [64] A mathematically rigorous text that focuses on anal-
ysis almost to the exclusion of design principles.
Rawlins [67] An entertaining text that nonetheless is technically rigorous and
detailed.
Sedgewick [72] This book studies a large array of standard algorithms, but it is
largely descriptive in nature and does not spend much time on verification,
analysis, or design techniques. It is excellent for the elementary undergraduate
algorithms curriculum, but not sufficiently rigorous for upper-division courses.
Smith [74] This is another strong algorithms text with an awesome collection of
problems.
Solow [75] This is a good text for the student who has trouble with mathematical
formalism. The chapter on induction may be particularly useful for those who
have trouble getting started.
Weiss [82] A strong data structures text that also covers quite a bit of the material
in the typical algorithms course.

Wilf [83] A book that does a good job on analysis, but does not cover algorithm
design techniques. The selection of topics is limited to chapters on mathe-
matical preliminaries, recursion, network flow, number-theoretic algorithms,
and N P-completeness.
Chapter 2

Mathematical Induction

At first sight, this chapter may seem out of place because it doesn’t seem to be
about algorithms at all. Although the problems in this chapter are mainly mathe-
matical in nature and have very little to do with algorithms, they are good practice
in a technique that is fundamental to algorithm design, verification, and analysis.
Unfortunately, many students come to my algorithms class poorly versed in the use
of induction. Either it was badly taught or they discarded it as useless information
(or both). If you are one of these students, you should start by attempting at least
some of the following problems. In addition to mastering the technique of mathe-
matical induction, you should pay particular attention to the results in Sections 2.1,
2.2, 2.3, 2.7, 2.8, 2.10, and 2.11. Some of them are quite useful in algorithm design
and analysis, as we shall see later.

2.1 SUMMATIONS

1. Prove by induction on n ≥ 0 that ni=1 i = n(n + 1)/2.
n
2. Prove by induction on n ≥ 0 that i=1 i2 = n(n + 1)(2n + 1)/6.
n
3. Prove by induction on n ≥ 0 that i=1 i3 = n2 (n + 1)2 /4.

4. Prove by induction on n ≥ 0 that


n

(2i + 1)2 = (n + 1)(2n + 1)(2n + 3)/3.
i=0

n
5. Prove by induction on n ≥ 0 that i=1 i(i + 1) = n(n + 1)(n + 2)/3.

6. Prove by induction on n ≥ 0 that


n

i(i + 1)(i + 2) = n(n + 1)(n + 2)(n + 3)/4.
i=1

8
Sec. 2.1. Summations 9

n
7. Prove by induction on n ≥ 0 that i · i! = (n + 1)! − 1.
i=1
n
8. Prove by induction on n ≥ 1 that i=1 1/2i = 1 − 1/2n .

9. Prove by induction on n ≥ 1 that for every a = 1,


n
 an+1 − 1
ai = .
i=0
a−1

10. Prove by induction on n ≥ 0 that for every a = 1, and all 0 ≤ j ≤ n,


n
 an+1 − aj
ai = .
i=j
a−1

n
11. Prove by induction on n ≥ 0 that i=0 2i = 2n+1 − 1.

12. Prove by induction on n ≥ 1 that


n
 1 n
= .
i=1
i(i + 1) n+1

n
13. Prove by induction on n ≥ 0 that i=1 i2i = (n − 1)2n+1 + 2.

14. Prove by induction on n ≥ 0 that for every a = 1,


n
 nan+2 − (n + 1)an+1 + a
iai = .
i=1
(a − 1)2

15. Prove by induction on n ≥ 0 that


n

i2 2i = n2 2n+1 − n2n+2 + 3 · 2n+1 − 6.
i=1

16. Prove by induction on n ≥ 0 that


n

i2 2n−i = 2n+3 − 2n+1 − n2 − 4n − 6.
i=1

17. Prove by induction on n ≥ 0 that


n  n  
1 1 1
= − .
i=1
n+i i=1
2i − 1 2i
10 Chap. 2. Mathematical Induction

2.2 INEQUALITIES
18. Prove by induction on n ≥ 1 that if x > −1, then (1 + x)n ≥ 1 + nx.

19. Prove by induction on n ≥ 7 that 3n < n!.

20. Prove by induction on n ≥ 5 that 2n > n2 .



21. Prove by induction on k ≥ 1 that ni=1 ik ≤ nk (n + 1)/2.

22. Prove by induction on n ≥ 0 that

n
1 1
2
<2− .
i=1
i n

23. Prove by induction that if n ≥ 4 is even, and 2 ≤ i ≤ n/2, then


i 
 k i

(n − 2j + 1) ≤ 2 (n − 2j + 1).
k=1 j=1 j=1

2.3 FLOORS AND CEILINGS


Suppose x ∈ IR+ . The floor of x, denoted x , is defined to be the largest integer
that is no larger than x. The ceiling of x, denoted x , is defined to be the smallest
integer that is no smaller than x.

24. Prove by induction on n ≥ 0 that


n  n/2 if n is even
=
2 (n − 1)/2 if n is odd.

25. Prove by induction on n ≥ 0 that



n n/2 if n is even
=
2 (n + 1)/2 if n is odd.

26. Prove by induction on n ≥ 1 that for all m ∈ IR+ ,

n n+m−1
= .
m m
Sec. 2.4. Divisibility 11

2.4 DIVISIBILITY
27. Prove by induction on n ≥ 0 that n3 + 2n is divisible by 3.
28. Prove by induction on n ≥ 0 that n5 − n is divisible by 5.
29. Prove by induction on n ≥ 0 that 5n+1 + 2 · 3n + 1 is divisible by 8.
30. Prove by induction on n ≥ 0 that 8n+2 + 92n+1 is divisible by 73.

31. Prove by induction that for all n ≥ 0, 11n+2 + 122n+1 is divisible by 133.
32. Define S ⊆ IN × IN as follows. (0, 0) ∈ S. If (m, n) ∈ S, then
(m + 2, n + 3) ∈ S. Prove by induction on n ≥ 0 that for all (m, n) ∈ S, m + n
is divisible by 5.

33. Prove by induction that a decimal number is divisible by 3 iff the sum


of its digits is divisible by 3.

34. Prove by induction that a decimal number is divisible by 9 iff the sum


of its digits is divisible by 9.

35. Prove by induction that the sum of the cubes of three successive natural
numbers is divisible by 9.

36. Let Sn = {1, 2, . . . , 2n} be the set of integers from 1 to 2n. Let
T ⊂ Sn be any subset containing exactly n + 1 elements of Sn . Prove by
induction on n that there exists x, y ∈ T , x = y, such that x divides evenly
into y with no remainder.

2.5 POSTAGE STAMPS


37. Show that any integer postage greater than 7 cents can be formed
by using only 3-cent and 5-cent stamps.

38. Show that any integer postage greater than 34 cents can be formed by
using only 5-cent and 9-cent stamps.

39. Show that any integer postage greater than 5 cents can be formed by
using only 2-cent and 7-cent stamps.
40. Show that any integer postage greater than 59 cents can be formed by
using only 7-cent and 11-cent stamps.
41. What is the smallest value of k such that any integer postage greater
than k cents can be formed by using only 4-cent and 9-cent stamps? Prove
your answer correct.
12 Chap. 2. Mathematical Induction

42. What is the smallest value of k such that any integer postage greater
than k cents can be formed by using only 6-cent and 11-cent stamps? Prove
your answer correct.
43. Show that for all n ≥ 1, any positive integer amount of postage that
is at least n(n − 1) cents can be formed by using only n-cent and (n + 1)-cent
stamps.
44. Show that for all m, n ≥ 1 such that gcd(m, n) = 1, there exists k ∈ IN
such that any positive integer amount of postage that is at least k cents can
be formed by using only m-cent and n-cent stamps.

2.6 CHESSBOARD PROBLEMS


45. Prove by induction that for all n ∈ IN and all even m ∈ IN, an n × m
chessboard has exactly the same number of black squares and white squares.
46. Prove by induction that for all odd n, m ∈ IN, an n × m chessboard has
all four corner squares colored the same.

47. Prove by induction that for all odd n, m ∈ IN, an n × m chessboard


with the corner squares colored white has one more white square than black
square.

48. Recall that a knight can make one of eight legal moves de-
picted in Figure 2.1. Figure 2.2 shows a closed knight’s tour on an 8 × 8
chessboard, that is, a circular tour of knight’s moves that visits every square
of the chessboard exactly once before returning to the first square. Prove by
induction that a closed knight’s tour exists for any 2k × 2k chessboard for all
k ≥ 3.

A triomino is an “L”-shaped tile formed by three adjacent squares of a chessboard,


shown in Figure 2.3. An arrangement of triominoes is a tiling of a chessboard if
it covers it exactly without overlap, except for one square which is missed. For
example, Figure 2.4 shows a chessboard with a missing square filled in black on the
left, and a tiling with triominos that covers every square of the board except this
one on the right.

49. Prove by induction on n ≥ 1 that any 2n × 2n chessboard that


is missing one square can be tiled with triominoes, regardless of where the
missing square is.

50. Prove or disprove that all chessboards of the following dimensions


can be tiled by triominoes: (a) 3 × 2n , (b) 6 × 2n , (c) 3n × 3n , (d) 6n × 6n .
Sec. 2.6. Chessboard Problems 13

2 3
1 4

8 5
7 6

Figure 2.1. The eight legal moves that a knight on the


center square can make.

Figure 2.2. A closed knight’s tour on an 8 × 8 chessboard.

Figure 2.3. A triomino.

Figure 2.4. A chessboard with a missing square filled in


black (left), and a tiling with triominos that covers every
square of the board except the missing one (right).
14 Chap. 2. Mathematical Induction

51. Prove that any 2n × 2n chessboards with one square missing


can be tiled by triominoes of only three colors so that no pair of triominoes
that share an edge have the same color.

2.7 FIBONACCI NUMBERS


The Fibonacci numbers Fn for (n ≥ 0) are defined recursively as follows: F0 = 0,
F1 = 1, and for n ≥ 2, Fn = Fn−1 + Fn−2 .
n
52. Prove by induction on n that i=0 Fi = Fn+2 − 1.

53. Prove by induction that Fn+k = Fk Fn+1 + Fk−1 Fn .


n
54. Prove by induction on n ≥ 1 that i=1 Fi2 = Fn Fn+1 .

55. Prove by induction on n ≥ 1 that Fn+1 Fn+2 = Fn Fn+3 + (−1)n .

56. Prove by induction on n ≥ 2 that Fn−1 Fn+1 = Fn2 + (−1)n .

2.8 BINOMIAL COEFFICIENTS


The binomial coefficient  
n
,
r
for n, r ∈ IN, r ≤ n, is defined to be the number of ways of choosing r things from
n without replacement, that is,
 
n n!
= .
r r!(n − r)!

57. Prove by induction on n that


n 
 
n
= 2n .
m
m=0

58. Prove by induction on n ≥ 1 that for all 1 ≤ m ≤ n,


 
n
≤ nm .
m
Sec. 2.9. What is Wrong? 15

59. Prove by induction on n that


n 
 
n
(a + b)n = am bn−m .
m
m=0

60. Prove by induction on n that for all even n, if k = n/2, then


   
n n
> .
n/2 k

61. Prove by induction on n that for all even n,


 
n
= Ω(2n /n).
n/2

62. Prove by induction that for all n ∈ IN,


n  
n
i· = n2n−1 .
i
i=0

63. Prove by induction that for all n ∈ IN,


n  
n
2−i · = (3/2)n .
i
i=0

2.9 WHAT IS WRONG?


64. What, if anything is wrong with the following reasoning? All horses
are the same color. The proof is by induction on the number of horses. The
base of the induction is easy: If there is one horse, then it is trivially the same
color as itself. Now suppose that there are n horses, numbered 1 through n.
By the induction hypothesis, horses 1 through n − 1 have the same color (let’s
say black). In particular, horse 2 is black. Also by the induction hypothesis,
horses 2 through n have the same color. Since horse 2 is black, this means
that horses 2 through n must be black. Therefore, all of the horses have the
same color.

65. What is wrong with the following proof? We claim that 6n = 0 for all
n ∈ IN. The proof is by induction on n ≥ 0. Clearly, if n = 0, then 6n = 0.
Now, suppose that n > 0. Let n = a + b. By the induction hypothesis, 6a = 0
and 6b = 0. Therefore,
6n = 6(a + b) = 6a + 6b = 0 + 0 = 0.
16 Chap. 2. Mathematical Induction

66. What is wrong with the following reasoning? We show that for every
n ≥ 3, Fn is even. The base of the induction is trivial, since F3 = 2. Now
suppose that n ≥ 4 and that Fm is even for all m < n. Then Fn = Fn−1 +Fn−2 ,
and by the induction hypothesis Fn−1 and Fn−2 are even. Thus, Fn is the
sum of two even numbers, and must therefore be even.

2.10 GRAPHS
A graph is an ordered pair G = (V, E), where V is a finite set and E ⊆ V × V . The
elements of V are called nodes or vertices, and the elements of E are called edges.
We will follow the normal conventions of using n for the number of nodes and e for
the number of edges. Where convenient we will take V = {v2 , v2 , . . . , vn }.

67. Prove by induction that a graph with n vertices can have at most
n(n − 1)/2 edges.

68. A tournament is a directed graph formed by taking the complete


undirected graph and assigning arbitrary directions on the edges. That is,
it is a graph G = (V, E) such that for all u, v ∈ V , either exactly one of
(u, v), (v, u) ∈ E. Show that every tournament has a Hamiltonian path, that
is, a path that visits every vertex exactly once.

69. An Eulerian cycle in a connected graph is a cycle in which


every edge appears exactly once. Prove by induction that every graph in
which each vertex has even degree (that is, each vertex has an even number
of edges incident with it) has an Eulerian cycle.

The hypercube of dimension n is a graph defined as follows. A hypercube of di-


mension 0 is a single vertex. To build a hypercube of dimension n, start with a
hypercube of dimension n − 1. Take a second, exact copy of this hypercube. Draw
an edge from each vertex in the first copy to the corresponding vertex of the second
copy. For example, Figure 2.5 shows the hypercubes of dimensions 0, 1, 2, 3, and 4.

70. Prove by induction that a hypercube of dimension n has 2n vertices.

71. Prove by induction that a hypercube of dimension n has n2n−1 edges.

72. Prove by induction that every hypercube has a Hamiltonian cycle, that
is, a cycle that visits every vertex exactly once.

73. Prove by induction that the vertices of a hypercube can be colored using
two colors so that no pair of adjacent vertices have the same color.
Sec. 2.11. Trees 17

Dimension 0 Dimension 1 Dimension 2

Dimension 3 Dimension 4

Figure 2.5. Some hypercubes of various dimensions.

74. Prove by induction that the edges of an n-dimensional hypercube can be


colored using n colors so that no pair of edges that share a common vertex
have the same color.

75. Prove by induction that an n-dimensional hypercube has exactly


 
n
2n−k
k

different subcubes of dimension k.

2.11 TREES
A tree is a special kind of graph defined as follows1 . A single vertex v is a tree
with root v. Suppose Ti = (Vi , Ei ) are disjoint trees with roots ri respectively, for
1 ≤ i ≤ k. Suppose r ∈ V1 , V2 , . . . , Vk . Then, T = (V, E) is a tree, where

V = V1 ∪ V2 ∪ · · · ∪ Vk ∪ {r},
E = E1 ∪ E2 ∪ · · · ∪ Ek ∪ {(r, r1 ), (r, r2 ), . . . , (r, rk )}.
1 Technically, this is actually called a rooted tree, but the distinction is not of prime importance

here.
18 Chap. 2. Mathematical Induction

The root of a tree is said to be at level 1. For all i ≥ 1, a child of a level i node
is said to be at level i + 1. The number of levels in a tree is the largest level number
of any node in the tree. A binary tree is a tree in which all nodes have at most two
children. A complete binary tree is a binary tree in which all leaves are at the same
level.

76. Prove by induction that a tree with n vertices has exactly n − 1 edges.

77. Prove by induction that a complete binary tree with n levels has 2n − 1
vertices.

78. Prove by induction that if there exists an n-node tree in which all the
nonleaf nodes have k children, then n mod k = 1.

79. Prove by induction that for every n such that n mod k = 1, there exists
an n-node tree in which all of the nonleaf nodes have k children.

80. Prove by induction that between any pair of vertices in a tree there is a
unique path.

81. A cycle in a graph G = (V, E) is a sequence of distinct vertices


v1 , v2 , . . . , vk such that (vk , v1 ) ∈ E, and for all 1 ≤ i < k, (vi , vi+1 ) ∈ E.
Prove by induction that a tree is a connected graph that has no cycles.

82. Prove by induction that a connected graph that has no cycles is a


tree.
83. A spanning tree of a graph G = (V, E) is a tree T = (V, F ), where F ⊆ E.
Prove by induction that an n-node graph can have as many as (n−1)! spanning
trees.

2.12 GEOMETRY
84. Prove that any set of regions defined by n lines in the plane can be
colored with two colors so that no two regions that share an edge have the
same color.
85. Prove by induction that n circles divide the plane into n2 − n + 2
regions if every pair of circles intersect in exactly two points, and no three
circles intersect in a common point. Does this hold for closed shapes other
than circles?
86. A polygon is convex if every pair of points in the polygon can be
joined by a straight line that lies in the polygon. Prove by induction on n ≥ 3
that the sum of the angles of an n-vertex convex polygon is 180(n−2) degrees.
Sec. 2.13. Miscellaneous 19

87. Consider any arrangement of n ≥ 3 lines in general position in the plane


(that is, no pair of lines is parallel, and no three lines can have a common
point). Prove that at least one of the minimal connected regions that they
form is a triangle.

88. Consider any arrangement of n ≥ 3 lines in general position in the


plane. Prove that at least n − 2 of the minimal connected regions in any such
arrangement are triangles. Is this bound tight?

89. Prove that n straight lines in the plane, all passing through a single
point, divide the plane into 2n regions.

90. Prove that n planes in space, all passing through a single point, no
three of which meet in a straight line, divide space into n(n − 2) + 2 regions.

2.13 MISCELLANEOUS
91. Suppose Mi is an ri−1 × ri matrix, for 1 ≤ i ≤ n. Prove by induction on
n ≥ 1 that the matrix product M1 · M2 · · · Mn is an r0 × rn matrix.

92. Prove by induction on n ≥ 1 that the binary representation of n has


log n + 1 bits.

93. If x, y ∈ {true, false}, let x ⊕ y denote the exclusive-or of x and y,


which is defined to be true iff exactly one of x and y is true. Note that
the exclusive-or operation is associative, that is, a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c.
Prove by induction on n that x1 ⊕ x2 ⊕ · · · ⊕ xn is true iff an odd number of
x1 , x2 , . . . , xn are true.

94. (The Pigeonhole Principle) Suppose n pigeons roost in m holes.


Prove by induction on n that there must be at least one hole containing at
least n/m pigeons.

95. Suppose An = {a1 , a2 , . . . , an } is a set of distinct coin types,


where each ai ∈ IN, for 1 ≤ i ≤ n. Suppose also that a1 ≤ a2 ≤ · · · ≤ an . The
coin-changing problem is defined as follows. Given C ∈ IN, find the smallest
number of coins from An that add up to C, given that an unlimited number of
coins of each type are available. Show that for all n ≥ 2, if a1 = 1, then there
is always a solution to the coin-changing problem, and that solution uses less
than a2 coins of type a1 . What happens when a1 = 1?

A Gray code is a list of the 2n n-bit strings in which each string differs from the
previous one in exactly one bit. Consider the following algorithm for listing the
20 Chap. 2. Mathematical Induction

n-bit strings. If n = 1, the list is 0, 1. If n > 1, first take the list of (n − 1)-bit
strings, and place a 0 in front of each string. Then, take a second copy of the list of
(n − 1)-bit strings, place a 1 in front of each string, reverse the order of the strings,
and place it after the first list. So, for example, for n = 2 the list is 00, 01, 11, 10,
and for n = 3 the list is 000, 001, 011, 010, 110, 111, 101, 100.

96. Show that every n-bit string appears exactly once in the list generated
by the algorithm.

97. Show that the list has the Gray code property, that is, that each string
differs from the previous one in exactly one bit.

2.14 HINTS
37. You will need to use strong induction. And your base case may not be what
you expect at first,

48. Try combining four n/2 × n/2 tours into one. Your induction hypothesis must
be stronger than what you really need to prove — the tours you build must
have some extra structure to allow them to be joined at the corners.

49. Look carefully at the example given before the problem. It illustrates the
technique that you will need. Also, consider the hint to Problem 48.

53. You will need to use strong induction here.

57. You will need to use the identity


     
n n−1 n−1
= + .
r r r−1
(Can you prove this identity?) Be careful how you apply this identity (it
doesn’t always hold), and take special care with the upper and lower limits
of the summation.

69. First, prove that any graph in which all vertices have even degree must have a
cycle C (try constructing one). Delete C, leaving a smaller graph in which all
vertices have even degree. Apply the induction hypothesis (careful: there is
something I am not telling you). Put together C and the results of applying
the induction hypothesis to give the Eulerian cycle.

85. The circles are a red herring.

86. The hardest part of this is the base case, proving that the sum of the three
angles of a triangle is 180 degrees. It can be proved as follows. First, prove
Sec. 2.15. Solutions 21

it for a right-angled triangle (using symmetry). This can be extended to any


triangle by judicious choice of diagonal. Once you have mastered the base
case, the inductive step should be obvious.

92. You’ll need to make two cases in your inductive step, according to whether n
is a power of 2 (or something like that) or not.

2.15 SOLUTIONS
n
1. We are required to prove that for all n ≥ 0, i=1 i = n(n + 1)/2. The claim
is certainly true for n = 0,
 in which case both sides of the equation are zero.
Suppose that n ≥ 0 and ni=1 i = n(n + 1)/2. We are required to prove that
n+1
i=1 i = (n + 1)(n + 2)/2. Now,

n+1
 n

i = i + (n + 1)
i=1 i=1
= n(n + 1)/2 + (n + 1) (by the induction hypothesis)
= (n + 1)(n + 2)/2,

as required.
n
8. We are required to prove that for all n ≥ 1, i=1 1/2i = 1 − 1/2n . The claim
is true for n = 1, since in this case
both sides of the equation are equal to
1/2. Now suppose that n ≥ 1, and ni=1 1/2i = 1 − 1/2n . It remains to prove

that n+1 i
i=1 1/2 = 1 − 1/2
n+1
.

n+1
 1 1 1 1
1/2i = + + + · · · + n+1
i=1
2 4 8 2
 
1 1 1 1 1 1
= + + + + ··· + n
2 2 2 4 8 2
n
1 1 1
= +
2 2 i=1 2i
1 1 1
− + · (1 − n ) (by the induction hypothesis)
2 2 2
= 1 − 1/2n+1 ,

as required.
n
11. We are required to prove that for all n ≥ 0, i=0 2i = 2n+1 − 1. The
0 i
i=0 2 = 1 = 2 − 1.
1
claim is certainly true for
nn =i 0, in which case
n+1
Suppose that n ≥ 0 and i=0 2 = 2 − 1. We are required to prove that
22 Chap. 2. Mathematical Induction

n+1
i=0 2i = 2n+2 − 1. Now,
n+1
 n

2i = 2i + 2n+1
i=0 i=0
= (2n+1 − 1) + 2n+1 (by the induction hypothesis)
= 2n+2 − 1,
as required.

27. We are required to prove by induction on n ≥ 0 that n3 + 2n is divisible by


3. The claim is true for n = 0, since then n3 + 2n = 0, which is certainly
divisible by 3. Suppose that n ≥ 0, and n3 + 2n is divisible by 3. We are
required to prove that (n + 1)3 + 2(n + 1) is divisible by 3. Now,
(n + 1)3 + 2(n + 1) = (n3 + 3n2 + 3n + 1) + (2n + 2)
= n3 + 3n2 + 5n + 3
= (n3 + 2n) + (3n2 + 3n + 3).
Since the first term is divisible by 3 (by the induction hypothesis) and the
second term is obviously divisible by 3, it follows that (n + 1)3 + 2(n + 1) is
divisible by 3, as required.

37. We are required to show that any amount of postage that is a positive integer
number of cents n > 7 can be formed by using only 3-cent and 5-cent stamps.
The claim is certainly true for n = 8 (one 3-cent and one 5-cent stamp), n = 9
(three 3-cent stamps), and n = 10 (two 5-cent stamps). Now suppose that
n ≥ 11 and all values up to n − 1 cents can be made with 3-cent and 5-cent
stamps. Since n ≥ 11, n − 3 ≥ 8, and hence by hypothesis, n − 3 cents can
be made with 3-cent and 5-cent stamps. Simply add a 3-cent stamp to this
to make n cents. Notice that we can prove something stronger with just a
little more work. The required postage can always be made using at most
two 5-cent stamps. Can you prove this?
n
52. We are required to prove that for all n ≥ 0, i=0 Fi = Fn+2 − 1. The claim
is certainly true for n = 0, since the left-hand side of the equation is F0 = 0,
and the right-hand side is F2 − 1 = 1 − 1 = 0. Now suppose that n ≥ 1, and
n−1
that i=0 Fi = Fn+1 − 1. Then,
n
 n−1

Fi = Fi + Fn
i=0 i=0
= (Fn+1 − 1) + Fn (by the induction hypothesis)
= Fn+2 − 1,
as required.
Sec. 2.16. Comments 23

Figure 2.6. Shading the regions formed by all lines except


L (top), and the new shading obtained by flipping the colors
on one side of L (bottom).

84. We are required to prove that any set of regions defined by n lines in the
plane can be colored with only two colors so that no two regions that share
an edge have the same color. The hypothesis is true for n = 1 (color one side
light, the other side dark). Now suppose that the hypothesis is true for n
lines. Suppose we are given n + 1 lines in the plane. Remove one of the lines
L, and color the remaining regions with two colors (which can be done, by
the induction hypothesis). Replace L. Reverse all of the colors on one side
of the line. Consider two regions that have a line in common. If that line is
not L, then by the induction hypothesis, the two regions have different colors
(either the same as before or reversed). If that line is L, then the two regions
formed a single region before L was replaced. Since we reversed colors on one
side of L only, they now have different colors.

2.16 COMMENTS
1. This identity was apparently discovered by Gauss at age 9 in 1786. There is
an apocryphal story attached to this discovery. Gauss’ teacher set the class
to add the numbers 1 + 2 + · · · + 100. One account I have heard said that the
teacher was lazy, and wanted to occupy the students for a long time so that
he could read a book. Another said that it was punishment for the class being
unruly and disruptive. Gauss came to the teacher within a few minutes with
an answer of 5050. The teacher was dismayed, and started to add. Some time
later, after some fretting and fuming, he came up with the wrong answer. He
refused to believe that he was wrong until Gauss explained:
24 Chap. 2. Mathematical Induction

1 + 2 + ··· + 50
+ 100 + 99 + · · · + 51
101 + 101 + · · · + 101 = 50 × 101 = 5050.
Can you prove this result without using induction? The case for even n can
easily be inferred from Gauss’ example. The case for odd n is similar.

3. I could go on asking for more identities like this. I can never remember the
exact form of the solution. Fortunately, there is not much need to. In general,
if you are asked to solve
n
ik
i=1
for some k ≥ 1, just remember that the solution is a polynomial in n with
largest exponent k + 1 (see Problem 21). Simply hypothesize that the sum is
ak+1 nk+1 + ak nk + · · · + a1 n + a0
for some choice of ai ∈ IR, 0 ≤ i ≤ k + 1, and try to prove it by induction.
The right values for the constants will drop right out of the proof. It gets a
bit tricky as k becomes larger, though. If you want to practice this technique,
start with k = 2. If you want a challenge to your ability to do arithmetic, try
k = 4.

4. Yes, I realize that you can solve this without induction by applying some
elementary algebra and the identities of Problems 1 and 2. What I want you
to do is practice your induction by proving this identity from first principles.

5. See the comment to Problem 4.

6. See the comment to Problem 4.

9. There is an elegant noninductive


 proof of this that you should have met in
high school. Let S = ni=0 ai . Then,
n+1
 n

aS − S = ai − ai = an+1 − 1.
i=1 i=0

Hence, S = (an+1 − 1)/(a − 1), as required.

10. This can also be solved by applying the identity of Problem 9 twice.

11. This is a special case of the identity in Problem 9. There is an easy noninduc-
tive proof of this fact that appeals more to computer
n science students than
math students. The binary representation of i=0 2i is a string of n + 1 ones,
that is,
· · · 1 .
11 
n+1
Sec. 2.16. Comments 25

2 n-1 2 n-1

n-1

2n

Figure
n 2.7. Using the method of areas to show that
n−1
i n i
i=1 i2 = (2n − 1)2 − i=1 2 .

If you add 1 to this, you get, in binary,

· · · 0,
1 00 
n+1
n n
that is, 2n+1 . Therefore, i=0 2i + 1 = 2n+1 or, equivalently, i=0 2i =
2n+1 − 1.

13. There is an elegant noninductive proof of this using the method of areas. This
technique works well for sums of products: Simply make a rectangle with area
equal to each term of the sum, fit them together to “nearly” make a rectangle,
and analyze the missing area.
n
 n−1

i2i = (2n − 1)2n − 2i (see Figure 2.7)
i=1 i=1
= (2n − 1)2n − (2 − 2) n
(by Problem 1)
= (n − 1)2n+1 + 2.

15. This can also be solved using the method of areas sketched in the comment
to Problem 13.

16. This can also be solved using algebra and the identity from Problem 15.

19. And, therefore, 3n = O(n!). But we’re getting ahead of ourselves here. See
Chapter 3.

20. And, therefore, 2n = Ω(n2 ). But we’re getting ahead of ourselves here. See
Chapter 3.

48. There are actually closed knight’s tours on n × n chessboards for all even
n ≥ 6 (see Problem 369). Note that Problem 47 implies that there can be no
such tour for odd n. The formal study of the knight’s tour problem is said
26 Chap. 2. Mathematical Induction

to have begun with Euler [25] in 1759, who considered the standard 8 × 8
chessboard. Rouse Ball and Coxeter [8] give an interesting bibliography of
the history of the problem from this point.

51. This problem was suggested to the author by Nainan Kovoor in 1990.

60. Don’t cheat by using Stirling’s approximation. You’re supposed to be prac-


ticing your induction!

61. See the comment for Problem 60.

62. There is an elegant noninductive proof of the identity


n
  
n
i· = n2n−1 .
i
i=0
 
n
Write down every string of n bits. Since there are i strings with exactly
i ones, you must have written exactly
n
  
n

i
i=0

ones. But since you have written exactly as many ones as zeros, and you have
written n2n bits in all, there must be n2n−1 ones.

64. Of course it is obvious that the proof is wrong, since all horses are not of the
same color. What I want you to do is point out where in the proof is there a
false statement made?

67. This can be proved using Problem 1, but what I’m looking for is a straight-
forward inductive proof.

69. An Eulerian cycle is not possible if the graph has at least one vertex of odd
degree. (Can you prove this?) Therefore, we conclude that a graph has a
Eulerian cycle iff it is connected and all vertices have even degree. The Swiss
mathematician Leonhard Euler first proved this in 1736 [24].

81. This problem together with Problem 82 show that “a connected graph with
no cycles” is an alternate definition of a tree. You’ll see this in the litera-
ture as often as you’ll see the recursive definition given at the beginning of
Section 2.11.

82. See the comment for Problem 81.


Sec. 2.16. Comments 27

94. Yes, this is a little contrived. It’s easier to prove by contradiction. But it’s
good practice in using induction.

95. See also Problems 415 and 471.


Chapter 3

Big-O and Big-Ω

Big-O notation is useful for the analysis of algorithms since it captures the asymp-
totic growth pattern of functions and ignores the constant multiple (which is out
of our control anyway when algorithms are translated into programs). We will use
the following definitions (although alternatives exist; see Section 3.5). Suppose that
f, g : IN → IN.

• f (n) is O(g(n)) if there exists c, n0 ∈ IR+ such that for all n ≥ n0 , f (n) ≤
c · g(n).
• f (n) is Ω(g(n)) if there exists c, n0 ∈ IR+ such that for all n ≥ n0 , f (n) ≥
c · g(n).
• f (n) is Θ(g(n)) if f (n) is O(g(n)) and f (n) is Ω(g(n)).
• f (n) is o(g(n)) if limn→∞ f (n)/g(n) = 0.
• f (n) is ω(g(n)) if limn→∞ g(n)/f (n) = 0.
• f (n) ∼ g(n) if limn→∞ f (n)/g(n) = 1.

We will follow the normal convention of writing, for example, “f (n) = O(g(n))”
instead of “f (n) is O(g(n))”, even though the equality sign does not indicate true
equality. The proper definition of “O(g(n))” is as a set:

O(g(n)) = {f (n) | there exists c, n0 ∈ IR+ such that for all n ≥ n0 , f (n) ≤ c · g(n)}.

Then, “f (n) = O(g(n))” can be interpreted as meaning “f (n) ∈ O(g(n)).”

3.1 RANK THE FUNCTIONS


98. Consider the following eighteen functions:

n n 2n
n log n n − n3 + 7n5 n2 + log n
n2 n3 log n
n1/3 + log n (log n)2 n!
ln n n/ log n log log n
(1/3)n (3/2)n 6

28
Sec. 3.1. Rank the Functions 29

Group these functions so that f (n) and g(n) are in the same group if and
only if f (n) = O(g(n)) and g(n) = O(f (n)), and list the groups in increasing
order.

99. Draw a line from each of the five functions in the center to the best
big-Ω value on the left, and the best big-O value on the right.

Ω(1/n) O(1/n)
Ω(1) O(1)
Ω(log log n) O(log log n)
Ω(log n) O(log n)
2 2
Ω(log√ n) O(log
√ n)
3 3
Ω( n) O( n)
Ω(n/ log n) 1/(log n) O(n/ log n)
Ω(n) 7n5 − 3n + 2 O(n)
Ω(n1.00001 ) (n2 + n)/(log2 n + log n) O(n1.00001 )
2
Ω(n2 / log2 n) 2log n O(n2 / log2 n)
Ω(n2 / log n) 3n O(n2 / log n)
Ω(n2 ) O(n2 )
Ω(n3/2 ) O(n3/2 )
Ω(2n ) O(2n )
Ω(5n ) O(5n )
Ω(nn ) O(nn )
2 2
Ω(nn ) O(nn )

For each of the following pairs of functions f (n) and g(n), either f (n) = O(g(n))
or g(n) = O(f (n)), but not both. Determine which is the case.

100. f (n) = (n2 − n)/2, g(n) = 6n.



101. f (n) = n + 2 n, g(n) = n2 .

102. f (n) = n + log n, g(n) = n n.

103. f (n) = n2 + 3n + 4, g(n) = n3 .



104. f (n) = n log n, g(n) = n n/2.

105. f (n) = n + log n, g(n) = n.

106. f (n) = 2(log n)2 , g(n) = log n + 1.

107. f (n) = 4n log n + n, g(n) = (n2 − n)/2.


30 Chap. 3. Big-O and Big-Ω

3.2 TRUE OR FALSE?


108. n2 = O(n3 ).
109. n3 = O(n2 ).
110. 2n2 + 1 = O(n2 ).

111. n log n = O(n n).

112. n = O(log n).

113. log n = O( n).
114. n3 = O(n2 (1 + n2 )).

115. n2 (1 + n) = O(n2 ).

116. n2 (1 + n) = O(n2 log n).

117. 3n2 + n = O(n2 ).
√ √ √
118. 3n2 + n = O(n + n n + n).

119. log n + n = O(n).

120. n log n = O(n).
121. 1/n = O(log n).
122. log n = O(1/n).
123. log n = O(n−1/2 ).
√ √
124. n + n = O( n log n).
125. If f (n) ∼ g(n), then f (n) = Θ(g(n)).
126. If f (n) = Θ(g(n)), then g(n) = Θ(f (n)).

For each of the following pairs of functions f (n) and g(n), state whether f (n) =
O(g(n)), f (n) = Ω(g(n)), f (n) = Θ(g(n)), or none of the above.
127. f (n) = n2 + 3n + 4, g(n) = 6n + 7.

128. f (n) = n, g(n) = log(n + 3).

129. f (n) = n n, g(n) = n2 − n.

130. f (n) = n + n n, g(n) = 4n log(n2 + 1).
131. f (n) = (n2 + 2)/(1 + 2−n ), g(n) = n + 3.
132. f (n) = 2n − n2 , g(n) = n4 + n2 .
Sec. 3.3. Proving Big-O 31

3.3 PROVING BIG-O


133. Prove that (n + 1)2 = O(n2 ).
134. Prove that 3n2 − 8n + 9 = O(n2 ).
135. Prove that for all k ≥ 1 and all ak , ak−1 , . . . , a1 , a0 ∈ IR,

ak nk + ak−1 nk−1 + · · · + a1 n + a0 = O(nk ).

136. Prove that log n = O(n).

137. Prove that 3n log n = O(n2 ).


138. Prove that n2 − 3n − 18 = Ω(n).
139. Prove that n3 − 3n2 − n + 1 = Θ(n3 ).
140. Prove that n = O(2n ).
141. Prove that 2n + 1 = O(2n ).
142. Prove that 9999n + 635 = O(2n ).
143. Prove that cn + d = O(2n ) for all c, d ∈ IR+ .
144. Prove that n2 = O(2n ).
145. Prove that cn2 + d = O(2n ) for all c, d ∈ IR+ .
146. Prove that cnk + d = O(2n ) for all c, d, k ∈ IR+ .
147. Prove that 2n = O(n!).
148. Prove that n! = Ω(2n ).
149. Does nlog n = O((log n)n )? Prove your answer.
150. Does nlog n = Ω((log n)n )? Prove your answer.
151. Does nlog log log n = O((log n)!)? Prove your answer.
152. Does nlog log log n = Ω((log n)!)? Prove your answer.
153. Does (n!)! = O(((n − 1)!)!(n − 1)!n! )? Prove your answer.
154. Does (n!)! = Ω(((n − 1)!)!(n − 1)!n! )? Prove your answer.
155. Prove or disprove:
 1/2 
n2 √
O = O( n ).
log log n
32 Chap. 3. Big-O and Big-Ω

2
156. Prove or disprove: 2(1+O(1/n)) = 2 + O(1/n).

Compare the following pairs of functions f , g. In each case, say whether f = o(g),
f = ω(g), or f = Θ(g), and prove your claim.

157. f (n) = 100n + log n, g(n) = n + (log n)2 .


158. f (n) = log n, g(n) = log log(n2 ).
159. f (n) = n2 /log n, g(n) = n(log n)2 .
6 −6
160. f (n) = (log n)10 , g(n) = n10 .
161. f (n) = n log n, g(n) = (log n)log n .
162. f (n) = n2n , g(n) = 3n .

For each of the following pairs of functions f (n) and g(n), find c ∈ IR+ such that
f (n) ≤ c · g(n) for all n > 1.

163. f (n) = n2 + n, g(n) = n2 .



164. f (n) = 2 n + 1, g(n) = n + n2 .
165. f (n) = n2 + n + 1, g(n) = 2n3 .

166. f (n) = n n + n2 , g(n) = n2 .
167. f (n) = 12n + 3, g(n) = 2n − 1.
168. f (n) = n2 − n + 1, g(n) = n2 /2.
169. f (n) = 5n + 1, g(n) = (n2 − 6n)/2.
√ √
170. f (n) = 5 n − 1, g(n) = n − n .

3.4 MANIPULATING BIG-O


171. Prove that if f1 (n) = O(g1 (n)) and f2 (n) = O(g2 (n)), then
f1 (n) + f2 (n) = O(g1 (n) + g2 (n)).
172. Prove that if f1 (n) = Ω(g1 (n)) and f2 (n) = Ω(g2 (n)), then f1 (n) +
f2 (n) = Ω(g1 (n) + g2 (n)).

173. Prove that if f1 (n) = O(g1 (n)) and f2 (n) = O(g2 (n)), then f1 (n) +
f2 (n) = O(max{g1 (n), g2 (n)}).
Sec. 3.5. Alternative Definitions 33

174. Prove that if f1 (n) = Ω(g1 (n)) and f2 (n) = Ω(g2 (n)), then f1 (n) +
f2 (n) = Ω(min{g1 (n), g2 (n)}).
175. Suppose that f1 (n) = Θ(g1 (n)) and f2 (n) = Θ(g2 (n)). Is it true
that f1 (n) + f2 (n) = Θ(g1 (n) + g2 (n))? Is it true that f1 (n) + f2 (n) =
Θ(max{g1 (n), g2 (n)})? Is it true that f1 (n) + f2 (n) = Θ(min{g1 (n), g2 (n)})?
Justify your answer.

176. Prove that if f1 (n) = O(g1 (n)) and f2 (n) = O(g2 (n)), then f1 (n) ·
f2 (n) = O(g1 (n) · g2 (n)).
177. Prove that if f1 (n) = Ω(g1 (n)) and f2 (n) = Ω(g2 (n)), then f1 (n)·f2 (n) =
Ω(g1 (n) · g2 (n)).
178. Prove or disprove: For all functions f (n) and g(n), either f (n) =
O(g(n)) or g(n) = O(f (n)).
179. Prove or disprove: If f (n) > 0 and g(n) > 0 for all n, then O(f (n) +
g(n)) = f (n) + O(g(n)).
180. Prove or disprove: O(f (n)α ) = O(f (n))α for all α ∈ IR+ .
181. Prove or disprove: O(x + y)2 = O(x2 ) + O(y 2 ).

182. Multiply log n + 6 + O(1/n) by n + O( n) and simplify your answer as
much as possible.
183. Show that big-O is transitive. That is, if f (n) = O(g(n)) and g(n) =
O(h(n)), then f (n) = O(h(n)).
184. Prove that if f (n) = O(g(n)), then f (n)k = O(g(n)k ).
185. Prove or disprove: If f (n) = O(g(n)), then 2f (n) = O(2g(n) ).
186. Prove or disprove: If f (n) = O(g(n)), then log f (n) = O(log g(n)).
187. Suppose f (n) = Θ(g(n)). Prove that h(n) = O(f (n)) iff h(n) = O(g(n)).
188. Prove or disprove: If f (n) = O(g(n)), then f (n)/h(n) = O(g(n)/h(n)).

3.5 ALTERNATIVE DEFINITIONS


Here is an alternative definition of O.
• f (n) is O1 (g(n)) if there exists c ∈ IR such that limn→∞ f (n)/g(n) = c.

189. Prove that if f (n) = O(g(n)), then f (n) = O1 (g(n)), or find a counterex-
ample to this claim.
34 Chap. 3. Big-O and Big-Ω

190. Prove that if f (n) = O1 (g(n)), then f (n) = O(g(n)), or find a counterex-
ample to this claim.

Here are two alternative definitions of Ω.


• f (n) is Ω1 (g(n)) if there exists c ∈ IR+ such that for infinitely many n, f (n) ≥
c · g(n).
• f (n) is Ω2 (g(n)) if there exists c ∈ IR+ such that for all n0 ∈ IN, there exists
n ≥ n0 such that f (n) ≥ c · g(n).

191. Prove that if f (n) = Ω(g(n)), then f (n) = Ω2 (g(n)), or find a counterex-
ample to this claim.
192. Prove that if f (n) = Ω2 (g(n)), then f (n) = Ω(g(n)), or find a coun-
terexample to this claim.
193. Prove that if f (n) = Ω1 (g(n)), then f (n) = Ω2 (g(n)), or find a coun-
terexample to this claim.
194. Prove that if f (n) = Ω2 (g(n)), then f (n) = Ω1 (g(n)), or find a coun-
terexample to this claim.
195. Prove or disprove: If f (n) = O(g(n)), then f (n) = Ω(g(n)). If
f (n) = O(g(n)), then f (n) = Ω2 (g(n)).
196. Define the relation ≡ by f (n) ≡ g(n) iff f (n) = Ω(g(n)) and g(n) =
Ω(f (n)). Similarly, define the relation ≡2 by f (n) ≡ g(n) iff f (n) = Ω2 (g(n))
and g(n) = Ω2 (f (n)). Show that ≡ is an equivalence relation, but ≡2 is not
an equivalence relation.

3.6 FIND THE FUNCTIONS


Find two functions f (n) and g(n) that satisfy the following relationships. If no such
f and g exist, write “None.”

197. f (n) = o(g(n)) and f (n) = Θ(g(n)).


198. f (n) = Θ(g(n)) and f (n) = o(g(n)).
199. f (n) = Θ(g(n)) and f (n) = O(g(n)).
200. f (n) = Ω(g(n)) and f (n) = O(g(n)).
201. f (n) = Ω(g(n)) and f (n) = o(g(n)).
Other documents randomly have
different content
The Project Gutenberg eBook of How to Make
Sock Toys
This ebook is for the use of anyone anywhere in the United States
and most other parts of the world at no cost and with almost no
restrictions whatsoever. You may copy it, give it away or re-use it
under the terms of the Project Gutenberg License included with this
ebook or online at www.gutenberg.org. If you are not located in the
United States, you will have to check the laws of the country where
you are located before using this eBook.

Title: How to Make Sock Toys

Author: Edna Clapper

Release date: October 14, 2020 [eBook #63454]


Most recently updated: October 18, 2024

Language: English

Credits: Produced by Stephen Hutcheson, Lisa Corcoran and the


Online
Distributed Proofreading Team at https://www.pgdp.net

*** START OF THE PROJECT GUTENBERG EBOOK HOW TO MAKE


SOCK TOYS ***
How to Make
SOCK TOYS
for
• BAZAARS
• SHUT-INS
• GIFTS
• PROFIT
and
• FUN

OVER 50 TOYS TO MAKE


$1
A PACK-O-FUN® PUBLICATION

All designs in this book may be used to make sock toys for gifts or
for sale by individuals or organizations. It is not necessary to secure
permission from the publisher.

However, no part of the text or any design illustrations may be


reproduced by any printing process without the permission of the
publisher, with the exception of brief quotations used for reviews in
other publications.
Copyright 1958
Pack-O-Fun
741 Devon Avenue
Park Ridge, Illinois

To a Monkey....
Whereby This Tale Is Hung
This book is dedicated to a monkey, a whimsical little fellow whose
body is a sock and whose heart is hidden somewhere in cotton
stuffing. During the summer and early fall of 1955 several of our
friends and readers of Pack-O-Fun magazine wrote to us about him.
We learned that instructions on how to make him could be had from
the Nelson Knitting Company of Rockford, Illinois. We received
permission to reprint the instructions and thus our new friend, the
Red Heel Sock Monkey, made his appearance in the November 1955
issue of Pack-O-Fun.

We expected a mild response and were quite unprepared for the


deluge of mail that poured into our office and the Nelson Knitting
Company. We had no idea that so many people were interested in
making a toy monkey out of a few socks. The requests kept coming
in long after our supply of this issue was exhausted and we had to
reprint the instructions as a separate folder to keep from
disappointing readers all over the country.

We began to think in terms of other sock toys but there were so


many other things to do that the idea was shelved for just a “little
while.” Like so many other “little whiles” this one stretched into
weeks and then months. Our little friend, the Red Heel Sock Monkey,
sat in lonely splendor.

Several months ago Michelle Graff joined our staff as an artist. Much
to our delight we learned that she was quite adept at creating and
making all kinds of stuffed toys. Within a short time the Red Heel
Sock Monkey was no longer lonely. He had several friends to play
with after we had turned off the lights and left the office.

One of his most constant playmates was a roguish Sock Elephant.


We decided to use this packed pachyderm in some of our ads in
other magazines and once again the response was greater than we
had dared expect. That settled it. We decided to change a “little
while” into “now” and publish this book.

We have used the Nelson Red Heel socks for most of the animals,
dolls, puppets and novelties in this book for many reasons. One very
good reason is that the red heel lends itself to the creation of lovable
toys. The brown body gives the feeling of warmth that a stuffed toy
must have and the white ribbing and toes provide material for faces,
feet, hands, etc.
Another good reason is that the Nelson Red Heel socks are quite
inexpensive, selling for about 30c a pair and even less in lots of one
dozen or more. These prices vary somewhat throughout the country.
That brings us to our third good reason. They are nationally sold and
can be found in many variety, dry goods and chain stores. They can
also be ordered through many mail order houses.

All you need are some socks, scrap materials for stuffing and
clothing plus a steady eye to thread a needle. The instructions have
been written as simply and made as complete as possible. Pick out
your toys, thread your needle and start. And, to make it even more
fun, vary the features, the trimmings and clothes to bring out your
own creative abilities and personal touches.

Edna N. Clapper

3
TABLE OF CONTENTS
To a Monkey 2
SOCK ANIMALS
Red Heel Monkey 5
Elephant 7
Teddy Bear and Daschund 8
Polar Bear and Piggy 9
Donkey and Pony 10
Kitten and Puppy 11
Bunny 13
Squirrel, Chipmunk and Begging Dog 14
Kangaroo and Baby Puppet Kangaroo 15
SOCK DOLLS
Scrappy 17
Doll Instructions 19
Girl Doll and Pixie 20
Soldier and Engineer 21
Dutch Girl and Scotch Lass 22
Mexican Boy and Chinese Boy 23
Eskimo Boy and Hula Girl 24
Cowboy and Indian 25
Red Riding Hood and Robin Hood 26
Santa Claus and Clown 27
CLOTHING AND SPECIAL EFFECTS
Jackets and Aprons 28
Pants and Skirts 29
Shoes and Boots 30
Hats, Caps and Hoods 31
Hair and Facial Expressions 32
Tips and Tricks 33
FINGER PUPPETS
Witch 35
Katie and Jamie 36
Pirate and Indian 37
Lion and Billy Goat 38
ARM PUPPETS
Crocodile and Variations 39
Clown and Ringmaster 40
PUPPET SKIT AND CHARACTERS
Skit—Phineas Rides Again 41-42
Susie Starfish and Phineas Fish 42
Clem Clam, Sheriff Sam Sponge, Oily Oliver Octopus and Louie
the Lobster
43
SOCK NOVELTIES
Penguin and Duck 45
Double Dolls 46
Owl Pillow and Humpty Dumpty 47
Hobby Horse and Weenie Doll 48

Printed in the U.S.A.

4
5
BASIC INSTRUCTIONS FOR MONKEY

Step 1

Turn sock inside out. Start 3″ from white heel and sew two seams
½″ apart and across end of the rib.

Step 2
Cut sock between seams to within 1½″ of white heel. This leaves
opening for stuffing.

Step 3

Turn sock right side out. Stuff with one hand and mold shape to suit
with other.

Step 4
Sew up opening from top to bottom so that legs are spread apart
and not pulled together.

Step 5

To shape head, tie loosely at neck with ribbon. For a more floppy
head tie ribbon tighter.
Step 6

For feet, bend legs into L-shape for desired foot length and sew
crease with strong white thread.
RED HEEL MONKEY

SOCK NO. 2
CAP: Cut off toe of the sock, leaving ½″ of brown to roll for a trim.

TAIL: Cut a 1″ strip the entire length of the front of the sock. Seam
and stuff.

MOUTH: Cut the heel from the sock, leaving a brown edge around
the white. Fasten on lower part of face, whipping around the
bottom; stuff and finish sewing around top. The mouth can be
improved by a running stitch of either black or white across the
middle.

ARMS: Cut the remaining upper part of the sock into two pieces.
Seam and stuff.

EARS: Cut the ears from the remaining brown part of the sole of the
sock.

EYES: The eyes can be made either by sewing on buttons or by


embroidering them with black thread. In this same operation a nose
can be indicated by two small embroidered marks.
Fig. 1 · Fig. 2 · Fig. 3 · Fig. 4 · Fig. 5 · Fig. 6

There are many variations from this basic pattern. Decorations can
be either pom poms, yarn or bells. Sometimes a fez is used for a
cap. Jackets and skirts are also used for clothing the monkey.

6
uncaptioned
7
BASIC INSTRUCTIONS FOR PAGES 7-15

Step 1

Turn sock inside out. Cut off most of the rib, leaving about 1″ for
white feet.
Step 2

Start 3″ from heel and sew two seams, ⅛″ each side of center line
and across end of rib.

Step 3
Cut between seams and about 1″ into body to make opening for
stuffing. Turn sock right side out.

Step 4

Insert ovals of cardboard or wood to shape feet. Stuff legs and rest
of sock nice and plump.
Step 5

Sew up opening in body to bring legs together and to prevent them


from bowing out.
Step 6

To shape head, tie a ribbon loosely around neck. Do not tie tightly as
head will wobble.
Welcome to Our Bookstore - The Ultimate Destination for Book Lovers
Are you passionate about books and eager to explore new worlds of
knowledge? At our website, we offer a vast collection of books that
cater to every interest and age group. From classic literature to
specialized publications, self-help books, and children’s stories, we
have it all! Each book is a gateway to new adventures, helping you
expand your knowledge and nourish your soul
Experience Convenient and Enjoyable Book Shopping Our website is more
than just an online bookstore—it’s a bridge connecting readers to the
timeless values of culture and wisdom. With a sleek and user-friendly
interface and a smart search system, you can find your favorite books
quickly and easily. Enjoy special promotions, fast home delivery, and
a seamless shopping experience that saves you time and enhances your
love for reading.
Let us accompany you on the journey of exploring knowledge and
personal growth!

ebookgate.com

You might also like