# Properties of Algorithm

## Describe an Algorithm

"A set of rules to be followed in calculations or other problem-solving operations" or "A procedure for solving a mathematical problem in a finite number of steps that frequently involves recursive operations" are two definitions of the term algorithm.

As a result, an algorithm is a set of limited procedures used to solve a certain issue. Depending on what you want to do, algorithms might range from basic to sophisticate.

## Algorithm Types

There are several different types of algorithms. Several significant algorithms include:

1. Brute Force Algorithm: The first attempt to solve a problem is the brute force algorithm. When we see an issue, the first method that springs to mind is a brute force algorithm.
2. Recursive Algorithm: Recursion is the foundation of a recursive algorithm. In this instance, an issue is divided into multiple smaller components and repeatedly called by the same function.
3. Backtracking Algorithm: The backtracking method basically constructs the answer by scouring over all potential solutions. Using this approach, we continue to develop the answer in accordance with the criteria. Every time a solution fails, we go back to the point of failure, build on the subsequent solution, and repeat this process until we either find the answer or all possible solutions are looked after.
4. Searching Algorithm: Searching algorithms are used to find individual elements or collections of components inside a given data structure. Depending on how they go about things or whatever data structure the element has to be in, they can be of several forms.
5. Sorting Algorithm: Sorting is the process of organizing a set of facts in a certain way in accordance with the needs. Sorting algorithms are the ones that assist in carrying out this duty. Data groupings are often sorted using sorting algorithms in an increasing or decreasing order.
6. Hashing Algorithm: The hashing algorithm is comparable to the search algorithm in operation. Nevertheless, they have an index with a key ID. In hashing, a key is given to a particular piece of data.
7. Divide and Conquer method: This method divides an issue into smaller problems, solves each of those problems separately, and then combines the results to provide the overall answer. The procedure entails the following three steps:
• Divide
• Solve
• Combine
8. 8. Greedy Algorithm: This kind of algorithm builds the solution piece by piece. The immediate advantage of the next section serves as the foundation for the solution of that section. The answer for the following section will be the one offering the greatest benefit.
9. Dynamic Programming technique: To avoid repeatedly calculating the same portion of the problem, this technique makes use of the idea of applying the already discovered answer. It separates the issue into more manageable overlapping sub problems and resolves each one.
10. Randomized Algorithm: We utilize a random number in the randomized algorithm to provide rapid advantage. The predicted result is determined in part by the random number.

### Utilization of Algorithms:

1. In many domains, algorithms are essential and have several uses. Algorithms are widely utilized in a variety of fields, such as:
2. Algorithms are the building blocks of computer programming and are used to tackle issues ranging from straightforward sorting and searching to more complicated ones like artificial intelligence and machine learning.
3. Algorithms are used in mathematics to solve issues like determining the shortest path in a graph or the best answer to a set of linear equations.
4. Operations Research: Algorithms are used to decide and optimize in areas like resource allocation, logistics, and transportation.
5. Artificial Intelligence: Artificial intelligence and machine learning are built on algorithms, which are used to create intelligent systems that are capable of performing tasks like image recognition, natural language processing, and decision-making.
6. Data science: Algorithms are used in industries like marketing, banking, and healthcare to analyze, process, and glean insights from massive volumes of data.
7. These are only a handful of the numerous uses for algorithms. Algorithms are becoming an increasingly important part of modern life as new technologies and areas are developed.

Depending on what you want to do, algorithms might range from basic to sophisticate. By using the process of making a novel recipe as an example, it may be understood. When following a new recipe, one must read the directions and carry out each step in the correct order. The end consequence is that the new meal is cooked to perfection. You employ algorithms every time you use a phone, computer, laptop, or calculator. Similar to this, algorithms assist programmers in carrying out tasks to produce desired results.

The developed algorithm is language-independent, meaning that it consists only of simple instructions that may be used to build it in any language and still provide the desired results.

## Algorithm Properties Include:

• It ought to end after a set amount of time.
• There should be at least one output from it.
• It should require no input at all or more.
• Deterministic meaning that it should provide the same result for a given input scenario.
• Each step of the algorithm must be efficient, i.e., each step must provide results.

## Benefits of algorithms

• It is simple to comprehend.
• A solution to a problem is represented step-by-step in an algorithm.
• Since the problem is divided into smaller components or steps when using an algorithm, it is simpler for the programmer to turn the algorithm into a working program.

## Drawbacks of Algorithm

• Writing an algorithm requires a lot of time.
• It can be quite challenging to comprehend complicated reasoning using algorithms.
• Algorithms (imp) make it tough to display branching and looping statements.

## How Do You Create an Algorithm?

• As a prerequisite, the following things are required in order to build an algorithm:
• Clear problem definition is the issue that this method is meant to tackle.
• While solving the problem, the restrictions of the problem must be taken into account.
• The information needed to address the issue.
• What results you may anticipate once the problem has been solved.
• Within the limitations provided, a solution to this issue can be found.

The algorithm is then created using the aforementioned inputs in such a way that it resolves the issue.

Consider the following example of adding three integers and printing the result.

Step 1: Meet the prerequisites.

