Algorithm

« Back to Glossary Index

Definition and History of Algorithms
– Algorithms are a finite sequence of rigorous instructions used in mathematics and computer science.
– They are used to solve specific problems or perform computations.
– Algorithms serve as specifications for calculations and data processing.
– More advanced algorithms can incorporate conditionals and automated decision-making.
– Algorithms can be expressed in a well-defined formal language for calculating a function.
– Step-by-step procedures for solving mathematical problems have been used since antiquity.
– Babylonian, Egyptian, Indian, Greek, and Arabic civilizations developed mathematical algorithms.
– These algorithms included methods for finding the greatest common divisor and cryptographic algorithms.
– Ancient algorithms were based on different numeral systems and arithmetic techniques.
– They laid the foundation for modern algorithmic thinking.
– Muḥammad ibn Mūsā al-Khwārizmī wrote texts on Indian computation and arithmetic in the 9th century.
– Latin translations of al-Khwārizmī’s works introduced the term ‘algorismi’ and ‘algorithmus’ in the 12th century.
– The term ‘algorithm’ was derived from al-Khwārizmī’s name and referred to the art of reckoning by numerals.
– Al-Khwārizmī’s texts played a significant role in spreading Indian numerals and arithmetic in Europe.
– The term ‘algorithm’ evolved over time in different languages.
– The English word ‘algorism’ was attested around 1230 and later adopted the French term.
– In the 15th century, the Latin word was altered to ‘algorithmus’ under the influence of the Greek word ‘arithmos.’
– Early English dictionaries defined ‘algorism’ as the art of numbering by cyphers and ‘algorithmus’ as skill in accounting or numbering.
– The term ‘algorithm’ began to be used to signify a step-by-step procedure in English since at least 1811.
– The word ‘algorithm’ has undergone various interpretations and usages throughout history.
– In 1928, attempts to solve the Entscheidungsproblem led to the partial formalization of algorithms.
– Formalizations included recursive functions, lambda calculus, and Turing machines.
– These formalizations aimed to define effective calculability and effective methods.
– Alan Turing’s Turing machines, proposed in the late 1930s, are considered a fundamental model of computation.
– The development of formalized algorithms paved the way for modern computer science.

Expressing and Designing Algorithms
– Algorithms can be expressed in natural languages, pseudocode, flowcharts, etc.
– Natural language expressions of algorithms are rarely used for complex or technical algorithms.
– Pseudocode, flowcharts, and control tables provide structured ways to express algorithms.
– Programming languages are primarily used to execute algorithms.
– Different representations of algorithms are possible, such as machine tables, flowcharts, and quadruples.
– Algorithm design is a method for problem-solving and engineering algorithms.
– Different solution theories, such as divide-and-conquer or dynamic programming, contribute to algorithm design.
– Algorithm design patterns, like the template method pattern and decorator pattern, aid in designing and implementing algorithms.
– Resource efficiency, such as run-time and memory usage, is an important aspect of algorithm design.
– The big O notation describes an algorithm’s run-time growth as input size increases.
– Simplicity and elegance are desirable qualities in algorithms.
– Good algorithms are adaptable, simple, and elegant.
– The length of time taken to perform an algorithm is one criterion for evaluating its goodness.
– Chaitin defines an elegant program as the smallest possible program for producing a specific output.
– Tradeoffs may occur between speed and compactness in elegant programs.

Computers and Models of Computation
– A computer is a discrete deterministic mechanical device that follows instructions.
– Models of computation, like Melzaks and Lambeks primitive models, have discrete locations, counters, an agent, and a list of effective instructions.
– Minsky’s machine, a variation of Lambeks abacus model, follows instructions sequentially.
– Conditional and unconditional GOTO statements can change program flow.
– Different algorithms can compute the same function.

Simulation and Execution of Algorithms
– Algorithms are essential to the way computers process data.
– Algorithms detail specific instructions for a computer to perform a task.
– Algorithms can be simulated by a Turing-complete system.
– Not all computational processes defined by Turing machines terminate.
– Algorithms often involve reading, writing, and storing data.
– Programmer must translate the algorithm into a language that the computer can execute.
– Effective language choice depends on the target computing agent.
– Knowledge of effective language is necessary for the programmer.
– Model choice for simulation introduces the notion of simulation.
– Speed of execution depends on the instruction set of the computer.
– Any algorithm can be computed by a Turing complete model.
– Structured programs can be written using conditional and unconditional GOTOs, assignment, and HALT instructions.
– Undisciplined use of GOTOs can result in spaghetti code.
– Additional canonical structures include DO-WHILE and CASE.
– Structured programs lend themselves to proofs of correctness using mathematical induction.
– Flowchart is a graphical aid to describe and document an algorithm.
– Flowchart starts at the top and proceeds down.
– Primary symbols include directed arrow, rectangle (SEQUENCE, GOTO), diamond (IF-THEN-ELSE), and dot (OR-tie).
– Böhm-Jacopini canonical structures can be built using these symbols.
– Sub-structures can nest in rectangles with a single exit.

