Excel 2019 In Practice – Ch 2 Independent Project 2-4

Commissions

Central Sierra Insurance Commission Sales and Bonuses
ID Last Name First Name Branch Commissions Bonus Rate Total Earnings
101 Lingle Bob Cameron Park $15,000
102 McCartney Lanita Folsom $12,000
103 Santos Eleesha Cameron Park $5,500
104 Baxter Roy Granite Bay $4,500
105 Alaro Jennifer Folsom $3,000
115 Chan Tami Cameron Park $3,000
117 Althouse Charlene Granite Bay $4,700
119 Taylor Juan Granite Bay $4,000
120 Reza Wayne Cameron Park $4,000
125 Nevens Cheryl Cameron Park $12,000
Branch Totals
Cameron Park
Folsom
Granite Bay
Total

Family Day

Central Sierra Insurance
Family Day Community Fundraiser
ID Last Name First Name Branch Source Goal Amount Goal Reached?
101 Lingle Bob Cameron Park Raffle tickets $750
102 McCartney Lanita Folsom Walk/run pledge $225
103 Santos Eleesha Cameron Park Cash donation $725
104 Baxter Roy Granite Bay Candy sales $450
105 Alaro Jennifer Folsom Pedometer sales $750
115 Chan Tami Cameron Park Raffle tickets $275
117 Althouse Charlene Granite Bay Walk/run pledge $275
119 Taylor Juan Granite Bay Walk/run pledge $325
120 Reza Wayne Cameron Park Cash donation $325
125 Nevens Cheryl Cameron Park Candy sales $215
102 McCartney Lanita Folsom Candy sales $350
103 Santos Eleesha Cameron Park Raffle tickets $825
117 Althouse Charlene Granite Bay Raffle tickets $900
104 Baxter Roy Granite Bay Pedometer sales $825
105 Alaro Jennifer Folsom Cash donation $1,000

Tables

Commission $3,000 $6,000 $9,000 $12,000 $15,000
Bonus 1.50% 1.75% 1.90% 2.25% 2.50%
Source Goal
Candy sales $300
Cash donation $500
Pedometer sales $500
Raffle tickets $500
Walk/run pledge $250
 
Do you need a similar assignment done for you from scratch? Order now!
Use Discount Code "Newclient" for a 15% Discount!

C Programming

C programming!!!!! Expert only
Compound interest.

 

(a) Write a function to compute and return the amount of money, A, that you will have in n years if you invest P dollars now at annual interest rate i. Take n, i, and P as parameters. The formula is

 

A = P(1 + i)n

 

(b) Write a function to compute and return the amount of money, P, that you would need to invest now at annual interest rate i in order to have A dollars in n years. Take n, i, and A as parameters. The formula is:

P =A / (1 + i)n

 

(c) Write a function that will read and validate the inputs for this program. Using call by value/address, return an enumerated constant for the choice of formulas, a number of years, an interest rate, and an amount of money, in dollars. All three numbers must be greater than 0.0.

 

(d) Write a main program that will call the input routine to gather the data. Then, depending on the user’s choice, it should call the appropriate calculation function and print the results of thecalculation.
 
Do you need a similar assignment done for you from scratch? Order now!
Use Discount Code "Newclient" for a 15% Discount!

DIGITAL FORENSICS

TASK

Note: A Study Planner tool has been provided with this subject to support the assessment process. This tool provides information about the submission flexibility of assessment tasks, and a way to organise adjustments to submission dates. A link to the Study Planner can be found on the Interact2 site.

Task 1: Reflection on Hands-on Projects (5 marks)

Complete the following hands-on projects from your textbook:

1. Hands-on Project 1-1

2. Hands-on Project 1-2

3. Hands-on Project 1-4

4. Hands-on Project 1-5

5. Hands-on Project 1-6

Deliverable: Write a 500-1000 words (up to two A4 pages) report on lessons learned from these projects. Comment on each project individually within the two-page limit. You can write one lesson learned from each of the projects.

Task 2: Case Project (5 marks)
Complete the Hands-on Project 5-2 from your textbook (Nelson, Phillips, & Steuart, 6th edition, 2019, p. 260-261). In this project you will explore the MFT and learn how to locate time and date values in the metadata of a file you create during this project.
Deliverable: Write a 500-1000 words paper after completing this project and report what metadata you have discovered from the file you analysed using WinHex editor. Provide screen shots of the steps completed in the project showing the results of date and time values you have recorded. Briefly describe the main steps that you think are necessary and important to locate date and time values while analysing the file.

Task 3: Research Project (5 marks)

You have been assigned a digital forensics case to investigate involving a potential monetary fraud in an organisation. The CTO of the organisation has given you access to the workstation and other necessary hardware, e.g. USB, of one of his employees who she thinks is potentially involved in this fraud. Your job as a digital forensics examiner is to conduct this investigation. You are required to create a (investigation) plan and describe the standard practice procedure that is used in such investigations. Your plan must include the procedures for collecting the digital data, securing the evidence that you may collect and then describing the method to validate the collected data, e.g. calculating hash values and specifying the hash algorithm that you intend to use, e.g. SHA-3, MD5 etc. You can make some reasonable assumptions if required when describing your plan / procedures.

Deliverable: Write a 500-1000 word report that outlines the investigation plan, procedures to secure the digital evidence, and data validation methods.

Note: Combine deliverable’s of all three tasks mentioned above in a single document (only MS Word (preferable) or pdf, please note other formats e.g. *.zip, *.rar etc are NOT allowed) and then submit that one / single document through Turnitin

 
Do you need a similar assignment done for you from scratch? Order now!
Use Discount Code "Newclient" for a 15% Discount!

Python Programming Assignments

ITM205

Module 2 – Case

Input, Output, and Built-in and Programmer-Defined Functions

Case Assignment

Study Halterman, R. “Learning to Program with Python”, chapter 7, and complete homework assignment: question 1-10 on page 156 under 7.8 exercises

Create a Word file named as “ITM205-Case 2-Exercises-YourFirstNameLastName”containing a copy of each of the IDLE source codes and running results with clear exercise numbers marked on the page.

You can use the Snipping tools or screen print (ctrl + Print Screen) to show the Pythons editor’s (IDLE) code and results and demonstrate that your program executed correctly.

Write a summary document in Microsoft Word format named as “ITM205-Case2-Summary-YourFirstNameLastName” to show what you have accomplished through the exercises.

 
Do you need a similar assignment done for you from scratch? Order now!
Use Discount Code "Newclient" for a 15% Discount!

Subnetting Worksheet

ITT-116 Subnetting Worksheet

Use the following tables as references for the remainder of the document.

IP Address Classes
Class A 1-127 Leading bit pattern 0 Network.Host.Host.Host
Class B 128-191 Leading bit pattern 10 Network.Network.Host.Host
Class C 224-239 Leading bit pattern 110 Network.Network.Network.Host
Class D 224-230 Reserved for multicast
Class E 240-255 Reserved for experimental, used for research.

 

Private Addresses
Class A 10.0.0.0 – 10.255.255.255
Class B 172.16.0.0 – 172.31.255.255
Class C 192.168.0.0 – 192.168.255.255
APIPA 169.254.0.1 – 169.254.255.254

 

 

 

Binary to Decimal Conversion

128 64 32 16 8 4 2 1 Answers
0 0 0 1 1 0 1 1  
0 0 1 1 1 0 1 1  
1 1 1 1 0 0 0 0  
0 0 1 1 0 0 0 1  
1 0 0 0 1 0 0 0  
1 0 1 0 1 0 1 0  
0 1 1 0 1 1 0 1  
1 0 0 1 1 0 0 1  
1 1 0 1 0 1 1 0  

 

Decimal to Binary Conversion

128 64 32 16 8 4 2 1 Problem
                200
                255
                107
                224
                192
                98
                242
                224
                172
                100

 

Address Classes

Address Class
148.17.9.1  
220.200.23.1  
177.100.15.4  
249.241.80.78  
198.155.72.56  
10.0.0.1  
192.168.123.42  
123.231.132.9  
42.42.42.42  
242.81.64.3  

 

 

 

Network Identification

Highlight the Network Portion:

117. 89. 56. 90
33. 0. 0. 2
10. 252 1. 1
150. 15. 16. 3
192. 168. 123. 1
199. 155. 66. 56
242. 200. 23. 1
158. 200. 45. 62
218. 155. 230. 41
100. 25. 1. 1

 

