When analyzing algorithms, it is important to have a way to measure their performance. Asymptotic notation is a tool used by computer scientists to describe how the performance of an algorithm changes as the size of the input grows. In this article, we will discuss the concept of asymptotic notation and its properties in simple language.

## Introduction to Asymptotic Notation

Asymptotic notation is a way of describing the rate of growth of a function as its input size grows. It is commonly used in the analysis of algorithms to describe their running time as the size of the input grows larger.

Asymptotic notation provides a way to compare the efficiency of algorithms without getting bogged down in the details of their implementation. It is also useful when analyzing the performance of an algorithm across a range of input sizes.

## The Three Main Notations

There are three main notations used in asymptotic notation: Big-O notation, Omega notation, and Theta notation.

### Big-O Notation

Big-O notation is used to describe the upper bound of a function. It provides an estimate of the worst-case scenario for the running time of an algorithm. In other words, it describes how the function grows at its worst.

### Omega Notation

Omega notation is used to describe the lower bound of a function. It provides an estimate of the best-case scenario for the running time of an algorithm. In other words, it describes how the function grows at its best.

### Theta Notation

Theta notation is used to describe the average case of a function. It provides an estimate of the typical running time of an algorithm. In other words, it describes how the function grows on average.

## Properties of Asymptotic Notation

Asymptotic notation has several important properties that make it useful in the analysis of algorithms.

### Reflexivity

The first property is reflexivity. This property states that a function is always O(f(n)), Ω(f(n)), and Θ(f(n)) of itself. In other words, every function is a subset of itself.

### Transitivity

The second property is transitivity. This property states that if f(n) is O(g(n)) and g(n) is O(h(n)), then f(n) is O(h(n)). In other words, if a function is bounded above by another function, and that function is bounded above by a third function, then the first function is also bounded above by the third function.

### Symmetry

The third property is symmetry. This property states that if f(n) is Θ(g(n)), then g(n) is Θ(f(n)). In other words, if a function is both O(g(n)) and Ω(g(n)), then it is also Θ(g(n)).

### Transpose Symmetry

The fourth property is transpose symmetry. This property states that if f(n) is O(g(n)), then g(n) is Ω(f(n)), and if f(n) is Ω(g(n)), then g(n) is O(f(n)). In other words, if a function is bounded above by another function, then that function is bounded below by the first function.

### Additivity

The fifth property is additivity. This property states that if f(n) is O(h(n)) and g(n) is O(h(n)), then f(n) + g(n) is also O(h(n)). In other words, if two functions are bounded above by the same function, then their sum is also bounded above by that function.

## DAA-2022

## Q-1.

(b) Discuss the concept of asymptotic notation and its properties.

## Q-2.

## Q-3

## Q-4

What is Huffman code ? discuss the greedy algorithm for constructing the Huffman code.

## Q-5

## Q-6

## Q-7

What is bitonic sequence ? discuss bitonic sort algorithm and it’s time complexity.

## Q-8

What is sorting Network ? Discuss the structure of bubble sorting network.