SlideShare una empresa de Scribd logo
1 de 8
1
MC0080 – Analysis and Design of Algorithms
Question 1- Describe the following: a) Well-known Sorting Algorithms
Bubble sort
It is a simple sorting algorithm. The algorithm starts at the beginning of the data set. It
compares the first two elements, and if the first is greater than the second, it swaps them. It
continues doing this for each pair of adjacent elements to the end of the data set. It then
starts again with the first two elements, repeating until no swaps have occurred on the last
pass. This algorithm's average and worst case performance is O(n2
), so it is rarely used to
sort large, unordered, data sets. Bubble sort can be used to sort a small number of items.
Selection sort
This is an in-place comparison sort. It has O(n2
) complexity, making it inefficient on large
lists, and generally performs worse than the similar insertion sort. Selection sort is noted for
its simplicity, and also has performance advantages over more complicated algorithms in
certain situations. The algorithm finds the minimum value, swaps it with the value in the first
position, and repeats these steps for the remainder of the list. It does no more than n swaps,
and thus is useful where swapping is very expensive.
Insertion sort
It is a simple sorting algorithm that is relatively efficient for small lists and mostly sorted lists,
and often is used as part of more sophisticated algorithms. It works by taking elements from
the list one by one and inserting them in their correct position into a new sorted list. In
arrays, the new list and the remaining elements can share the array's space, but insertion is
expensive, requiring shifting all following elements over by one.
Shell sort
It was invented by Donald Shell in 1959. It improves upon bubble sort and insertion sort by
moving out of order elements more than one position at a time. One implementation can be
described as arranging the data sequence in a two-dimensional array and then sorting the
columns of the array using insertion sort.
Heap sort
This is a much more efficient version of selection sort. It also works by determining the
largest (or smallest) element of the list, placing that at the end (or beginning) of the list, then
continuing with the rest of the list, but accomplishes this task efficiently by using a data
structure called a heap, a special type of binary tree. Once the data list has been made into
a heap, the root node is guaranteed to be the largest (or smallest) element. When it is
removed and placed at the end of the list, the heap is rearranged so the largest element
remaining moves to the root. Using the heap, finding the next largest element
takes O(log n) time, instead of O(n) for a linear scan as in simple selection sort. This allows
Heap sort to run in O(n log n) time, and this is also the worst case complexity.
b) Divide and Conquer Techniques
Merge sort
Merge sort takes advantage of the ease of merging already sorted lists into a new sorted list.
It starts by comparing every two elements (i.e., 1 with 2, then 3 with 4...) and swapping them
2
if the first should come after the second. It then merges each of the resulting lists of two into
lists of four, then merges those lists of four, and so on; until at last two lists are merged into
the final sorted list. Of the algorithms described here, this is the first that scales well to very
large lists, because its worst-case running time is O(n log n).
Quick sort
This is a divide and conquer algorithm which relies on a partition operation: to partition an
array an element called a pivot is selected. All elements smaller than the pivot are moved
before it and all greater elements are moved after it. This can be done efficiently in linear
time and in-place. The lesser and greater sub lists are then recursively sorted. Efficient
implementations of quick sort (with in-place partitioning) are typically unstable sorts and
somewhat complex, but are among the fastest sorting algorithms in practice. Together with
its modest O(log n) space usage, quick sort is one of the most popular sorting algorithms
and is available in many standard programming libraries. The most complex issue in
quicksort is choosing a good pivot element; consistently poor choices of pivots can result in
drastically slower O(n²) performance, if at each step the median is chosen as the pivot then
the algorithm works in O(n log n). Finding the median however, is an O(n) operation on
unsorted lists and therefore exacts its own penalty with sorting.
Question 2 - Explain in your own words the different asymptotic functions and notations.
We often want to know a quantity only approximately and not necessarily exactly, just to
compare with another quantity. And, in many situations, correct comparison may be possible
even with approximate values of the quantities. The advantage of the possibility of correct
comparisons through even approximate values of quantities, is that the time required to find
approximate values may be much less than the times required to find exact values. We will
introduce five approximation functions and their notations.
The purpose of these asymptotic growth rate functions to be introduced, is to facilitate the
recognition of essential character of a complexity function through some simpler functions
delivered by these notations.
For examples, a complexity function f(n) = 5004 n3 + 83 n2 + 19 n + 408, has essentially
same behavior as that of g(n) = n3 as the problem size n becomes larger and larger. But
g(n) = n3 is much more comprehensible and its value easier to compute than the function
f(n)
Enumerate the five well – known approximation functions and how these are pronounced
1 O: (O(n2
)) is pronounced as ‘big – oh of n2’ or sometimes just as oh
of n2)
2 Ω: (Ω(n2
)) is pronounced as ‘big – omega of n2 or sometimes just as omega of n2’)
3 Θ: (Θ(n2
)) is pronounced as ‘theta of n2’)
4 o : (o (n2) is pronounced as ‘little – oh n2’)
5 is pronounced as ‘little – omega of n2
These approximations denote relations from functions to functions.
For example, if functions
f, g: N ->N are given by
f (n) = n2 – 5n and
3
g(n) = n2
then
O (f (n)) = g(n) or O (n2 – 5n) = n2
To be more precise, each of these notations is a mapping that associates a set of functions
to each function under consideration. For example, if f(n) is a polynomial of degree k then
the set O(f(n) included all polynomials of degree less than or equal to k.
In the discussion of any one of the five notations, generally two functions say f and g are
involved. The functions have their domains and N, the set of natural numbers, i.e.,
f : N N
g : N ->N
These functions may also be considered as having domain and co domain as R.
The Notation O
Provides asymptotic upper bound for a given function. Let f(x) and g(x) be two functions
each from the set of natural numbers or set of positive real numbers to positive real
numbers.
Then f(x) is said to be O (g(x)) (pronounced as big – oh of g of x) if there exists two positive
integers / real number constants C and k such that
f(x) <= C g(x) for all x >= k
(The restriction of being positive on integers/ real is justified as all complexities are positive
numbers)
Question 3 - Describe the following:
a) Fibonacci Heaps
A Fibonacci heap is a collection of trees satisfying the minimum-heap property, that is, the
key of a child is always greater than or equal to the key of the parent. This implies that the
minimum key is always at the root of one of the trees. To allow fast deletion and
concatenation, the roots of all trees are linked using a circular, doubly linked list. The
children of each node are also linked using such a list. For each node, we maintain its
number of children and whether the node is marked. Moreover we maintain a pointer to the
root containing the minimum key.
Operation find minimum is now trivial because we keep the pointer to the node containing it.
It does not change the potential of the heap, therefore both actual and amortized cost is
constant. As mentioned above, merge is implemented simply by concatenating the lists of
tree roots of the two heaps. This can be done in constant time and the potential does not
change, leading again to constant amortized time.
Operation insert works by creating a new heap with one element and doing merge. This
takes constant time, and the potential increases by one, because the number of trees
increases. The amortized cost is thus still constant.
Operation extract minimum (same as delete minimum) operates in three phases. First we
take the root containing the minimum element and remove it. Its children will become roots
4
of new trees. Operation decrease key will take the node, decrease the key and if the heap
property becomes violated (the new key is smaller than the key of the parent), the node is
cut from its parent. If the parent is not a root, it is marked. If it has been marked already, it is
cut as well and its parent is marked. We continue upwards until we reach either the root or
an unmarked node.
b) Binomial Heaps
A binomial heap is implemented as a collection of binomial trees (compare with a binary
heap, which has a shape of a single binary tree). A binomial tree is defined recursively:
● A binomial tree of order 0 is a single node
● A binomial tree of order k has a root node whose children are roots of binomial trees of
orders k−1, k−2., 2, 1, 0 (in this order).
A binomial heap is implemented as a set of binomial trees that satisfy the binomial heap
properties:
● Each binomial tree in a heap obeys the minimum-heap property: the key of a node is
greater than or equal to the key of its parent. There can only be
either one or zero binomial trees for each order, including zero order.
The first property ensures that the root of each binomial tree contains the smallest key in the
tree, which applies to the entire heap.
The second property implies that a binomial heap with n nodes consists of at most log n + 1
binomial trees.
Inserting a new element to a heap can be done by simply creating a new heap containing
only this element and then merging it with the original heap.
To find the minimum element of the heap, find the minimum among the roots of the binomial
trees.
To delete the minimum element from the heap, first find this element, remove it from its
binomial tree, and obtain a list of its subtrees. Then transform this list of subtrees into a
separate binomial heap by reordering them from smallest to largest order. Then merge this
heap with the original heap.
After decreasing the key of an element, it may become smaller than the key of its parent,
violating the minimum-heap property. If this is the case, exchange the element with its
parent, and possibly also with its grandparent, and so on, until the minimum-heap property is
no longer violated.
To delete an element from the heap, decrease its key to negative infinity (that is, some value
lower than any element in the heap) and then delete the minimum in the heap.
Question 4 - Discuss the process of flow of Strassen’s Algorithm and also its limitations.
Strassen’s recursive algorithm for multiplying nx n matrices runs in time. For sufficiently large
value of n, therefore, it outperforms the matrix
multiplication algorithm.The idea behind the Strassen’s algorithm is to multiply matrices with
5
only 7 scalar multiplications (instead of 8). Consider the matrices. The seven sub matrix
products used are,
P 1= a .(g-h)
P 2= (a+b) h
P 3= (c+d) e
P 4= d. (f–e)
P 5= (a + d). (e + h)
P 6 = (b – d). (f + h)
P 7 = (a – c) . (e+g)
Using these sub matrix products the matrix products are obtained by,
r = P 5+ P 4– P 2+ P 6
s = P 1+ P 2
t = P 3+ P 4
u = P 5+ P 1– P 3– P 1
This method works as it can be easily seen that
s=(ag–ah)+(ah+bh)=ag+bh
.In this method there are 7 multiplications and 18 additions. For (n´n)matrices, it can be
worth replacing one multiplication by 18 additions, since multiplication costs are much more
than addition costs.The recursive algorithm for multiplying n´n matrices is given
below:1. Partition the two matrices A, B into matrices.2. Conquer: Perform 7 multiplications
recursively.3. Combine: Form using + and –.The running time of above recurrence is given
by the recurrence given below: The current best upper bound for multiplying matrices is
approximately
Limitations of Strassen’s Algorithm
From a practical point of view, Strassen’s algorithm is often not the method of choice for
matrix multiplication, for the following four reasons:1. The constant factor hidden in
the running time of Strassen’s algorithm is larger than the constant factor in the method.2.
When the matrices are sparse, methods tailored for sparse matrices are faster.
3. Strassen’s algorithm is not quite as numerically stable as the naïvemethod.4. The sub
matrices formed at the levels of recursion consume space.
Question 5 - How do you formalize a greedy technique? Discuss the different steps one by
one?
In order to develop an algorithm based on the greedy technique to solve a general
optimization problem, we need the following data structures and functions:
i) A set or list of give / candidate values from which choices are made, to reach a solution.
For example, in the case of Minimum Number of Notes problem, the list of candidate values
(in rupees) of notes is{1, 2, 5, 10, 20, 50, 100, 500, 1000}. Further, the number of notes
of each denomination should be clearly mentioned. Otherwise, it is assumed that each
6
candidate value can be used as many times as required for the solution using greedy
technique. Let us call this set asGV : Set of Given Values
ii) Set (rather multi-set) of considered and chosen values:
This structure contains those candidate values, which are considered and chosen by the
algorithm based on greedy technique to reach a solution. Let us call this structure as CV :
Structure of Chosen Values The structure is generally not a set but a multi-set in the sense
that values may be repeated. For example, in the case of Minimum Number of
Notes problem, if the amount to be collected is Rs. 289 then CV = {100, 100, 50, 20, 10, 5,
2, 2}
iii) Set of Considered and Rejected Values:
As the name suggests, this is the set of all those values, which are considered but rejected.
Let us call this set as RV : Set of considered and Rejected Values A candidate value may
belong to both CV and RV. But, once a value is put in RV, then this value cannot be put any
more in CV. For example, to make an amount of Rs. 289, once we have chosen two notes
each of denomination100, we have CV = {100, 100}At this stage, we have collected Rs. 200
out of the required Rs. 289. At this stage RV = {1000, 500}. So, we can chose a note of
any denomination except those in RV, i.e., except 1000 and 500. Thus, at this stage, we can
chose a note of denomination 100. However, this choice of 100 again will make the total
amount collected so far, as Rs. 300, which exceeds Rs. 289. Hence we reject the choice of
100 third time and put 100 in RV, so that now RV = {1000, 500, 100}. From this point
onward, we cannot choose even denomination 100. Next, we consider some of the function,
which need to be defined in an algorithm using greedy technique to solve an optimization
problem.
iv) A function say SolF that checks whether a solution is reached or not. However, the
function does not check for the optimality of the obtained solution. In the case of Minimum
Number of Notes problem, the function SolF finds the sum of all values in the multi-set CV
and compares with the desired amount, say Rs. 289. For example, if at one stage CV
= {100, 100}then sum of values in CV is 200 which does not equal 289, then the function
SolF returns. ‘Solution not reached’. However, at a later stage, when CV ={100, 100, 50, 20,
10, 5, 2, 2}, then as the sum of values in CV equals the required amount, hence the function
SolF returns the message of the form ‘Solution reached’. It may be noted that the function
only informs about a possible solution. However, solution provided through SolF may not be
optimal. For instance in the Example above, when we reach CV = {60, 10, 10}, then SolF
returns ‘Solution, reached’. However, as discussed earlier, the solution 80 = 60 + 10+ 10
using three notes is not optimal, because, another solution using only two notes, viz., 80 =
40 + 40, is still cheaper.
v) Selection Function say SelF finds out the most promising candidate value out of the
values not yet rejected, i.e., which are not in RV. In the case of Minimum Number of Notes
problem, for collecting Rs. 289, at the stage when RV = {1000, 500} and CV = {100, 100}
then first the function SelF attempts the denomination 100. But, through function SolF, when
it is found that by addition of 100 to the values already in CV, the total value becomes300
which exceeds 289, the value 100 is rejected and put in RV. Next, the function SelF attempts
7
the next lower denomination 50. The value 50 when added to the sum of values in CV gives
250, which is less than 289. Hence, the value 50 is returned by the function SelF.
vi) The Feasibility-Test Function, say FeaF.
When a new value say v is chosen by the function SelF, then the function FeaF checks
whether the newest, obtained by adding v to the set CV of already selected values, is
a possible part of the final solution. Thus in the case of Minimum Number of Notes problem,
if amount to be collected is Rs. 289 and at some stage, CV = {100, 100}, then the function
SelF returns50. At this stage, the function FeaF takes the control. It adds 50 to the sum of
the values in CV, and on finding that the sum 250 is less than the required value 289 informs
the main/calling program that{100, 100, 50} can be a part of some final solution, and needs
to be exploredfurther.vii) The Objective Function, say ObjF, gives the value of the solution.
For example, in the case of the problem of collecting Rs. 289; as CV = {100, 100, 50, 20,
10, 5, 2, 2} is such that sum of values in CV equals the required value 289, the function ObjF
returns the number of notes in CV ,i.e., the number 8.After having introduced a number of
sets and functions that may be required by an algorithm based on greedy technique, we give
below the outline of greedy technique, say Greedy-Structure. For any actual algorithm based
on greedy technique, the various structures the functions discussed above have to be
replaced by actual functions. These functions depend upon the problem under consideration.
The Greedy-Structure outlined below takes the set GV of given values as input parameter
and returns CV, the set of chosen values. For developing any algorithm based on greedy
technique, the following function outline will be used.
Function Greedy-Structure (GV : set): set
CV ß ? {initially, the set of considered values is empty}While GV ? RV and not SolF (CV)
do begin v SelF (GV)If FeaF (CV ? {v} ) then CV CV ? {v}else RV RV ? {v}end// the function
Greedy Structure comes out// of while-loop when either GV = RV, i.e., all// given values are
rejected or when solution is found If SolF (CV) then returns ObjF (GV)else return “No
solution is possible “end function Greedy-Structure
Question 6 - Briefly explain the Prim’s algorithm.
The algorithm due to Prim builds up a minimum spanning tree by adding edges to form a
sequence of expanding sub trees. The sequence of sub trees is represented by the pair (VT,
ET), where VT and ET respectively represent the set of vertices and the set of edges of a
sub tree in the sequence. Initially, the sub tree, in the sequence, consists of just a single
vertex which is selected arbitrarily from the set V of vertices of the given graph. The sub tree
is built-up iteratively by adding an edge that has minimum weight among the remaining
edges (i.e., edge selected greedily) and, which at the same time, does not form a cycle
with the earlier selected edges. We illustrate the Prim’s algorithm through an example before
giving a semi-formal definition of the algorithm.
Example
Let us consider the following graph:
Initially
VT= (a)E
8
In the first iteration, the edge having weight which is the minimum of the weights of the
edges having a as one of its vertices, is chosen. In this case, the edge ab with weight 1
is chosen out of the edges ab, ac and ad of weights respectively 1, 5 and 2. Thus, after First
iteration, we have the given graph with chosen edges in bold and VT and ET
as follows: VT= (a, b)
ET= ( (a, b))
In the next iteration, out of the edges, not chosen earlier and not making a cycle with earlier
chosen edge and having either a or b as one of its vertices, the edge with minimum weight is
chosen. In this case the vertex b does not have any edge originating out of it. In such cases,
if required, weight of anon-existent edge may be taken as. Thus choice is restricted to two
edges viz., ad and ac respectively of weights 2 and 5. Hence, in the next iteration the edge
ad is chosen. Hence, after second iteration, we have the given graph with chosen edges and
VT and ET as follows:
VT= (a, b, d)
ET= ((a, b), (a, d))
In the next iteration, out of the edges, not chosen earlier and not making a cycle with earlier
chosen edges and having either a, b or d as one of its vertices, the edge with minimum
weight is chosen. Thus choice is restricted to edges ac, dc and de with weights respectively
5, 3, 1.5. The edge de with weight 1.5 is selected. Hence, after third iteration we have the
given graph with chosen edges and VT and ET as follows:
VT= (a, b, d, e)
ET= ((a, b), (a, d); (d, e))
In the next iteration, out of the edges, not chosen earlier and not making a cycle with earlier
chosen edge and having either a, b, d or e as one of its vertices, the edge with minimum
weight is chosen. Thus, choice is restricted to edges dc and ac with weights respectively 3
and 5. Hence the edge dc with weight 3 is chosen. Thus, after fourth iteration, we have the
given graph with chosen edges and VT and ET as follows:
VT= (a, b, d, e, c)
ET= ((a, b), (a, d) (d, e) (d, c))
At this stage, it can be easily seen that each of the vertices, is on some chosen edge and the
chosen edges form a tree.

