Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
29 views

Discrete Math Intro of Algo

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.

Uploaded by

sumon
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
29 views

Discrete Math Intro of Algo

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.

Uploaded by

sumon
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

Algorithms: An Introduction

Computer Science is About Problem Solving


• 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. C0
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.

You might also like