NP-hard does not mean hard
When NP-hardness pops up on the internet, say because some silly blogger wants to write about video games, it’s often tempting to conclude that the problem being proved NP-hard is actually very hard!...
View ArticleBoolean Logic in Polynomials
Problem: Express a boolean logic formula using polynomials. I.e., if an input variable is set to , that is interpreted as false, while is interpreted as true. The output of the polynomial should be 0...
View ArticleThe Blum-Blum-Shub Pseudorandom Generator
Problem: Design a random number generator that is computationally indistinguishable from a truly random number generator. Solution (in Python): note this solution uses the Miller-Rabin primality...
View ArticleZero Knowledge Proofs — A Primer
In this post we’ll get a strong taste for zero knowledge proofs by exploring the graph isomorphism problem in detail. In the next post, we’ll see how this relates to cryptography and the bigger...
View ArticleThe Boosting Margin, or Why Boosting Doesn’t Overfit
There’s a well-understood phenomenon in machine learning called overfitting. The idea is best shown by a graph: Let me explain. The vertical axis represents the error of a hypothesis. The horizontal...
View ArticleWhat does it mean for an algorithm to be fair?
In 2014 the White House commissioned a 90-day study that culminated in a report (pdf) on the state of “big data” and related technologies. The authors give many recommendations, including this central...
View ArticleMethods of Proof — Diagonalization
A while back we featured a post about why learning mathematics can be hard for programmers, and I claimed a major issue was not understanding the basic methods of proof (the lingua franca between...
View ArticleHamming’s Code
Or how to detect and correct errors Last time we made a quick tour through the main theorems of Claude Shannon, which essentially solved the following two problems about communicating over a digital...
View ArticleA Proofless Introduction to Information Theory
There are two basic problems in information theory that are very easy to explain. Two people, Alice and Bob, want to communicate over a digital channel over some long period of time, and they know the...
View ArticleThe Quantum Bit
The best place to start our journey through quantum computing is to recall how classical computing works and try to extend it. Since our final quantum computing model will be a circuit model, we should...
View ArticleA Motivation for Quantum Computing
Quantum mechanics is one of the leading scientific theories describing the rules that govern the universe. It’s discovery and formulation was one of the most important revolutions in the history of...
View ArticleLinear Programming and the Simplex Algorithm
In the last post in this series we saw some simple examples of linear programs, derived the concept of a dual linear program, and saw the duality theorem and the complementary slackness conditions...
View ArticleThe Complexity of Communication
One of the most interesting questions posed in the last thirty years of computer science is to ask how much “information” must be communicated between two parties in order for them to jointly compute...
View ArticleOn the Computational Complexity of MapReduce
I recently wrapped up a fun paper with my coauthors Ben Fish, Adam Lelkes, Lev Reyzin, and Gyorgy Turan in which we analyzed the computational complexity of a model of the popular MapReduce framework....
View ArticleOccam’s Razor and PAC-learning
So far our discussion of learning theory has been seeing the definition of PAC-learning, tinkering with it, and seeing simple examples of learnable concept classes. We’ve said that our real interest is...
View ArticleParameterizing the Vertex Cover Problem
I’m presenting a paper later this week at the Matheamtical Foundations of Computer Science 2014 in Budapest, Hungary. This conference is an interesting mix of logic and algorithms that aims to bring...
View ArticleAn Update on “Coloring Resilient Graphs”
A while back I announced a preprint of a paper on coloring graphs with certain resilience properties. I’m pleased to announce that it’s been accepted to the Mathematical Foundations of Computer Science...
View ArticleAn Un-PAC-learnable Problem
In a previous post we introduced a learning model called Probably Approximately Correct (PAC). We saw an example of a concept class that was easy to learn: intervals on the real line (and more...
View ArticleMidwest Theory (of Computing) Day at Purdue University
I’ll be giving a talk at Purdue University on Saturday, May 3 as part of the 65th Midwest Theory Day. If any readers happen to live in West Lafayette, Indiana and are interested in hearing about some...
View ArticleStable Marriages and Designing Markets
Here is a fun puzzle. Suppose we have a group of 10 men and 10 women, and each of the men has sorted the women in order of their preference for marriage (that is, a man prefers to marry a woman earlier...
View Article