Analysis of algorithms

In computer science, the analysis of algorithms is the process of finding the computational complexity of algorithms – the amount of time, storage, or other resources needed to execute them. This involves determining a function that relates the length of an algorithm's input to the number of steps it takes or the number of storage locations it uses. An algorithm is said to be efficient when this function's values are small, or grow compared to a growth in the size of the input. Different inputs of the same length may cause the algorithm to have different behavior, so best and average case descriptions might all be of practical interest; when not otherwise specified, the function describing the performance of an algorithm is an upper bound, determined from the worst case inputs to the algorithm. The term "analysis of algorithms" was coined by Donald Knuth. Algorithm analysis is an important part of a broader computational complexity theory, which provides theoretical estimates for the resources needed by any algorithm which solves a given computational problem.

These estimates provide an insight into reasonable directions of search for efficient algorithms. In theoretical analysis of algorithms it is common to estimate their complexity in the asymptotic sense, i.e. to estimate the complexity function for arbitrarily large input. Big O notation, Big-omega notation and Big-theta notation are used to this end. For instance, binary search is said to run in a number of steps proportional to the logarithm of the length of the sorted list being searched, or in O, colloquially "in logarithmic time". Asymptotic estimates are used because different implementations of the same algorithm may differ in efficiency; however the efficiencies of any two "reasonable" implementations of a given algorithm are related by a constant multiplicative factor called a hidden constant. Exact measures of efficiency can sometimes be computed but they require certain assumptions concerning the particular implementation of the algorithm, called model of computation. A model of computation may be defined in terms of an abstract computer, e.g. Turing machine, and/or by postulating that certain operations are executed in unit time.

For example, if the sorted list to which we apply binary search has n elements, we can guarantee that each lookup of an element in the list can be done in unit time at most log2 n + 1 time units are needed to return an answer. Time efficiency estimates depend on. For the analysis to correspond usefully to the actual execution time, the time required to perform a step must be guaranteed to be bounded above by a constant. One must be careful here; this assumption may not be warranted in certain contexts. For example, if the numbers involved in a computation may be arbitrarily large, the time required by a single addition can no longer be assumed to be constant. Two cost models are used: the uniform cost model called uniform-cost measurement, assigns a constant cost to every machine operation, regardless of the size of the numbers involved the logarithmic cost model called logarithmic-cost measurement, assigns a cost to every machine operation proportional to the number of bits involvedThe latter is more cumbersome to use, so it's only employed when necessary, for example in the analysis of arbitrary-precision arithmetic algorithms, like those used in cryptography.

A key point, overlooked is that published lower bounds for problems are given for a model of computation, more restricted than the set of operations that you could use in practice and therefore there are algorithms that are faster than what would naively be thought possible. Run-time analysis is a theoretical classification that estimates and anticipates the increase in running time of an algorithm as its input size increases. Run-time efficiency is a topic of great interest in computer science: A program can take seconds, hours, or years to finish executing, depending on which algorithm it implements. While software profiling techniques can be used to measure an algorithm's run-time in practice, they cannot provide timing data for all infinitely many possible inputs. Since algorithms are platform-independent, there are additional significant drawbacks to using an empirical approach to gauge the comparative performance of a given set of algorithms. Take as an example a program that looks up a specific entry in a sorted list of size n.

Suppose this program were implemented on Computer A, a state-of-the-art machine, using a linear search algorithm, on Computer B, a much slower machine, using a binary search algorithm. Benchmark testing on the two computers running their respective programs might look something like the following: Based on these metrics, it would be easy to jump to the conclusion that Computer A is running an algorithm, far superior in efficiency to that of Computer B. However, if the size of the input-list is increased to a sufficient number, that conclusion is demonstrated to be in error: Computer A, running the linear search program, exhibits a linear growth rate; the program's run-time is directly proportional to its input size. Doubling the input size doubles the run time, quadrupling the input size quadruples the run-time, so forth. On the other hand, Computer B, running the binary search progra

Enamul Haque (museologist)

Enamul Haque is a Bangladeshi museologist. He was awarded Ekushey Padak in 2014 and Independence Day Award in 2017 by the Government of Bangladesh. In 2020, Dr. Haque has been awarded with Padma Shri award for his tremendous contribution in the field of archeology and museology by the Government of India. Haque completed his bachelor's in history and master's in archaeological history from the University of Dhaka, he earned his PhD on South Asian Art from the University of Oxford. He got his post-graduate Diploma-in-Museology from London. Haque joined Dhaka Museum in 1962, he became the principal in 1965, director in 1969 and director general during 1983-1991. He was elected as the President of the International Council of Museums Asia-Pacific Organization for the period 1983-86, he served as the professor of national culture and heritage in the Independent University and the president and academic director of the International Centre for Study of Bengal Art. Bangladesh Shishu Academy Agrani Bank Literary Award Honorary International Councillor of the Asia Society of New York Ramaprasad Chanda Centenary Medal by the Asiatic Society of Calcutta D.

Sc. honoris causa by Open University of Alternative Medicines of India Rich Foundation Award Ekushey Padak Independence Day Award Padma Shri Award, India's fourth highest civilian award Dhaka alias Jahangirnagar: 400 years

Maria Limardo

Maria Limardo is an Italian politician. Member of right-wing party National Alliance, she joined The People of Freedom in 2009, she served as assessor in the Elio Costa government in Vibo Valentia from 2002 to 2005. Limardo ran for Mayor of Vibo Valentia at the 2019 local elections as an independent, supported by a centre-right coalition formed by Forza Italia, Brothers of Italy and local civic lists, she won and took her office on 3 June 2019. She is the first woman to be elected Mayor of Vibo Valentia. 2019 Italian local elections List of mayors of Vibo Valentia "Maria Limardo". Ministry of Interior of Italy. Retrieved 18 June 2019. "Curriculum Vitae". Retrieved 18 June 2019