# computational complexity

Published articles for computational complexity.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Zero Knowledge Proofs for NP

DevFeed: [Zero Knowledge Proofs for NP](<https://devfeed.tech/articles/zero-knowledge-proofs-for-np-40402.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2016/08/01/zero-knowledge-proofs-for-np/>)

Published: 2016-08-01T08:00:53Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Zero-knowledge proof](<https://devfeed.tech/topics/zkp.md>), [zero-knowledge](<https://devfeed.tech/topics/zero-knowledge.md>), [Cryptography](<https://devfeed.tech/topics/cryptography.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [boolean](<https://devfeed.tech/tags/boolean.md>), [circuit](<https://devfeed.tech/tags/circuit.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [cryptography](<https://devfeed.tech/tags/cryptography.md>), [graph-isomorphism](<https://devfeed.tech/tags/graph-isomorphism.md>), [interactive](<https://devfeed.tech/tags/interactive.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [np](<https://devfeed.tech/tags/np.md>), [np-hard](<https://devfeed.tech/tags/np-hard.md>), [one-way-functions](<https://devfeed.tech/tags/one-way-functions.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [random-number-generators](<https://devfeed.tech/tags/random-number-generators.md>), [variables](<https://devfeed.tech/tags/variables.md>), [zero-knowledge](<https://devfeed.tech/tags/zero-knowledge.md>)

### AI overview

This tutorial explains how zero-knowledge proofs extend beyond graph isomorphism to problems in NP, using cryptography to let a prover convince a verifier without revealing the secret knowledge behind the claim. It introduces examples including boolean formulas, subset sums, graph 3-coloring, and boolean circuits, and describes an implementation of a proof for graph 3-colorability.

### Source excerpt

Last time, we saw a specific zero-knowledge proof for graph isomorphism. This introduced us to the concept of an interactive proof, where you have a prover and a verifier sending messages back and forth, and the prover is trying to prove a specific claim to the verifier. A zero-knowledge proof is a special kind of interactive proof in which the prover has some secret piece of knowledge that makes it very easy to verify a disputed claim is true.

## The Complexity of Communication

DevFeed: [The Complexity of Communication](<https://devfeed.tech/articles/the-complexity-of-communication-40369.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2014/11/10/the-complexity-of-communication/>)

Published: 2014-11-10T09:00:25Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Computer science](<https://devfeed.tech/topics/computer-science.md>), [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [circuit](<https://devfeed.tech/topics/circuit.md>)

Tags: [communication](<https://devfeed.tech/tags/communication.md>), [communication-complexity](<https://devfeed.tech/tags/communication-complexity.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [fourier-analysis](<https://devfeed.tech/tags/fourier-analysis.md>), [information-theory](<https://devfeed.tech/tags/information-theory.md>), [log-rank-conjecture](<https://devfeed.tech/tags/log-rank-conjecture.md>), [lower-bounds](<https://devfeed.tech/tags/lower-bounds.md>), [matrices](<https://devfeed.tech/tags/matrices.md>), [streaming-algorithms](<https://devfeed.tech/tags/streaming-algorithms.md>), [theory](<https://devfeed.tech/tags/theory.md>)

### AI overview

This tutorial introduces communication complexity: how much information two parties must exchange to jointly compute a function of separate inputs. It presents the basic two-player model and explains the subject's use in proving lower bounds, including applications to circuit design and streaming algorithms.

### Source excerpt

satellite 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 something. One can imagine these two parties living on distant planets, so that the cost of communicating any amount of information is very expensive, but each person has an integral component of the answer that the other does not.

## On the Computational Complexity of MapReduce

DevFeed: [On the Computational Complexity of MapReduce](<https://devfeed.tech/articles/on-the-computational-complexity-of-mapreduce-40368.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2014/10/05/on-the-computational-complexity-of-mapreduce/>)

Published: 2014-10-05T09:00:30Z

Content type: article

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [computational complexity](<https://devfeed.tech/topics/computational-complexity.md>), [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>), [Graphs](<https://devfeed.tech/topics/graphs.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [algorithms](<https://devfeed.tech/tags/algorithms.md>), [circuit-complexity](<https://devfeed.tech/tags/circuit-complexity.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [distributed-computing](<https://devfeed.tech/tags/distributed-computing.md>), [exponential-time-hypothesis](<https://devfeed.tech/tags/exponential-time-hypothesis.md>), [graphs](<https://devfeed.tech/tags/graphs.md>), [hierarchy](<https://devfeed.tech/tags/hierarchy.md>), [karloff](<https://devfeed.tech/tags/karloff.md>), [l-vs-p](<https://devfeed.tech/tags/l-vs-p.md>), [map-reduce](<https://devfeed.tech/tags/map-reduce.md>), [padding](<https://devfeed.tech/tags/padding.md>), [research](<https://devfeed.tech/tags/research.md>)

### AI overview

The article presents an accessible discussion of research analyzing the computational complexity of a theoretical model of the MapReduce framework. It describes open questions about MapReduce's power, including whether constant-round algorithms can determine graph connectivity and how the model relates to complexity classes such as P and L.

### Source excerpt

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. Check out the preprint on the arXiv. Update: this paper is now published in the proceedings of DISC2015. As usual I'll give a less formal discussion of the research here, and because the paper is a bit more technically involved than my previous work I'll be omitting some of the more pedantic details.

## Parameterizing the Vertex Cover Problem

DevFeed: [Parameterizing the Vertex Cover Problem](<https://devfeed.tech/articles/parameterizing-the-vertex-cover-problem-40363.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2014/08/25/parameterizing-the-vertex-cover-problem/>)

Published: 2014-08-25T06:50:11Z

Content type: article

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>), [Graphs](<https://devfeed.tech/topics/graphs.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [complexity-theory](<https://devfeed.tech/tags/complexity-theory.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [conferences](<https://devfeed.tech/tags/conferences.md>), [fixed-parameter-tractability](<https://devfeed.tech/tags/fixed-parameter-tractability.md>), [graph](<https://devfeed.tech/tags/graph.md>), [kernel](<https://devfeed.tech/tags/kernel.md>), [kernelization](<https://devfeed.tech/tags/kernelization.md>), [np-hard](<https://devfeed.tech/tags/np-hard.md>), [vertex-cover](<https://devfeed.tech/tags/vertex-cover.md>)

### AI overview

This article introduces fixed-parameter complexity and explains how fixing a small parameter can make some hard problems tractable. It focuses on kernelization and uses the vertex cover problem as a canonical example, though the supplied text ends before the kernelization method is presented.

### Source excerpt

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 together researchers from these areas to discuss their work. And right away the first session on the first day focused on an area I know is important but have little experience with: fixed parameter complexity. From what I understand it's not that popular of a topic at major theory conferences in the US (there appears to be only one paper on it at this year's FOCS conference), but the basic ideas are worth knowing.

## A problem that is not (properly) PAC-learnable

DevFeed: [A problem that is not (properly) PAC-learnable](<https://devfeed.tech/articles/a-problem-that-is-not-properly-pac-learnable-40356.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2014/04/21/an-un-pac-learnable-problem/>)

Published: 2014-04-21T10:00:16Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Learning](<https://devfeed.tech/topics/learning.md>), [math](<https://devfeed.tech/topics/math.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [boolean](<https://devfeed.tech/tags/boolean.md>), [boolean-satisfiability](<https://devfeed.tech/tags/boolean-satisfiability.md>), [classes](<https://devfeed.tech/tags/classes.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [computational-learning-theory](<https://devfeed.tech/tags/computational-learning-theory.md>), [learning-theory](<https://devfeed.tech/tags/learning-theory.md>), [logical](<https://devfeed.tech/tags/logical.md>), [math](<https://devfeed.tech/tags/math.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [misconceptions](<https://devfeed.tech/tags/misconceptions.md>), [np](<https://devfeed.tech/tags/np.md>), [np-completeness](<https://devfeed.tech/tags/np-completeness.md>), [pac-learning](<https://devfeed.tech/tags/pac-learning.md>), [reduction](<https://devfeed.tech/tags/reduction.md>), [rp](<https://devfeed.tech/tags/rp.md>)

### AI overview

This technical learning-theory article presents a standard example of a problem that is not learnable under the previously introduced PAC model, then explains how a more expressive hypothesis class changes that result. Its addendum clarifies that 3-term DNF formulas are not shown to be unlearnable under the standard PAC definition, only under the earlier restricted definition.

### Source excerpt

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 generally, if you did the exercise, axis-aligned rectangles in a fixed dimension). One of the primary goals of studying models of learning is to figure out what is learnable and what is not learnable in the various models.

## How theoretical computer science explains the complexity of puzzle games

DevFeed: [How theoretical computer science explains the complexity of puzzle games](<https://devfeed.tech/articles/want-to-make-a-great-puzzle-game-get-inspired-by-theoretical-computer-science-40351.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2014/03/17/want-to-make-a-great-puzzle-game-get-inspired-by-theoretical-computer-science/>)

Published: 2014-03-17T10:00:55Z

Content type: opinion

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [computational complexity](<https://devfeed.tech/topics/computational-complexity.md>), [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>), [Computer science](<https://devfeed.tech/topics/computer-science.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>), [Mazes](<https://devfeed.tech/topics/maze.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [art-gallery-problem](<https://devfeed.tech/tags/art-gallery-problem.md>), [bin-packing](<https://devfeed.tech/tags/bin-packing.md>), [board-games](<https://devfeed.tech/tags/board-games.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [computer](<https://devfeed.tech/tags/computer.md>), [computer-science](<https://devfeed.tech/tags/computer-science.md>), [exp](<https://devfeed.tech/tags/exp.md>), [game](<https://devfeed.tech/tags/game.md>), [games](<https://devfeed.tech/tags/games.md>), [games-on-graphs](<https://devfeed.tech/tags/games-on-graphs.md>), [graph-coloring](<https://devfeed.tech/tags/graph-coloring.md>), [greedy-spiders](<https://devfeed.tech/tags/greedy-spiders.md>), [mario](<https://devfeed.tech/tags/mario.md>), [nintendo](<https://devfeed.tech/tags/nintendo.md>), [np](<https://devfeed.tech/tags/np.md>), [np-completeness](<https://devfeed.tech/tags/np-completeness.md>), [np-hard](<https://devfeed.tech/tags/np-hard.md>), [pancake-flipping](<https://devfeed.tech/tags/pancake-flipping.md>), [pspace](<https://devfeed.tech/tags/pspace.md>), [puzzle](<https://devfeed.tech/tags/puzzle.md>), [science](<https://devfeed.tech/tags/science.md>), [starcraft](<https://devfeed.tech/tags/starcraft.md>), [video-games](<https://devfeed.tech/tags/video-games.md>)

### AI overview

The article explains that NP-hardness in games describes worst-case computational complexity, not how difficult a game is for human players. It uses examples including Pokémon, Super Mario Bros., Candy Crush Saga, Pac-Man, Doom, Starcraft, Tetris, chess, checkers, and Go to discuss hardness results and practical algorithms.

### Source excerpt

Two years ago, Erik Demaine and three other researchers published a fun paper to the arXiv proving that most incarnations of classic nintendo games are NP-hard. This includes almost every Super Mario Brothers, Donkey Kong, and Pokemon title. Back then I wrote a blog post summarizing the technical aspects of their work, and even gave a talk on it to a room full of curious undergraduate math majors. But while bad tech-writers tend to interpret NP-hard as "really really hard," the truth is more complicated.

## On Coloring Resilient Graphs

DevFeed: [On Coloring Resilient Graphs](<https://devfeed.tech/articles/on-coloring-resilient-graphs-40346.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2014/02/21/on-coloring-resilient-graphs/>)

Published: 2014-02-21T08:45:39Z

Content type: article

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Graphs](<https://devfeed.tech/topics/graphs.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>)

Tags: [approximation-algorithms](<https://devfeed.tech/tags/approximation-algorithms.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [graph](<https://devfeed.tech/tags/graph.md>), [graph-coloring](<https://devfeed.tech/tags/graph-coloring.md>), [graphs](<https://devfeed.tech/tags/graphs.md>), [greedy-algorithm](<https://devfeed.tech/tags/greedy-algorithm.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [np-hard](<https://devfeed.tech/tags/np-hard.md>), [research](<https://devfeed.tech/tags/research.md>), [resilience](<https://devfeed.tech/tags/resilience.md>)

### AI overview

An informal explanation of graph coloring, including why deciding 3-colorability is considered NP-hard and several graph properties that can make coloring problems easier. The article also announces the author's paper on resilient graphs.

### Source excerpt

I'm pleased to announce that another paper of mine is finished. This one just got accepted to MFCS 2014, which is being held in Budapest this year (this whole research thing is exciting!). This is joint work with my advisor, Lev Reyzin. As with my first paper, I'd like to explain things here on my blog a bit more informally than a scholarly article allows. A Recent History of Graph Coloring One of the first important things you learn when you study graphs is that coloring graphs is hard.

## Simulating a Biased Coin with a Fair Coin

DevFeed: [Simulating a Biased Coin with a Fair Coin](<https://devfeed.tech/articles/simulating-a-biased-coin-with-a-fair-coin-40344.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2014/02/12/simulating-a-biased-coin-with-a-fair-coin/>)

Published: 2014-02-12T10:00:51Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Computer science](<https://devfeed.tech/topics/computer-science.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>), [Python](<https://devfeed.tech/topics/python.md>), [Mathematics](<https://devfeed.tech/topics/mathematics.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [calculus](<https://devfeed.tech/tags/calculus.md>), [coins](<https://devfeed.tech/tags/coins.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [convergent-series](<https://devfeed.tech/tags/convergent-series.md>), [floating-point](<https://devfeed.tech/tags/floating-point.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [probabilistic](<https://devfeed.tech/tags/probabilistic.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>)

### AI overview

This guest article presents a Python algorithm for simulating a biased coin using a fair coin. It reads the intended probability's binary expansion and compares each bit with an independent fair random bit, returning when they differ. The method produces probability exactly equal to the intended bias, including for irrational probabilities, and has constant expected running time when the probability's bits are efficiently computable.

### Source excerpt

This is a guest post by my friend and colleague Adam Lelkes. Adam's interests are in algebra and theoretical computer science. This gem came up because Adam gave a talk on probabilistic computation in which he discussed this technique. Problem: simulate a biased coin using a fair coin. Solution: (in Python) def biasedCoin(binaryDigitStream, fairCoin): for d in binaryDigitStream: if fairCoin() != d: return d Discussion: This function takes two arguments, an iterator representing the binary expansion of the intended probability of getting 1 (let us denote it as $ p$) and another function that returns 1 or 0 with equal probability.

## Miller-Rabin Primality Test

DevFeed: [Miller-Rabin Primality Test](<https://devfeed.tech/articles/miller-rabin-primality-test-40323.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2013/06/16/miller-rabin-primality-test/>)

Published: 2013-06-16T18:55:40Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Python](<https://devfeed.tech/topics/python.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>), [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>), [Cryptography](<https://devfeed.tech/topics/cryptography.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [algorithms](<https://devfeed.tech/tags/algorithms.md>), [complexity-theory](<https://devfeed.tech/tags/complexity-theory.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [cryptography](<https://devfeed.tech/tags/cryptography.md>), [miller-rabin](<https://devfeed.tech/tags/miller-rabin.md>), [primes](<https://devfeed.tech/tags/primes.md>), [probabilistic](<https://devfeed.tech/tags/probabilistic.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [random-number-generators](<https://devfeed.tech/tags/random-number-generators.md>), [randomized-algorithm](<https://devfeed.tech/tags/randomized-algorithm.md>), [rsa](<https://devfeed.tech/tags/rsa.md>)

### AI overview

This tutorial explains the Miller-Rabin primality test, including its probabilistic error bound, Python implementation, and role in testing whether numbers are prime. It also discusses the algorithm's relevance to cryptography and complexity theory.

### Source excerpt

Problem: Determine if a number is prime, with an acceptably small error rate. Solution: (in Python) import random def decompose(n): exponentOfTwo = 0 while n % 2 == 0: n = n/2 exponentOfTwo += 1 return exponentOfTwo, n def isWitness(possibleWitness, p, exponent, remainder): possibleWitness = pow(possibleWitness, remainder, p) if possibleWitness == 1 or possibleWitness == p - 1: return False for _ in range(exponent): possibleWitness = pow(possibleWitness, 2, p) if possibleWitness == p - 1: return False return True def probablyPrime(p, accuracy=100): if p == 2 or p == 3: return True if p < 2: return False exponent, remainder = decompose(p - 1) for _ in range(accuracy): possibleWitness = random.

## Ramsey Number Lower Bound

DevFeed: [Ramsey Number Lower Bound](<https://devfeed.tech/articles/ramsey-number-lower-bound-40293.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2012/12/02/ramsey-number-lower-bound/>)

Published: 2012-12-02T15:17:26Z

Content type: article

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [graph theory](<https://devfeed.tech/topics/graph-theory.md>), [Graphs](<https://devfeed.tech/topics/graphs.md>), [Mathematics](<https://devfeed.tech/topics/mathematics.md>)

Tags: [combinatorics](<https://devfeed.tech/tags/combinatorics.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [graph](<https://devfeed.tech/tags/graph.md>), [graph-coloring](<https://devfeed.tech/tags/graph-coloring.md>), [graph-theory](<https://devfeed.tech/tags/graph-theory.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [number-theory](<https://devfeed.tech/tags/number-theory.md>), [probabilistic-method](<https://devfeed.tech/tags/probabilistic-method.md>), [ramsey-numbers](<https://devfeed.tech/tags/ramsey-numbers.md>), [random-graph](<https://devfeed.tech/tags/random-graph.md>)

### AI overview

The article proves a lower bound for the diagonal Ramsey number R(m,m). By randomly coloring the edges of a complete graph, it shows that if binom(n,m)2^(1−binom(m,2)) is less than 1, there exists a coloring with no monochromatic m-vertex subgraph, so R(m,m) > n.

### Source excerpt

Define the Ramsey number $ R(k,m)$ to be the minimum number $ n$ of vertices required of the complete graph $ K_n$ so that for any two-coloring (red, blue) of the edges of $ K_n$ one of two things will happen: There is a red $ k$-clique; that is, a complete subgraph of $ k$ vertices for which all edges are red. There is a blue $ m$-clique. It is known that these numbers are always finite, but it is very difficult to compute them exactly.

## Kolmogorov Complexity--A Primer

DevFeed: [Kolmogorov Complexity--A Primer](<https://devfeed.tech/articles/kolmogorov-complexity-a-primer-40270.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2012/04/21/kolmogorov-complexity-a-primer/>)

Published: 2012-04-21T18:23:41Z

Content type: article

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [complexity-theory](<https://devfeed.tech/tags/complexity-theory.md>), [computability-theory](<https://devfeed.tech/tags/computability-theory.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [kolmogorov-complexity](<https://devfeed.tech/tags/kolmogorov-complexity.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [primer](<https://devfeed.tech/tags/primer.md>)

### AI overview

This primer introduces Kolmogorov complexity as a way to formalize how random or complex a string is. It defines the concept using the length of the shortest program that outputs a string, then begins developing a more rigorous formulation using binary programs and Turing-machine concepts.

### Source excerpt

The Complexity of Things Previously on this blog (quite a while ago), we've investigated some simple ideas of using randomness in artistic design (psychedelic art, and earlier randomized css designs). Here we intend to give a more thorough and rigorous introduction to the study of the complexity of strings. This naturally falls into the realm of computability theory and complexity theory, and so we refer the novice reader to our other primers on the subject (Determinism and Finite Automata, Turing Machines, and Complexity Classes; but Turing machines will be the most critical to this discussion).

## Classic Nintendo Games are NP-Hard

DevFeed: [Classic Nintendo Games are NP-Hard](<https://devfeed.tech/articles/classic-nintendo-games-are-np-hard-40268.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2012/03/22/nintendo-np-hard/>)

Published: 2012-03-22T18:34:56Z

Content type: opinion

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>), [Computer science](<https://devfeed.tech/topics/computer-science.md>), [infoarena](<https://devfeed.tech/topics/infoarena.md>)

Tags: [complexity](<https://devfeed.tech/tags/complexity.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [computer-science](<https://devfeed.tech/tags/computer-science.md>), [donkey-kong](<https://devfeed.tech/tags/donkey-kong.md>), [games](<https://devfeed.tech/tags/games.md>), [mario](<https://devfeed.tech/tags/mario.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [metroid](<https://devfeed.tech/tags/metroid.md>), [np-completeness](<https://devfeed.tech/tags/np-completeness.md>), [np-hard](<https://devfeed.tech/tags/np-hard.md>), [paper](<https://devfeed.tech/tags/paper.md>), [pokemon](<https://devfeed.tech/tags/pokemon.md>), [video-games](<https://devfeed.tech/tags/video-games.md>), [zelda](<https://devfeed.tech/tags/zelda.md>)

### AI overview

The article explains research showing that generalized versions of several classic Nintendo games, including Mario Brothers, Metroid, Donkey Kong, Pokemon, and The Legend of Zelda, are NP-hard. Some are also classified as NP-complete or PSPACE-complete. It outlines reductions from 3-SAT using game-level gadgets for variables and clauses.

### Source excerpt

Problem: Prove that generalized versions of Mario Brothers, Metroid, Donkey Kong, Pokemon, and Legend of Zelda are NP-hard. Solution: http://arxiv.org/abs/1203.1895v1 Discussion: Three researchers (including Erik Demaine, a computer science professor at MIT famous for his work with the mathematics of origami) recently finished a paper giving the complexity of a number of classic Nintendo games (the ones I loved to play). All are proven NP-hard, some are shown to be NP-complete, and some are PSPACE-complete.

## Other Complexity Classes

DevFeed: [Other Complexity Classes](<https://devfeed.tech/articles/other-complexity-classes-40264.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2012/02/29/other-complexity-classes/>)

Published: 2012-02-29T17:12:35Z

Content type: article

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>), [Computing](<https://devfeed.tech/topics/computing.md>), [Math and Logic](<https://devfeed.tech/topics/math-and-logic.md>)

Tags: [complexity](<https://devfeed.tech/tags/complexity.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [halting-problem](<https://devfeed.tech/tags/halting-problem.md>), [kolmogorov-complexity](<https://devfeed.tech/tags/kolmogorov-complexity.md>), [nondeterminism](<https://devfeed.tech/tags/nondeterminism.md>), [open-questions](<https://devfeed.tech/tags/open-questions.md>), [oracle](<https://devfeed.tech/tags/oracle.md>), [primer](<https://devfeed.tech/tags/primer.md>), [pspace](<https://devfeed.tech/tags/pspace.md>), [turing-machine](<https://devfeed.tech/tags/turing-machine.md>), [turing-machines](<https://devfeed.tech/tags/turing-machines.md>)

### AI overview

This article introduces complexity classes beyond P and NP, including PSPACE and NPSPACE, and discusses oracle-based classes. It explains that PSPACE equals NPSPACE while many relationships among complexity classes remain open.

### Source excerpt

Not Just Time, But Space Too! So far on this blog we've introduced models for computation, focused on Turing machines and given a short overview of the two most fundamental classes of problems: P and NP. While the most significant open question in the theory of computation is still whether P = NP, it turns out that there are hundreds (almost 500, in fact!) other "classes" of problems whose relationships are more or less unknown.

## P vs. NP, A Primer (And a Proof Written in Racket)

DevFeed: [P vs. NP, A Primer (And a Proof Written in Racket)](<https://devfeed.tech/articles/p-vs-np-a-primer-and-a-proof-written-in-racket-40263.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2012/02/23/p-vs-np-a-primer-and-a-proof-written-in-racket/>)

Published: 2012-02-23T19:57:35Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Computing](<https://devfeed.tech/topics/computing.md>), [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>), [Racket](<https://devfeed.tech/topics/racket.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [algorithms](<https://devfeed.tech/tags/algorithms.md>), [analysis](<https://devfeed.tech/tags/analysis.md>), [big-o-notation](<https://devfeed.tech/tags/big-o-notation.md>), [class](<https://devfeed.tech/tags/class.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [computing](<https://devfeed.tech/tags/computing.md>), [decidability](<https://devfeed.tech/tags/decidability.md>), [efficiency](<https://devfeed.tech/tags/efficiency.md>), [fast](<https://devfeed.tech/tags/fast.md>), [halting-problem](<https://devfeed.tech/tags/halting-problem.md>), [input](<https://devfeed.tech/tags/input.md>), [language](<https://devfeed.tech/tags/language.md>), [machine](<https://devfeed.tech/tags/machine.md>), [np-completeness](<https://devfeed.tech/tags/np-completeness.md>), [p-versus-np](<https://devfeed.tech/tags/p-versus-np.md>), [primer](<https://devfeed.tech/tags/primer.md>), [racket](<https://devfeed.tech/tags/racket.md>), [solve](<https://devfeed.tech/tags/solve.md>), [theory](<https://devfeed.tech/tags/theory.md>), [turing-machine](<https://devfeed.tech/tags/turing-machine.md>), [turing-machines](<https://devfeed.tech/tags/turing-machines.md>)

### AI overview

A primer on the distinction between decidability and computational efficiency, introducing the complexity class P and its definition in terms of polynomial-time decision by a Turing machine. It also discusses efficient algorithms and gives a card-sorting example.

### Source excerpt

Decidability Versus Efficiency In the early days of computing theory, the important questions were primarily about decidability. What sorts of problems are beyond the power of a Turing machine to solve? As we saw in our last primer on Turing machines, the halting problem is such an example: it can never be solved a finite amount of time by a Turing machine. However, more recently (in the past half-century) the focus of computing theory has shifted away from possibility in favor of determining feasibility.

## Turing Machines and Conway's Dreams

DevFeed: [Turing Machines and Conway's Dreams](<https://devfeed.tech/articles/turing-machines-and-conway-s-dreams-40215.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2011/06/30/turing-machines-and-conways-dreams/>)

Published: 2011-06-30T20:50:04Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Automaton](<https://devfeed.tech/topics/automaton.md>)

Tags: [cellular](<https://devfeed.tech/tags/cellular.md>), [cellular-automata](<https://devfeed.tech/tags/cellular-automata.md>), [computability-theory](<https://devfeed.tech/tags/computability-theory.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [conway](<https://devfeed.tech/tags/conway.md>), [infinite](<https://devfeed.tech/tags/infinite.md>), [life](<https://devfeed.tech/tags/life.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [period](<https://devfeed.tech/tags/period.md>), [programming](<https://devfeed.tech/tags/programming.md>), [recursion](<https://devfeed.tech/tags/recursion.md>), [theory](<https://devfeed.tech/tags/theory.md>), [turing-machine](<https://devfeed.tech/tags/turing-machine.md>), [turing-machines](<https://devfeed.tech/tags/turing-machines.md>)

### AI overview

The article examines Conway's Game of Life patterns that do not stabilize, including Gosper's glider gun and puffers that produce continuing activity. It connects these patterns to computability, explaining that infinite looping is necessary for Turing-complete computation.

### Source excerpt

Additional Patterns Last time we left the reader with the assertion that Conway's game of life does not always stabilize. Specifically, there exist patterns which result in unbounded cell population growth. Although John Conway's original conjecture was that all patterns eventually stabilize (and offered $50 to anyone who could provide a proof or counterexample), he was proven wrong. Here we have the appropriately named glider gun, whose main body oscillates, expelling a glider once per period.

## Google's Page Rank--The Final Product

DevFeed: [Google's Page Rank--The Final Product](<https://devfeed.tech/articles/google-s-page-rank-the-final-product-40206.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2011/06/20/googles-page-rank-the-final-product/>)

Published: 2011-06-20T22:07:41Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Google](<https://devfeed.tech/topics/google.md>), [Matrix](<https://devfeed.tech/topics/matrix-org.md>), [math](<https://devfeed.tech/topics/math.md>), [Web](<https://devfeed.tech/topics/web.md>)

Tags: [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [eigenvalues](<https://devfeed.tech/tags/eigenvalues.md>), [eigenvectors](<https://devfeed.tech/tags/eigenvectors.md>), [google](<https://devfeed.tech/tags/google.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [matrix](<https://devfeed.tech/tags/matrix.md>), [page-rank](<https://devfeed.tech/tags/page-rank.md>), [probability-theory](<https://devfeed.tech/tags/probability-theory.md>), [programming](<https://devfeed.tech/tags/programming.md>), [pseudocode](<https://devfeed.tech/tags/pseudocode.md>), [ranking](<https://devfeed.tech/tags/ranking.md>), [search-engine](<https://devfeed.tech/tags/search-engine.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

This article explains how PageRank addresses dangling nodes and non-unique rankings. It introduces positive column-stochastic matrices and the Perron-Frobenius Theorem, then uses random web surfing as a probability-based intuition for webpage importance.

### Source excerpt

Dangling Nodes and Non-Uniqueness Recall where we left off last time. Given a web $ W$ with no dangling nodes, the link matrix for $ W$ has 1 as an eigenvalue, and if the corresponding eigenspace has dimension 1, then any associated eigenvector gives a ranking of the pages in $ W$ which is consistent with our goals. The first problem is that if there is a dangling node, our link matrix has a column of all zeros, and is no longer column-stochastic.

## Big-O Notation--A Primer

DevFeed: [Big-O Notation--A Primer](<https://devfeed.tech/articles/big-o-notation-a-primer-40201.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2011/06/14/big-o-notation-a-primer/>)

Published: 2011-06-14T16:26:27Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Algorithms, Complexity](<https://devfeed.tech/topics/algorithms-complexity.md>), [Algorithms](<https://devfeed.tech/topics/algorithms.md>), [Mathematics](<https://devfeed.tech/topics/mathematics.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [algorithms](<https://devfeed.tech/tags/algorithms.md>), [analysis](<https://devfeed.tech/tags/analysis.md>), [big-o-notation](<https://devfeed.tech/tags/big-o-notation.md>), [big-theta-notation](<https://devfeed.tech/tags/big-theta-notation.md>), [complexity](<https://devfeed.tech/tags/complexity.md>), [computational-complexity](<https://devfeed.tech/tags/computational-complexity.md>), [example](<https://devfeed.tech/tags/example.md>), [limits](<https://devfeed.tech/tags/limits.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [measurement](<https://devfeed.tech/tags/measurement.md>), [primer](<https://devfeed.tech/tags/primer.md>), [real-analysis](<https://devfeed.tech/tags/real-analysis.md>), [time](<https://devfeed.tech/tags/time.md>)

### AI overview

This primer introduces Big-O notation as a way to describe an algorithm's runtime growth. It defines the notation mathematically and illustrates it with a list-summing algorithm characterized as O(n), while also distinguishing Big-Theta notation.

### Source excerpt

The Quest to Capture Speed Companies and researchers spend hundreds of millions of dollars for the fruits of their algorithms. Whether one is indexing websites on the internet for search, folding proteins, or figuring out which warehouse is the most cost-effective to ship a product from, improvements in algorithm speed save immense amounts of money. It's no surprise then, that a similarly immense amount of money has gone into the mathematics behind algorithm analysis.