CS 312: Algorithm Analysis Lecture #1: Algorithms and Efficiency This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.

Slides:



Advertisements
Similar presentations
Theory of Computing Lecture 1 MAS 714 Hartmut Klauck.
Advertisements

Lecture 1: Overview CMSC 201 Computer Science 1 (Prof. Chang version)
COEN 352 Data structures and Algorithms R. Dssouli.
Introduction to Computer Programming in C
CS150 Introduction to Computer Science 1 Professor: Chadd Williams.
Algorithms and Problem Solving-1 Algorithms and Problem Solving.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
CS /29/2004 (Recitation Objectives) and Computer Science and Objects and Algorithms.
CS223 Algorithms D-Term 2013 Instructor: Mohamed Eltabakh WPI, CS Introduction Slide 1.
CS Algorithm Analysis1 Algorithm Analysis - CS 312 Professor Tony Martinez.
CS 312: Algorithm Analysis Lecture #3: Algorithms for Modular Arithmetic, Modular Exponentiation This work is licensed under a Creative Commons Attribution-Share.
BIT 115: Introduction To Programming1 Sit in front of a computer Log in –Username: 230class –password: –domain: student Bring up the course web.
CS 312: Algorithm Analysis
COMP Introduction to Programming Yi Hong May 13, 2015.
CS 103 Discrete Structures Lecture 01 Introduction to the Course
CS 312: Algorithm Design & Analysis Lecture #34: Branch and Bound Design Options for Solving the TSP: Tight Bounds This work is licensed under a Creative.
COMP 200 Elements of Computer Science COMP 130 Elements of Algorithms & Computation John Greiner Stephen Wong.
Making Connections Through the Grades in Mathematics
Algorithmic Problem Solving CMSC 201 Adapted from slides by Marie desJardins (Spring 2015 Prof Chang version)
CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.
CS161 Topic #21 CS161 Introduction to Computer Science Topic #2.
CS 390 Introduction to Theoretical Computer Science.
MA/CSSE 473 Day 02 Some Numeric Algorithms and their Analysis.
Analysis of Algorithms
Introduction Algorithms and Conventions The design and analysis of algorithms is the core subject matter of Computer Science. Given a problem, we want.
CS 312: Algorithm Analysis Lecture #8: Non-Homogeneous Recurrence Relations This work is licensed under a Creative Commons Attribution-Share Alike 3.0.
1 8/29/05CS150 Introduction to Computer Science 1 Professor: Shereen Khoja
CS 140 Computer Programming (I) Second semester (3 credits) Imam Mohammad bin Saud Islamic University College of Computer Science and Information.
CS 312: Algorithm Design & Analysis Lecture #23: Making Optimal Change with Dynamic Programming Slides by: Eric Ringger, with contributions from Mike Jones,
CS 312: Algorithm Design & Analysis Lecture #12: Average Case Analysis of Quicksort This work is licensed under a Creative Commons Attribution-Share Alike.
Major objective of this course is: Design and analysis of modern algorithms Different variants Accuracy Efficiency Comparing efficiencies Motivation thinking.
CS 312: Algorithm Analysis Lecture #1: Algorithms and Efficiency This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.
Data Structures and Algorithms Introduction to Algorithms M. B. Fayek CUFE 2006.
Design & Analysis of Algorithms Lecture 1 Introduction.
CS 312: Algorithm Design & Analysis Lecture #24: Optimality, Gene Sequence Alignment This work is licensed under a Creative Commons Attribution-Share Alike.
CS 312: Algorithm Design & Analysis Lecture #2: Asymptotic Notation This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported.
CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.
Algorithm Analysis CS 400/600 – Data Structures. Algorithm Analysis2 Abstract Data Types Abstract Data Type (ADT): a definition for a data type solely.
MA/CSSE 473 Day 02 Some Numeric Algorithms and their Analysis.
Copyright © 2007 Pearson Addison-Wesley. All rights reserved. Chapter 1 Introduction.
ICS202 Data Structures King Fahd University of Petroleum & Minerals College of Computer Science & Engineering Information & Computer Science Department.
Data Structures and Algorithms Dr. Tehseen Zia Assistant Professor Dept. Computer Science and IT University of Sargodha Lecture 1.
1 Algorithms  Algorithms are simply a list of steps required to solve some particular problem  They are designed as abstractions of processes carried.
The Beauty and Joy of Computing Lecture #6 Algorithms I UC Berkeley EECS Sr Lecturer SOE Dan Garcia.
CS404 Design and Analysis of Algorithms BBy DDr. M V S Peri Sastry BB.E, PhD(BITS-Pilani)
CS 312: Algorithm Analysis Lecture #7: Recurrence Relations a.k.a. Difference Equations Slides by: Eric Ringger, with contributions from Mike Jones, Eric.
CS 312: Algorithm Analysis Lecture #8: Non-Homogeneous Recurrence Relations This work is licensed under a Creative Commons Attribution-Share Alike 3.0.
CS 312: Algorithm Analysis Lecture #33: Branch and Bound, Job Assignment This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported.
CS 312: Algorithm Analysis
CS 312: Algorithm Analysis Lecture #31: Linear Programming: the Simplex Algorithm, part 2 This work is licensed under a Creative Commons Attribution-Share.
CS 312: Algorithm Analysis Lecture #35: Branch and Bound Design Options - State Spaces Slides by: Eric Ringger, with contributions from Mike Jones, Eric.
CS 312: Algorithm Analysis Lecture #31: Linear Programming: the Simplex Algorithm, part 2 This work is licensed under a Creative Commons Attribution-Share.
DATA STRUCTURES (CS212D) Overview & Review Instructor Information 2  Instructor Information:  Dr. Radwa El Shawi  Room: 
Onlinedeeneislam.blogspot.com1 Design and Analysis of Algorithms Slide # 1 Download From
CS 312: Algorithm Analysis Lecture #4: Primality Testing, GCD This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.
Why do we study algorithms?. 2 First results are about bats and dolphins.
CS 312: Algorithm Analysis Lecture #9: Recurrence Relations - Change of Variable Slides by: Eric Ringger, with contributions from Mike Jones, Eric Mercer,
CS 312: Algorithm Design & Analysis Lecture #26: 0/1 Knapsack This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative.
CS 312: Algorithm Design & Analysis Lecture #29: Network Flow and Cuts This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported.
CS 312: Algorithm Analysis Lecture #30: Linear Programming: Intro. to the Simplex Algorithm This work is licensed under a Creative Commons Attribution-Share.
1.  A step by step process to solve any problem is called algorithm.  Algorithm is a process which take some values as input and provide us output.
Algorithms and Problem Solving
CSIS 104 –Intro. To Computer Science
Introduction to Algorithms
Objective of This Course
Data Structures and Algorithms CSE 465
Algorithms and Problem Solving
Algorithms Algorithm. [webster.com] A procedure for solving a mathematical problem (as of finding the greatest common divisor) in a finite number of steps.
Design and Analysis of Algorithms
Welcome to the most Amazing course there is 
Presentation transcript:

CS 312: Algorithm Analysis Lecture #1: Algorithms and Efficiency This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative Commons Attribution-Share Alike 3.0 Unported License Slides by: Eric Ringger, with contributions from Mike Jones, Eric Mercer, Sean Warnick

Introduction  Questionnaire  Prayer  Appointments: send to schedule

Thought “Education is not the filling of a bucket but the lighting of a fire.” W. B. Yeats

Objectives for Today  Introduce course objectives  Quickly cover course info.  Define Problems, Solutions, and Algorithms  Introduce 3 Questions  Motivate the need for Analysis  Begin to understand algorithm Efficiency

Course Objectives  Develop your general problem solving skills!  Learn to perform theoretical analysis of algorithms  Learn to perform empirical analysis of algorithms  Compare theoretical and empirical analysis  Become familiar with several families of algorithms suitable for solving many kinds of problems  Use Visual Studio and C#

Course Info.  Tentative office hours: T/Th 4-5pm  Always available by appointment  Web page:  Syllabus – read today!  Regularly updated schedule  Due dates  Reading assignments  Homework assignments  Project instructions  Lecture notes  ringger AT cs DOT byu DOT edu

More Course Info.  Announcements:  Google Group: “byu-cs-312-ringger-announce”  For announcements  Mandatory  Forum for discussion:  Google Group: “byu-cs-312-ringger”  Highly recommended  Gradebook:

Assignments  7 projects  Almost daily Reading and Homework

Course Policies  Grades  Early  Late  Other See syllabus for details.

Another Thought “Computer Science is no more about computers than Astronomy is about telescopes.” -- Michael R. Fellows and Ian Parberry * * often misattributed to Edsger Dijkstra!

Definitions  What is a problem?  What is a solution?

Problems and Their Solutions Domain Input SetOutput Set Range Solution: Algorithm Computing Device Problem Instances Problem:

The Solution is the Algorithm Domain Input SetOutput Set Range Solution: Algorithm Computing Device Problem Instances Problem:

Properties of an Algorithm algorithm  “A finite sequence of well-defined steps for solving a problem.”  Required Properties?  Finite Domain  Finite Range  Must Terminate  Correctness  Relative to a Computation Device  Including Elementary Operations  Also Interested in Efficiency, both space and time

Teaching a Computer “A person well trained in computer science knows how to deal with algorithms: how to construct them, manipulate them, understand them, analyze them. This knowledge is preparation for much more than writing good computer programs; it is a general-purpose mental tool that will be a definite aid to the understanding of other subjects, whether they be chemistry, linguistics, or music, etc. The reason for this may be understood in the following way: It has often been said that a person does not really understand something until after teaching it to someone else. Actually, a person does not really understand something until after teaching it to a computer, i.e. expressing it as an algorithm… An attempt to formalize things as algorithms leads to a much deeper understanding than if we simply try to comprehend things in the traditional way.” Donald Knuth from Selected Papers on Computer Science,1996

A Little History Abu Jafar Mu ḥ ammad ibn Mūsā  ca. 780 – ca. 850  “al-Khwārizmī”  “the (man) of Khwarizm”, his place of origin  Khiva in present-day Uzbekistan and Turkmenistan  Persian astronomer and mathematician  Worked in Baghdad  Authored many texts on arithmetic and algebra  Methods for  Adding  Multiplying  Dividing  Extracting square roots  Calculating digits of   Properties:  Precise  Unambiguous  Mechanical  Efficient  Correct Leonardo of Pisa, “Fibonacci”  ca – ca  Coined “algorithms” in his honor.  Also imported Hindu-Arabic numeral system

Fibonacci 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, … Problem: compute the nth Fibonacci number, described here as mathematical recurrence relation

Solution: Algorithm

Three Questions 1.Is it correct? 2.How much time does it take, as a function of n? 3.Can we do better?

Is it Correct? function fib1(n) if n=0: return 0 if n=1: return 1 return fib1(n-1) + fib1(n-2)

How much time does it take as a function of n?

Can we do better?  Key idea: Store the intermediate results function fib2(n) if n=0: return 0 create an array f[0..n] f[0] = 0, f[1] = 1 for i = 2.. n: f[i] = f[i-1] + f[i-2] return f[n]

Our Problem Solving Strategy  For a given problem,  Pick a computational platform  Write the elementary operations for that platform and their costs  Write an algorithm to solve the problem  Ask the three questions:  Make sure that it is correct  Analyze the efficiency of the algorithm  Look for opportunities for improvement

 Cost of computing a solution to a problem of a particular size: – (Work) SpaceHow should this be measured? – TimeHow should this be measured? How much time does it take as a function of n?

 How to measure time cost?  Want to measure the algorithm, not the implementation  i.e., independent of:  computer speed  programming language  compiler quality, etc. Time Cost

Elementary Operation

Efficiency  Efficiency is how cost grows with the difficulty of the instance  “Difficulty” means “size” of the instance  i.e., the number of parameters needed to completely characterize the instance  Size of a list, matrix, etc.  Example: we expect the cost of sorting a list of 100 numbers to be worse than sorting 10 numbers

Orders of Growth  Suppose  How much longer will the algorithm run if we double the input size?

Orders of Growth  Implementation constant c op is irrelevant  Also, the coefficient ½ on C(n) cancelled  Order of growth describes the functional form of C(n) up to a constant multiple as n goes to infinity

Assignment  Read  Syllabus  Ch. 0, Sections 1.1 and 1.2 in the text  HW #0: Visual Studio  Install Visual Studio (follow directions in syllabus) or use an open lab machine  Try out C# using one of the tutorials (see links in syllabus)