The Power of Computing Algorithms

Slides:



Advertisements
Similar presentations
Math for Liberal Studies. There is a list of numbers called weights These numbers represent objects that need to be packed into bins with a particular.
Advertisements

CS 206 Introduction to Computer Science II 02 / 27 / 2009 Instructor: Michael Eckmann.
Understanding Inclusion/Exvlusion with Venn Diagrams.
CS 206 Introduction to Computer Science II 10 / 14 / 2009 Instructor: Michael Eckmann.
Algorithms and Efficiency of Algorithms February 4th.
Complexity (Running Time)
Search Lesson CS1313 Spring Search Lesson Outline 1.Searching Lesson Outline 2.How to Find a Value in an Array? 3.Linear Search 4.Linear Search.
Nattee Niparnan. Recall  Complexity Analysis  Comparison of Two Algos  Big O  Simplification  From source code  Recursive.
Balancing Examples and Explanation in Your Body Paragraphs Presentation created by Jennifer Maloy.
Maths on the move Cookie Count Room 13 – Year 2 Class 2007.
CSC 211 Data Structures Lecture 13
Program #2 Algorithm for Parking at PSU. Understanding the Assignment You will be writing a program to find out how much someone at PSU might be spending.
Integer Operations Integers are the set of whole numbers and their opposites. The set of whole numbers starts with zero! 0,1,2,3,4,5,… Integers …-1,-2,0,1,2…
Algorithm Analysis. What is an algorithm ? A clearly specifiable set of instructions –to solve a problem Given a problem –decide that the algorithm is.
0.25 x 0.3 To figure out where the decimal point goes in the answer, count the number of digits AFTER the decimal point in the problem digits.
Vishnu Kotrajaras, PhD.1 Data Structures
Fundamental Data Structures and Algorithms Ananda Guna March 18, 2003 Dynamic Programming Part 1.
Algorithm Analysis with Big Oh ©Rick Mercer. Two Searching Algorithms  Objectives  Analyze the efficiency of algorithms  Analyze two classic algorithms.
Adding Integers. Using Two Coloured Counters We can model integer addition with tiles. Represent -2 with the fewest number of tiles Represent +5 with.
11 Making Decisions in a Program Session 2.3. Session Overview  Introduce the idea of an algorithm  Show how a program can make logical decisions based.
SUYASH BHARDWAJ FACULTY OF ENGINEERING AND TECHNOLOGY GURUKUL KANGRI VISHWAVIDYALAYA, HARIDWAR.
Sit-In Lab 4 Queues & Stacks © Nicholas Lum.
List Algorithms Taken from notes by Dr. Neil Moore & Dr. Debby Keen
The problem you have samples for has been edited to reduce the amount of reading for the students. We gave the original late in the year. As we were working.
Recursion Version 1.0.
B/B+ Trees 4.7.
REPETITION CONTROL STRUCTURE
WELCOME TO MATHEMATICS WORKSHOP
Week 9 - Monday CS 113.
Week 13: Searching and Sorting
Loops BIS1523 – Lecture 10.
Common Core Math I Unit 1: One-Variable Statistics Boxplots, Interquartile Range, and Outliers; Choosing Appropriate Measures.
Standard Algorithms Higher Computing.
Fractions Jeopardy Vocabulary Ordering Comparing Word Problems BONUS:
Naviance: Do What You Are Personality Survey
Announcements Final Exam on August 17th Wednesday at 16:00.
Bubble Sort Bubble sort is one way to sort an array of numbers. Adjacent values are swapped until the array is completely sorted. This algorithm gets its.
Binary Search Back in the days when phone numbers weren’t stored in cell phones, you might have actually had to look them up in a phonebook. How did you.
CSE 143 Lecture 5 Binary search; complexity reading:
Dynamic Programming.
DAY 3 Sections 1.2 and 1.3.
List Algorithms Taken from notes by Dr. Neil Moore
For example:
CSE 143 Lecture 5 More Stacks and Queues; Complexity (Big-Oh)
Triangle Inequalities
B- Trees D. Frey with apologies to Tom Anastasio
Understanding the Three Basic Structures
Data Structures Review Session
B- Trees D. Frey with apologies to Tom Anastasio
vms x Year 8 Mathematics Equations
Statistics project By~.
Triangle Inequalities
CMSC201 Computer Science I for Majors Lecture 17 – Recursion (cont)
Topic 1: Problem Solving
Common Core Math I Unit 2: One-Variable Statistics Boxplots, Interquartile Range, and Outliers; Choosing Appropriate Measures.
Year 6 Project Pack: Theme Park
B- Trees D. Frey with apologies to Tom Anastasio
Common Core Math I Unit 1: One-Variable Statistics Boxplots, Interquartile Range, and Outliers; Choosing Appropriate Measures.
Building Java Programs
ECE 352 Digital System Fundamentals
Use the large grids and the counters on your tables.
For loops Taken from notes by Dr. Neil Moore
Dynamic Programming.
Welcome to Jeopardy!.
Building Java Programs
Games & Adversarial Search
Chapter 13 Recursion Copyright © 2010 Pearson Addison-Wesley. All rights reserved.
Add by partitioning or counting on
1.6) Storing Integer: 1.7) storing fraction:
Presentation transcript:

The Power of Computing Algorithms Daryle J. Serrant – Past Undergraduate Student Debasis Mitra – dmitra@cs.fit.edu Florida Institute of Technology Computer Science

What is an Algorithm? Cooking <- Recipes Building construction <- Blue print Software <- Algorithm

