Skip to main content

How to Design an Algorithm

  • Chapter
  • First Online:
The Power of Algorithms
  • 2177 Accesses

Abstract

Designing an algorithm is a profoundly creative human endeavor. Indeed, to design an algorithm one has to conceive a solution by drawing on a deep understanding of the problem at hand, on one’s knowledge of techniques adopted for the construction of other algorithms and, above all, on a fair sprinkling of one’s personal inventiveness. As a consequence there can be no fully automated method for generating the solution to a given problem. So, in this chapter we want to indicate the line to be followed in order to arrive at an algorithm design of optimized form. Integral to this we explain why it is essential to find the best way to abstract, represent and organize the information available about the specific problem to be tackled.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 49.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 64.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    The graph could, instead, be read symmetrically from the male point of view, that is, Alexis can choose between Julia and Alexandra, Daniel between Clair and Alexandra, etc.

  2. 2.

    Today named Kaliningrad.

  3. 3.

    To be precise, the graph in Fig. 2.6b is in fact a multigraph, since two of its nodes can be connected by more than one edge.

  4. 4.

    The degree of a vertex in a non-orientated graph is defined as the number of edges incident on that vertex.

  5. 5.

    A graph is said to be planar if it can be drawn in the plane without its edges intersecting.

  6. 6.

    In the graph shown in Fig. 2.9a there are two sources: node A and node C.

  7. 7.

    Decision tree is the name given to a tree in which each node represents a set of possible choices.

  8. 8.

    This is a typical allocation problem similar to the problems of how to load crates of different weights into a container, how to cut plates of different shape from a sheet, how to store files of different sizes on a disc, etc.

  9. 9.

    The factorial of a number n is the product of all the whole numbers between 1 and n, inclusive. That is, n!  = n × (n − 1) × (n − 2) × (n − 3) × × 3 × 2 × 1.

References

  1. Aho, A., Hopcroft, J., Ullman, J.: Data Structures and Algorithms. Addison-Wesley, Reading (1987)

    Google Scholar 

  2. Graham, R.L., Hell, P.: On the history of the minimum spanning tree problem. Ann. Hist. Comput. 7(1), 43–57 (1985)

    Article  MathSciNet  MATH  Google Scholar 

  3. Harel, D., Feldman, Y.: Algorithmics: The Spirit of Computing, 3rd edn. Addison-Wesley, Harlow (2004)

    Google Scholar 

  4. Horowitz, E., Sahni, S.: Fundamentals of Data Structures. Computer Science Press, Woodland Hills (1976)

    MATH  Google Scholar 

  5. Kleinberg, J., Tardos, É.: Algorithm Design. Addison-Wesley, Boston (2005)

    Google Scholar 

  6. Knuth, D.: The Art of Computer Programming. Volume 1: Fundamental Algorithms. Addison-Wesley Professional, Reading (1997)

    Google Scholar 

  7. Levitin, A.: Introduction to the Design and Analysis of Algorithms, 3rd edn. Addison-Wesley, Boston (2012)

    Google Scholar 

  8. Pólya, G.: Mathematics and Plausible Reasoning. Volume 1: Induction and Analogy in Mathematics. Princeton University Press, Princeton (1990)

    Google Scholar 

  9. Simeone, B.: Nuggets in matching theory. AIRONews XI(2), 1–11 (2006)

    Google Scholar 

  10. van Lint, J.H.: Introduction to Coding Theory. Springer, New York (1998)

    Google Scholar 

  11. Wirth, N.: Algorithms + Data Structures  = Programs. Prentice Hall, Englewood Cliffs (1976)

    MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Rossella Petreschi .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2013 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Petreschi, R. (2013). How to Design an Algorithm. In: Ausiello, G., Petreschi, R. (eds) The Power of Algorithms. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-39652-6_2

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-39652-6_2

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-39651-9

  • Online ISBN: 978-3-642-39652-6

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics