You are on page 1of 21

Time and Space Complexity Analysis of Algorithms Using Mathematics

DEPARTMENT OF COMPUTER ENGINNERING

Pune Institute of Computer Engineering Dhankawadi,


Pune-43

CERTIFICATE

This is to certify that the Seminar report entitled

“TIME AND SPACE COMPLEXITY OPTIMIZATION OF ALGORITHMS


USING MATHEMATICS”

SUBMITTED BY

Jayndra Todawat Roll No: 31332


Anup Kesarwani Roll No: 31338
Aniket Kolte Roll No: 31340

Under the guidance of


Prof. A. A. Deshpande

Prof. A. A. Deshpande Dr. Geetanjali V. Kale


Internal Guide Head Head of Department
Department of Computer Engineering

Place: Pune
Date:

P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

ACKNOWLEDGEMENT: It was indeed a great learning for us to write this report on

“Time and Space Complexity Optimization of Algorithms using Mathematics”. We

would like to thank our Seminar Coordinator Prof. A. A. Deshpande, Head of

Department Dr. Geetanjali V. Kale and Principal Dr. S. T. Gandhe for their

encouragement and support. I would also like to thank my guide Prof. A. A.

Deshpande Department of Computer Engineering for her guidance and help. She has

continuously motivated us throughout the seminar project and thus was of great help to

make it successfully.

Jayndra Todawat Roll No: 31332


Anup Kesarwani Roll No: 31338
Aniket Kolte Roll No: 31340

P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

Contents

1 INTRODUCTION 1
2 MOTIVATION 2
3 LITERATURE SURVEY 3
4 A SURVEY ON PAPERS 4
4
4.1 A BLOG - How to Solve It: Mathematical Approach to Programming

4.2 A Mathematical-Algorithmic Approach to Sets: A Case Study 5

(1) Union of sets


(2) Intersection of sets
(3) Subtraction of sets
(4) Uses and Types of Sets

5 PROBLEM DEFINITION AND SCOPE 7

5.1 Problem Definition


5.2 Scope

6 ALGORITHMS AND METHODOLOGY 8

7 LIMITATITION AND FUTURE WORK 14

8 CONCLUSION 14

9 REFERENCES 16

P:F-SMR-UG/
Time and Space Complexity Analysis of Algorithms Using Mathematics

List of Tables
1 Literature survey 4

P:F-SMR-UG/
Time and Space Complexity Analysis of Algorithms Using Mathematics

Abstract
Many Times, in some problems it happens like Algorithmic approach or dynamic
programming approach can give the correct output but it’s difficult to implement or has
some large time complexity or space complexity. In such case Mathematical approach
is hard to think, but can give correct output in less time complexity (many times O(1)).
Different Algorithms can have other mathematical approach which can be used.
Mathematical approach can give output by only using a single line formula. Various
branch of Mathematics like combinatoric can be used for replacing DP approach in an
algorithm. Here we will find which algorithm has different mathematical approach.

Keywords: Mathematics, Algorithms, Dynamic Programming, Time/Space


Complexity.

P:F-SMR-UG/
Time and Space Complexity Analysis of Algorithms Using Mathematics

1 INTRODUCTION

A mathematical approach to algorithms is the use of mathematics to design,


analyse, and implement efficient and effective algorithms. Algorithms are
precise instructions for solving problems, and they are used in a wide variety of
fields, including computer science, mathematics, finance, and engineering.
A mathematical approach to algorithms provides a number of benefits,
including:
 Correctness: A mathematical approach can be used to prove the
correctness of algorithms, which ensures that they will always produce
the correct output.
 Efficiency: A mathematical approach can be used to analyse the time and
space complexity of algorithms, which allows us to choose the algorithm
that is most efficient for the problem we are trying to solve.
 Robustness: A mathematical approach can be used to design robust
algorithms that are able to handle unexpected inputs and errors.
 New algorithms: By developing new mathematical techniques, we can
design new algorithms that are more efficient or that solve problems that
could not be solved before.
As there are many algorithms in DSA which has a standardize method to do and
known to many programmers, but sometimes there exist a mathematical
approach which can take less time and space complexity and can give expected
output. The main motto of this paper is to list down the algorithms which has an
alternate mathematical approach and to compare the time and space complexity
of the both approaches.