Más contenido relacionado

La actualidad más candente

Searching Sorting
Searching SortingSearching Sorting
Searching Sortingguest2cb109
 
Dynamic Memory & Linked Lists
Dynamic Memory & Linked ListsDynamic Memory & Linked Lists
Dynamic Memory & Linked ListsAfaq Mansoor Khan
 
Chapter 4 algorithmic efficiency handouts (with notes)
Chapter 4   algorithmic efficiency handouts (with notes)Chapter 4   algorithmic efficiency handouts (with notes)
Chapter 4 algorithmic efficiency handouts (with notes)mailund
 
linked list using c
linked list using clinked list using c
linked list using cVenkat Reddy
 
Linear and Binary search
Linear and Binary searchLinear and Binary search
Linear and Binary searchNisha Soms
 
Learning rule of first order rules
Learning rule of first order rulesLearning rule of first order rules
Learning rule of first order rulesswapnac12
 
Doubly & Circular Linked Lists
Doubly & Circular Linked ListsDoubly & Circular Linked Lists
Doubly & Circular Linked ListsAfaq Mansoor Khan
 
Searching & Sorting Algorithms
Searching & Sorting AlgorithmsSearching & Sorting Algorithms
Searching & Sorting AlgorithmsRahul Jamwal
 
Link list presentation slide(Daffodil international university)
Link list presentation slide(Daffodil international university)Link list presentation slide(Daffodil international university)
Link list presentation slide(Daffodil international university)shah alom
 