Example Problem 1 Best Return on a Stock We have daily stock prices over a period: Gains as positive Loss as negative When should we have bought and when should we have sold

Maximum Customers visited in a Store Problem Example 2 Maximum Customers visited in a Store # Customers visited & left every hour is tracked Incoming number as positive Leaving number as negative Between which hours maximum #customers were in the store

A Computing Problem: Maximum Subsequence What is common between the two examples? Can you find the maximum sub-sequence of the following numbers: 3, 4, -8, 1, 9, -2, 3, -1 Answer: {1, 9, -2, 3} for the max sum 11. Question: How fast can we get the answer? Answer: Depends on the ALGORITHM!

The Workaholic Approach Go over every possible subsequence: Day 1 – Day 2, Day 1 – Day 3, etc. Find the subsequence with the largest sum. Image Source: http://www.grinningplanet.com/2003/workaholics/joke-1704.htm/

Day 1 – Day 1 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 7 Day 1 – Day 1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 = 3 Max Sum: 3 Addition Counter: 1 Maximum Subsequence: Day 1

Day 1 – Day 2 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Start End Sum: 0 + 3 Addition Counter: 2

Day 1 – Day 2 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Start End Sum: 0 + 3 + 4 = 7 Max Sum: 3 Addition Counter: 3 Maximum Subsequence: Day 1 Max Sum is now 7 and Maximum Subsequence is now Day 1 - 2

Day 1 – Day 3 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 1010 Day 1 – Day 3 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 Addition Counter: 4

Day 1 – Day 3 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 1111 Day 1 – Day 3 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 Addition Counter: 5

Day 1 – Day 3 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 1212 Day 1 – Day 3 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 - 8 = -1 Max Sum: 7 Addition Counter: 6 Maximum Subsequence: Day 1 - 2 No change

Day 1 – Day 4 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 1313 Day 1 – Day 4 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 Addition Counter: 7

Day 1 – Day 4 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 1414 Day 1 – Day 4 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 Addition Counter: 8

Day 1 – Day 4 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 1515 Day 1 – Day 4 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 Addition Counter: 9

Day 1 – Day 4 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 1616 Day 1 – Day 4 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 + 1 = 0 Max Sum: 7 Addition Counter: 10 Maximum Subsequence: Day 1 - 2 No changes

Day 1 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 1717 Day 1 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 Addition Counter: 11

Day 1 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 1818 Day 1 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 Addition Counter: 12

Day 1 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 1919 Day 1 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 Addition Counter: 13

Day 1 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 2020 Day 1 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 + 1 Addition Counter: 14

Day 1 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 2121 Day 1 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 + 1 + 9 = 9 Max Sum: 7 Addition Counter: 15 Maximum Subsequence: Day 1 - 2 Max Sum is now 9 and Maximum Subsequence is Day 1 – Day 5

Day 1 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 2222 Day 1 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 Addition Counter: 16

Day 1 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 2323 Day 1 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 Addition Counter: 17

Day 1 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 2424 Day 1 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 Addition Counter: 18

Day 1 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 2525 Day 1 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 + 1 Addition Counter: 19

Day 1 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 2626 Day 1 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 + 1 + 9 Addition Counter: 20

Day 1 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 2727 Day 1 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 + 1 + 9 – 2 = 7 Max Sum: 9 Addition Counter: 21 Maximum Subsequence: Day 1 - 5 No change

Day 1 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 2828 Day 1 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 Addition Counter: 22

Day 1 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 2929 Day 1 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 Addition Counter: 23

Day 1 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 3030 Day 1 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 Addition Counter: 24

Day 1 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 3131 Day 1 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 + 1 Addition Counter: 25

Day 1 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 3232 Day 1 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 + 1 + 9 Addition Counter: 26

Day 1 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 3333 Day 1 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 + 1 + 9 – 2 Addition Counter: 27

Day 1 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 3434 Day 1 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 + 1 + 9 – 2 + 3 = 10 Max Sum: 9 Addition Counter: 28 Maximum Subsequence: Day 1 - 5 Max Sum is now 10 and Maximum Subsequence is Day 1 - 7

Day 1 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 3535 Day 1 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 Addition Counter: 29

Day 1 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 3636 Day 1 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 Addition Counter: 30

Day 1 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 3737 Day 1 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 Addition Counter: 31

Day 1 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 3838 Day 1 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 + 1 Addition Counter: 32

Day 1 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 3939 Day 1 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 + 1 + 9 Addition Counter: 33

Day 1 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 4040 Day 1 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 + 1 + 9 – 2 Addition Counter: 34

Day 1 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 4141 Day 1 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 + 1 + 9 – 2 + 3 Addition Counter: 35

Day 1 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 4242 Day 1 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 + 4 – 8 + 1 + 9 – 2 + 3 – 1 = 9 Max Sum: 10 Addition Counter: 36 Maximum Subsequence: Day 1 - 7 No changes

Day 2 – Day 2 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 4343 Day 2 – Day 2 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 = 4 Max Sum: 10 Addition Counter: 37 Maximum Subsequence: Day 1 - 7 No changes

Day 2 – Day 3 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 4444 Day 2 – Day 3 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 Addition Counter: 38

Day 2 – Day 3 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 4545 Day 2 – Day 3 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 = -4 Max Sum: 10 Addition Counter: 39 Maximum Subsequence: Day 1 - 7 No changes

Day 2 – Day 4 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 4646 Day 2 – Day 4 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 Addition Counter: 40

Day 2 – Day 4 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 4747 Day 2 – Day 4 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 Addition Counter: 41