Highlight the Host Portion

117. 89. 56. 90
33. 0. 0. 2
10. 252 1. 1
150. 15. 16. 3
192. 168. 123. 1
199. 155. 66. 56
242. 200. 23. 1
158. 200. 45. 62
218. 155. 230. 41
100. 25. 1. 1

 

 

Network Addressing

Write the network addresses for the provided IP address/subnet mask.

10.10.48.80 255.255.255.0  
10.10.10.10 255.0.0.0  
27.125.200.151 255.0.0.0  
199.203.32.91 255.255.255.0  
186.31.32.110 255.255.0.0  
192.168.24.19 255.255.0.0  
15.30.20.20 255.255.255.0  
27.0.2.1 255.0.0.0  
164.42.3.4 255.255.255.0  
25.25.142.8 255.0.0.0  

 

 

 

 

Host Addresses

Using the IP address and subnet mask shown, write the host address

10.10.48.80 255.255.255.0  
10.10.10.10 255.0.0.0  
27.125.200.151 255.0.0.0  
199.203.32.91 255.255.255.0  
186.31.32.110 255.255.0.0  
192.168.24.19 255.255.0.0  
15.30.20.20 255.255.255.0  
27.0.2.1 255.0.0.0  
164.42.3.4 255.255.255.0  
25.25.142.8 255.0.0.0  

 

 

 

 

 

 

 

 

 

 

 

 

 

Default Subnet Mask

Write the correct default subnet mask for each

10.10.48.80 255.255.255.0  
10.10.10.10 255.0.0.0  
27.125.200.151 255.0.0.0  
199.203.32.91 255.255.255.0  
186.31.32.110 255.255.0.0  
192.168.24.19 255.255.0.0  
15.30.20.20 255.255.255.0  
27.0.2.1 255.0.0.0  
164.42.3.4 255.255.255.0  
25.25.142.8 255.0.0.0  

 

Custom Subnet Masks

Fill in the blanks

Required Subnets 14
Required Hosts 14
Network Address 192.10.10.0
Address Class  
Default Subnet Mask  
Custom Subnet Mask  
Total Number of Subnets  
Total Number of Host Addresses  
Number of Usable Addresses  
Number of Bits Borrowed  
What is the 10th Subnet Range?  
What is the subnet number for the 2nd Subnet?  
What is the broadcast address for the 12th Subnet?  
What are the usable addresses for the 10th Subnet?  

 

Required Subnets 1000
Required Hosts 60
Network Address 156.100.0.0
Address Class  
Default Subnet Mask  
Custom Subnet Mask  
Total Number of Subnets  
Total Number of Host Addresses  
Number of Usable Addresses  
Number of Bits Borrowed  
What is the 10th Subnet Range?  
What is the subnet number for the 2nd Subnet?  
What is the broadcast address for the 12th Subnet?  
What are the usable addresses for the 100th Subnet?  

 

 

Required Subnets 6
Required Hosts 28
Network Address 182.86.7.0
Address Class  
Default Subnet Mask  
Custom Subnet Mask  
Total Number of Subnets  
Total Number of Host Addresses  
Number of Usable Addresses  
Number of Bits Borrowed  
What is the 3rd Subnet Range?  
What is the subnet number for the 2nd Subnet?  
What is the broadcast address for the 1st Subnet?  
What are the usable addresses for the 6th Subnet?  

 

 

 

 

 

 

 

 

Required Subnets 2000
Required Hosts 15
Network Address 187.112.0.0
Address Class  
Default Subnet Mask  
Custom Subnet Mask  
Total Number of Subnets  
Total Number of Host Addresses  
Number of Usable Addresses  
Number of Bits Borrowed  
What is the 100th Subnet Range?  
What is the subnet number for the 200th Subnet?  
What is the broadcast address for the 42nd Subnet?  
What are the usable addresses for the 10th Subnet?  

 

 

Required Subnets 412
Required Hosts 1000
Network Address 128.47.0.0
Address Class  
Default Subnet Mask  
Custom Subnet Mask  
Total Number of Subnets  
Total Number of Host Addresses  
Number of Usable Addresses  
Number of Bits Borrowed  
What is the 10th Subnet Range?  
What is the subnet number for the 42nd Subnet?  
What is the broadcast address for the 300th Subnet?  
What are the usable addresses for the 12th Subnet?  

 

 

 

 

 

 

Create the subnetting table for each subnet required for your corporate network.

Required Subnets  
Required Hosts  
Network Address  
Address Class  
Default Subnet Mask  
Custom Subnet Mask  
Total Number of Subnets  
Total Number of Host Addresses  
Number of Usable Addresses  
Number of Bits Borrowed  
What are the usable addresses for the 1st Subnet?  
What are the usable addresses for the 2nd Subnet?  
What are the usable addresses for the 3rd Subnet?  
What are the usable addresses for the 4th Subnet?  
What are the usable addresses for the 5th Subnet?  
 
Do you need a similar assignment done for you from scratch? Order now!
Use Discount Code "Newclient" for a 15% Discount!

Excel Assignment

Documentation

Shelly Cashman Excel 2019 | Module 5: SAM Project 1a
Media Hub
CONSOLIDATE WORKBOOK DATA
Author: Brittany Thomas
Note: Do not edit this sheet. If your name does not appear in cell B6, please download a new copy of the file from the SAM website.

United States

Media Hub Audio Books Date:
United States Price per book: $ 8.95
Downloads: January – April Download Projections
Book Type January February March April Total May
Adventure 2,193 2,282 2,130 2,215 8,820 Increase downloads to 14,000 in December
Literary 989 1,036 798 803 3,626 11,432 14,000
Mystery 2,405 2,788 2,239 3,011 10,443 Increase downloads by 3% per month
Romance 2,397 2,655 3,244 2,769 11,065 11,432
Science fantasy 1,873 1,869 1,904 1,874 7,520
Self-help 1,027 1,095 1,124 1,006 4,252
Total 10,884 11,725 11,439 11,678 45,726
Sales: January – April
Book Type January February March April Total
Adventure 19,627.35 20,423.90 19,063.50 19,824.25 78,939.00
Literary 8,851.55 9,272.20 7,142.10 7,186.85 32,452.70
Mystery 21,524.75 24,952.60 20,039.05 26,948.45 93,464.85
Romance 21,453.15 23,762.25 29,033.80 24,782.55 99,031.75
Science fiction 16,763.35 16,727.55 17,040.80 16,772.30 67,304.00
Self-help 9,191.65 9,800.25 10,059.80 9,003.70 38,055.40
Total $ 97,411.80 $ 104,938.75 $ 102,379.05 $ 104,518.10 $ 409,247.70

Canada

Media Hub Audio Books Date:
Canada Price per book: $ 9.95
Downloads: January – April Download Projections
Book Type January February March April Total May
Adventure 968 1,082 1,120 1,015 4,185 Increase downloads to 10,000 in December
Literary 689 836 708 640 2,873 5,972 10,000
Mystery 1,205 1,288 1,339 1,411 5,243 Increase downloads by 3% per month
Romance 1,097 1,055 1,144 1,469 4,765 5,972
Science fantasy 773 879 904 1,074 3,630
Self-help 707 795 824 866 3,192
Total 5,439 5,935 6,039 6,475 23,888
Sales: January – April
Book Type January February March April Total
Adventure 9,631.60 10,765.90 11,144.00 10,099.25 41,640.75
Literary 6,855.55 8,318.20 7,044.60 6,368.00 28,586.35
Mystery 11,989.75 12,815.60 13,323.05 14,039.45 52,167.85
Romance 10,915.15 10,497.25 11,382.80 14,616.55 47,411.75
Science fiction 7,691.35 8,746.05 8,994.80 10,686.30 36,118.50
Self-help 7,034.65 7,910.25 8,198.80 8,616.70 31,760.40
Total $ 54,118.05 $ 59,053.25 $ 60,088.05 $ 64,426.25 $ 237,685.60

Australia