1
P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

2 MOTIVATION

Algorithms are essential for solving problems in a wide variety of fields,


including computer science, mathematics, finance, and engineering. A
mathematical approach to algorithms provides a rigorous and systematic way to
design, analyse, and implement efficient and effective algorithms.
There are a number of reasons to use a mathematical approach to algorithms.
First, it allows us to prove the correctness of algorithms. This is important
because it ensures that our algorithms will always produce the correct output.
Second, it allows us to analyse the time and space complexity of algorithms.
This is important because it allows us to choose the algorithm that is most
efficient for the problem we are trying to solve. Finally, it allows us to design
new and more efficient algorithms.
Some of the specific benefits of using a mathematical approach to algorithms
include:
 Improved understanding: A mathematical approach to algorithms can
help us to better understand how algorithms work and why they are
efficient or inefficient.
 Better design: By understanding the mathematical foundations of
algorithms, we can design better algorithms that are more efficient,
correct, and robust.
 Improved analysis: A mathematical approach to algorithms allows us to
analyse the performance of algorithms and to compare different
algorithms. This can help us to choose the best algorithm for a particular
problem.
 New algorithms: By developing new mathematical techniques, we can
design new algorithms that are more efficient or that solve problems that
could not be solved before.
As a COMPETITIVE PROGRAMMER many times I faced problems like you
need to solve the given question in less time/space complexity or you will get a
time/space limit exceeded error. So a List which contains the
MATHEMATICAL APPROACH to various famous algorithms and the
comparison between their time complexity and space complexity will help.

2
P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

3 LITERATURE SURVEY

The Following table shows the literature survey by comparing techniques pro-
pose in various references:

Authors Description Important Findings Paper


Information
Cormen, T. H., A Mathematical This is the study of how Introduction to
Leiserson, C. E., Approach to the behavior of an Algorithms, 3rd
Rivest, R. L., Algorithms algorithm changes as the Edition (2009)
Stein, C. size of its input grows.

Martin Grötschel, Mathematical Dynamic programming: Springer-Verlag


László Lovász, Foundations of This is a technique for (1998)
Alexander Algorithm Design designing algorithms for
Schrijver solving problems that can
be decomposed into
smaller subproblems.

Christos H., Combinatorial The book covers a wide Dover


Papadimitriou, Optimization: range of topics related to Publications,
Kenneth Steiglitz Algorithms and combinatorial (1998)
Complexity optimization, including
various algorithmic
techniques.
A BLOG - How to In this blog the author How to Solve It
Mateusz Solve It: gives an approach to (Oct 13, 2015)
Czerwinski Mathematical think a given problem in a
Approach to mathematical way.
Programming

Table 1: Literature survey

3
P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

4 A SURVEY ON PAPERS

A BLOG - How to Solve It: Mathematical Approach to Programming

This Blog is written by Mr. Mateusz Czerwi´nski, In this blog the author gives a
approach to think a given problem in a mathematical way. The author read a
book called “How to Solve It” written by Prof. George P´olya and highlighted
some important points. The book is based on Heuristics discussed by prof.
George P´olya. The below steps were the main highlights from the Book.

1. Understand the Problem


Read the task carefully, try to understand it, and think about it deeply. Think
about what you have and what you want to find. Phrase the task in your own
words.

2. Form an algorithm
Find the relation between the information given and what you want to find. In
some cases, it will be much easier to solve a slightly different problem if you
can’t find the solution directly. At the end of your work, you should have made
an algorithm to solve the problem.

3. Just make an algorithm!


Move step by step and see if you can prove each step. Do something that makes
sense. Don’t just mindlessly repeat yourself. A good algorithm defends itself.
Now you can write a program to solve it.

4. Look back at your solution


A second look allows you to find more efficient solutions. After you find an
answer - think if it can be done better. Sometimes the improvements are tenuous
and uncertain, usually they’ll allow you to write more efficient programs and
care about better time complexity. Feedback gives you both positive and
negative information. It lets you see your strengths and your weaknesses, so you
can know the areas where you need to work to improve at. Next time when you
are faced with a problem, you’ll be able to solve it faster and better.

