When we analyze the running time of an algorithm,

we have to make assumption about representations of the data.

About implementation details and so on,.

That are not necessarily how we are going to do things, or

what is the actual syntax in Python, or any programming language we use.

But these are necessary,

necessary details that we have to know in order to be able to analyze running time.

I cannot say just make a,

make a blanket statement about how long algorithm is going to take on a graph.

Regardless of how it is represented.

So, we have to talk about these things, and

this is what I mean by a specific implementation of an algorithm.

Okay, the as I, as I mentioned there is, there are two kinds of or

two metrics for measuring the efficiency of an algorithm at least in our case.

Time and memory.

Or time and space.

How much time does the algorithm take?

How much space does the algorithm take?

There is often a trade off between the two.

You can get the algorithm to become more efficient in terms of time,

if you make use of more memory.

Or, you can make use of less memory.

But it's going to come at expense of losing on the time efficiency.

So, this is what we mean when we say there is trade off between time, and

space often, okay?

In this course, we will focus mostly on the time efficiency.

In fact, most of the, most of the course is on algorithms.

Most of textbook's on algorithms.

Focus on time efficiency of algorithms, because we are having more and

more memory today with the, with the, with the computers even with the laptops and

desktops that we use.

Memory tends to be not the, the issue with many applications.

But, at the time or time efficiency is going to be a crucial issue.

For example, we have seen now brute force algorithms where memory is

not the issue in these algorithms, but time is the issue.

So we will, we will never run out of memory by trying to

compute the distances between, between pairs of notes in a graph.

You're even using our own laptops.

But if we don't do an, an, an efficient or an intelligent algorithm for computing

these distances, we will, it will, our algorithms will easily take years and

tens of years and sometimes even more than that.

So, in this course we will focus more on time efficiency and we will.

Get the tools, we will focus on how to measure time efficiency,

we will use mathematical tools that will give us and

idea on how to apply this methodology broadly without having to

go through tedious details about how long each line in the algorithm is.