Media Hub Audio Books Date:
Australia Price per book: $ 10.95
Downloads: January – April Download Projections
Book Type January February March April Total May
Adventure 652 705 759 812 2,928 Increase downloads to 5500 in December
Literary 189 227 265 303 984 3,742 5,500
Mystery 805 928 1,052 1,175 3,960 Increase downloads by 3% per month
Romance 497 610 652 736 2,495 3,742
Science fantasy 712 799 886 973 3,370
Self-help 227 281 335 389 1,232
Total 3,082 3,551 3,948 4,388 14,969
Sales: January – April
Book Type January February March April Total
Adventure 7,139.40 7,723.40 8,307.40 8,891.40 32,061.60
Literary 2,069.55 2,485.65 2,901.75 3,317.85 10,774.80
Mystery 8,814.75 10,165.25 11,515.75 12,866.25 43,362.00
Romance 5,442.15 6,679.50 7,139.40 8,059.20 27,320.25
Science fiction 7,796.40 8,749.05 9,701.70 10,654.35 36,901.50
Self-help 2,485.65 3,076.95 3,668.25 4,259.55 13,490.40
Total $ 33,747.90 $ 38,879.80 $ 43,234.25 $ 48,048.60 $ 163,910.55

All Locations

Media Hub Audio Books
All Locations
Downloads: January – April
Book Type January February March April Total
Adventure – 0
Literary – 0
Mystery – 0
Romance – 0
Science fantasy – 0
Self-help – 0
Total – 0 – 0 – 0 – 0 – 0
Sales: January – April
Book Type January February March April Total
Adventure $ – 0
Literary $ – 0
Mystery $ – 0
Romance $ – 0
Science fiction $ – 0
Self-help $ – 0
Total $ – 0 $ – 0 $ – 0 $ – 0 $ – 0
Total sales last year (Jan-Apr)
 
Do you need a similar assignment done for you from scratch? Order now!
Use Discount Code "Newclient" for a 15% Discount!

Simple Excel Homework

EX16_XL_VOL1_GRADER_CAP_AS – Travel Vacations 1.3

 

Project Description: You are considering several cities for a vacation. In particular, you are interested in Washington DC, Philadelphia, and Boston. You will format a list of memorials in DC, add Sparklines to compare the number of visitors over a 15-year period, and create a bar chart to illustrate annual visitors at each memorial. In addition, you will create a table of sightseeing locations, sort and filter the data, apply conditional formatting, and add a total row to display average time needed to spend at each memorial. Finally, you will complete a worksheet by adding formulas to compare estimated major expenses for each city.

 

Instructions: For the purpose of grading the project you are required to perform the following tasks: Step Instructions Points Possible 1 Start Excel. Download and open the file named exploring_ecap_grader_a1.xlsx. 0.000 2 On the DC worksheet, select the range A4:G4, wrap the text, apply Center alignment, and apply Blue, Accent 5, Lighter 60% fill color. 6.000 3 On the DC worksheet, merge and center the title in the range A1:G1. Apply Accent5 cell style and bold to the title. 6.000 4 On the DC worksheet, change the width of column A to 34. 3.000 5 On the DC worksheet, select the range C5:F10 and insert Line Sparklines in the range G5:G10. 4.000 6 On the DC worksheet, select the range G5:G10, display the high point sparkline marker, and change the color of the high point markers to Dark Blue. 4.000 7 On the DC worksheet, select the range G5:G10, apply Same for All Sparklines for both the vertical axis minimum and maximum values. 2.000 8 On the DC worksheet, select the ranges A4:A10 and C4:F10 and create a clustered bar chart. Apply the Monochromatic color that is a blue gradient, light to dark. Apply the gradient fill to the plot area. Do not change the default gradient options. 5.000 9 Position the top-left corner of the chart in cell A13. Change the chart height to 6 inches and the chart width to 7 inches. 6.000 10 Change the chart title to Annual Visitors. Apply Blue, Accent 5, Darker 25% font color to the chart title and category axis labels. Change the value axis display units to Millions. 5.000 11 Apply data labels to the 2015 data series. Apply Number format with 1 decimal place to the data labels. 4.000 12 Click the Places sheet tab, convert the data to a table, and apply Table Style Medium 6. 5.000 13 On the Places worksheet, sort the data by City in alphabetical order and then within City, sort by Sightseeing Locations in alphabetical order. 4.000 14 On the Places worksheet, add a total row to display the average of the Time Needed column. Apply Number format with zero decimal places to the total. 4.000 15 On the Places worksheet, select the values in the Time Needed column and apply conditional formatting to highlight cells containing values greater than 60 with Green Fill with Dark Green Text. 4.000 16 On the Places worksheet, apply a filter to display only fees that are less than or equal to $10. 4.000 17 On the Cities worksheet, click cell F4 and enter a formula that will subtract the Departure Date (B1) from the Return Date (B2) and then multiply the result by the Rental Car per Day value (F3). 5.000 18 On the Cities worksheet, click cell E13. Depending on the city, you will either take a shuttle to/from the airport or rent a car. Insert an IF function that compares to see if Yes or No is located in the Rental Car? Column for a city. If the city contains No, display the value in cell F2. If the city contains Yes, display the value in the Rental Car Total (F4). Copy the function from cell E13 and use the Paste Formulas option to copy the function to the range E14:E18 without removing the border in cell E18. 7.000 19 On the Cities worksheet, click cell F13. The lodging is based on a multiplier by City Type. Some cities are more expensive than others. Insert a VLOOKUP function that looks up the City Type (B13), compares it to the City/COL range (A7:B10), and returns the COL percentage. Then multiply the result of the lookup function by the Total Base Lodging (B5) to get the estimated lodging for the first city. Copy the function from cell F13 and use the Paste Formulas option to copy the function to the range F14:F18 without removing the border in cell F18. 7.000 20 On the Cities worksheet, click cell H13 and enter the function that calculates the total costs for the first city. Copy the function in cell H13 and use the Paste Formulas option to copy the function to the range H14:H18 without removing the border in cell H18. 3.000 21 On the Cities worksheet, select the range E14:H18 and apply Comma Style with zero decimal places. Select the range E13:H13 and apply Accounting Number format with zero decimal places. 3.000 22 On the Cities worksheet, in cell I2, enter a function that will calculate the average total cost per city. In cell I3, enter a function that will identify the lowest total cost. In cell I4 enter a function that will return the highest total cost. 6.000 23 On the Cities worksheet, select Landscape orientation, set a 1-inch top margin, and center the worksheet data horizontally on the page. 3.000 24 Ensure that the worksheets are correctly named and placed in the following order in the workbook: DC, Places, Cities. Save the workbook. Close the workbook and then exit Excel. Submit the workbook as directed. 0.000 Total Points 100.000

 
Do you need a similar assignment done for you from scratch? Order now!
Use Discount Code "Newclient" for a 15% Discount!

Word SAM Capstone Project 1

Shelly Cashman Word 2016 | Modules 1–3: SAM Capstone Project 1a

C:\Users\akellerbee\Documents\SAM Development\Design\Pictures\g11731.png Shelly Cashman Word 2016 | Modules 1–3: SAM Capstone Project 1a

Used Book Sale

completing a flyer

 

GETTING STARTED

Open the file SC_WD16_CS1-3a_FirstLastName_1.docx, available for download from the SAM website.

Save the file as SC_WD16_CS1-3a_FirstLastName_2.docx by changing the “1” to a “2”.

· If you do not see the .docx file extension in the Save As dialog box, do not type it. The program will add the file extension for you automatically.

To complete this Project, you will also need to download and save the following support files from the SAM website:

· Support_SC_WD16_CS1-3a_Book_Tree.png

· Support_SC_WD16_CS1-3a_Bookshelves.png

With the file SC_WD16_CS1-3a_FirstLastName_2.docx still open, ensure that your first and last name is displayed in the footer.

· If the footer does not display your name, delete the file and download a new copy from the SAM website.

 

PROJECT STEPS

As the publicity manager for your local library’s used book sale, you need to format a one-page flyer announcing the event. Start by changing the document margins to Normal.

To make the text easier to read, modify the Normal style by changing the font size to 12 pt.

In the first paragraph, type the word Used so that the heading reads “Giant Used Book Sale!”

Format the heading “Giant Used Book Sale!” as follows:

a. Center the heading.

b. Increase the font size to 36 pt.

c. Change the font to Times New Roman.

d. Use the Text Effects and Typography button to apply the Fill–Gray-50%, Accent 1, Shadow text effect. (Hint: Depending on your version of Office, the text effect may display as Fill: Gray, Accent color 1; Shadow.)

 

Apply the default Bottom Border paragraph border to the heading “Giant Used Book Sale!”

Insert and format a picture as follows:

e. Move the insertion point to the left of the “G” in the heading “Giant Used Book Sale!”, and then insert the picture Support_SC_WD16_CS1-3a_Book_Tree.png, available for download from the SAM website.

f. Resize the picture so it has a height of 0.75″. The width should automatically adjust to approximately 0.75″.

g. Apply Square text wrapping.

h. Recolor the picture using the Gray-80%, Text color 2 Dark option in the Color gallery. (Hint: Depending on your version of Office, the text effect may display as Dark Gray, Text color 2 Dark.)

i. Add a Brown, Accent 6 border to the picture.

Find the two instances of the word “VHS” and replace them with DVD. (Hint: Do not type the period.)

Format the first body paragraph (which begins “It’s time for the annual…”) as follows:

j. Change the Before paragraph spacing to 12 pt.

k. Change the After paragraph spacing to 18 pt.

In the first sentence of the body paragraph, format the text “New Clintonville Public Library” with the Intense Emphasis style to make the library’s name stand out from the surrounding text.

After the period at the end of the first body paragraph, insert a footnote with the following sentence:

Show your library card for a free donut.

Format the paragraph “Thursday, May 19 through Monday, May 23” as follows:

l. Center the paragraph.

m. Change the font size to 16 pt.

n. Apply White, Background 1, Darker 50% paragraph shading (1st column, 6th row of the Shading palette).

o. Apply the White, Background 1 font color (1st column, 1st row of the Theme Colors palette).

Format the text beginning “Mass-market paperbacks” and ending “Romances” as a bulleted list.

 

Insert and format a second picture as follows:

p. Move the insertion point to the beginning of the first bulleted list item, to the left of the “M” in “Mass-market paperbacks”, and then insert the picture Support_SC_WD16_CS1-3a_Bookshelves.png, available for download from the SAM website.

q. Resize the picture so it has a height of 2.9″. The width will automatically adjust to 3.49″.

r. Apply Square text wrapping.

s. Apply the Simple Frame, White picture style.

Modify the table below the “WE’RE STILL ACCEPTING DONATIONS!” heading as follows:

t. Insert a new row below the “Books” row.

u. In the new row, enter the text shown in Table 1 below.

 

Table 1: Text for New Row

 

Format the table below the “WE’RE STILL ACCEPTING DONATIONS!” heading as follows:

v. Apply the Grid Table 4 – Accent 1 table style.

w. Resize the table using AutoFit Contents.

x. Center the table on the page.

In the last blank paragraph in the document, below the paragraph that reads “We especially need children’s picture books this year.”, insert a second table as follows:

y. Insert a table with two columns and four rows.

z. Merge the cells in row 1.

aa. Enter the text shown in Table 2 on the next page.

 

Table 2: Text for New Table

Format the table as follows:

ab. Apply the Grid Table 4 – Accent 1 table style.

ac. Right-align the text in column 2, rows 2–4.

Add a header to the document as follows:

ad. Insert a blank header at the top of the page.

ae. Center the header paragraph.

af. Enter Approved for posting in the library. as the header text. (Hint: Type the period.)

ag. Close Header & Footer Tools.

Finish the flyer by adding a page border as follows:

ah. Select a border style of your choosing. (Hint: To match the Final Figure on the following page, select the Box border from the border Setting list.)

ai. Change the border width to 2 ¼ pt.

aj. Change the border color to Olive Green, Accent 3, Darker 25% (7th column, 5th row of the Theme Colors palette).

Check the Spelling & Grammar in the document to identify and correct any spelling errors. (Hint: You should find and correct at least three spelling errors.)

Your document should look like the Final Figure on the following page. Save your changes, close the document, and then exit Word. Follow the directions on the SAM website to submit your completed project.

Final Figure

© Cienpies Design /Shutterstock.com; © donatas1205/Shutterstock.com

2
 
Do you need a similar assignment done for you from scratch? Order now!
Use Discount Code "Newclient" for a 15% Discount!

Computer Security

A program manager questions why information from a legacy technology system is still classified. You explain the technology system will be declassified when the program is supported is declassified. This is an example of which type of declassification system?

 

a. Systematic Declassification

b. Scheduled Declassification

c. Automatic Declassification

d. Petitioned Declassification

 

A new junior member of your security team wants to learn about physical security planning and implementation. Which of the following would you identify for her as components of physical security planning and implementation?

 

a. the risk management process

b. facility installation construction

c. physical security planning documents

d. oversight

 

C only

B, C and D only

B and C only

A, B, C, and D

 

You are working with a contractor and are reviewing the document that outlines in detail what be required to complete the contract. You are reviewing the _______________.

 

a. DD form 254: DD contract Security Classification Specification

b. DD form 441: DOD Security Agreement

c. Statement of Work (SOW)

 

As the newly-appointed physical security officer for a government facility you are informed that a register of the combination for all the various secured areas and storage containers that use combination locks are stored in a file cabinet in the executive assistants office. Is this compliant with combination control requirements?

 

a. No, No register combination should be created.

b. No. Combination should be posted on the exterior of their respective containers.

c. Yes. It is imperative that all employee can access the combination

d. No. Only a minimum number of authorized persons should know the combination to a given container

 

The physical security officer requests your assistance in conducting a Risk Management assessment. As part of the process, you note that increased physical security measures should be implemented. This is an example of which step in the Risk management process?

 

a. Assess vulnerabilities

b. Assess Assets

c. Determine countermeasures options

 

The contracting officer’s Representative (COR) sent a draft copy of a Statement of Work for contractor support to be performed on the installation. The project does not require access to classified information. He included a list of possible requirements to be followed by the contractor. Which of the following is required of contractor personnel working on a government installation?

 

a. Submit to a minimal background investigation for installation access.

b. Sign an SF 312 Classified Information Nondisclosure Agreement

c. Submit to a background investigation for access to government information systems.

 

A and C only

A,B, and C

A and B only

A only

 

An engineer at your facility questions the marking on classified diagram. Which of the following markings are required on classified diagrams?

 

a. The agency, officer of origin, and date of the diagram

b. Classification challenge procedures

c. The overall classification of the diagram

 

A, B, and C

B and C only

A and C only

C only

 

The installation commander has tasked you with evaluating the security measure implemented to protect a nuclear weapon storage facility on the installation. You find the facility uses a variety of security measures, including perimeter fencing and signage, continuous and emergency lighting, active barriers and the pedestrian and vehicle points of entry, guards, and manual and automated access control measures. The security measures employed at this facility are an example of ________________.

 

a. Enclaving

b. Operation security

c. Security in depth

d. Point security

 

You are reviewing classification requirements. In order to be classified, information must meet which of the following criteria?

 

a. The information must be owned by, produced by, produced for, or under the strict control of the U.S government.

b. The information must be determined that its unauthorized disclosure could cause damage to national security.

c. Disclosure of the information could cause undue stress to relations with friendly nations.

d. The classification level of the information must be designated.

 

You are conducting a Risk Management assessment. Which of the following activities are are required to support the Risk Management Process?

a. Conduct a cost analysis

b. Conduct a benefits analysis

c. Make Risk Management Decisions

 

A and C only

B and C only

A and B only

A, B, and C

 

As the newly appointed physical security officer for a government facility, you are informed that the keys for all the various secured areas and storage containers that use keyed locks are stored in a locked file cabinet in the security office along with the key and lock control register. Is this compliant with key control requirements?

 

a. Yes, all keys should be stored with the lock and key register.

b. No. All keys should be secured with the lock and key register.

c. Yes, It is imperative that access to keys be restricted to only security personnel.

d. No. Keys should be stored at the same level of protection as required for the material to which they provide access.

 
Do you need a similar assignment done for you from scratch? Order now!
Use Discount Code "Newclient" for a 15% Discount!

Computer Science : Algorithms

A L G O R I T H M S I N T R O D U C T I O N T O

T H I R D E D I T I O N

T H O M A S H.

C H A R L E S E.

R O N A L D L .

C L I F F O R D S T E I N

R I V E S T

L E I S E R S O N

C O R M E N

 

 

Introduction to Algorithms Third Edition

 

 

 

Thomas H. Cormen Charles E. Leiserson Ronald L. Rivest Clifford Stein

Introduction to Algorithms Third Edition

The MIT Press Cambridge, Massachusetts London, England

 

 