Day 2 – Day 4 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 4848 Day 2 – Day 4 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 + 1 = -3 Max Sum: 10 Addition Counter: 42 Maximum Subsequence: Day 1 - 7 No changes

Day 2 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 4949 Day 2 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 Addition Counter: 43

Day 2 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 5050 Day 2 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 Addition Counter: 44

Day 2 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 5151 Day 2 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 + 1 Addition Counter: 45

Day 2 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 5252 Day 2 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 + 1 + 9 = 6 Max Sum: 10 Addition Counter: 46 Maximum Subsequence: Day 1 - 7 No changes

Day 2 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 5353 Day 2 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 Addition Counter: 47

Day 2 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 5454 Day 2 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 Addition Counter: 48

Day 2 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 5555 Day 2 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 + 1 Addition Counter: 49

Day 2 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 5656 Day 2 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 + 1 + 9 Addition Counter: 50

Day 2 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 5757 Day 2 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 + 1 + 9 – 2 = 4 Max Sum: 10 Addition Counter: 51 Maximum Subsequence: Day 1 - 7 No changes

Day 2 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 5858 Day 2 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 Addition Counter: 52

Day 2 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 5959 Day 2 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 Addition Counter: 53

Day 2 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 6060 Day 2 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 + 1 Addition Counter: 54

Day 2 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 6161 Day 2 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 + 1 + 9 Addition Counter: 55

Day 2 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 6262 Day 2 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 7 + 1 + 9 – 2 Addition Counter: 56

Day 2 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 6363 Day 2 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 + 1 + 9 – 2 + 3 = 7 Max Sum: 10 Addition Counter: 57 Maximum Subsequence: Day 1 - 7 No changes

Day 2 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 6464 Day 2 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 Addition Counter: 58

Day 2 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 6565 Day 2 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 Addition Counter: 59

Day 2 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 6666 Day 2 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 + 1 Addition Counter: 60

Day 2 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 6767 Day 2 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 + 1 + 9 Addition Counter: 61

Day 2 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 6868 Day 2 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 + 1 + 9 – 2 Addition Counter: 62

Day 2 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 6969 Day 2 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 + 1 + 9 – 2 + 3 Addition Counter: 63

Day 2 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 7070 Day 2 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 4 – 8 + 1 + 9 – 2 + 3 – 1 = 6 Max Sum: 10 Addition Counter: 64 Maximum Subsequence: Day 1 - 7 No changes

Day 3 – Day 3 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 7171 Day 3 – Day 3 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 = -8 Max Sum: 10 Addition Counter: 65 Maximum Subsequence: Day 1 - 7 No changes

Day 3 – Day 4 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 7272 Day 3 – Day 4 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 = -8 Addition Counter: 66

Day 3 – Day 4 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 7373 Day 3 – Day 4 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 + 1 = -7 Max Sum: 10 Addition Counter: 67 Maximum Subsequence: Day 1 - 7 No changes

Day 3 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 7474 Day 3 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 = -8 Addition Counter: 68

Day 3 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 7575 Day 3 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 + 1 Addition Counter: 69

Day 3 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 7676 Day 3 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 + 1 + 9 = 2 Max Sum: 10 Addition Counter: 70 Maximum Subsequence: Day 1 - 7 No changes

Day 3 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 7777 Day 3 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 Addition Counter: 71

Day 3 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 7878 Day 3 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 + 1 Addition Counter: 72

Day 3 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 7979 Day 3 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 + 1 + 9 Addition Counter: 73

Day 3 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 8080 Day 3 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 + 1 + 9 – 2 = 0 Max Sum: 10 Addition Counter: 74 Maximum Subsequence: Day 1 - 7 No changes

Day 3 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 8181 Day 3 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 Addition Counter: 75

Day 3 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 8282 Day 3 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 + 1 Addition Counter: 76

Day 3 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 8383 Day 3 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 + 1 + 9 Addition Counter: 77

Day 3 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 8484 Day 3 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 + 1 + 9 – 2 Addition Counter: 78

Day 3 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 8585 Day 3 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 + 1 + 9 – 2 + 3 = 3 Max Sum: 10 Addition Counter: 79 Maximum Subsequence: Day 1 - 7 No changes

Day 3 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 8686 Day 3 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 Addition Counter: 80

Day 3 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 8787 Day 3 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 + 1 Addition Counter: 81

Day 3 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 8888 Day 3 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 + 1 + 9 Addition Counter: 82

Day 3 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 8989 Day 3 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 + 1 + 9 – 2 Addition Counter: 83

Day 3 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 9090 Day 3 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 + 1 + 9 – 2 + 3 Addition Counter: 84

Day 3 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 9191 Day 3 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 8 + 1 + 9 – 2 + 3 – 1 = 2 Max Sum: 10 Addition Counter: 85 Maximum Subsequence: Day 1 - 7 No changes

Day 4 – Day 4 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 9292 Day 4 – Day 4 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 1 = 1 Max Sum: 10 Addition Counter: 86 Maximum Subsequence: Day 1 - 7 No changes

Day 4 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 9393 Day 4 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 1 Addition Counter: 87

Day 4 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 9494 Day 4 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 1 + 9 = 10 Max Sum: 10 Addition Counter: 88 Maximum Subsequence: Day 1 - 7 No changes

Day 4 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 9595 Day 4 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 1 Addition Counter: 89

Day 4 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 9696 Day 4 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 1 + 9 Addition Counter: 90

Day 4 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 9797 Day 4 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 1 + 9 – 2 = 8 Max Sum: 10 Addition Counter: 91 Maximum Subsequence: Day 1 - 7 No changes

