Designing an Algorithm and
Data Structures
While the algorithm design techniques do provide
a powerful set of general approaches to algorithmic problem solving, designing
an algorithm for a particular problem may still be a challenging task. Some
design techniques can be simply inapplicable to the problem in question.
Sometimes, several techniques need to be combined, and there are algorithms
that are hard to pinpoint as applications of the known design techniques. Even
when a particular design technique is ap-plicable, getting an algorithm often
requires a nontrivial ingenuity on the part of the algorithm designer. With
practice, both tasks—choosing among the general techniques and applying
them—get easier, but they are rarely easy.
Of course, one should pay close attention to
choosing data structures appro-priate for the operations performed by the
algorithm. For example, the sieve of Eratosthenes introduced in Section 1.1
would run longer if we used a linked list instead of an array in its
implementation (why?). Also note that some of the al-gorithm design techniques
discussed in Chapters 6 and 7 depend intimately on structuring or restructuring
data specifying a problem’s instance. Many years ago, an influential textbook
proclaimed the fundamental importance of both algo-rithms and data structures
for computer programming by its very title: Algorithms
+ Data Structures = Programs [Wir76].
In the new world of object-oriented pro-gramming, data structures remain
crucially important for both design and analysis of algorithms. We review basic
data structures in Section 1.4.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.