The simplest case I know of an algorithm that exists, though it is not
known which algorithm, concerns finite state automata.
The quotient $L_1/L_2$ of a language $L_1$ by a language $L_2$ is
defined as $L_1/L_2=\{x \mid \exists y\in L_2 \text{ such that } xy\in L_1\}$.
It is easily proved that regular set are closed under quotient by an
arbitrary set. In other words, if $L_1$ is regular and $L_2$ is arbitrary (not necessarily regular), then $L_1/L_2$ is regular, too.
The proof is quite simple. Let $M=(Q,\Sigma,\delta,q_0,F)$ be a FSA
accepting the regular set $R$, where $Q$ and $F$ are respectively the
set of states and the set of accepting states, and let $L$ be an
arbitrary language. Let $F'=\{q\in Q\mid \exists y\in L \;\;\delta(q,y)\in
F\}$ be the set of states from which a final state can be reached by
accepting a string from $L$.
The automaton $M'=(Q,\Sigma,\delta,q_0,F')$, which differs from $M$
only in its set $F'$ of final states recognizes precisely $R/L$. (Or see Hopcroft-Ullman 1979, page 62 for a proof of this fact.)
However, when the set $L$ is not decidable, there may be no algorithm
to decide which states have the property that defines $F'$. So, while
we know that the set $F'$ is a subset of $Q$, we have no algorithm to
determine which subset. Consequently, while we know that $R$ is
accepted by one of $2^{|Q|}$ possible FSA, we do not know which it is.
Though I must confess we know to a large extent what it looks like.
This is an example of what is sometimes called an almost constructive
proof, that is a proof that one of a finite number of answers is the
right one.
I suppose an extension of that could be a proof that one of an
enumerable set of answers is the right one. But I do not know any. Nor
do I know a purely non-constructive proof that some problem is
decidable, for example using only contradiction.
5There is a trivial answer. Take any yes/no question the answer of which is unkown, like "is $\pi$ random", then the question is decidable, only we do not yet know which of the two possible algorithms is correct. – Hendrik Jan – 2014-10-26T11:25:34.683
@HendrikJan I don't think so. Counter-example: "This program halts on input X." – wberry – 2014-10-26T17:26:04.657
@HendrikJan Undecidability does not apply to a question having a unique answer. At best it may be an issue of incompleteness of the axioms (CF Gödel). The fact that we do not know the answer is only a statement on our ignorance. A fact may be provably true or false, or it may be always true, or always false (always="in all models"), but without being provably so. – babou – 2014-10-26T18:03:48.773
6
basically duplicate of tcs.se question are there nonconstructive algorithm existence proofs
– vzn – 2014-10-26T18:06:41.147@wberry If the program and X are both fixed one of the answers "yes" or "no" must be true. Even if we don't always know (or cannot find) which answer to choose. – Hendrik Jan – 2014-10-26T18:58:43.363
1@babou Indeed: a question with a unique answer is decidable. Here ignorance is the point it seems, it is a case of "dont't know" from the question, although only "don't know now". Once we have found out whether $\pi$ is random or not we need to look for another example. Your answer below is much better of course! It is a form of "don't know" which is inherently "will never know". – Hendrik Jan – 2014-10-26T19:05:46.090
1@HendrikJan: And that procedure is what we call an algorithm in CS. But taking the halting problem as an example, we cannot even prove that an algorithm exists! – MSalters – 2014-10-26T19:06:21.423
@MSalters There is no algorithm for the Halting problem, of course. But whether a single fixed automaton halts on a single fixed output technically is decidable with algorithm "yes" or algorithm "no". Even if we do not know which one works because we are asking about an unknown instance of the halting problem. – Hendrik Jan – 2014-10-26T19:14:42.547
@HendrikJan "In computability theory, the halting problem is the problem of determining, from a description of an arbitrary computer program and an input, whether the program will finish running or continue to run forever." Your argument seems to be that, for a particular machine and input, either an always-yes or always-no machine would produce the correct answer. But this misses the point; the problem is undecideable because no algorithm exists to determine which. http://en.wikipedia.org/wiki/Halting_problem
– wberry – 2014-10-26T19:26:25.340@wberry That's not what undecidable. E.g., there's is an algorithm that correctly answers "Is the sequence 99999999999999999999999999 present in pi?". It's either the algorithm "return yes" or the algorithm "return no". It's a decidable problem, even if we don't know which of the candidate algorithms is a decision procedure for it. This will actually be the case for any problem with a finite domain. The difficulty is that we might not have a decision procedure for determining which decision procedure is the one we want. – Joshua Taylor – 2014-10-27T01:55:55.470
1
Some more interesting examples can be found here: http://cstheory.stackexchange.com/questions/4777/are-there-problems-without-efficient-algorithms-where-existence-theorems-have-p
– Erel Segal-Halevi – 2014-10-27T07:29:32.7071
See also this question for a specific example.
– Raphael – 2014-10-27T16:52:14.017