Day 4 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 9898 Day 4 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 1 Addition Counter: 92

Day 4 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 9999 Day 4 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 1 + 9 Addition Counter: 93

Day 4 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 100100100 Day 4 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 1 + 9 – 2 Addition Counter: 94

Day 4 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 101101101 Day 4 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 1 + 9 – 2 + 3 = 11 Max Sum: 10 Addition Counter: 95 Maximum Subsequence: Day 1 - 7 Max Sum is 11 and Maximum Subsequence is now Day 4 – Day 7

Day 4 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 102102102 Day 4 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 1 Addition Counter: 96

Day 4 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 103103103 Day 4 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 1 + 9 Addition Counter: 97

Day 4 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 104104104 Day 4 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 1 + 9 – 2 Addition Counter: 98

Day 4 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 105105105 Day 4 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 1 + 9 – 2 + 3 Addition Counter: 99

Day 4 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 106106106 Day 4 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 1 + 9 – 2 + 3 – 1 = 10 Max Sum: 11 Addition Counter: 100 Maximum Subsequence: Day 4 - 7 No changes

Day 5 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 107107107 Day 5 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 9 = 9 Max Sum: 11 Addition Counter: 101 Maximum Subsequence: Day 4 - 7 No changes

Day 5 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 108108108 Day 5 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 9 Addition Counter: 102

Day 5 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 109109109 Day 5 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 9 – 2 = 7 Max Sum: 11 Addition Counter: 103 Maximum Subsequence: Day 4 - 7 No changes

Day 5 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 110110110 Day 5 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 9 Addition Counter: 104

Day 5 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 111111111 Day 5 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 9 – 2 Addition Counter: 105

Day 5 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 112112112 Day 5 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 9 – 2 + 3 = 10 Max Sum: 11 Addition Counter: 106 Maximum Subsequence: Day 4 - 7 No changes

Day 5 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 113113113 Day 5 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 9 Addition Counter: 107

Day 5 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 114114114 Day 5 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 9 – 2 Addition Counter: 108

Day 5 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 115115115 Day 5 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 9 – 2 + 3 Addition Counter: 109

Day 5 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 116116116 Day 5 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 9 – 2 + 3 – 1 = 9 Max Sum: 11 Addition Counter: 110 Maximum Subsequence: Day 4 - 7 No changes

Day 6 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 117117117 Day 6 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 2 = -2 Max Sum: 11 Addition Counter: 111 Maximum Subsequence: Day 1 - 7 No changes

Day 6 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 118118118 Day 6 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 2 Addition Counter: 112

Day 6 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 119119119 Day 6 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 2 + 3 = 1 Max Sum: 11 Addition Counter: 113 Maximum Subsequence: Day 4 - 7 No changes

Day 6 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 120120120 Day 6 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 2 Addition Counter: 114

Day 6 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 121121121 Day 6 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 2 + 3 Addition Counter: 115

Day 6 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 122122122 Day 6 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 2 + 3 – 1 = 0 Max Sum: 11 Addition Counter: 116 Maximum Subsequence: Day 4 - 7 No changes

Day 7 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 123123123 Day 7 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 = 3 Max Sum: 11 Addition Counter: 117 Maximum Subsequence: Day 4 - 7 No changes

Day 7 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 124124124 Day 7 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 Addition Counter: 118

Day 7 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 125125125 Day 7 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 + 3 – 1 = 2 Max Sum: 11 Addition Counter: 119 Maximum Subsequence: Day 4 - 7 No changes

Day 8 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 126126126 Day 8 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Start End Sum: 0 – 1 = -1 Max Sum: 11 Addition Counter: 120 Maximum Subsequence: Day 4 - 7 No changes

Analysis Each sub-sequence between green & red ptrs is aggregated, at most 8 addition counting operations per sub-sequence, … by using the black pointer There is 32 subsequences in total That is a lot of adding to do, don’t you think? Imagine having to find the maximum sub-sequence over100 days. Or, maybe 20,000 days. Given n days of stock data, the number of addition operations that you will perform using the workaholic approach will be in the ballpark of around n3 Computers have to do exactly the same computation!!

Improve! Do we really need to run the black/middle pointer over and over again on same numbers? As the red/right pointer moves cann’t we just add that number to the previous sum? Computers have to do exactly the same computation!!

The Conservative Approach The Workaholic approach requires a lot of addition operations So much, that it’s impractical to use for large data sets We can save a lot of time by using accumulated sums from the previous sub-sequences. Let us call this the Conservative approach. Photo source: http://www.cosmeo.com/login.cfm?CFID=12472906&CFTOKEN=15878700

Day 1 – Day 1 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 130130130 Task: black triangle on red?? Day 1 – Day 1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 0 + 3 = 3 Max Sum: 3 Maximum Subsequence: Day 1 – Day 1 Addition Counter: 1

Day 1 – Day 2 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 131131131 Day 1 – Day 2 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 3 + 4 = 7 Max Sum: 3 Maximum Subsequence: Day 1 – Day 1 Addition Counter: 2 Max Sum is now 7 and Maximum Subsequence is Day 1 – Day 2

Day 1 – Day 3 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 132132132 Day 1 – Day 3 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 7 – 8 = -1 Max Sum: 7 Maximum Subsequence: Day 1 – Day 2 Addition Counter: 3 No changes

Day 1 – Day 4 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 133133133 Day 1 – Day 4 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: -1 + 1 = 0 Max Sum: 7 Maximum Subsequence: Day 1 – Day 2 Addition Counter: 4 No changes

