top of page

Public·8 members

# Discrete Structures, Logic, And Computability

This is a gentle introduction to discrete mathematics. Four main topics are covered: counting, sequences, logic, and graph theory. Along the way proofs are introduced, including proofs by contradiction, proofs by induction, and combinatorial proofs.

## Discrete Structures, Logic, And Computability

This book provides a broad introduction to some of the most fascinating and beautiful areas of discrete mathematical structures with examples in logic, applications of the principle of inclusion and exclusion and finally the pigeonhole principal.

This book contains programming experiments that are designed to reinforce the learning of discrete mathematics, logic, and computability. The Prolog programming language is the tool used for the experiments in this book.

The word algorithm is likely to show up in anyarea that features computation. This is one reason why there it is hard to list a set of "fundamental"algorithms that every CS student should know. Whatis more important, of course, is algorithmicthinking: the ability to solve problems usingefficient algorithms, and to reason about the strengthsand limitations of different algorithms. That said, there are broad areas of algorithms wherethe algorithms appear to share some common formalbackground and therefore seem to belong in the samecourse. I will describe what I believe are the naturalgroupings, each of which could constitute a semester-longor two-semester course. Discrete algorithms. This is the standard required algorithms course in a CS department, based on discrete math. The standard topics include: data structures, sorting, searching, graphs, dynamic programming, NP-completeness, approximations. Logic algorithms. This body of algorithms lies at the intersection of mathematical logic and computer science, covering algorithms for satisfiability, theorem-proving, planning, verification, and model-checking. Nonlinear continuous algorithms. This category uses the mathematical background of calculus and probability, and brings together common themes algorithms for applications like robotics, machine-learning, nonlinear optimization, and simulation of physical and man-made systems. Linear (continuous) algorithms. The other side of the continuous domain consists of algorithms that based on linear algebra, and find application in areas such as computer vision, graphics, 3D modeling, linear optimization (LP), and information retrieval. Other discrete algorithms. Finally, I'm sure I'm going annoy some colleagues by lumping together a number of algorithm topics into the unfortunately named "other" category. These include: parallel and distributed algorithms, network protocols, computational geometry and security. Each one of these, building on the foundation in the standard discrete algorithms course, could easily become a Discrete-Algorithms II course. It's worth pointing out that some algorithms are hard toclassify. For example, where does the famed Fast FourierTransform (FFT) belong? In some ways the FFT is classicallydiscrete because divide-and-conquer reduces the naiveO(n2) DFT to the O(n log(n)) FFT. But at the same time, the applicationdomain is signal processing, which suggests nonlinear-continuous as the appropriate category. I have put this in the standard course both becauseof the former reason and because ... who can resist thetemptation of algorithms that process music?Next, let's take a look at each of the latter four areasin more detail, and suggest some "next steps". 350c69d7ab