The linear search algorithm takes as input a list of numbers and a target number. It iterates through the numbers, comparing each to the target. If a match is found, it returns the current position. If no match is found after iterating through all numbers, it returns that the number was not in the list.
The linear search algorithm takes as input a list of numbers and a target number. It iterates through the numbers, comparing each to the target. If a match is found, it returns the current position. If no match is found after iterating through all numbers, it returns that the number was not in the list.
• A Problem is specified by 1. The givens (a formulation) • A set of objects • Relations between them 2. The query • The information one is trying to extract from the formulation, the question to answer • An algorithm is a method or procedure that solves instances of a problem • ‘Algorithm’ is a distortion of Al-Khawarizmi, a Persian mathematician
Real World Computing World
Objects represented by… data Structures, ADTs, Classes Relations implemented with… relations & functions (e.g., predicates) Actions Implemented with… algorithms: a sequence of instructions Algorithms: Formal Definition • Definition: An algorithm is a sequence of unambiguous instructions for solving a problem. • Properties of an algorithm – Finite: the algorithm must eventually terminate – Complete: Always give a solution when one exists – Correct (sound): Always give a correct solution • For an algorithm to be an acceptable solution to a problem, it must also be effective. That is, it must give a solution in a ‘reasonable’ amount of time • Efficient= runs in polynomial time. Thus, effective efficient • There can be many algorithms to solve the same problem Algorithms: General Techniques • There are many broad categories of algorithms – Deterministic versus Randomized (e.g., Monte-Carlo) – Exact versus Approximation – Sequential/serial versus Parallel, etc. • Some general styles of algorithms include – Brute force (enumerative techniques, exhaustive search) – Divide & Conquer – Transform & Conquer (reformulation) – Greedy Techniques – Dynamic programming and so on.. Good Pseudo-Code: Example Intersection Input: Two finite sets A, B Output: A finite set C such that C = A B 1. C0 2. If |A|>|B| 3. Then Swap(A,B) 4. End 5. For every x A Do 6. If x B 7. Then C C {x} Union(C,{x}) 8. End 9. End 10. Return C Algorithms: Pseudo-Code • Algorithms are usually presented using pseudo-code • Bad pseudo-code – gives too many details or – is too implementation specific (i.e., actual C++ or Java code or giving every step of a sub-process such as set union) • Good pseudo-code – Is a balance between clarity and detail – Abstracts the algorithm – Makes good use of mathematical notation – Is easy to read and – Facilitates implementation (reproducible, does not hide away important information) Writing Pseudo-Code: Advice • Input/output must properly defined • All your variables must be properly initialized, introduced • Variables are instantiated, assigned using • All `commands' (while, if, repeat, begin, end) bold face \bf For i 1 to n Do • All functions in small caps Union(s,t) \sc • All constants in courier: pi 3.14 \tt • All variables in italic: temperature 78 (\it, \em) • LaTeX: Several algorithm formatting packages exist on WWW Designing an Algorithm • A general approach to designing algorithms is as follows – Understanding the problem, assess its difficulty – Choose an approach (e.g., exact/approximate, deterministic/ probabilistic) – (Choose appropriate data structures) – Choose a strategy – Prove 1. Termination 2. Completeness 3. Correctness/soundness – Evaluate complexity – Implement and test it – Compare to other known approach and algorithms Algorithm Example: Max • When designing an algorithm, we usually give a formal statement about the problem to solve • Problem – Given: a set A={a1,a2,…,an} of integers – Question: find the index i of the maximum integer ai • A straightforward idea is – Simply store an initial maximum, say a1 – Compare the stored maximum to every other integer in A – Update the stored maximum if a new maximum is ever encountered Pseudo-code of Max Max Input: A finite set A={a1,a2,…,an} of integers Output: An index i such that ai = max{a1,a2,…,an} 1. index 1 2. For i =2 to n Do 3. If ai > aindex 4. Then index i 5. End 6. End 7. Return aindex Flow chart • A diagram of the sequence of movements or actions of people or things involved in a complex system or activity or solving a particular problem. • A graphical representation of a computer program/algorithm in relation to its sequence of functions (as distinct from the data it processes). Simple algorithm for practices Assignment#1 • Write an algorithm and draw a corresponding flowchart to find the maximum element in a finite sequence of input. • Write an algorithm and draw a corresponding flowchart to search a number in the given list of numbers and also display its position by linear search.