Linked List - Insertion & Deletion
Linked List - Insertion & DeletionLinked List - Insertion & Deletion
Linked List - Insertion & DeletionAfaq Mansoor Khan
 

La actualidad más candente (20)

Searching Sorting
Searching SortingSearching Sorting
Searching Sorting
 
Linklist
LinklistLinklist
Linklist
 
Dynamic Memory & Linked Lists
Dynamic Memory & Linked ListsDynamic Memory & Linked Lists
Dynamic Memory & Linked Lists
 
Chapter 4 algorithmic efficiency handouts (with notes)
Chapter 4   algorithmic efficiency handouts (with notes)Chapter 4   algorithmic efficiency handouts (with notes)
Chapter 4 algorithmic efficiency handouts (with notes)
 
Algo>ADT list & linked list
Algo>ADT list & linked listAlgo>ADT list & linked list
Algo>ADT list & linked list
 
linked list using c
linked list using clinked list using c
linked list using c
 
Linear and Binary search
Linear and Binary searchLinear and Binary search
Linear and Binary search
 
Learning rule of first order rules
Learning rule of first order rulesLearning rule of first order rules
Learning rule of first order rules
 
L7
L7L7
L7
 
linked list
linked list linked list
linked list
 
Linked list
Linked listLinked list
Linked list
 