Day 1 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 134134134 Day 1 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 0 + 9 = 9 Max Sum: 7 Maximum Subsequence: Day 1 – Day 2 Addition Counter: 5 Max Sum is now 9 and Maximum Subsequence is Day 1 – Day 5

Day 1 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 135135135 Day 1 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 9 – 2 = 7 Max Sum: 9 Maximum Subsequence: Day 1 – Day 5 Addition Counter: 6 No changes

Day 1 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 136136136 Day 1 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 7 + 3 = 10 Max Sum: 9 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 7 Max Sum is now 10 and Maximum Subsequence is Day 1 – Day 7

Day 1 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 137137137 Day 1 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 10 – 1 = 9 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 8 No changes

Day 2 – Day 2 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 138138138 Day 2 – Day 2 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 0 + 4 = 4 Max Sum: 11 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 9 No changes

Day 2 – Day 3 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 139139139 Day 2 – Day 3 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 4 – 8 = -4 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 10 No changes

Day 2 – Day 4 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 140140140 Day 2 – Day 4 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: -4 + 1 = -3 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 11 No changes

Day 2 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 141141141 Day 2 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: -3 + 9 = 6 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 12 No changes

Day 2 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 142142142 Day 2 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 6 – 2 = 4 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 13 No changes

Day 2 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 143143143 Day 2 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 4 + 3 = 7 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 14 No changes

Day 2 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 144144144 Day 2 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 7 – 1 = 6 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 15 No changes

Day 3 – Day 3 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 145145145 Day 3 – Day 3 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 0 – 8 = 8 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 16 No changes

Day 3 – Day 4 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 146146146 Day 3 – Day 4 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: -8 + 1 = -7 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 17 No changes

Day 3 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 147147147 Day 3 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: -7 + 9 = 2 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 18 No changes

Day 3 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 148148148 Day 3 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 2 – 2 = 0 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 19 No changes

Day 3 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 149149149 Day 3 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 0 + 3 = 3 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 20 No changes

Day 3 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 150150150 Day 3 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 3 – 1 = 2 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 21 No changes

Day 4 – Day 4 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 151151151 Day 4 – Day 4 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 0 + 1 = 1 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 22 No changes

Day 4 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 152152152 Day 4 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 1 + 9 = 10 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 23 No changes

Day 4 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 153153153 Day 4 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 10 – 2 = 8 Max Sum: 10 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 24 No changes

Day 4 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 154154154 Day 4 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 8 + 3 = 11 Max Sum: 11 Maximum Subsequence: Day 1 – Day 7 Addition Counter: 25 Max Sum is 11 and Maximum Subsequence is now Day 4 – Day 7

Day 4 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 155155155 Day 4 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 11 – 1 = 10 Max Sum: 11 Maximum Subsequence: Day 4 – Day 7 Addition Counter: 26 No changes

Day 5 – Day 5 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 156156156 No third black pointer any more Day 5 – Day 5 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 0 + 9 = 9 Max Sum: 11 Maximum Subsequence: Day 4 – Day 7 Addition Counter: 27 No changes

Day 5 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 157157157 Day 5 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 9 – 2 = 7 Max Sum: 11 Maximum Subsequence: Day 4 – Day 7 Addition Counter: 28 No changes

Day 5 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 158158158 Day 5 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 7 + 3 = 10 Max Sum: 11 Maximum Subsequence: Day 4 – Day 7 Addition Counter: 29 No changes

Day 5 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 159159159 Day 5 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 10 – 1 = 9 Max Sum: 11 Maximum Subsequence: Day 4 – Day 7 Addition Counter: 30 No changes

Day 6 – Day 6 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 160160160 Day 6 – Day 6 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 0 – 2 = -2 Max Sum: 11 Maximum Subsequence: Day 4 – Day 7 Addition Counter: 31 No changes

Day 6 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 161161161 Day 6 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: -2 + 3 = 1 Max Sum: 11 Maximum Subsequence: Day 4 – Day 7 Addition Counter: 32 No changes

Day 6 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 162162162 Day 6 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 1 – 1 = 0 Max Sum: 11 Maximum Subsequence: Day 4 – Day 7 Addition Counter: 33 No changes

Day 7 – Day 7 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 163163163 Day 7 – Day 7 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 0 + 3 = 3 Max Sum: 11 Maximum Subsequence: Day 4 – Day 7 Addition Counter: 34 No changes

Day 7 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 164164164 Day 7 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 3 – 1 = 2 Max Sum: 11 Maximum Subsequence: Day 4 – Day 7 Addition Counter: 35 No changes

Day 8 – Day 8 3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 165165165 Day 8 – Day 8 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum: 0 – 1 = -1 Max Sum: 11 Maximum Subsequence: Day 4 – Day 7 Addition Counter: 36 No changes

Some more Analysis We are now only required to do 1 additional counting operation for each sub-sequence compared to at most 8 in the workaholic approach For larger data sets, the number of addition operations will be in the ball park of around n2, where n is the size of the set. Workaholic approach had this as n3

The Butcher’s Approach The Conservative approach reduced the number of additions we needed to do by a factor of n. This is good, but we can do even better than this. Instead of solving the entire problem as a whole, how about cutting the problem down into smaller pieces that we can solve that doesn’t require too much addition, solve those problems, and combine the results to get the final result. Let us call this approach the Butcher’s approach. Photo source: http://www.reluctantgourmet.com/steak_information.htm

Combine results from smaller problems Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1

Solve Max Subsequence for Day 1 – Day 4 3 4 -8 1 9 -2 3 -1 Left Max Sum (Day 1 – Day 4) = 7 Left Max Subsequence = Day 1 – Day 2 Addition Counter: 9