c� 2009 Massachusetts Institute of Technology All rights reserved. No part of this book may be reproduced in any form or by any electronic or mechanical means (including photocopying, recording, or information storage and retrieval) without permission in writing from the publisher.

For information about special quantity discounts, please email special sales@mitpress.mit.edu.

This book was set in Times Roman and Mathtime Pro 2 by the authors.

Printed and bound in the United States of America.

Library of Congress Cataloging-in-Publication Data

Introduction to algorithms / Thomas H. Cormen . . . [et al.].—3rd ed. p. cm.

Includes bibliographical references and index. ISBN 978-0-262-03384-8 (hardcover : alk. paper)—ISBN 978-0-262-53305-8 (pbk. : alk. paper) 1. Computer programming. 2. Computer algorithms. I. Cormen, Thomas H.

QA76.6.I5858 2009 005.1—dc22

2009008593

10 9 8 7 6 5 4 3 2

 

 

Contents

Preface xiii

I Foundations

Introduction 3

1 The Role of Algorithms in Computing 5 1.1 Algorithms 5 1.2 Algorithms as a technology 11

2 Getting Started 16 2.1 Insertion sort 16 2.2 Analyzing algorithms 23 2.3 Designing algorithms 29

3 Growth of Functions 43 3.1 Asymptotic notation 43 3.2 Standard notations and common functions 53

4 Divide-and-Conquer 65 4.1 The maximum-subarray problem 68 4.2 Strassen’s algorithm for matrix multiplication 75 4.3 The substitution method for solving recurrences 83 4.4 The recursion-tree method for solving recurrences 88 4.5 The master method for solving recurrences 93

? 4.6 Proof of the master theorem 97

5 Probabilistic Analysis and Randomized Algorithms 114 5.1 The hiring problem 114 5.2 Indicator random variables 118 5.3 Randomized algorithms 122

? 5.4 Probabilistic analysis and further uses of indicator random variables 130

 

 

vi Contents

II Sorting and Order Statistics

Introduction 147

6 Heapsort 151 6.1 Heaps 151 6.2 Maintaining the heap property 154 6.3 Building a heap 156 6.4 The heapsort algorithm 159 6.5 Priority queues 162

7 Quicksort 170 7.1 Description of quicksort 170 7.2 Performance of quicksort 174 7.3 A randomized version of quicksort 179 7.4 Analysis of quicksort 180

8 Sorting in Linear Time 191 8.1 Lower bounds for sorting 191 8.2 Counting sort 194 8.3 Radix sort 197 8.4 Bucket sort 200

9 Medians and Order Statistics 213 9.1 Minimum and maximum 214 9.2 Selection in expected linear time 215 9.3 Selection in worst-case linear time 220

III Data Structures

Introduction 229

10 Elementary Data Structures 232 10.1 Stacks and queues 232 10.2 Linked lists 236 10.3 Implementing pointers and objects 241 10.4 Representing rooted trees 246

11 Hash Tables 253 11.1 Direct-address tables 254 11.2 Hash tables 256 11.3 Hash functions 262 11.4 Open addressing 269

? 11.5 Perfect hashing 277

 

 

Contents vii

12 Binary Search Trees 286 12.1 What is a binary search tree? 286 12.2 Querying a binary search tree 289 12.3 Insertion and deletion 294

? 12.4 Randomly built binary search trees 299

13 Red-Black Trees 308 13.1 Properties of red-black trees 308 13.2 Rotations 312 13.3 Insertion 315 13.4 Deletion 323

14 Augmenting Data Structures 339 14.1 Dynamic order statistics 339 14.2 How to augment a data structure 345 14.3 Interval trees 348

IV Advanced Design and Analysis Techniques

Introduction 357

15 Dynamic Programming 359 15.1 Rod cutting 360 15.2 Matrix-chain multiplication 370 15.3 Elements of dynamic programming 378 15.4 Longest common subsequence 390 15.5 Optimal binary search trees 397

16 Greedy Algorithms 414 16.1 An activity-selection problem 415 16.2 Elements of the greedy strategy 423 16.3 Huffman codes 428

? 16.4 Matroids and greedy methods 437 ? 16.5 A task-scheduling problem as a matroid 443

17 Amortized Analysis 451 17.1 Aggregate analysis 452 17.2 The accounting method 456 17.3 The potential method 459 17.4 Dynamic tables 463

 

 

viii Contents

V Advanced Data Structures

Introduction 481

18 B-Trees 484 18.1 Definition of B-trees 488 18.2 Basic operations on B-trees 491 18.3 Deleting a key from a B-tree 499

19 Fibonacci Heaps 505 19.1 Structure of Fibonacci heaps 507 19.2 Mergeable-heap operations 510 19.3 Decreasing a key and deleting a node 518 19.4 Bounding the maximum degree 523

20 van Emde Boas Trees 531 20.1 Preliminary approaches 532 20.2 A recursive structure 536 20.3 The van Emde Boas tree 545

21 Data Structures for Disjoint Sets 561 21.1 Disjoint-set operations 561 21.2 Linked-list representation of disjoint sets 564 21.3 Disjoint-set forests 568

? 21.4 Analysis of union by rank with path compression 573

VI Graph Algorithms

Introduction 587

22 Elementary Graph Algorithms 589 22.1 Representations of graphs 589 22.2 Breadth-first search 594 22.3 Depth-first search 603 22.4 Topological sort 612 22.5 Strongly connected components 615

23 Minimum Spanning Trees 624 23.1 Growing a minimum spanning tree 625 23.2 The algorithms of Kruskal and Prim 631

 

 

Contents ix

24 Single-Source Shortest Paths 643 24.1 The Bellman-Ford algorithm 651 24.2 Single-source shortest paths in directed acyclic graphs 655 24.3 Dijkstra’s algorithm 658 24.4 Difference constraints and shortest paths 664 24.5 Proofs of shortest-paths properties 671

25 All-Pairs Shortest Paths 684 25.1 Shortest paths and matrix multiplication 686 25.2 The Floyd-Warshall algorithm 693 25.3 Johnson’s algorithm for sparse graphs 700

26 Maximum Flow 708 26.1 Flow networks 709 26.2 The Ford-Fulkerson method 714 26.3 Maximum bipartite matching 732

? 26.4 Push-relabel algorithms 736 ? 26.5 The relabel-to-front algorithm 748

VII Selected Topics

Introduction 769

27 Multithreaded Algorithms 772 27.1 The basics of dynamic multithreading 774 27.2 Multithreaded matrix multiplication 792 27.3 Multithreaded merge sort 797

28 Matrix Operations 813 28.1 Solving systems of linear equations 813 28.2 Inverting matrices 827 28.3 Symmetric positive-definite matrices and least-squares approximation

832

29 Linear Programming 843 29.1 Standard and slack forms 850 29.2 Formulating problems as linear programs 859 29.3 The simplex algorithm 864 29.4 Duality 879 29.5 The initial basic feasible solution 886

 

 

x Contents

30 Polynomials and the FFT 898 30.1 Representing polynomials 900 30.2 The DFT and FFT 906 30.3 Efficient FFT implementations 915

31 Number-Theoretic Algorithms 926 31.1 Elementary number-theoretic notions 927 31.2 Greatest common divisor 933 31.3 Modular arithmetic 939 31.4 Solving modular linear equations 946 31.5 The Chinese remainder theorem 950 31.6 Powers of an element 954 31.7 The RSA public-key cryptosystem 958

? 31.8 Primality testing 965 ? 31.9 Integer factorization 975

32 String Matching 985 32.1 The naive string-matching algorithm 988 32.2 The Rabin-Karp algorithm 990 32.3 String matching with finite automata 995

? 32.4 The Knuth-Morris-Pratt algorithm 1002

33 Computational Geometry 1014 33.1 Line-segment properties 1015 33.2 Determining whether any pair of segments intersects 1021 33.3 Finding the convex hull 1029 33.4 Finding the closest pair of points 1039

34 NP-Completeness 1048 34.1 Polynomial time 1053 34.2 Polynomial-time verification 1061 34.3 NP-completeness and reducibility 1067 34.4 NP-completeness proofs 1078 34.5 NP-complete problems 1086

35 Approximation Algorithms 1106 35.1 The vertex-cover problem 1108 35.2 The traveling-salesman problem 1111 35.3 The set-covering problem 1117 35.4 Randomization and linear programming 1123 35.5 The subset-sum problem 1128

 

 

Contents xi