Lu3520152020
Lu3520152020Lu3520152020
Lu3520152020
 
Doubly & Circular Linked Lists
Doubly & Circular Linked ListsDoubly & Circular Linked Lists
Doubly & Circular Linked Lists
 
Searching & Sorting Algorithms
Searching & Sorting AlgorithmsSearching & Sorting Algorithms
Searching & Sorting Algorithms
 
Linked lists 1
Linked lists 1Linked lists 1
Linked lists 1
 
CSE240 Doubly Linked Lists
CSE240 Doubly Linked ListsCSE240 Doubly Linked Lists
CSE240 Doubly Linked Lists
 
Link list presentation slide(Daffodil international university)
Link list presentation slide(Daffodil international university)Link list presentation slide(Daffodil international university)
Link list presentation slide(Daffodil international university)
 
Linked list
Linked listLinked list
Linked list
 
Linked List - Insertion & Deletion
Linked List - Insertion & DeletionLinked List - Insertion & Deletion
Linked List - Insertion & Deletion
 
Binary Search Tree
Binary Search TreeBinary Search Tree
Binary Search Tree
 

Similar a Master of Computer Application (MCA) – Semester 4 MC0080

advanced searching and sorting.pdf
advanced searching and sorting.pdfadvanced searching and sorting.pdf
advanced searching and sorting.pdfharamaya university
 
Selection sort
Selection sortSelection sort
Selection sortasra khan
 
Ch 1 intriductions
Ch 1 intriductionsCh 1 intriductions
Ch 1 intriductionsirshad17
 
Advanced s and s algorithm.ppt
Advanced s and s algorithm.pptAdvanced s and s algorithm.ppt
Advanced s and s algorithm.pptLegesseSamuel
 
Remove Duplicates in an Unsorted Linked List in Python
Remove Duplicates in an Unsorted Linked List in PythonRemove Duplicates in an Unsorted Linked List in Python
Remove Duplicates in an Unsorted Linked List in PythonKal Bartal
 
Sienna6bst 120411102353-phpapp02
Sienna6bst 120411102353-phpapp02Sienna6bst 120411102353-phpapp02
Sienna6bst 120411102353-phpapp02Getachew Ganfur
 
Quick and Heap Sort with examples
Quick and Heap Sort with examplesQuick and Heap Sort with examples
Quick and Heap Sort with examplesBst Ali
 
Sort Characters in a Python String Alphabetically
Sort Characters in a Python String AlphabeticallySort Characters in a Python String Alphabetically
Sort Characters in a Python String AlphabeticallyKal Bartal
 
Sorting types and Algorithms
Sorting types and AlgorithmsSorting types and Algorithms
Sorting types and AlgorithmsAli Khan
 
Sienna 7 heaps
Sienna 7 heapsSienna 7 heaps
Sienna 7 heapschidabdu
 
DS - Unit 2 FINAL (2).pptx
DS - Unit 2 FINAL (2).pptxDS - Unit 2 FINAL (2).pptx
DS - Unit 2 FINAL (2).pptxprakashvs7
 
Data Structures_ Sorting & Searching
Data Structures_ Sorting & SearchingData Structures_ Sorting & Searching
Data Structures_ Sorting & SearchingThenmozhiK5
 
2 Important Data Structure Interview Questions
2 Important Data Structure Interview Questions2 Important Data Structure Interview Questions
2 Important Data Structure Interview QuestionsGeekster
 
Sorting and Searching Techniques
Sorting and Searching TechniquesSorting and Searching Techniques
Sorting and Searching TechniquesProf Ansari
 
1.3 Linked List.pptx
1.3 Linked List.pptx1.3 Linked List.pptx
1.3 Linked List.pptxssuserd2f031
 

Similar a Master of Computer Application (MCA) – Semester 4 MC0080 (20)

advanced searching and sorting.pdf
advanced searching and sorting.pdfadvanced searching and sorting.pdf
advanced searching and sorting.pdf
 
