Introduction to algorithmic problem solving - PowerPoint PPT Presentation

1 / 48
About This Presentation
Title:

Introduction to algorithmic problem solving

Description:

Problem = a set of questions concerning some entities representing ... algor = coolness (in Latin) algos = pain (in Greek) Algorithms - Lecture 1. 9. Examples ... – PowerPoint PPT presentation

Number of Views:638
Avg rating:3.0/5.0
Slides: 49
Provided by: UVT
Category:

less

Transcript and Presenter's Notes

Title: Introduction to algorithmic problem solving


1
  • LECTURE 1
  • Introduction to algorithmic problem solving

2
Outline
  • Problems solving
  • What is an algorithm ?
  • What properties an algorithm should have ?
  • Algorithms description
  • What types of data will be used ?
  • What are the basic operations ?

3
Problem solving
  • Problem a set of questions concerning some
    entities representing the universe of the problem
  • Problem statement description of the properties
    of the entities and of the relation between input
    data and problems solution
  • Solving method procedure to construct the
    solution starting from the input data

Input data
Solving method
Result
4
Problem solving
  • Example
  • Let a and b be two non-zero natural numbers.
    Find the natural number c having the following
    properties
  • c divides a and b (c is a common divisor of a and
    b)
  • c is greater than any other common divisor of a
    and b
  • Problems universe natural numbers (a and b
    represent the input data, c represents the
    result)
  • Problems statement (relations between the input
    data and the result) c is the greatest common
    divisor of a and b

5
Problem solving
  • Remark
  • This is a problem which asks for computing a
    function (that which associates to a pair of
    natural numbers the greatest common divisor)
  • Another kind of problems are those which ask to
    decide if the input data satisfy or not some
    properties.
  • Example verify if a natural number is a
    prime number or not
  • In both cases the solution can be obtained by
    using a computer only if it exists a method which
    after a finite number of operations produces the
    solution such a method is an algorithm

6
Outline
  • Problems solving
  • What is an algorithm ?
  • What properties an algorithm should have ?
  • What types of data will be used ?
  • What are the basic operations ?

7
What is an algorithm ?
  • Different definitions
  • Algorithm something like a cooking recipe used
    to solve problems
  • Algorithm step by step problem solving method
  • Algorithm finite sequence of operations applied
    to some input data in order to obtain the problem
    solution

8
What is the origin of the word ?
  • al-Khowarizmi - Persian mathematician (9th
    century)
  • algorism algorithm
  • More on etymology
  • algor coolness (in Latin)
  • algos pain (in Greek)

9
Examples
  • Algorithms in day by day life
  • using a phone
  • pick up the phone
  • dial the number
  • talk .
  • Algorithms in mathematics
  • Euclids algorithm (it is considered to be the
    first algorithm)
  • find the greatest common divisor of two numbers
  • Eratostenes algorithm
  • generate prime numbers in a range
  • Horners algorithm
  • compute the value of a polynomial

10
Outline
  • Problems solving
  • What is an algorithm ?
  • What properties an algorithm should have ?
  • Algorithms description
  • What types of data will be used ?
  • What are the basic operations ?

11
What properties an algorithm should have ?
  • Generality
  • Finiteness
  • Non-ambiguity
  • Efficiency

12
Generality
  • The algorithm applies to all instances of input
    data not only for particular instances
  • Example
  • Lets consider the problem of increasingly
    sorting a sequence of values.
  • For instance
  • (2,1,4,3,5)
    (1,2,3,4,5)
  • input data
    result

13
Generality (contd)
Description - compare the first two elements
if there are not in the desired order swap
them - compare the second and the third
element and do the same .. - continue until the
last two elements were compared
  • Method

2 1 4 3 5
Step 1
1 2 4 3 5
Step 2
1 2 4 3 5
Step 3
1 2 3 4 5
Step 4
The sequence has been ordered
14
Generality (contd)
  • Is this algorithm a general one ? I mean, does it
    ensure the ordering of ANY sequence of values ?
  • Answer NO
  • Counterexample
  • 3 2 1 4 5
  • 2 3 1 4 5
  • 2 1 3 4 5
  • 2 1 3 4 5
  • In this case the method doesnt work, thus it
    isnt a general sorting algorithm

15
What properties an algorithm should have ?
  • Generality
  • Finiteness
  • Non-ambiguity
  • Efficiency

16
Finiteness
  • An algorithm have to terminate, i.e. to stop
    after a finite number of steps
  • Example
  • Step1 Assign 1 to x
  • Step2 Increase x by 2
  • Step3 If x10 then STOP
  • else GO TO Step 2
  • How does this algorithm work ?

17
Finiteness (contd)
  • How does this algorithm work and what does it
    produce?
  • Step1 Assign 1 to x
  • Step2 Increase x by 2
  • Step3 If x10
  • then STOP
  • else Print x GO TO Step 2