4
P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

A Mathematical-Algorithmic Approach to Sets: A Case Study

The Case Study is written by Judith Gal-Ezer Orna Lichtenstein. The main aim
of this paper is to show, by means of a mathematical example, how algorithmic
thinking and mathematical thinking complement each other, and how an
algorithmic approach leads to questions that deepen the understanding of
mathematical material by students.
In this paper authors told how sets of mathematics can be helpful in different
algorithms. We can do different operations on sets. The list and the description
of the operations are given below.

2.2.1 Union of sets


The union of two sets X and Y is equal to the set of elements that are present in
set X, in set Y, or in both the sets X and Y. This operation can be represented
as:
X UNION Y = (a: a in X or a in Y)
Let us consider an example, say;
set A = 1, 3, 5 and set B = 1, 2, 4 then
A UNION B = 1, 2, 3, 4, 5

2.2.2 Intersection of sets


The intersection of sets A and B is the set of all elements which are common to
both A and B. Suppose A is the set of even numbers less than 10 and B is the set
of the first five multiples of 4, then the intersection of these two can be
identified as given below:
A = 2, 4, 6, 8
B = 4, 8, 12, 16, 20
The elements common to A and B are 4 and 8.
Therefore, the set of elements in the intersection A and B = 4, 8

2.2.3 Subtraction of sets


The difference of the sets A and B in this order is the set of elements which
belong to A but not
to B. Symbolically, we write A – B and read as “ A minus B”.
A = 2,4,5,6
B = 4,8,12,16,20
A - B = 2,5,6

5
P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

Uses and Types of Sets

Sets are the well-defined collection of data/objects. The data/objects belong to


the same group but each data differs from one another. For instance, if the word
“application” has to be put in a Set, it will look something like, Set A= a, p, l, i,
c, t, o, n, the letters which are repeated in the word, like “p”, “a”, “i” are only
written once since they are the same elements repeated.

Below are the types of Set -


1. Singular Set: A set having only one element. Example - A = ’a’.

2. Null Set: Null sets are those in which no element is present. Null sets are also
known as Empty set or Void set. Example - A =”

3. Finite Set: Finite sets have a finite number of elements, the number of
elements does not play an important role, as long as there are a finite number of
elements present in the set, the set will be called. Example - A = ’a’,’b’,’c’.

4. Infinite Set: Infinite sets are those in which an infinite number of elements
are present, it is possible to have the infinite number of elements in the set.
Example - set A contains all-natural numbers.

Above all types of sets and all types of operations can be very useful in various
algorithms and in competitive programming. The SET data-structure in C++ or
Python is inspired by the sets in mathematics and has many functions of this set.

6
P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

5 PROBLEM DEFINITION AND SCOPE

Problem Definition

The problem of time and space complexity optimization of algorithms


is to design and implement algorithms that are as efficient as possible
in terms of both time and space usage. This means that the algorithms
should take as little time as possible to execute and use as little
memory as possible.

Scope
The scope of time and space complexity optimization of algorithms is broad. It
encompasses a wide range of algorithms and problem domains, including:

 Sorting and searching algorithms


 Graph algorithms
 String algorithms
 Numerical algorithms
 Machine learning algorithms
 Compiler optimization
 Database design

In general, any algorithm that is used to solve a real-world problem can be a


target for time and space complexity optimization.

Challenges
Time and space complexity optimization of algorithms can be a challenging
task. There is often a trade-off between time and space complexity. For
example, an algorithm that is optimized for time complexity may use more
space, and an algorithm that is optimized for space complexity may use more
time.
Another challenge is that it is not always easy to predict the time and space
complexity of an algorithm. The complexity of an algorithm can depend on the
specific input data, the size of the input data, and the implementation of the
algorithm.

7
P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

6 ALGORITHMS AND METHODOLOGY

In this section, we will list all algorithms which have another mathematical
approach and will give and compare the codes with both approaches.
Sum of Series
 Sum of First N natural Numbers