Selection sort
Selection sortSelection sort
Selection sort
 
Ch 1 intriductions
Ch 1 intriductionsCh 1 intriductions
Ch 1 intriductions
 
Advanced s and s algorithm.ppt
Advanced s and s algorithm.pptAdvanced s and s algorithm.ppt
Advanced s and s algorithm.ppt
 
Remove Duplicates in an Unsorted Linked List in Python
Remove Duplicates in an Unsorted Linked List in PythonRemove Duplicates in an Unsorted Linked List in Python
Remove Duplicates in an Unsorted Linked List in Python
 
Sienna6bst 120411102353-phpapp02
Sienna6bst 120411102353-phpapp02Sienna6bst 120411102353-phpapp02
Sienna6bst 120411102353-phpapp02
 
Quick and Heap Sort with examples
Quick and Heap Sort with examplesQuick and Heap Sort with examples
Quick and Heap Sort with examples
 
Data Structure
Data StructureData Structure
Data Structure
 
Sort Characters in a Python String Alphabetically
Sort Characters in a Python String AlphabeticallySort Characters in a Python String Alphabetically
Sort Characters in a Python String Alphabetically
 
Searching.pptx
Searching.pptxSearching.pptx
Searching.pptx
 
L1803016468
L1803016468L1803016468
L1803016468
 
Sorting types and Algorithms
Sorting types and AlgorithmsSorting types and Algorithms
Sorting types and Algorithms
 
Sienna 7 heaps
Sienna 7 heapsSienna 7 heaps
Sienna 7 heaps
 
DS - Unit 2 FINAL (2).pptx
DS - Unit 2 FINAL (2).pptxDS - Unit 2 FINAL (2).pptx
DS - Unit 2 FINAL (2).pptx
 
Data Structures_ Sorting & Searching
Data Structures_ Sorting & SearchingData Structures_ Sorting & Searching
Data Structures_ Sorting & Searching
 
2 Important Data Structure Interview Questions
2 Important Data Structure Interview Questions2 Important Data Structure Interview Questions
2 Important Data Structure Interview Questions
 
Sorting and Searching Techniques
Sorting and Searching TechniquesSorting and Searching Techniques
Sorting and Searching Techniques
 
1.3 Linked List.pptx
1.3 Linked List.pptx1.3 Linked List.pptx
1.3 Linked List.pptx
 
Binary Search
Binary SearchBinary Search
Binary Search
 
Sorting
SortingSorting
Sorting
 

Más de Aravind NC

MC0085 – Advanced Operating Systems - Master of Computer Science - MCA - SMU DE
MC0085 – Advanced Operating Systems - Master of Computer Science - MCA - SMU DEMC0085 – Advanced Operating Systems - Master of Computer Science - MCA - SMU DE
MC0085 – Advanced Operating Systems - Master of Computer Science - MCA - SMU DEAravind NC
 
MC0083 – Object Oriented Analysis &. Design using UML - Master of Computer Sc...
MC0083 – Object Oriented Analysis &. Design using UML - Master of Computer Sc...MC0083 – Object Oriented Analysis &. Design using UML - Master of Computer Sc...
MC0083 – Object Oriented Analysis &. Design using UML - Master of Computer Sc...Aravind NC
 
MC0084 – Software Project Management & Quality Assurance - Master of Computer...
MC0084 – Software Project Management & Quality Assurance - Master of Computer...MC0084 – Software Project Management & Quality Assurance - Master of Computer...
MC0084 – Software Project Management & Quality Assurance - Master of Computer...Aravind NC
 
MC0082 –Theory of Computer Science
MC0082 –Theory of Computer ScienceMC0082 –Theory of Computer Science
MC0082 –Theory of Computer ScienceAravind NC
 
Master of Computer Application (MCA) – Semester 4 MC0079
Master of Computer Application (MCA) – Semester 4  MC0079Master of Computer Application (MCA) – Semester 4  MC0079
Master of Computer Application (MCA) – Semester 4 MC0079Aravind NC
 
Master of Computer Application (MCA) – Semester 4 MC0078
Master of Computer Application (MCA) – Semester 4  MC0078Master of Computer Application (MCA) – Semester 4  MC0078
Master of Computer Application (MCA) – Semester 4 MC0078Aravind NC
 
Master of Computer Application (MCA) – Semester 4 MC0077
Master of Computer Application (MCA) – Semester 4  MC0077Master of Computer Application (MCA) – Semester 4  MC0077
Master of Computer Application (MCA) – Semester 4 MC0077Aravind NC
 
Master of Computer Application (MCA) – Semester 4 MC0076
Master of Computer Application (MCA) – Semester 4  MC0076Master of Computer Application (MCA) – Semester 4  MC0076
Master of Computer Application (MCA) – Semester 4 MC0076Aravind NC
 

Más de Aravind NC (10)

MC0085 – Advanced Operating Systems - Master of Computer Science - MCA - SMU DE
MC0085 – Advanced Operating Systems - Master of Computer Science - MCA - SMU DEMC0085 – Advanced Operating Systems - Master of Computer Science - MCA - SMU DE
MC0085 – Advanced Operating Systems - Master of Computer Science - MCA - SMU DE
 
MC0083 – Object Oriented Analysis &. Design using UML - Master of Computer Sc...
MC0083 – Object Oriented Analysis &. Design using UML - Master of Computer Sc...MC0083 – Object Oriented Analysis &. Design using UML - Master of Computer Sc...
MC0083 – Object Oriented Analysis &. Design using UML - Master of Computer Sc...
 
MC0084 – Software Project Management & Quality Assurance - Master of Computer...
MC0084 – Software Project Management & Quality Assurance - Master of Computer...MC0084 – Software Project Management & Quality Assurance - Master of Computer...
MC0084 – Software Project Management & Quality Assurance - Master of Computer...
 
MC0082 –Theory of Computer Science
MC0082 –Theory of Computer ScienceMC0082 –Theory of Computer Science
MC0082 –Theory of Computer Science
 
Master of Computer Application (MCA) – Semester 4 MC0079
Master of Computer Application (MCA) – Semester 4  MC0079Master of Computer Application (MCA) – Semester 4  MC0079
Master of Computer Application (MCA) – Semester 4 MC0079
 
Master of Computer Application (MCA) – Semester 4 MC0078
Master of Computer Application (MCA) – Semester 4  MC0078Master of Computer Application (MCA) – Semester 4  MC0078
Master of Computer Application (MCA) – Semester 4 MC0078
 