VIII Appendix: Mathematical Background

Introduction 1143

A Summations 1145 A.1 Summation formulas and properties 1145 A.2 Bounding summations 1149

B Sets, Etc. 1158 B.1 Sets 1158 B.2 Relations 1163 B.3 Functions 1166 B.4 Graphs 1168 B.5 Trees 1173

C Counting and Probability 1183 C.1 Counting 1183 C.2 Probability 1189 C.3 Discrete random variables 1196 C.4 The geometric and binomial distributions 1201

? C.5 The tails of the binomial distribution 1208

D Matrices 1217 D.1 Matrices and matrix operations 1217 D.2 Basic matrix properties 1222

Bibliography 1231

Index 1251

 

 

 

Preface

Before there were computers, there were algorithms. But now that there are com- puters, there are even more algorithms, and algorithms lie at the heart of computing.

This book provides a comprehensive introduction to the modern study of com- puter algorithms. It presents many algorithms and covers them in considerable depth, yet makes their design and analysis accessible to all levels of readers. We have tried to keep explanations elementary without sacrificing depth of coverage or mathematical rigor.

Each chapter presents an algorithm, a design technique, an application area, or a related topic. Algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The book contains 244 figures—many with multiple parts—illustrating how the algorithms work. Since we emphasize efficiency as a design criterion, we include careful analyses of the running times of all our algorithms.

The text is intended primarily for use in undergraduate or graduate courses in algorithms or data structures. Because it discusses engineering issues in algorithm design, as well as mathematical aspects, it is equally well suited for self-study by technical professionals.

In this, the third edition, we have once again updated the entire book. The changes cover a broad spectrum, including new chapters, revised pseudocode, and a more active writing style.

To the teacher

We have designed this book to be both versatile and complete. You should find it useful for a variety of courses, from an undergraduate course in data structures up through a graduate course in algorithms. Because we have provided considerably more material than can fit in a typical one-term course, you can consider this book to be a “buffet” or “smorgasbord” from which you can pick and choose the material that best supports the course you wish to teach.

 

 

xiv Preface

You should find it easy to organize your course around just the chapters you need. We have made chapters relatively self-contained, so that you need not worry about an unexpected and unnecessary dependence of one chapter on another. Each chapter presents the easier material first and the more difficult material later, with section boundaries marking natural stopping points. In an undergraduate course, you might use only the earlier sections from a chapter; in a graduate course, you might cover the entire chapter.

We have included 957 exercises and 158 problems. Each section ends with exer- cises, and each chapter ends with problems. The exercises are generally short ques- tions that test basic mastery of the material. Some are simple self-check thought exercises, whereas others are more substantial and are suitable as assigned home- work. The problems are more elaborate case studies that often introduce new ma- terial; they often consist of several questions that lead the student through the steps required to arrive at a solution.

Departing from our practice in previous editions of this book, we have made publicly available solutions to some, but by no means all, of the problems and ex- ercises. Our Web site, http://mitpress.mit.edu/algorithms/, links to these solutions. You will want to check this site to make sure that it does not contain the solution to an exercise or problem that you plan to assign. We expect the set of solutions that we post to grow slowly over time, so you will need to check it each time you teach the course.

We have starred (?) the sections and exercises that are more suitable for graduate students than for undergraduates. A starred section is not necessarily more diffi- cult than an unstarred one, but it may require an understanding of more advanced mathematics. Likewise, starred exercises may require an advanced background or more than average creativity.

To the student

We hope that this textbook provides you with an enjoyable introduction to the field of algorithms. We have attempted to make every algorithm accessible and interesting. To help you when you encounter unfamiliar or difficult algorithms, we describe each one in a step-by-step manner. We also provide careful explanations of the mathematics needed to understand the analysis of the algorithms. If you already have some familiarity with a topic, you will find the chapters organized so that you can skim introductory sections and proceed quickly to the more advanced material.

This is a large book, and your class will probably cover only a portion of its material. We have tried, however, to make this a book that will be useful to you now as a course textbook and also later in your career as a mathematical desk reference or an engineering handbook.

 

 

Preface xv

What are the prerequisites for reading this book?

� You should have some programming experience. In particular, you should un- derstand recursive procedures and simple data structures such as arrays and linked lists.

� You should have some facility with mathematical proofs, and especially proofs by mathematical induction. A few portions of the book rely on some knowledge of elementary calculus. Beyond that, Parts I and VIII of this book teach you all the mathematical techniques you will need.

We have heard, loud and clear, the call to supply solutions to problems and exercises. Our Web site, http://mitpress.mit.edu/algorithms/, links to solutions for a few of the problems and exercises. Feel free to check your solutions against ours. We ask, however, that you do not send your solutions to us.

To the professional

The wide range of topics in this book makes it an excellent handbook on algo- rithms. Because each chapter is relatively self-contained, you can focus in on the topics that most interest you.

Most of the algorithms we discuss have great practical utility. We therefore address implementation concerns and other engineering issues. We often provide practical alternatives to the few algorithms that are primarily of theoretical interest.

If you wish to implement any of the algorithms, you should find the transla- tion of our pseudocode into your favorite programming language to be a fairly straightforward task. We have designed the pseudocode to present each algorithm clearly and succinctly. Consequently, we do not address error-handling and other software-engineering issues that require specific assumptions about your program- ming environment. We attempt to present each algorithm simply and directly with- out allowing the idiosyncrasies of a particular programming language to obscure its essence.

We understand that if you are using this book outside of a course, then you might be unable to check your solutions to problems and exercises against solutions provided by an instructor. Our Web site, http://mitpress.mit.edu/algorithms/, links to solutions for some of the problems and exercises so that you can check your work. Please do not send your solutions to us.

To our colleagues

We have supplied an extensive bibliography and pointers to the current literature. Each chapter ends with a set of chapter notes that give historical details and ref- erences. The chapter notes do not provide a complete reference to the whole field

 

 

xvi Preface

of algorithms, however. Though it may be hard to believe for a book of this size, space constraints prevented us from including many interesting algorithms.

Despite myriad requests from students for solutions to problems and exercises, we have chosen as a matter of policy not to supply references for problems and exercises, to remove the temptation for students to look up a solution rather than to find it themselves.

Changes for the third edition

What has changed between the second and third editions of this book? The mag- nitude of the changes is on a par with the changes between the first and second editions. As we said about the second-edition changes, depending on how you look at it, the book changed either not much or quite a bit.

A quick look at the table of contents shows that most of the second-edition chap- ters and sections appear in the third edition. We removed two chapters and one section, but we have added three new chapters and two new sections apart from these new chapters.

We kept the hybrid organization from the first two editions. Rather than organiz- ing chapters by only problem domains or according only to techniques, this book has elements of both. It contains technique-based chapters on divide-and-conquer, dynamic programming, greedy algorithms, amortized analysis, NP-Completeness, and approximation algorithms. But it also has entire parts on sorting, on data structures for dynamic sets, and on algorithms for graph problems. We find that although you need to know how to apply techniques for designing and analyzing al- gorithms, problems seldom announce to you which techniques are most amenable to solving them.

Here is a summary of the most significant changes for the third edition:

� We added new chapters on van Emde Boas trees and multithreaded algorithms, and we have broken out material on matrix basics into its own appendix chapter.

� We revised the chapter on recurrences to more broadly cover the divide-and- conquer technique, and its first two sections apply divide-and-conquer to solve two problems. The second section of this chapter presents Strassen’s algorithm for matrix multiplication, which we have moved from the chapter on matrix operations.

� We removed two chapters that were rarely taught: binomial heaps and sorting networks. One key idea in the sorting networks chapter, the 0-1 principle, ap- pears in this edition within Problem 8-7 as the 0-1 sorting lemma for compare- exchange algorithms. The treatment of Fibonacci heaps no longer relies on binomial heaps as a precursor.

 

 

Preface xvii

� We revised our treatment of dynamic programming and greedy algorithms. Dy- namic programming now leads off with a more interesting problem, rod cutting, than the assembly-line scheduling problem from the second edition. Further- more, we emphasize memoization a bit more than we did in the second edition, and we introduce the notion of the subproblem graph as a way to understand the running time of a dynamic-programming algorithm. In our opening exam- ple of greedy algorithms, the activity-selection problem, we get to the greedy algorithm more directly than we did in the second edition.