x1
x3
x5
x7
x9
x11
The algorithm generates odd numbers but it never
stops !
18
Finiteness (contd)
  • The algorithm which generate all odd naturals
    smaller than 10
  • Step1 Assign 1 to x
  • Step2 Increase x by 2
  • Step3 If xgt10
  • then STOP
  • else Print x GO TO Step 2

19
What properties an algorithm should have ?
  • Generality
  • Finiteness
  • Non-ambiguity
  • Efficiency

20
Non-ambiguity
  • The operations in an algorithm must be rigorously
    specified
  • At the execution of each step one have to know
    exactly which is the next step which will be
    executed
  • Example
  • Step 1 Set x to value 0
  • Step 2 Either increment x with 1 or decrement x
    with 1
  • Step 3 If x?-2,2 then go to Step 2 else Stop.
  • As long as does not exist a criterion by which
    one can decide if
  • x is incremented or decremented, the sequence
    above cannot be
  • considered an algorithm.

21
Non-ambiguity (contd)
  • Lets modify the previous algorithm as follows
  • Step 1 Set x to value 0
  • Step 2 Flip a coin
  • Step 3 If one obtains head
  • then increment x with 1
  • else decrement x with 1
  • Step 3 If x?-2,2 then go to Step 2, else Stop.
  • This time the algorithm can be executed but
    different executions can be different
  • This is a so called random algorithm

22
What properties an algorithm should have ?
  • Generality
  • Finiteness
  • Non-ambiguity
  • Efficiency

23
Efficiency
  • An algorithm should use a reasonable amount of
    computing resources memory and time
  • Finiteness is not enough if we have to wait too
    much to obtain the result
  • Example
  • Lets consider a dictionary containing 50000
    words.
  • Write an algorithm that given a word as input
    returns all anagrams of that word appearing in
    the dictionary.
  • Example of an anagram ship -gt hips

24
Efficiency
  • First approach
  • Step 1 generate all anagrams of the word
  • Step 2 for each anagram search for its
    presence in the dictionary (using binary search)
  • Lets consider that
  • the dictionary contains n words
  • the analyzed word contains m letters
  • Rough estimate of the number of letters
    comparisons
  • number of anagrams m!
  • words comparisons for each anagram log2n
  • letters comparisons for each word m
  • m! mlog2n

25
Efficiency
  • Second approach
  • Step 1 sort the letters of the initial word
  • Step 2 for each word in the dictionary
    having m letters
  • Sort the letters of this word
  • Compare the sorted version of the word with the
    original word
  • Rough estimate of the number of operations
  • Sorting the initial word needs almost m2
    operations
  • Sequentially searching the dictionary and sorting
    each word of length m needs at most nm2
    comparisons
  • Comparing the sorted words requires at most nm
    comparisons
  • n m2 nm m2

26
Efficiency
  • What approach is better ?
  • First approach Second approach
  • m! m log2n n m2 n
    m m2
  • Example m12 (e.g. word algorithmics)
  • n50000 (number of words in
    dictionary)
  • 8 1010 8106
  • one comparison 1ms10-3 s
  • 24000 hours 2 hours

27
Outline
  • Problems solving
  • What is an algorithm ?
  • What properties an algorithm should have ?
  • Algorithms description
  • What types of data will be used ?
  • What are the basic operations ?

28
How can be described the algorithms ?
  • The methods for solving problems are usually
    described in a mathematical language
  • The mathematical language is not always adequate
    to describe algorithms because
  • Operations which seems to be elementary when are
    described in a mathematical language are not
    elementary when they have to be coded in a
    programming language
  • Example compute the value of a polynomial

29
How can be described the algorithms ?
  • There are two basic instruments to describe
    algorithms
  • Flowcharts
  • graphical description of the flow of processing
    steps
  • they are not very often used
  • however, sometimes are used to describe the
    overall structure of an application
  • Pseudocode
  • artificial language based on
  • vocabulary (set of keywords)
  • syntax (set of rules used to construct the
    languages phrases)
  • not so restrictive as a programming language

30
Why do we call it pseudocode ?
  • Because
  • It is similar to a programming language (code)
  • It is not so rigorous as a programming language
    (pseudo)
  • In pseudocode the phrases are
  • Statements (used to describe processing steps)
  • Declarations (used to specify the data)

31
What types of data will be used ?
  • Data container of information
  • Characteristics
  • name
  • value
  • constant (same value during the entire algorithm)
  • variable (the value varies during the algorithm)
  • type
  • simple (numbers, characters, truth values )
  • structured (array)

32
What types of data will be used ?
  • Arrays will be used to represent
  • Sets (e.g. 3,7,43,4,7)
  • the order of the elements doesnt matter
  • Sequences (e.g. (3,7,4) is not (3,4,7))
  • the order of the elements matters
  • Matrices
  • bidimensional arrays

