29 ms·
Generally speaking, an "algorithm" can be implemented in many different ways. A "piece of software" is a specific implementation. In patent terminology, a speci
by 10ren 16y ago
Generally speaking, an "algorithm" can be implemented in many different ways. A "piece of software" is a specific implementation. In patent terminology, a specific implementation is an embodiment of an invention.
Implementations can vary in trivial ways (eg. different variable names), substantial ways (eg. different languages), in representation choices (eg. a graph as a list of arcs; as a matrix of connections; as pointers/references from data structure to data structure; using "pointers" that are indices into an array etc); in execution choices (recursive; iterative; immutable; mutable); in a million details that are non-significant for the algorithm. Ask two people to implement Dijkstra's algorithm; they're unlikely to produce identical code. (Although, when marking at uni, assignments were often strikingly similar - not always due to cheating, since one of them was almost identical to code I'd written, and no one had seen it. There are often only a few obvious ways to approach a problem and convention dictates the other decisions. But I digress.)
- loup-vaillant 16y agoAt last. This is starting to make some sense. Thank you. Now, there still a problem. Hcho said that while programs could not be patented, algorithms could. So, imagine you patent some algorithm, and later I write and commercially use a program that implements that algorithm. How the hell could my particular use of your algorithm not infringe your patent? Yet it is my understanding that it doesn't, on the grounds that software is somewhat immune from patent infringement. Either I missed something, or something is amiss.
- 10ren 16y agoYour program would infringe my patent. I think Hcho meant that when you draft the patent, you draft it in terms of an algorithm - though I also think he was speaking tongue in cheek. You could draft a patent that was specifically of one particular implementation, but it wouldn't give you much protection. Sometimes, people will describe the algorithm, and also supply a particular implementation (to prove that it really works). A long time ago, it was actually a requirement to supply a working model with each patent, and there's a museum of them somewhere. Aside: Actually, pure algorithms aren't patentable, because they are too abstract. For a software patent to be valid, it has to be inventive (non-obvious to one skilled in its field) with respect to the state-of-the-art (at that time it was invented). Bilski, the recent (US) patent case, held that you have to assess this inventiveness of the algorithm and its application to a problem as a whole. It's not enough to apply an algorithm in an obvious way (no amount of "post-solution activity" helps, if it's not inventive). I think this distinction of algorithm vs application is similar to product vs market. An algorithm is a solution, but it's not patentable unless it is a solution to a problem - and that taken together, is not obvious. A famous patent law case (whose name escapes me) involved a well-known chemical that was patented as a fertilizer. It wasn't previously realized that it could be used as a fertilizer - this was a non-obvious application of a known thing. OK, I'm sure that was more than you wanted.