� The way we delete a node from binary search trees (which includes red-black trees) now guarantees that the node requested for deletion is the node that is actually deleted. In the first two editions, in certain cases, some other node would be deleted, with its contents moving into the node passed to the deletion procedure. With our new way to delete nodes, if other components of a program maintain pointers to nodes in the tree, they will not mistakenly end up with stale pointers to nodes that have been deleted.

� The material on flow networks now bases flows entirely on edges. This ap- proach is more intuitive than the net flow used in the first two editions.

� With the material on matrix basics and Strassen’s algorithm moved to other chapters, the chapter on matrix operations is smaller than in the second edition.

� We have modified our treatment of the Knuth-Morris-Pratt string-matching al- gorithm.

� We corrected several errors. Most of these errors were posted on our Web site of second-edition errata, but a few were not.

� Based on many requests, we changed the syntax (as it were) of our pseudocode. We now use “D” to indicate assignment and “==” to test for equality, just as C, C++, Java, and Python do. Likewise, we have eliminated the keywords do and then and adopted “//” as our comment-to-end-of-line symbol. We also now use dot-notation to indicate object attributes. Our pseudocode remains procedural, rather than object-oriented. In other words, rather than running methods on objects, we simply call procedures, passing objects as parameters.

� We added 100 new exercises and 28 new problems. We also updated many bibliography entries and added several new ones.

� Finally, we went through the entire book and rewrote sentences, paragraphs, and sections to make the writing clearer and more active.

 

 

xviii Preface

Web site

You can use our Web site, http://mitpress.mit.edu/algorithms/, to obtain supple- mentary information and to communicate with us. The Web site links to a list of known errors, solutions to selected exercises and problems, and (of course) a list explaining the corny professor jokes, as well as other content that we might add. The Web site also tells you how to report errors or make suggestions.

How we produced this book

Like the second edition, the third edition was produced in LATEX 2″. We used the Times font with mathematics typeset using the MathTime Pro 2 fonts. We thank Michael Spivak from Publish or Perish, Inc., Lance Carnes from Personal TeX, Inc., and Tim Tregubov from Dartmouth College for technical support. As in the previous two editions, we compiled the index using Windex, a C program that we wrote, and the bibliography was produced with BIBTEX. The PDF files for this book were created on a MacBook running OS 10.5.

We drew the illustrations for the third edition using MacDraw Pro, with some of the mathematical expressions in illustrations laid in with the psfrag package for LATEX 2″. Unfortunately, MacDraw Pro is legacy software, having not been marketed for over a decade now. Happily, we still have a couple of Macintoshes that can run the Classic environment under OS 10.4, and hence they can run Mac- Draw Pro—mostly. Even under the Classic environment, we find MacDraw Pro to be far easier to use than any other drawing software for the types of illustrations that accompany computer-science text, and it produces beautiful output.1 Who knows how long our pre-Intel Macs will continue to run, so if anyone from Apple is listening: Please create an OS X-compatible version of MacDraw Pro!

Acknowledgments for the third edition

We have been working with the MIT Press for over two decades now, and what a terrific relationship it has been! We thank Ellen Faran, Bob Prior, Ada Brunstein, and Mary Reilly for their help and support.

We were geographically distributed while producing the third edition, working in the Dartmouth College Department of Computer Science, the MIT Computer

1We investigated several drawing programs that run under Mac OS X, but all had significant short- comings compared with MacDraw Pro. We briefly attempted to produce the illustrations for this book with a different, well known drawing program. We found that it took at least five times as long to produce each illustration as it took with MacDraw Pro, and the resulting illustrations did not look as good. Hence the decision to revert to MacDraw Pro running on older Macintoshes.

 

 

Preface xix

Science and Artificial Intelligence Laboratory, and the Columbia University De- partment of Industrial Engineering and Operations Research. We thank our re- spective universities and colleagues for providing such supportive and stimulating environments.

Julie Sussman, P.P.A., once again bailed us out as the technical copyeditor. Time and again, we were amazed at the errors that eluded us, but that Julie caught. She also helped us improve our presentation in several places. If there is a Hall of Fame for technical copyeditors, Julie is a sure-fire, first-ballot inductee. She is nothing short of phenomenal. Thank you, thank you, thank you, Julie! Priya Natarajan also found some errors that we were able to correct before this book went to press. Any errors that remain (and undoubtedly, some do) are the responsibility of the authors (and probably were inserted after Julie read the material).

The treatment for van Emde Boas trees derives from Erik Demaine’s notes, which were in turn influenced by Michael Bender. We also incorporated ideas from Javed Aslam, Bradley Kuszmaul, and Hui Zha into this edition.

The chapter on multithreading was based on notes originally written jointly with Harald Prokop. The material was influenced by several others working on the Cilk project at MIT, including Bradley Kuszmaul and Matteo Frigo. The design of the multithreaded pseudocode took its inspiration from the MIT Cilk extensions to C and by Cilk Arts’s Cilk++ extensions to C++.

We also thank the many readers of the first and second editions who reported errors or submitted suggestions for how to improve this book. We corrected all the bona fide errors that were reported, and we incorporated as many suggestions as we could. We rejoice that the number of such contributors has grown so great that we must regret that it has become impractical to list them all.

Finally, we thank our wives—Nicole Cormen, Wendy Leiserson, Gail Rivest, and Rebecca Ivry—and our children—Ricky, Will, Debby, and Katie Leiserson; Alex and Christopher Rivest; and Molly, Noah, and Benjamin Stein—for their love and support while we prepared this book. The patience and encouragement of our families made this project possible. We affectionately dedicate this book to them.

THOMAS H. CORMEN Lebanon, New Hampshire CHARLES E. LEISERSON Cambridge, Massachusetts RONALD L. RIVEST Cambridge, Massachusetts CLIFFORD STEIN New York, New York

February 2009

 

 

 

Introduction to Algorithms Third Edition

 

 

I Foundations

 

 

Introduction

This part will start you thinking about designing and analyzing algorithms. It is intended to be a gentle introduction to how we specify algorithms, some of the design strategies we will use throughout this book, and many of the fundamental ideas used in algorithm analysis. Later parts of this book will build upon this base.

Chapter 1 provides an overview of algorithms and their place in modern com- puting systems. This chapter defines what an algorithm is and lists some examples. It also makes a case that we should consider algorithms as a technology, along- side technologies such as fast hardware, graphical user interfaces, object-oriented systems, and networks.

In Chapter 2, we see our first algorithms, which solve the problem of sorting a sequence of n numbers. They are written in a pseudocode which, although not directly translatable to any conventional programming language, conveys the struc- ture of the algorithm clearly enough that you should be able to implement it in the language of your choice. The sorting algorithms we examine are insertion sort, which uses an incremental approach, and merge sort, which uses a recursive tech- nique known as “divide-and-conquer.” Although the time each requires increases with the value of n, the rate of increase differs between the two algorithms. We determine these running times in Chapter 2, and we develop a useful notation to express them.

Chapter 3 precisely defines this notation, which we call asymptotic notation. It starts by defining several asymptotic notations, which we use for bounding algo- rithm running times from above and/or below. The rest of Chapter 3 is primarily a presentation of mathematical notation, more to ensure that your use of notation matches that in this book than to teach you new mathematical concepts.

 

 

4 Part I Foundations

Chapter 4 delves further into the divide-and-conquer method introduced in Chapter 2. It provides additional examples of divide-and-conquer algorithms, in- cluding Strassen’s surprising method for multiplying two square matrices. Chap- ter 4 contains methods for solving recurrences, which are useful for describing the running times of recursive algorithms. One powerful technique is the “mas- ter method,” which we often use to solve recurrences that arise from divide-and- conquer algorithms. Although much of Chapter 4 is devoted to proving the cor- rectness of the master method, you may skip this proof yet still employ the master method.

Chapter 5 introduces probabilistic analysis and randomized algorithms. We typ- ically use probabilistic analysis to determine the running time of an algorithm in cases in which, due to the presence of an inherent probability distribution, the running time may differ on different inputs of the same size. In some cases, we assume that the inputs conform to a known probability distribution, so that we are averaging the running time over all possible inputs. In other cases, the probability distribution comes not from the inputs but from random choices made during the course of the algorithm. An algorithm whose behavior is determined not only by its input but by the values produced by a random-number generator is a randomized algorithm. We can use randomized algorithms to enforce a probability distribution on the inputs—thereby ensuring that no particular input always causes poor perfor- mance—or even to bound the error rate of algorithms that are allowed to produce incorrect results on a limited basis.