3
7
4
3 7 4
Index 1 2 3
(1,1)
(1,2)
1
0
1
0
0
1
1
0
(2,1)
(2,2)
33
How can we specify the data ?
  • Simple data
  • Integers INTEGER ltvariablegt
  • Reals REAL ltvariablegt
  • Boolean BOOLEAN ltvariablegt
  • Characters CHAR ltvariablegt

34
How can we specify the data ?
  • Arrays
  • One dimensional
  • ltelements typegt ltnamegtn1..n2
  • (ex REAL x1..n)
  • Bi-dimensional
  • ltelements typegt ltnamegtm1..m2, n1..n2
  • (ex INTEGER A1..m,1..n)

35
How can we specify the data ?
  • Specifying elements
  • One dimensional
  • xi - i is the elements index
  • Bi-dimensional
  • Ai,j - i is the rows index, while j is the
    columns index

36
How can we specify the data ?
  • Specifying subarrays
  • Subarray contiguous portion of an array
  • One dimensional xi1..i2 (1lti1lti2ltn)
  • Bi dimensional Ai1..i2, j1..j2
  • (1lti1lti2ltm,
    1ltj1ltj2ltn)

1
n
1
j1
j2
i1
1
n
i2
i1
i2
m
37
Outline
  • Problems solving
  • What is an algorithm ?
  • What properties an algorithm should have ?
  • Algorithms description
  • What types of data will be used ?
  • What are the basic operations ?

38
What are the basic instructions ?
  • Instruction (statement)
  • action to be executed by
    the algorithm
  • There are two main types of instructions
  • Simple
  • Assignment (assigns a value to a variable)
  • Transfer (reads an input data writes a result)
  • Control (specifies which is the next step to be
    executed)
  • Structured .

39
Assignment
  • Aim give a value to a variable
  • Description
  • v ltexpressiongt
  • Expression syntactic construction used to
    describe a computation
  • It consists of
  • Operands variables, constant values
  • Operators arithmetical, relational, logical

40
Operators
  • Arithmetical
  • (addition), - (subtraction), (multiplication),
  • / (division), (power),
  • DIV (integer quotient),
  • MOD (remainder)
  • Relational
  • (equal), ! (different),
  • lt (less than), lt (less than or equal),
  • gt(greater than) gt (greater than or equal)
  • Logical
  • OR (disjunction), AND (conjunction), NOT
    (negation)

41
Input/Output
  • Aim
  • get the input data
  • output the results
  • Description
  • read v1,v2,
  • write e1,e2,

42
What are the instructions ?
  • Structured
  • Sequence of instructions
  • Conditional statement
  • Looping statement

43
Conditional statement
  • Aim allows choosing between two or many
    alternatives depending on the value of a/some
    condition(s)
  • General variant
  • if ltconditiongt then ltS1gt
  • else ltS2gt
  • endif
  • Simplified variant
  • if ltconditiongt then ltSgt
  • endif

True
False
condition
ltS1gt
ltS2gt
indentation
True
False
condition
ltSgt
44
Loop statements
  • Aim allows repeating a processing step
  • Example compute a sum
  • S 12in
  • A loop is characterized by
  • The processing step which have to be repeated
  • A stopping (or continuation) condition
  • Depending on the moment of analyzing the stopping
    condition there are two main loop statements
  • Preconditioned loops (WHILE loops)
  • Postconditioned loops (REPEAT loops)

45
WHILE loop
  • First, the condition is analyzed
  • If it is true then the statement is executed and
    the condition is analyzed again
  • If the condition becomes false the control of
    execution passes to the next statement in the
    algorithm
  • If the condition never becomes false then the
    loop is infinite
  • If the condition is false from the beginning then
    the statement inside the loop is not at all
    executed

False
ltconditiongt
Next statement
True
ltstatementgt
while ltconditiongt do
ltstatementgt endwhile
46
FOR loop
  • Sometimes the number of repetitions of a
    processing step is known
  • Then we can use a counting variable which varies
    from an initial value to a final value using a
    step value
  • Repetitions v2-v11 if step1

vv1
False
v lt v2
Next statement
True
ltstatementgt
vvstep
vv1 while vltv2 do ltstatementgt vvstep endwh
ile
for vv1,v2,step do
ltstatementgt endfor
47
REPEAT loop
  • First, the statement is executed. Thus it is
    executed at least once
  • Then the condition is analyzed and if it is false
    the statement is executed again
  • When the condition becomes true the control
    passes to the next statement of the algorithm
  • If the condition doesnt become true then the
    loop is infinite

ltstatementgt
ltconditiongt
True
Next statement
repeat ltstatementgt until ltconditiongt

48
Next lecture will be on
  • Simple examples
  • What about not so simple examples subalgorithms
Write a Comment
User Comments (0)
About PowerShow.com