Tell me more ×
Theoretical Computer Science Stack Exchange is a question and answer site for theoretical computer scientists and researchers in related fields. It's 100% free, no registration required.

Consider the set of all bit arrays of length n. Now consider the set of all 1-to-1 functions that map from this set to this set.

Now select a single function out of the latter set. Is there any algorithm to find a "minimal" method of implementing this function? Assume that we only have access to fundamental bit array operators such as AND OR XOR NOT and left and right bitshifts.

In case you're wondering, the reason I want this is because I'm writing an algorithm to convert from z-curve ordering of bits to hilbert-curve ordering of bits. My current method is to make a lookup table, but I bet there's a better option.

As a simple example, let's say I have a truth table that looks like this:

00 -> 10
01 -> 01
10 -> 00
11 -> 11

Then I should be able to infer that, given an input bit string input, the output bit string output is (in java syntax)

output = ((~input) << 1) ^ input

Here's the proof in this case:

00 -> 11 -> 10 -> 10
01 -> 10 -> 00 -> 01
10 -> 01 -> 10 -> 00
11 -> 00 -> 00 -> 11
share|improve this question

1 Answer

up vote 5 down vote accepted

There is clearly an algorithm, since the finite search space can be explored using brute force. This takes a long time...

Instead of considering $f \colon \{0,1\}^n \to \{0,1\}^n$, one can look at the Boolean function $f' \colon \{0,1\}^{2n} \to \{0,1\}$ defined by $f'(xy) = 1$ iff $f(x) = y$.

No polynomial-time algorithm is known to find a minimum-size circuit for a Boolean function, which is known as the Minimum Circuit Size Problem (MCSP). However, MCSP is in NP.

If MCSP were in P, then one could factor in average time $2^{n^\epsilon}$ time (for any $\epsilon > 0$) numbers that are products of two primes, each of which is congruent to 3 modulo 4. These numbers are quite hard to factor in practice, so this would be quite surprising.

On the other hand, if the MCSP is NP-complete, then this would imply strong circuit lower bounds for the class E = DTIME($2^{O(n)}$), which we don't currently know how to do.

So no polynomial-time algorithms seem likely for your problem, unless you can exploit special features of the functions you are interested in.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.