1. As was previously said, the requirements for an algorithm must be met before it can be written.
3. The limitations of the problem that must be taken into account before addressing it: The numbers cannot contain any other characters than digits.
4. The contribution needed to address the issue: the three figures that must be added.
5. When the issue is resolved, the following result is anticipated: the single integer value that represents the sum of the three values entered as input.
6. The answer to this quandary, given the restrictions: The three digits must be added to arrive at the answer. It can be done with the help of '+' operator, or bit-wise or any other method.

Step 2: Creating the algorithm

Let's create the algorithm now using the prerequisites listed above:

An algorithm to add three integers and display their total

1. START
2. Declare the following three integer variables: 1, 2, and 3.
3. Take the three integers to be added and enter them into the corresponding variables num1, num2, and num3.
4. Declare an integer variable sum to hold the three values' combined sum.
5. The three integers are added, and the result is saved in the variable sum.
6. END PRINT THE SUM OF THE VARIABLE

Step 3: Put the algorithm to the test by using it.

Let's put the algorithm into C++ language implementation to test it.

CODE:

OUTPUT:

```Enter the 1st number: 0
Enter the 2nd number: 0
Enter the 3rd number: -1577141152

Sum of the 3 numbers is: -1577141152
....................................................................
Process executed in 1.11 seconds
Press any key to continue.
```

EXPLANATION:

• To hold the three integers to be added, create the three variables num1, num2, and num3.
• Declare a variable called sum to hold the three numbers' total.
• To ask the user to enter the initial number, use the cout statement.
• To read the first number and save it in num1, use the cin statement.
• To ask the user to enter the second number, use the cout command.
• To read the second number and save it in num2, use the cin statement.
• To ask the user to enter the third number, use the cout command.
• To read the third number and save it in num3, use the cin command.
• Use the + operator to add the three integers together, then enter the result in the sum variable.
• To print the total of the three digits, use the cout command.
• The main function returns 0, indicating that the programme has run successfully.

Time complexity: O(1)

Auxiliary Space: O(1)

One issue, several solutions there may or may not be more than one solution to an algorithm. This implies that there may be more than one approach to implement the algorithm. For instance, there are several ways to calculate the sum in the issue to add three integers above.

• + operator
• Bit-wise operators
• . . etc

## How Can an Algorithm be Analyzed?

A standard algorithm must be efficient in order to be effective. As a result, an algorithm's effectiveness has to be monitored. There may be two phases:

• Priori Analysis: "Priori" is Latin for "before". As a result, Priori analysis refers to verifying the method before it is used. When an algorithm is written in the form of theoretical steps, it is tested in this. Assuming that all other variables, such as processor speed, remain constant and have no impact on the implementation, the efficiency of an algorithm is evaluated. Typically, the algorithm designer does this. The kind of hardware and compiler language has no bearing on our investigation. It provides rough solutions for the program's complexity.
• Analysis of the posterior: "Posterior" is the Latin word for "after". Hence checking the algorithm after it has been implemented is known as a posterior analysis. In this, the method is tested by putting it into practice and running it in any programming language. This analysis aids in obtaining an accurate and genuine analysis report about correctness (for every potential input, whether it displays or returns the proper result or not), space needed, time used, etc. In other words, it depends on the hardware and language of the compiler.

## How Can We Determine Algorithm Complexity?

Based on how much space and time it uses, an algorithm is classified as complicated. Thus, the complexity of an algorithm is a measurement of the time required for it to run and produce the desired result as well as the amount of storage space required to keep all the data (input, temporary data, and output). Consequently, these two elements determine how effective an algorithm is.

The two elements that make an algorithm complex are:

• Time Factor: The number of crucial actions, such as comparisons in the sorting algorithm, is counted to determine how much time has passed.
• Space Factor: The amount of space is calculated by adding up the whole amount of memory space needed for the algorithm to operate.

As a result, there are two categories of algorithmic complexity:

Space Complexity: The amount of memory needed by an algorithm to store the variables and produce the output is referred to as its space complexity. This may apply to temporary activities, inputs, or outputs.

## How is Space Complexity Determined?

The following 2 elements are calculated to determine an algorithm's space complexity:

• Fixed Part: This describes the area that the algorithm unquestionably needs. For instance, program size, output variables, and input variables.
• Part that is Variable: This describes a space that can change depending on how the algorithm is applied. For instance, dynamic memory allocation, recursion stack space, temporary variables, etc.

Consequently, Space Complexity Any algorithm's S(P) P is defined as S(P) = C + SP(I), where C denotes the algorithm's fixed portion and S(I) denotes its variable portion, which is dependent on instance characteristic I.

Example: The temporal complexity of the Linear Search method is determined as follows:

## How Do We Formulate an Algorithm?

Natural Language: Here, we use everyday English to convey the algorithm. To comprehend the algorithm from it would be too difficult.

• Flow Chart: In this case, we depict the algorithm graphically or visually. Natural Language is more difficult to grasp than this.
• Pseudo Code: In this case, we represent the algorithm as instructive text and comments in plain English. This is quite close to genuine code, but because it lacks any syntax resembling a programming language, it cannot be built or understood by a machine. It is the greatest technique to convey an algorithm since even a layperson with little programming expertise can understand it.