Solve Max Subsequence for Day 5 – Day 8 3 4 -8 1 9 -2 3 -1 Left Max Sum (Day 1 – Day 4) = 7 Right Max Sum (Day 5 – Day 8) = 10 Left Max Subsequence = Day – Day 2 Right Max Subsequence = Day 5 – Day 7 Addition Counter: 18

Which side has the Largest Sum? Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Left Max Sum (Day 1 – Day 4) = 7 Right Max Sum (Day 5 – Day 8) = 10 Left Max Subsequence = Day – Day 2 Right Max Subsequence = Day 5 – Day 7 Left Max Sum > Right Max Sum? No Addition Counter: 18

Which side has the Largest Sum? Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Left Max Sum (Day 1 – Day 4) = 7 Right Max Sum (Day 5 – Day 8) = 10 Left Max Subsequence = Day – Day 2 Right Max Subsequence = Day 5 – Day 7 Left Max Sum > Right Max Sum? No Max Side Subsequence = Day 5 – Day 7 Addition Counter: 18

Find the Middle Max Subsequence Find the starting point Max Side Subsequence = Day 5 – Day 7 Left Max Sum = 7 Right Max Sum = 10 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum = 1 Left Max Border Sum = 0 Mid Start = Day 4 Left Max Border Sum is now 1 Addition Counter: 18

Find the Middle Max Subsequence Find the starting point Max Side Subsequence = Day 5 – Day 7 Left Max Sum = 7 Right Max Sum = 10 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum = 1 – 8 = -7 Left Max Border Sum = 1 Mid Start = Day 4 No changes made to Left Max Border Sum Addition Counter: 19

Find the Middle Max Subsequence Find the starting point Max Side Subsequence = Day 5 – Day 7 Left Max Sum = 7 Right Max Sum = 10 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum = -7 + 4 = -3 Left Max Border Sum = 1 Mid Start = Day 4 No changes made to Left Max Border Sum Addition Counter: 20

Find the Middle Max Subsequence Find the starting point Max Side Subsequence = Day 5 – Day 7 Left Max Sum = 7 Right Max Sum = 10 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Sum = -3 + 3 = 0 Left Max Border Sum = 1 Mid Start = Day 4 No changes made to Left Max Border Sum Addition Counter: 21

Find the Middle Max Subsequence Find the ending point Max Side Subsequence = Day 5 – Day 7 Left Max Sum = 7 Right Max Sum = 10 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Left Max Border Sum = 1 Sum = 9 Mid Start = 4 Right Max Border Sum = 0 Mid End= Day 5 Right Max Border Sum is now 9 Addition Counter: 22

Find the Middle Max Subsequence Find the ending point Max Side Subsequence = Day 5 – Day 7 Left Max Sum = 7 Right Max Sum = 10 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Left Max Border Sum = 1 Sum = 9 – 2 = 7 Mid Start = 4 Right Max Border Sum = 9 Mid End= Day 5 No changes made to Right Max Border Sum Addition Counter: 23

Find the Middle Max Subsequence Find the ending point Max Side Subsequence = Day 5 – Day 7 Left Max Sum = 7 Right Max Sum = 10 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Left Max Border Sum = 1 Sum = 7 + 3 = 10 Mid Start = 4 Right Max Border Sum = 9 Mid End= Day 5 Right Max Border Sum is now 10 and Mid End is Day 7 Addition Counter: 24

Find the Middle Max Subsequence Find the ending point Max Side Subsequence = Day 5 – Day 7 Left Max Sum = 7 Right Max Sum = 10 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Left Max Border Sum = 1 Sum = 10 – 1 = 9 Mid Start = 4 Right Max Border Sum = 10 Mid End= Day 7 No changes made to Right Max Border Sum Addition Counter: 25

Mid Max Sum = Left Max Border Sum + Right Max Border Sum = 11 Finding Middle Max Subsequence Compute Middle Max Sum Max Side Subsequence = Day 5 – Day 7 Left Max Sum = 7 Right Max Sum = 10 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Left Max Border Sum = 1 Right Max Border Sum = 10 Mid Start = 4 Mid End= Day 7 Mid Max Sum = Left Max Border Sum + Right Max Border Sum = 11 Range: Day 4 through Day 7 Addition Counter: 25

Find Max Subsequence for Day 1 – Day 8 Compare subsequence sums Max Side Subsequence = Day 5 – Day 7 Left Max Sum = 7 Right Max Sum = 10 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Left Max Border Sum = 1 Right Max Border Sum = 10 Mid Start = 4 Mid End= Day 7 Mid Max Sum = Left Max Border Sum + Right Max Border Sum = 11 Mid Max Sum > Max Side Sum? Yes Addition Counter: 25

Find Max Subsequence for Day 1 – Day 8 Max Side Subsequence = Day 5 – Day 7 Left Max Sum = 7 Right Max Sum = 10 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 Left Max Border Sum = 1 Right Max Border Sum = 10 Mid Start = 4 Mid End= Day 7 Left Max Border Sum + Right Max Border Sum = 11 Max Sum is 11 Max Subsequence is Day 4 – Day 7 Addition Counter: 25

Solving for Left Half Addition Counter: Day 1 Day 2 Day 3 Day 4 Day 5 -8 1 9 -2 3 -1 Addition Counter:

Solving for Left Half Addition Counter: Day 1 Day 2 Day 3 Day 4 Day 5 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Addition Counter:

