|
|
|
|
|
by gciruelos
2868 days ago
|
|
Related to your last question, I was always puzzled by the following: when is a program an implementation of an (abstract) algorithm? For example, can a program decide, given a sorting function implemented in language X, and an algorithm Y, whether or not the sorting function is an implementation of algorithm Y?
Part of the question is how to represent algorithms (is "formal" pseudo-code the best way?) Also, can you decide whether or not two functions written in different programming languages are implementations of the same algorithm? |
|
Assuming the usual things (e.g. that an algorithm Y can be specified in some useful, say, very high level language) then this problem is Halting-hard (e.g. at least as hard as the halting problem), because it would be showing the equivalence of two programs. A similar case applies to your latter question.
I'm not sure there's a good way of specifying abstract algorithms without running into this problem, but I'd be interested in defining a bit further what you might be thinking about.