21

I often interact with people who want to ask for an algorithm for a computational problem (or its complexity), but they don't express it in a rigorous way for us (computer scientists) to understand.

Referring them to books like CLRS is not helpful because the examples there usually have a quite straightforward way of stating rigorously, e.g. given the adjacency list of a graph and two vertices in it compute the shortest path between those vertices.

Is there any good book (or some other resource) where a person with minimal knowledge of CS can learn how one should formulate and state computational problems in a rigorous way that is understandable to computer scientists?

Preferably the book should have many examples of how to formulate computational problems rigorously from various domain and real world examples.


Clarification

To make the question more specific, let's assume that they know basic math/CS terminology like sets, functions, graphs, lists, etc. at the level of 1st/2nd year undergraduate CS student (which is the case with people who I have in mind). For example, they have read some introductory textbook like Aho and Ullman (although they might not have understood it completely).

Kaveh
  • 22,661
  • 4
  • 53
  • 113

3 Answers3

3

a good resource on/for this, fairly well known by academics but not so widely known outside of specialists, is Mathematical Writing by Donald E. Knuth, Tracy L. Larrabee, and Paul M. Roberts. there is a published book, lecture videos, and a set of notes. it is more written from the perspective of people attempting to master mathematical writing eg for creating papers, but all the advice is highly applicable to the case of laymen attempting to formulate problems precisely. mathematical writing while formidable to learn is the scientific approach to rigorously define/formulate—and as the book details, solve, eg via algorithms or proofs—computational/algorithmic problems.

also, the classic Garey & Johnson text, Computers & Intractability does not exactly describe how to formulate problems precisely, but it does give many examples, and diverse theoretical/conceptual/technical "patterns", organized into sections of similar problems, which can be used as "building blocks" to describe computational/algorithmic problems.

vzn
  • 11,162
  • 1
  • 28
  • 52
3

just ran across this nice/neat, unusual, relatively new/unknown ref on his home page by Emmanuele Viola, prof (T)CS at Northeastern University) apparently unpublished elsewhere. 41pp. it starts out with very basic mathematical concepts eg implication and then ranges all the way into advanced topics like the Erdős–Szekeres theorem and Ramsey theory.

vzn
  • 11,162
  • 1
  • 28
  • 52
0

Buy the book Algorithms and Data Structures from Robert Lafore.

On this book, every algorithm is explained as a story, very much like a poetry. Then, give the person the Lafore version of an algorithm, and later the CLRS version.

Maybe like this, the person will get a feeling on how to translate from intuitive description to rigorous ones.

user5193682
  • 147
  • 1
  • 4