Solving for Left Half Addition Counter: Day 1 Day 2 Day 3 Day 4 Day 5 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Day 1 Day 2 3 4 Addition Counter:

Solving for Left Half Addition Counter: Day 1 Day 2 Day 3 Day 4 Day 5 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Day 1 Day 2 3 4 Day 1 3 Addition Counter:

Solving for Left Half Addition Counter: Day 1 Day 2 Day 3 Day 4 Day 5 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Day 1 Day 2 3 4 Day 1 3 > 0 ? Yes Addition Counter:

Solving for Left Half Addition Counter: Day 1 Day 2 Day 3 Day 4 Day 5 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Day 1 Day 2 3 4 Left Max Sum = 3 Addition Counter:

Solving for Left Half Addition Counter: Day 1 Day 2 Day 3 Day 4 Day 5 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Day 1 Day 2 3 4 Day 2 Left Max Sum = 3 4 > 0 ? Yes Addition Counter:

Solving for Left Half Addition Counter: Day 1 Day 2 Day 3 Day 4 Day 5 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Day 1 Day 2 3 4 Left Max Sum = 3 Left Max Subsequence = Day 1 – Day 1 Right Max Sum = 4 Right Max Subsequence = Day 2 – Day 2 Max Side Subsequence = Day 2 – Day 2 Addition Counter:

Solving for Left Half Addition Counter: 1 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Max Side Subsequence = Day 2 – Day 2 Left Max Sum = 3 Right Max Sum = 4 Day 1 Day 2 3 4 Left Max Border Sum = 0 + 3 Addition Counter: 1 midStart = 1

Solving for Left Half Addition Counter: 2 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Max Side Subsequence = Day 2 – Day 2 Left Max Sum = 3 Right Max Sum = 4 Day 1 Day 2 3 4 Left Max Border Sum = 3 Right Max Border Sum = 0 + 4 Addition Counter: 2 midStart = 1 midStart = 2

Solving for Left Half Addition Counter: 2 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Max Side Subsequence = Day 2 – Day 2 Left Max Sum = 3 Right Max Sum = 4 Day 1 Day 2 3 4 Left Max Border Sum = 3 Right Max Border Sum = 0 + 4 midStart = 1 midStart = 2 Addition Counter: 2 Left Max Border Sum + Right Max Border Sum = 7 Max Sum is 7 Maximum Subsequence is Day 1 – Day 2

Solving for Left Half Addition Counter: 2 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Left Max Sum = 7 Left Max Subsequence = Day 1 – Day 2 Day 3 Day 4 -8 1 Addition Counter: 2

Solving for Left Half Addition Counter: 2 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Left Max Sum = 7 Left Max Subsequence = Day 1 – Day 2 Day 3 Day 4 -8 1 Day 3 -8 Addition Counter: 2

Solving for Left Half Addition Counter: 2 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Left Max Sum = 7 Left Max Subsequence = Day 1 – Day 2 Day 3 Day 4 -8 1 Day 4 1 Addition Counter: 2 > 0 ? Yes

Solving for Left Half Addition Counter: 2 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Left Max Sum = 7 Left Max Subsequence = Day 1 – Day 2 Day 3 Day 4 -8 1 Left Max Sum = 0 Left Max Subsequence = Day 3 – Day 3 Right Max Sum = 1 Right Max Subsequence = Day 4 – Day 4 Addition Counter: 2 Max Side Subsequence = Day 4 – Day 4

Solving for Left Half Addition Counter: 3 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Left Max Sum = 7 Left Max Subsequence = Day 1 – Day 2 Max Side Subsequence = Day 4 – Day 4 Left Max Sum = 0 Right Max Sum = 1 Day 3 Day 4 -8 1 Addition Counter: 3 Left Max Border Sum = 0 Mid Start = Day 3

Solving for Left Half Addition Counter: 4 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Left Max Sum = 7 Left Max Subsequence = Day 1 – Day 2 Max Side Subsequence = Day 4 – Day 4 Left Max Sum = 0 Right Max Sum = 1 Day 3 Day 4 -8 1 Addition Counter: 4 Right Max Border Sum = 1 Left Max Border Sum = 0 Mid Start = Day 3 Mid End = Day 4

Solving for Left Half Addition Counter: 5 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Left Max Sum = 7 Left Max Subsequence = Day 1 – Day 2 Max Side Subsequence = Day 4 – Day 4 Left Max Sum = 0 Right Max Sum = 1 Day 3 Day 4 -8 1 Addition Counter: 5 Left Max Border Sum = 0 Right Max Border Sum = 1 Mid Start = Day 3 Mid End = Day 4 Max Sum is 1 Maximum Subsequence = Day 3 – Day 4

Solving for Left Half Addition Counter: 5 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Left Max Sum = 7 Left Max Subsequence = Day 1 – Day 2 Right Max Sum = 1 Right Max Subsequence = Day 3 – Day 4 Max Side Subsequence = Day 1 – Day 2 Addition Counter: 5

Solving for Left Half Addition Counter: 6 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Max Side Subsequence = Day 1 – Day 2 Left Max Sum = 7 Right Max Sum = 1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Sum = 4 Left Max Border Sum = 0 Mid Start = Day 2 Left Max Border Sum is now 4 Addition Counter: 6

Solving for Left Half Addition Counter: 7 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Max Side Subsequence = Day 1 – Day 2 Left Max Sum = 7 Right Max Sum = 1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Sum = 4 + 3 = 7 Left Max Border Sum = 4 Mid Start = Day 2 Left Max Border Sum is now 7 and Mid Start is now Day 1 Addition Counter: 7

Solving for Left Half Addition Counter: 8 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Max Side Subsequence = Day 1 – Day 2 Left Max Sum = 7 Right Max Sum = 1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Left Max Border Sum = 7 Sum = -8 Mid Start = Day 1 Mid End = Day 3 Right Max Border Sum = 0 No change to Right Max Border Sum Addition Counter: 8

Solving for Left Half Addition Counter: 9 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Max Side Subsequence = Day 1 – Day 2 Left Max Sum = 7 Right Max Sum = 1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Left Max Border Sum = 7 Sum = -8 + 1 = --7 Right Max Border Sum = 0 Mid Start = Day 1 Mid End = Day 3 No change to Right Max Border Sum or Mid End Addition Counter: 9

Solving for Left Half Addition Counter: 9 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Max Side Subsequence = Day 1 – Day 2 Left Max Sum = 7 Right Max Sum = 1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Left Max Border Sum = 7 Right Max Border Sum = 0 Mid Start = Day 1 Mid End = Day 3 Addition Counter: 9

Solving for Left Half Addition Counter: 9 Day 1 Day 2 Day 3 Day 4 -8 1 9 -2 3 -1 Max Side Subsequence = Day 1 – Day 2 Left Max Sum = 7 Right Max Sum = 1 Day 1 Day 2 Day 3 Day 4 3 4 -8 1 Left Max Border Sum = 7 Right Max Border Sum = 0 Mid Start = Day 1 Mid End = Day 3 Left Max Border Sum + Right Max Border Sum = 7 Addition Counter: 9 Max Sum is 7 Max Subsequence is Day 1 – Day 2

Analysis of Butcher’s Approach The amount of addition needed for the Butcher’s approach compared to the Workaholic and Conservative approach is extremely small: The simplest maximum subsequence problem is one involving one day. These small problems require no addition. The amount of addition needed from smaller sub problems to slightly larger sub problems grows slowly because we’re doing fewer re-calculations of the same numbers than the last two approaches. We’re simply combining results of the smaller problems. For larger sized problems, the amount of addition that needs to be done is around the ball park of n*log2(n)

Fourth Algorithm: The Smart A$$ Approach We can do even better than the Butcher’s method by making a key observation about the maximum sub-sequence problem – we will NEVER want a negative stock sum! If that’s the case, then we can just ignore additions that become negative when we solve the problem. I call this approach the Smart A$$ approach! This algorithm is very similar to the Conservative approach. However unlike conservative approach, we ignore subsequences with negative accumulated sums. Photo source: http://www.toonpool.com/cartoons/speed_57641

3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 211211211 mstart mend Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 cstart cend Sum: 3 Sum < 0? No Addition Counter: 1 Max Sum: 3 Maximum Subsequence: Day 1 – Day 1

3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 212212212 mstart mend Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 cstart cend Sum: 3 + 4 = 7 Sum < 0? No Max Sum was: 3 Addition Counter: 2 Maximum Subsequence was: Day 1 – Day 1 Max Sum is now 7 and Maximum Subsequence is Day 1 – Day 2

3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 213213213 mstart mend Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 cend cstart Sum: 7 – 8 = -1 Sum < 0? Yes Max Sum: 7 Addition Counter: 3 Maximum Subsequence: Day 1 – Day 2 Sum is now 0

3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 214214214 mstart mend Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 cend cstart Sum: 0 + 1 = 1 Sum < 0? No Max Sum: 7 Addition Counter: 4 Maximum Subsequence: Day 1 – Day 2 No changes

3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 215215215 mstart mend Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 cstart cend Sum: 1 + 9 = 10 Sum < 0? No Max Sum: 7 Addition Counter: 5 Maximum Subsequence: Day 1 – Day 2 Max Sum is now 10 and Maximum Subsequence is Day 4 – Day 5

3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 216216216 mstart mend Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 cstart cend Sum: 10 – 2 = 8 Sum < 0? No Max Sum: 10 Addition Counter: 6 Maximum Subsequence: Day 4 – Day 5 No changes

3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 217217217 mstart mend Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 cstart cend Sum: 8 + 3 = 11 Sum < 0? No Max Sum: 10 Addition Counter: 7 Maximum Subsequence: Day 4 – Day 5 Max Sum is 11 and Max Subsequence is Day 4 – Day 7

3 4 -8 1 9 -2 3 -1 Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 218218218 Task: remove black triangle mstart mend Day 1 Day 2 Day 3 Day 4 Day 5 Day 6 Day 7 Day 8 3 4 -8 1 9 -2 3 -1 cstart cend Sum:11 – 1 = 10 Sum < 0? No Max Sum: 11 Addition Counter: 8 Maximum Subsequence: Day 4 – Day 7 No changes

Last But Not Least – The Analysis The total number of addition operations needed for the Smart A$$ approach is…. 8. Amazing isn’t it! Workaholic = 120, Conservative = 36, Butcher’s = 25 For 1000 days: Workaholic = 167,167,000 Conservative = 500,500 Butcher’s = 9,976 SmartA$$ = 1,000 The Smart A$$ approach is the most efficient algorithm The amount of addition required is around the size of the data set n.

Thanks, but! Daryle J. Serrant Debasis Mitra

Your feedback will be much appreciated. 1. Is this talk useful to you? 2. If yes, can you describe, how? 3. If no, can you provide any suggestion on what we needed to do to explain algorithms more? 5. Any suggestion on where else may we present this? 6. Do you have any question for us? Debasis Mitra, Computer Science, FIT – dmitra@cs.fit.edu Daryle J. Serrant – serrantd2008@my.fit.edu