Brute Force:
In Brute Force or Traditional Approach for taking sum of 1st N natural numbers
we can use a FOR loop and a ANS variable in which we will add N numbers.
Python Code:
n = int(input())
ans = 0
for i in range(1,n+1): ans+=i
print(ans)
Mathematical Approach:
For Mathematical Approach we can see that the natural numbers are in AP.
Hence a Simple mathematical formula can be derived.
The formula is (n*(n+1))//2.
Python Code:
n = int(input())
ans = (n*(n+1))//2
print(ans)
Comparison:
Time Complexity of Brute Force code is O(n)
Space Complexity of Brute Force code is O(1)
Time Complexity of Mathematical approach code is O(1)
Space Complexity of Mathematical approach code is O(1)
Observation:
The Space Complexity of Both code is SAME but the time complexity of Brute
force approach is O(n) and Mathematical approach code is O(1).

8
P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

 Sum of First N numbers which are powers of 2


Brute Force:
In Brute Force or Traditional Approach for taking sum of 1st N numbers which
are powers of 2 we can use a FOR loop and a ANS variable in which we will
add 2 to the power current index.
Python Code:
n = int(input())
ans = 0
for i in range(1,n+1): ans+=(2**i)
print(ans)
Mathematical Approach:
For Mathematical Approach we can see that the natural numbers are in GP.
Hence a Simple mathematical formula can be derived.
The formula is 2**(n+1) - 2.
Python Code:
n = int(input())
ans = (2**(n+1) - 2)
print(ans)
Comparison:
TIME COMPLEXITY of Brute Force code is O(n)
SPACE COMPLEXITY of Brute Force code is O(1)
TIME COMPLEXITY of Mathematical approach code is O(1)
SPACE COMPLEXITY of Mathematical approach code is O(1)
Observation:
The Space Complexity of Both code is SAME but the time complexity of Brute
force approach is O(n) and Mathematical approach code is O(1).
Many more series are also derived by the AP and GP formula.

Combinatorial Selection
 Number of ways to distribute m chocolates to n students:

9
P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

Brute Force:
The Brute force approach contains a dynamic programming technique in which
the states of the dp array will be number of students left and number of
chocolates left.
Python Code:
def go(x,y):
if (y⩽ 0) : return0
if (x==n):
if (y⩾ 0) :
return 1
return 0
if (dp[x][y]!=-1):
return dp[x][y]
c1=0
c2=0
c1+=go(x+1,y-1)
c2+=go(x+1,y)
ans = c1+c2
dp[x][y]=ans
return ans
n,m = map(int,input().split())
dp = [ ]
for i in range(n+1):
x=[]
for j in range(m+1):
x.append(-1)
dp.append(x)
print(go(1,m))
In above code, c1 means we give 1 chocolate to the current student and c2
means we didn’t give the chocolate to the current student.
Mathematical Approach:
In Mathematical Approach we will use a concept known as nCr, which gives the
number of ways to distribute n things into r things.
The Formula of nCr is
(n!)/(r!*(n-r)!)
Here, n! reads as n Factorial i.e, the product of all number between 1 to n.

Python Code :
n,m = map(int,input().split())
ans = nCm
ans = math.fact(n)//(math.fact(r)*math.fact(n-r))
print(ans)

Comparison:
10
P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

Time Complexity of Brute Force code is O(n*m)


Space Complexity of Brute Force code is O(n*m)
Time Complexity of Mathematical approach code is O(n+m)
Space Complexity of Mathematical approach code is O(1)
Here, in above comparison we can clearly see that the time and space
complexity of Mathematical
approach is much less than the Brute force approach.

 Total Paths in a n*m grid from (1,1) to (n, m):