Appendices A–D contain other mathematical material that you will find helpful as you read this book. You are likely to have seen much of the material in the appendix chapters before having read this book (although the specific definitions and notational conventions we use may differ in some cases from what you have seen in the past), and so you should think of the Appendices as reference material. On the other hand, you probably have not already seen most of the material in Part I. All the chapters in Part I and the Appendices are written with a tutorial flavor.

 

 

1 The Role of Algorithms in Computing

What are algorithms? Why is the study of algorithms worthwhile? What is the role of algorithms relative to other technologies used in computers? In this chapter, we will answer these questions.

1.1 Algorithms

Informally, an algorithm is any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output. An algorithm is thus a sequence of computational steps that transform the input into the output.

We can also view an algorithm as a tool for solving a well-specified computa- tional problem. The statement of the problem specifies in general terms the desired input/output relationship. The algorithm describes a specific computational proce- dure for achieving that input/output relationship.

For example, we might need to sort a sequence of numbers into nondecreasing order. This problem arises frequently in practice and provides fertile ground for introducing many standard design techniques and analysis tools. Here is how we formally define the sorting problem:

Input: A sequence of n numbers ha1; a2; : : : ; ani. Output: A permutation (reordering) ha01; a02; : : : ; a0ni of the input sequence such

that a01 � a02 � � � � � a0n. For example, given the input sequence h31; 41; 59; 26; 41; 58i, a sorting algorithm returns as output the sequence h26; 31; 41; 41; 58; 59i. Such an input sequence is called an instance of the sorting problem. In general, an instance of a problem consists of the input (satisfying whatever constraints are imposed in the problem statement) needed to compute a solution to the problem.

 

 

6 Chapter 1 The Role of Algorithms in Computing

Because many programs use it as an intermediate step, sorting is a fundamental operation in computer science. As a result, we have a large number of good sorting algorithms at our disposal. Which algorithm is best for a given application depends on—among other factors—the number of items to be sorted, the extent to which the items are already somewhat sorted, possible restrictions on the item values, the architecture of the computer, and the kind of storage devices to be used: main memory, disks, or even tapes.

An algorithm is said to be correct if, for every input instance, it halts with the correct output. We say that a correct algorithm solves the given computational problem. An incorrect algorithm might not halt at all on some input instances, or it might halt with an incorrect answer. Contrary to what you might expect, incorrect algorithms can sometimes be useful, if we can control their error rate. We shall see an example of an algorithm with a controllable error rate in Chapter 31 when we study algorithms for finding large prime numbers. Ordinarily, however, we shall be concerned only with correct algorithms.

An algorithm can be specified in English, as a computer program, or even as a hardware design. The only requirement is that the specification must provide a precise description of the computational procedure to be followed.

What kinds of problems are solved by algorithms?

Sorting is by no means the only computational problem for which algorithms have been developed. (You probably suspected as much when you saw the size of this book.) Practical applications of algorithms are ubiquitous and include the follow- ing examples:

� The Human Genome Project has made great progress toward the goals of iden- tifying all the 100,000 genes in human DNA, determining the sequences of the 3 billion chemical base pairs that make up human DNA, storing this informa- tion in databases, and developing tools for data analysis. Each of these steps requires sophisticated algorithms. Although the solutions to the various prob- lems involved are beyond the scope of this book, many methods to solve these biological problems use ideas from several of the chapters in this book, thereby enabling scientists to accomplish tasks while using resources efficiently. The savings are in time, both human and machine, and in money, as more informa- tion can be extracted from laboratory techniques.

� The Internet enables people all around the world to quickly access and retrieve large amounts of information. With the aid of clever algorithms, sites on the Internet are able to manage and manipulate this large volume of data. Examples of problems that make essential use of algorithms include finding good routes on which the data will travel (techniques for solving such problems appear in

 

 

1.1 Algorithms 7

Chapter 24), and using a search engine to quickly find pages on which particular information resides (related techniques are in Chapters 11 and 32).

� Electronic commerce enables goods and services to be negotiated and ex- changed electronically, and it depends on the privacy of personal informa- tion such as credit card numbers, passwords, and bank statements. The core technologies used in electronic commerce include public-key cryptography and digital signatures (covered in Chapter 31), which are based on numerical algo- rithms and number theory.

� Manufacturing and other commercial enterprises often need to allocate scarce resources in the most beneficial way. An oil company may wish to know where to place its wells in order to maximize its expected profit. A political candidate may want to determine where to spend money buying campaign advertising in order to maximize the chances of winning an election. An airline may wish to assign crews to flights in the least expensive way possible, making sure that each flight is covered and that government regulations regarding crew schedul- ing are met. An Internet service provider may wish to determine where to place additional resources in order to serve its customers more effectively. All of these are examples of problems that can be solved using linear programming, which we shall study in Chapter 29.

Although some of the details of these examples are beyond the scope of this book, we do give underlying techniques that apply to these problems and problem areas. We also show how to solve many specific problems, including the following:

� We are given a road map on which the distance between each pair of adjacent intersections is marked, and we wish to determine the shortest route from one intersection to another. The number of possible routes can be huge, even if we disallow routes that cross over themselves. How do we choose which of all possible routes is the shortest? Here, we model the road map (which is itself a model of the actual roads) as a graph (which we will meet in Part VI and Appendix B), and we wish to find the shortest path from one vertex to another in the graph. We shall see how to solve this problem efficiently in Chapter 24.

� We are given two ordered sequences of symbols, X D hx1; x2; : : : ; xmi and Y D hy1; y2; : : : ; yni, and we wish to find a longest common subsequence of X and Y . A subsequence of X is just X with some (or possibly all or none) of its elements removed. For example, one subsequence of hA; B; C; D; E; F; Gi would be hB; C; E; Gi. The length of a longest common subsequence of X and Y gives one measure of how similar these two sequences are. For example, if the two sequences are base pairs in DNA strands, then we might consider them similar if they have a long common subsequence. If X has m symbols and Y has n symbols, then X and Y have 2m and 2n possible subsequences,

 

 

8 Chapter 1 The Role of Algorithms in Computing

respectively. Selecting all possible subsequences of X and Y and matching them up could take a prohibitively long time unless m and n are very small. We shall see in Chapter 15 how to use a general technique known as dynamic programming to solve this problem much more efficiently.

� We are given a mechanical design in terms of a library of parts, where each part may include instances of other parts, and we need to list the parts in order so that each part appears before any part that uses it. If the design comprises n parts, then there are nŠ possible orders, where nŠ denotes the factorial function. Because the factorial function grows faster than even an exponential function, we cannot feasibly generate each possible order and then verify that, within that order, each part appears before the parts using it (unless we have only a few parts). This problem is an instance of topological sorting, and we shall see in Chapter 22 how to solve this problem efficiently.

� We are given n points in the plane, and we wish to find the convex hull of these points. The convex hull is the smallest convex polygon containing the points. Intuitively, we can think of each point as being represented by a nail sticking out from a board. The convex hull would be represented by a tight rubber band that surrounds all the nails. Each nail around which the rubber band makes a turn is a vertex of the convex hull. (See Figure 33.6 on page 1029 for an example.) Any of the 2n subsets of the points might be the vertices of the convex hull. Knowing which points are vertices of the convex hull is not quite enough, either, since we also need to know the order in which they appear. There are many choices, therefore, for the vertices of the convex hull. Chapter 33 gives two good methods for finding the convex hull.

These lists are far from exhaustive (as you again have probably surmised from this book’s heft), but exhibit two characteristics that are common to many interest- ing algorithmic problems:

1. They have many candidate solutions, the overwhelming majority of which do not solve the problem at hand. Finding one that does, or one that is “best,” can present quite a challenge.

2. They have practical applications. Of the problems in the above list, finding the shortest path provides the easiest examples. A transportation firm, such as a trucking or railroad company, has a financial interest in finding shortest paths through a road or rail network because taking shorter paths results in lower labor and fuel costs. Or a routing node on the Internet may need to find the shortest path through the network in order to route a message quickly. Or a person wishing to drive from New York to Boston may want to find driving directions from an appropriate Web site, or she may use her GPS while driving.

 
Do you need a similar assignment done for you from scratch? Order now!
Use Discount Code "Newclient" for a 15% Discount!