Master of Computer Application (MCA) – Semester 4 MC0077
Master of Computer Application (MCA) – Semester 4  MC0077Master of Computer Application (MCA) – Semester 4  MC0077
Master of Computer Application (MCA) – Semester 4 MC0077
 
Master of Computer Application (MCA) – Semester 4 MC0076
Master of Computer Application (MCA) – Semester 4  MC0076Master of Computer Application (MCA) – Semester 4  MC0076
Master of Computer Application (MCA) – Semester 4 MC0076
 
Time travel
Time travelTime travel
Time travel
 
Google x
Google xGoogle x
Google x
 

Último

Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 

Último (20)

Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

Master of Computer Application (MCA) – Semester 4 MC0080

  • 1. 1 MC0080 – Analysis and Design of Algorithms Question 1- Describe the following: a) Well-known Sorting Algorithms Bubble sort It is a simple sorting algorithm. The algorithm starts at the beginning of the data set. It compares the first two elements, and if the first is greater than the second, it swaps them. It continues doing this for each pair of adjacent elements to the end of the data set. It then starts again with the first two elements, repeating until no swaps have occurred on the last pass. This algorithm's average and worst case performance is O(n2 ), so it is rarely used to sort large, unordered, data sets. Bubble sort can be used to sort a small number of items. Selection sort This is an in-place comparison sort. It has O(n2 ) complexity, making it inefficient on large lists, and generally performs worse than the similar insertion sort. Selection sort is noted for its simplicity, and also has performance advantages over more complicated algorithms in certain situations. The algorithm finds the minimum value, swaps it with the value in the first position, and repeats these steps for the remainder of the list. It does no more than n swaps, and thus is useful where swapping is very expensive. Insertion sort It is a simple sorting algorithm that is relatively efficient for small lists and mostly sorted lists, and often is used as part of more sophisticated algorithms. It works by taking elements from the list one by one and inserting them in their correct position into a new sorted list. In arrays, the new list and the remaining elements can share the array's space, but insertion is expensive, requiring shifting all following elements over by one. Shell sort It was invented by Donald Shell in 1959. It improves upon bubble sort and insertion sort by moving out of order elements more than one position at a time. One implementation can be described as arranging the data sequence in a two-dimensional array and then sorting the columns of the array using insertion sort. Heap sort This is a much more efficient version of selection sort. It also works by determining the largest (or smallest) element of the list, placing that at the end (or beginning) of the list, then continuing with the rest of the list, but accomplishes this task efficiently by using a data structure called a heap, a special type of binary tree. Once the data list has been made into a heap, the root node is guaranteed to be the largest (or smallest) element. When it is removed and placed at the end of the list, the heap is rearranged so the largest element remaining moves to the root. Using the heap, finding the next largest element takes O(log n) time, instead of O(n) for a linear scan as in simple selection sort. This allows Heap sort to run in O(n log n) time, and this is also the worst case complexity. b) Divide and Conquer Techniques Merge sort Merge sort takes advantage of the ease of merging already sorted lists into a new sorted list. It starts by comparing every two elements (i.e., 1 with 2, then 3 with 4...) and swapping them
  • 2. 2 if the first should come after the second. It then merges each of the resulting lists of two into lists of four, then merges those lists of four, and so on; until at last two lists are merged into the final sorted list. Of the algorithms described here, this is the first that scales well to very large lists, because its worst-case running time is O(n log n). Quick sort This is a divide and conquer algorithm which relies on a partition operation: to partition an array an element called a pivot is selected. All elements smaller than the pivot are moved before it and all greater elements are moved after it. This can be done efficiently in linear time and in-place. The lesser and greater sub lists are then recursively sorted. Efficient implementations of quick sort (with in-place partitioning) are typically unstable sorts and somewhat complex, but are among the fastest sorting algorithms in practice. Together with its modest O(log n) space usage, quick sort is one of the most popular sorting algorithms and is available in many standard programming libraries. The most complex issue in quicksort is choosing a good pivot element; consistently poor choices of pivots can result in drastically slower O(n²) performance, if at each step the median is chosen as the pivot then the algorithm works in O(n log n). Finding the median however, is an O(n) operation on unsorted lists and therefore exacts its own penalty with sorting. Question 2 - Explain in your own words the different asymptotic functions and notations. We often want to know a quantity only approximately and not necessarily exactly, just to compare with another quantity. And, in many situations, correct comparison may be possible even with approximate values of the quantities. The advantage of the possibility of correct comparisons through even approximate values of quantities, is that the time required to find approximate values may be much less than the times required to find exact values. We will introduce five approximation functions and their notations. The purpose of these asymptotic growth rate functions to be introduced, is to facilitate the recognition of essential character of a complexity function through some simpler functions delivered by these notations. For examples, a complexity function f(n) = 5004 n3 + 83 n2 + 19 n + 408, has essentially same behavior as that of g(n) = n3 as the problem size n becomes larger and larger. But g(n) = n3 is much more comprehensible and its value easier to compute than the function f(n) Enumerate the five well – known approximation functions and how these are pronounced 1 O: (O(n2 )) is pronounced as ‘big – oh of n2’ or sometimes just as oh of n2) 2 Ω: (Ω(n2 )) is pronounced as ‘big – omega of n2 or sometimes just as omega of n2’) 3 Θ: (Θ(n2 )) is pronounced as ‘theta of n2’) 4 o : (o (n2) is pronounced as ‘little – oh n2’) 5 is pronounced as ‘little – omega of n2 These approximations denote relations from functions to functions. For example, if functions f, g: N ->N are given by f (n) = n2 – 5n and
  • 3. 3 g(n) = n2 then O (f (n)) = g(n) or O (n2 – 5n) = n2 To be more precise, each of these notations is a mapping that associates a set of functions to each function under consideration. For example, if f(n) is a polynomial of degree k then the set O(f(n) included all polynomials of degree less than or equal to k. In the discussion of any one of the five notations, generally two functions say f and g are involved. The functions have their domains and N, the set of natural numbers, i.e., f : N N g : N ->N These functions may also be considered as having domain and co domain as R. The Notation O Provides asymptotic upper bound for a given function. Let f(x) and g(x) be two functions each from the set of natural numbers or set of positive real numbers to positive real numbers. Then f(x) is said to be O (g(x)) (pronounced as big – oh of g of x) if there exists two positive integers / real number constants C and k such that f(x) <= C g(x) for all x >= k (The restriction of being positive on integers/ real is justified as all complexities are positive numbers) Question 3 - Describe the following: a) Fibonacci Heaps A Fibonacci heap is a collection of trees satisfying the minimum-heap property, that is, the key of a child is always greater than or equal to the key of the parent. This implies that the minimum key is always at the root of one of the trees. To allow fast deletion and concatenation, the roots of all trees are linked using a circular, doubly linked list. The children of each node are also linked using such a list. For each node, we maintain its number of children and whether the node is marked. Moreover we maintain a pointer to the root containing the minimum key. Operation find minimum is now trivial because we keep the pointer to the node containing it. It does not change the potential of the heap, therefore both actual and amortized cost is constant. As mentioned above, merge is implemented simply by concatenating the lists of tree roots of the two heaps. This can be done in constant time and the potential does not change, leading again to constant amortized time. Operation insert works by creating a new heap with one element and doing merge. This takes constant time, and the potential increases by one, because the number of trees increases. The amortized cost is thus still constant. Operation extract minimum (same as delete minimum) operates in three phases. First we take the root containing the minimum element and remove it. Its children will become roots
  • 4. 4 of new trees. Operation decrease key will take the node, decrease the key and if the heap property becomes violated (the new key is smaller than the key of the parent), the node is cut from its parent. If the parent is not a root, it is marked. If it has been marked already, it is cut as well and its parent is marked. We continue upwards until we reach either the root or an unmarked node. b) Binomial Heaps A binomial heap is implemented as a collection of binomial trees (compare with a binary heap, which has a shape of a single binary tree). A binomial tree is defined recursively: ● A binomial tree of order 0 is a single node ● A binomial tree of order k has a root node whose children are roots of binomial trees of orders k−1, k−2., 2, 1, 0 (in this order). A binomial heap is implemented as a set of binomial trees that satisfy the binomial heap properties: ● Each binomial tree in a heap obeys the minimum-heap property: the key of a node is greater than or equal to the key of its parent. There can only be either one or zero binomial trees for each order, including zero order. The first property ensures that the root of each binomial tree contains the smallest key in the tree, which applies to the entire heap. The second property implies that a binomial heap with n nodes consists of at most log n + 1 binomial trees. Inserting a new element to a heap can be done by simply creating a new heap containing only this element and then merging it with the original heap. To find the minimum element of the heap, find the minimum among the roots of the binomial trees. To delete the minimum element from the heap, first find this element, remove it from its binomial tree, and obtain a list of its subtrees. Then transform this list of subtrees into a separate binomial heap by reordering them from smallest to largest order. Then merge this heap with the original heap. After decreasing the key of an element, it may become smaller than the key of its parent, violating the minimum-heap property. If this is the case, exchange the element with its parent, and possibly also with its grandparent, and so on, until the minimum-heap property is no longer violated. To delete an element from the heap, decrease its key to negative infinity (that is, some value lower than any element in the heap) and then delete the minimum in the heap. Question 4 - Discuss the process of flow of Strassen’s Algorithm and also its limitations. Strassen’s recursive algorithm for multiplying nx n matrices runs in time. For sufficiently large value of n, therefore, it outperforms the matrix multiplication algorithm.The idea behind the Strassen’s algorithm is to multiply matrices with
  • 5. 5 only 7 scalar multiplications (instead of 8). Consider the matrices. The seven sub matrix products used are, P 1= a .(g-h) P 2= (a+b) h P 3= (c+d) e P 4= d. (f–e) P 5= (a + d). (e + h) P 6 = (b – d). (f + h) P 7 = (a – c) . (e+g) Using these sub matrix products the matrix products are obtained by, r = P 5+ P 4– P 2+ P 6 s = P 1+ P 2 t = P 3+ P 4 u = P 5+ P 1– P 3– P 1 This method works as it can be easily seen that s=(ag–ah)+(ah+bh)=ag+bh .In this method there are 7 multiplications and 18 additions. For (n´n)matrices, it can be worth replacing one multiplication by 18 additions, since multiplication costs are much more than addition costs.The recursive algorithm for multiplying n´n matrices is given below:1. Partition the two matrices A, B into matrices.2. Conquer: Perform 7 multiplications recursively.3. Combine: Form using + and –.The running time of above recurrence is given by the recurrence given below: The current best upper bound for multiplying matrices is approximately Limitations of Strassen’s Algorithm From a practical point of view, Strassen’s algorithm is often not the method of choice for matrix multiplication, for the following four reasons:1. The constant factor hidden in the running time of Strassen’s algorithm is larger than the constant factor in the method.2. When the matrices are sparse, methods tailored for sparse matrices are faster. 3. Strassen’s algorithm is not quite as numerically stable as the naïvemethod.4. The sub matrices formed at the levels of recursion consume space. Question 5 - How do you formalize a greedy technique? Discuss the different steps one by one? In order to develop an algorithm based on the greedy technique to solve a general optimization problem, we need the following data structures and functions: i) A set or list of give / candidate values from which choices are made, to reach a solution. For example, in the case of Minimum Number of Notes problem, the list of candidate values (in rupees) of notes is{1, 2, 5, 10, 20, 50, 100, 500, 1000}. Further, the number of notes of each denomination should be clearly mentioned. Otherwise, it is assumed that each
  • 6. 6 candidate value can be used as many times as required for the solution using greedy technique. Let us call this set asGV : Set of Given Values ii) Set (rather multi-set) of considered and chosen values: This structure contains those candidate values, which are considered and chosen by the algorithm based on greedy technique to reach a solution. Let us call this structure as CV : Structure of Chosen Values The structure is generally not a set but a multi-set in the sense that values may be repeated. For example, in the case of Minimum Number of Notes problem, if the amount to be collected is Rs. 289 then CV = {100, 100, 50, 20, 10, 5, 2, 2} iii) Set of Considered and Rejected Values: As the name suggests, this is the set of all those values, which are considered but rejected. Let us call this set as RV : Set of considered and Rejected Values A candidate value may belong to both CV and RV. But, once a value is put in RV, then this value cannot be put any more in CV. For example, to make an amount of Rs. 289, once we have chosen two notes each of denomination100, we have CV = {100, 100}At this stage, we have collected Rs. 200 out of the required Rs. 289. At this stage RV = {1000, 500}. So, we can chose a note of any denomination except those in RV, i.e., except 1000 and 500. Thus, at this stage, we can chose a note of denomination 100. However, this choice of 100 again will make the total amount collected so far, as Rs. 300, which exceeds Rs. 289. Hence we reject the choice of 100 third time and put 100 in RV, so that now RV = {1000, 500, 100}. From this point onward, we cannot choose even denomination 100. Next, we consider some of the function, which need to be defined in an algorithm using greedy technique to solve an optimization problem. iv) A function say SolF that checks whether a solution is reached or not. However, the function does not check for the optimality of the obtained solution. In the case of Minimum Number of Notes problem, the function SolF finds the sum of all values in the multi-set CV and compares with the desired amount, say Rs. 289. For example, if at one stage CV = {100, 100}then sum of values in CV is 200 which does not equal 289, then the function SolF returns. ‘Solution not reached’. However, at a later stage, when CV ={100, 100, 50, 20, 10, 5, 2, 2}, then as the sum of values in CV equals the required amount, hence the function SolF returns the message of the form ‘Solution reached’. It may be noted that the function only informs about a possible solution. However, solution provided through SolF may not be optimal. For instance in the Example above, when we reach CV = {60, 10, 10}, then SolF returns ‘Solution, reached’. However, as discussed earlier, the solution 80 = 60 + 10+ 10 using three notes is not optimal, because, another solution using only two notes, viz., 80 = 40 + 40, is still cheaper. v) Selection Function say SelF finds out the most promising candidate value out of the values not yet rejected, i.e., which are not in RV. In the case of Minimum Number of Notes problem, for collecting Rs. 289, at the stage when RV = {1000, 500} and CV = {100, 100} then first the function SelF attempts the denomination 100. But, through function SolF, when it is found that by addition of 100 to the values already in CV, the total value becomes300 which exceeds 289, the value 100 is rejected and put in RV. Next, the function SelF attempts
  • 7. 7 the next lower denomination 50. The value 50 when added to the sum of values in CV gives 250, which is less than 289. Hence, the value 50 is returned by the function SelF. vi) The Feasibility-Test Function, say FeaF. When a new value say v is chosen by the function SelF, then the function FeaF checks whether the newest, obtained by adding v to the set CV of already selected values, is a possible part of the final solution. Thus in the case of Minimum Number of Notes problem, if amount to be collected is Rs. 289 and at some stage, CV = {100, 100}, then the function SelF returns50. At this stage, the function FeaF takes the control. It adds 50 to the sum of the values in CV, and on finding that the sum 250 is less than the required value 289 informs the main/calling program that{100, 100, 50} can be a part of some final solution, and needs to be exploredfurther.vii) The Objective Function, say ObjF, gives the value of the solution. For example, in the case of the problem of collecting Rs. 289; as CV = {100, 100, 50, 20, 10, 5, 2, 2} is such that sum of values in CV equals the required value 289, the function ObjF returns the number of notes in CV ,i.e., the number 8.After having introduced a number of sets and functions that may be required by an algorithm based on greedy technique, we give below the outline of greedy technique, say Greedy-Structure. For any actual algorithm based on greedy technique, the various structures the functions discussed above have to be replaced by actual functions. These functions depend upon the problem under consideration. The Greedy-Structure outlined below takes the set GV of given values as input parameter and returns CV, the set of chosen values. For developing any algorithm based on greedy technique, the following function outline will be used. Function Greedy-Structure (GV : set): set CV ß ? {initially, the set of considered values is empty}While GV ? RV and not SolF (CV) do begin v SelF (GV)If FeaF (CV ? {v} ) then CV CV ? {v}else RV RV ? {v}end// the function Greedy Structure comes out// of while-loop when either GV = RV, i.e., all// given values are rejected or when solution is found If SolF (CV) then returns ObjF (GV)else return “No solution is possible “end function Greedy-Structure Question 6 - Briefly explain the Prim’s algorithm. The algorithm due to Prim builds up a minimum spanning tree by adding edges to form a sequence of expanding sub trees. The sequence of sub trees is represented by the pair (VT, ET), where VT and ET respectively represent the set of vertices and the set of edges of a sub tree in the sequence. Initially, the sub tree, in the sequence, consists of just a single vertex which is selected arbitrarily from the set V of vertices of the given graph. The sub tree is built-up iteratively by adding an edge that has minimum weight among the remaining edges (i.e., edge selected greedily) and, which at the same time, does not form a cycle with the earlier selected edges. We illustrate the Prim’s algorithm through an example before giving a semi-formal definition of the algorithm. Example Let us consider the following graph: Initially VT= (a)E
  • 8. 8 In the first iteration, the edge having weight which is the minimum of the weights of the edges having a as one of its vertices, is chosen. In this case, the edge ab with weight 1 is chosen out of the edges ab, ac and ad of weights respectively 1, 5 and 2. Thus, after First iteration, we have the given graph with chosen edges in bold and VT and ET as follows: VT= (a, b) ET= ( (a, b)) In the next iteration, out of the edges, not chosen earlier and not making a cycle with earlier chosen edge and having either a or b as one of its vertices, the edge with minimum weight is chosen. In this case the vertex b does not have any edge originating out of it. In such cases, if required, weight of anon-existent edge may be taken as. Thus choice is restricted to two edges viz., ad and ac respectively of weights 2 and 5. Hence, in the next iteration the edge ad is chosen. Hence, after second iteration, we have the given graph with chosen edges and VT and ET as follows: VT= (a, b, d) ET= ((a, b), (a, d)) In the next iteration, out of the edges, not chosen earlier and not making a cycle with earlier chosen edges and having either a, b or d as one of its vertices, the edge with minimum weight is chosen. Thus choice is restricted to edges ac, dc and de with weights respectively 5, 3, 1.5. The edge de with weight 1.5 is selected. Hence, after third iteration we have the given graph with chosen edges and VT and ET as follows: VT= (a, b, d, e) ET= ((a, b), (a, d); (d, e)) In the next iteration, out of the edges, not chosen earlier and not making a cycle with earlier chosen edge and having either a, b, d or e as one of its vertices, the edge with minimum weight is chosen. Thus, choice is restricted to edges dc and ac with weights respectively 3 and 5. Hence the edge dc with weight 3 is chosen. Thus, after fourth iteration, we have the given graph with chosen edges and VT and ET as follows: VT= (a, b, d, e, c) ET= ((a, b), (a, d) (d, e) (d, c)) At this stage, it can be easily seen that each of the vertices, is on some chosen edge and the chosen edges form a tree.