Brute Force:
Here also the brute force approach has a dynamic programming approach. In
DP approach the states of the DP will be the current row (i) and the current
column (j). In one move either we can go to next Row or to next Column and if
we went on (n, m) then will return 1.
PYTHON CODE:
def go(i,j):
if (i==n and j==m):
return 1
if (dp[i][j]!=-1):
return dp[i][j]
c1=0
c1+=go(i+1,j)
c1+=go(i,j+1)
dp[i][j]=c1
return ans
n,m = map(int,input().split())
dp = [ ]
for i in range(n+1):
x=[]
for j in range(m+1):
x.append(-1)
dp.append(x)
print(go(1,1))
In above code c1 will calculate both ways to reach the (n,m) point. The first
way is to just increase x coordinate and second way is to just increase y
coordinate.

Mathematical Approach:
In mathematical approach, the main idea is to see the path as the vertical and
horizontal lines. Therefore, the total lines in grid will be n+m-2 i.e, m-1 in right
direction and n-1 in left direction. So, if we select any m-1 or n-1 lines from
n+m-2 lines then we will get the desire number of ways.
The Formula of nCr is
(n+m-2!)/((m-1)!)

11
P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

Here, n! reads as n Factorial i.e, the product of all number between 1 to n.


PYTHON CODE :
n,m = map(int,input().split())
ans = (m+n-2)!//(m-1)!
ans = math.fact(m+n-2)//math.fact(m-1)
print(ans)
Comparison:
TIME COMPLEXITY of Brute Force code is O(n*m)
SPACE COMPLEXITY of Brute Force code is O(n*m)
TIME COMPLEXITY of Mathematical approach code is O(n+m)
SPACE COMPLEXITY of Mathematical approach code is O(1)
Here, in above comparison we can clearly see that the time and space
complexity of Mathematical approach is much less than the Brute force
approach.

 Equation Solver:
Find Roots a Quadratic Equation:
Brute Force:
In Brute force approach, we will check value of equation for every possible
value of x. Let quadratic equation be ax**2 + bx + c = 0, so check value of this
equation for every possible value of x.
Python Code:
a,b,c = map(int,input().split())
for i in range(-10**6,10**6):
ans = a*(i**2) + b*i c
if (ans==0):
print(i)
Mathematical Approach:
In this approach, the formula is given for roots of the equation.
Formula is
ans = (-b +-(sqrt (b**2 - 4*a*c)))//2)
Here, sqrt is the square root.