Example of Euclid’s Algorithm and Algorithmic Analysis
– Euclid’s algorithm is a method for finding the greatest common divisor (GCD) of two numbers.
– The algorithm involves a series of steps that use subtraction to find the remainder.
– It is named after the ancient Greek mathematician Euclid.
– The algorithm has been used for centuries and is still widely used today.
– Euclid’s algorithm is efficient and can find the GCD of very large numbers.
– Inelegant is a version of Euclid’s

Algorithm (Wikipedia)

In mathematics and computer science, an algorithm (/ˈælɡərɪðəm/ ) is a finite sequence of rigorous instructions, typically used to solve a class of specific problems or to perform a computation. Algorithms are used as specifications for performing calculations and data processing. More advanced algorithms can use conditionals to divert the code execution through various routes (referred to as automated decision-making) and deduce valid inferences (referred to as automated reasoning), achieving automation eventually. Using human characteristics as descriptors of machines in metaphorical ways was already practiced by Alan Turing with terms such as "memory", "search" and "stimulus".

In a loop, subtract the larger number against the smaller number. Halt the loop when the subtraction will make a number negative. Assess two numbers whether one of them equal to zero or not. If yes, take the other number as the greatest common divisor. If no, put the two number in the subtraction loop again.
Flowchart of using successive subtractions to find the greatest common divisor of number r and s

In contrast, a heuristic is an approach to problem solving that may not be fully specified or may not guarantee correct or optimal results, especially in problem domains where there is no well-defined correct or optimal result. For example, social media recommender systems rely on heuristics in such a way that, although widely characterized as "algorithms" in 21st century popular media, cannot deliver correct results due to the nature of the problem.

As an effective method, an algorithm can be expressed within a finite amount of space and time and in a well-defined formal language for calculating a function. Starting from an initial state and initial input (perhaps empty), the instructions describe a computation that, when executed, proceeds through a finite number of well-defined successive states, eventually producing "output" and terminating at a final ending state. The transition from one state to the next is not necessarily deterministic; some algorithms, known as randomized algorithms, incorporate random input.

« Back to Glossary Index

Submit your RFP

We can't wait to read about your project. Use the form below to submit your RFP!

Gabrielle Buff
Gabrielle Buff

Just left us a 5 star review

Great customer service and was able to walk us through the various options available to us in a way that made sense. Would definitely recommend!

Stoute Web Solutions has been a valuable resource for our business. Their attention to detail, expertise, and willingness to help at a moment's notice make them an essential support system for us.

Paul and the team are very professional, courteous, and efficient. They always respond immediately even to my minute concerns. Also, their SEO consultation is superb. These are good people!

Paul Stoute & his team are top notch! You will not find a more honest, hard working group whose focus is the success of your business. If you’re ready to work with the best to create the best for your business, go Stoute Web Solutions; you’ll definitely be glad you did!

Wonderful people that understand our needs and make it happen!

Paul is the absolute best! Always there with solutions in high pressure situations. A steady hand; always there when needed; I would recommend Paul to anyone!

facebook
Vince Fogliani
recommends

The team over at Stoute web solutions set my business up with a fantastic new website, could not be happier

facebook
Steve Sacre
recommends

If You are looking for Website design & creativity look no further. Paul & his team are the epitome of excellence.Don't take my word just refer to my website "stevestours.net"that Stoute Web Solutions created.This should convince anyone that You have finally found Your perfect fit

facebook
Jamie Hill
recommends

Paul and the team at Stoute Web are amazing. They are super fast to answer questions. Super easy to work with, and knows their stuff. 10,000 stars.

Paul and the team from Stoute Web solutions are awesome to work with. They're super intuitive on what best suits your needs and the end product is even better. We will be using them exclusively for our web design and hosting.

facebook
Dean Eardley
recommends

Beautifully functional websites from professional, knowledgeable team.

Along with hosting most of my url's Paul's business has helped me with website development, graphic design and even a really cool back end database app! I highly recommend him as your 360 solution to making your business more visible in today's social media driven marketplace.

I hate dealing with domain/site hosts. After terrible service for over a decade from Dreamhost, I was desperate to find a new one. I was lucky enough to win...

Paul Stoute has been extremely helpful in helping me choose the best package to suite my needs. Any time I had a technical issue he was there to help me through it. Superb customer service at a great value. I would recommend his services to anyone that wants a hassle free and quality experience for their website needs.

Paul is the BEST! I am a current customer and happy to say he has never let me down. Always responds quickly and if he cant fix the issue right away, if available, he provides you a temporary work around while researching the correct fix! Thanks for being an honest and great company!!

Paul Stoute is absolutely wonderful. Paul always responds to my calls and emails right away. He is truly the backbone of my business. From my fantastic website to popping right up on Google when people search for me and designing my business cards, Paul has been there every step of the way. I would recommend this company to anyone.

I can't say enough great things about Green Tie Hosting. Paul was wonderful in helping me get my website up and running quickly. I have stayed with Green...