Last modified: 10:57:53, Wed 14 Nov 2001 UTC
[ (up) ] [ epsmerge/ ] [ epssplit/ ] [ xalcove ]
One draws from the well
Without hindrance
It is dependable
Supreme good fortune
Most of the software I have written for and during my research is completely useless to anyone but myself (as an example, I have included the XAlcove program here). However, I occasionally needed to solve a problem that apparently no-one else had solved (at least not with free software). Consequently, there are some things here that other people also have found useful.
Standard disclaimer/excuse: I haven't really had time to work on this as much as I could/should/would (delete as applicable); since my job description contains the word ``mathematics'' (it doesn't actually, it is rather more specific), I have been doing that, leaving programming and things as a spare-time project.
As a general rule, all things that you find here are distributed under the GNU General Public License. It means that the software is distributed without any warranty etc., and that is it free and that you can't make it un-free. OK?
Also in the useful category is a C function for doing partial traces on matrices and tensors. It comes with a glue function for glueing it into Matlab. This thing is distributed under a BSD license.
| File | Size | MD5 sum |
| ptrace.tar.gz | 8.05K | 87a196190f91b3deb2c1b9d0b6958e60 |
Well, I think so anyway.
Here is a program in Emacs Lisp that does a breadth-first search within
a search space. All you have to do is to say what you are looking for
and what rules is used for the search, and where you start. You need to
know some Emacs Lisp to write the rules, but an example is included (the
"water-jug" problem). It returns the path to the first solution, but can
"easily" be modified to search the space exhaustively.
It is pretty clever about avoiding unnecessary cons'ing and recursions
(at the cost of readability, perhaps!) and mostly avoids non-ELisp
constructions (although Emacs has rather good CLisp support these days).
It doesn't (at the moment) have any checks against infinite searches
(For one thing, it doesn't use recursion; Emacs checks recursion levels).
It wouldn't be difficult to add, though.
The Common Lisp version is a strongly improved version; it can just find the best solution, or search a (finite) space exhaustively and return solutions sorted by goodness, and it can check against infinte recursion. Still doesn't use hashes for the lookup, though.
Then there is a caml version: the searching is done in bfsearch.ml, and you can then test it with the water-jug problem water-jug.ml.
Finally, there is a C++ version which does use hashing. It uses STL, which, in my humble opinion, is the best excuse for using C++ in smaller projects. It was designed to be threadable eventually, but since the problems I had to solve didn't really need threading, I haven't actually built it in yet. This thing is also under a BSD license.
| File | Size | MD5 sum |
| bfsearch.tar.gz | 9.52K | c52ebcae2c4106919bcb87f4defab164 |
If you don't know what the description means then you definitely (alright, probably) do not want to look at these programs!