Python Code:
a,b,c = map(int,input().split())
ans1 = (-b + math.sqrt(b**2 - 4*a*c))//2
ans2 = (-b - math.sqrt(b**2 - 4*a*c))//2
print(ans1, ans2)
Comparison:
TIME COMPLEXITY of Brute Force code is O(RANGE(2*(10**6))
SPACE COMPLEXITY of Brute Force code is O(1)
TIME COMPLEXITY of Mathematical approach code is O(1)
12
P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

SPACE COMPLEXITY of Mathematical approach code is O(1)


Here we can see that Time complexity of mathematical approach is much better
than brute force approach.

13
P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

7 LIMITATION AND FUTURE WORK

Limitations:
 Mathematical models: Mathematical models of algorithms are often
simplified and may not accurately reflect the real-world performance of
the algorithms. This can make it difficult to use mathematical tools and
techniques to optimize algorithms for real-world use cases.
 NP-hard problems: Many important problems in computer science are
NP-hard, meaning that there is no known polynomial-time algorithm for
solving them. This makes it difficult to find efficient algorithms for these
problems, even using mathematical tools and techniques.
 Distributed and parallel algorithms: Mathematical tools and techniques
for optimizing time and space complexity are often designed for
sequential algorithms. It can be challenging to apply these techniques to
distributed and parallel algorithms, which are becoming increasingly
important in modern computing.
Future Work:
 More accurate mathematical models: Future research could focus on
developing more accurate mathematical models of algorithms. This
would allow researchers to use mathematical tools and techniques to
optimize algorithms for real-world use cases more effectively.
 New algorithms for NP-hard problems: Future research could focus on
developing new algorithms for NP-hard problems that are more efficient
than existing algorithms. This would be a significant breakthrough in
computer science, as it would make it possible to solve many important
problems more efficiently.
 Mathematical tools and techniques for distributed and parallel
algorithms: Future research could focus on developing mathematical
tools and techniques for optimizing the time and space complexity of
distributed and parallel algorithms. This would make it possible to design
more efficient and scalable algorithms for modern computing systems.
In addition to the above, here are some other specific areas of future work in the
research on time and space complexity optimization of algorithms using
mathematics:
 Developing new mathematical techniques for analyzing the time and
space complexity of algorithms.
 Applying mathematical tools and techniques to optimize algorithms
for specific problem domains, such as machine learning and artificial
intelligence.
 Developing tools and techniques to help programmers automatically
optimize their code for time and space complexity.
Overall, the research on time and space complexity optimization of algorithms
using mathematics is a very active and important area of computer science.
There is a lot of potential for future work in this area, and advances in this area
could lead to significant improvements in the performance of real-world
systems.

14
P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

8 CONCLUSIONS

Conclusion:
Time and space complexity optimization of algorithms is an important area of
computer science. By optimizing algorithms, we can improve the performance
of real-world systems and make them more efficient and scalable.
Mathematical tools and techniques can be used to identify and implement
efficient algorithms for solving a variety of problems. However, there are also
some limitations to the use of mathematics for algorithm optimization. For
example, mathematical models of algorithms are often simplified and may not
accurately reflect the real-world performance of the algorithms. Additionally,
many important problems in computer science are NP-hard, meaning that there
is no known polynomial-time algorithm for solving them. This makes it difficult
to find efficient algorithms for these problems, even using mathematical tools
and techniques.
Despite these limitations, mathematical optimization of algorithms is a valuable
tool for computer scientists. By developing more accurate mathematical models
of algorithms, new algorithms for NP-hard problems, and mathematical tools
and techniques for distributed and parallel algorithms, researchers can continue
to improve the efficiency and scalability of real-world systems.
Here are some specific examples of the benefits of time and space complexity
optimization of algorithms:
 Improved performance of web browsers and search engines: Web
browsers and search engines use a variety of algorithms to render web
pages and search the web. By optimizing these algorithms, researchers
have been able to improve the performance of these systems significantly.
 Reduced memory usage of databases and compilers: Databases and
compilers use a variety of algorithms to store and retrieve data, and to
translate high-level programming languages into machine code. By
optimizing these algorithms, researchers have been able to reduce the
memory usage of these systems significantly.
 Development of new machine learning algorithms: Machine learning
algorithms are often computationally expensive and require a lot of
memory. By optimizing the time and space complexity of machine
learning algorithms, researchers have been able to develop new
algorithms that can be used to solve larger and more complex problems.
Overall, time and space complexity optimization of algorithms is an important
area of research with a wide range of potential applications. By continuing to
develop new mathematical tools and techniques for algorithm optimization,
researchers can help to improve the performance and scalability of real-world
systems in a variety of domains.

15
P:F-SMR-UG/
08/R0
Time and Space Complexity Analysis of Algorithms Using Mathematics

9 References
[1] Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. A
“Mathematical Approach to Algorithms” to study of how the
behavior of an algorithm changes as the size of its input
grows.
[2] Martin Grötschel, László Lovász, and Alexander Schrijver
“Mathematical Foundations of Algorithm Design” provides a
comprehensive overview of the mathematical foundations of
algorithm design
[3] “How to Solve It: Mathematical Approach to Programming”,
Mateusz Czerwi´nski Oct 13, 2015
[4] “A Mathematical-Algorithmic Approach to Sets: A Case
Study”, Judith Gal-Ezer1 Orna Lichtenstein2 April 1996
[5] Papadimitriou, C. H., & Steiglitz, K. (1982). "Combinatorial
Optimization: Algorithms and Complexity." Dover
Publications.
[6] E. Polak, "Computational Methods in Optimization: A
Unified Approach," Springer, 2010.
[7] Rabin, M. O. (1980). "Probabilistic Algorithms."
Communications of the ACM, 21(9), 840-852.
[8] Mitzenmacher, M., & Upfal, E. (2017). "Probability and
Computing: Randomized Algorithms and Probabilistic
Analysis." Cambridge University Press.
[9] J. Nocedal and S. J. Wright, "Numerical Optimization,"
Springer, 2006.

16
P:F-SMR-UG/
08/R0

You might also like