Henry, very good. For longer strings it is more than double so fast as the previous version. In my test cases it even consumes less memory. Is it possible to include this as a native function in J (e.g. overloading -. or s:)? Same question but now for Tanimoto distance? Jan.
On 12/19/09, R.E. Boss <r.e.b...@planet.nl> wrote: > > Smart analysis. Chapeau! > > > R.E. Boss > > > -----Oorspronkelijk bericht----- > Van: programming-boun...@jsoftware.com > [mailto:programming-boun...@jsoftware.com] Namens Henry Rich > Verzonden: zaterdag 19 december 2009 3:00 > Aan: Programming forum > Onderwerp: [Jprogramming] Levenshtein distance > > I was working with R. E.'s compact implementation of the Levenshtein > distance and I found an interesting equivalence: > > (<. >:)/\.&.|. > > can be replaced by > > (<./\@:- + ]) i...@# > > which uses a little more space but is quite a bit faster for large > operands. So now I have the version: > > NB. Levenshtein distance between two strings > levdist=: 4 : 0 > 'a b'=. (/: #&>)x;y > z=. i.>:#b > for_j. a do. > z=. ((<./\@:- + ]) i...@#) ((j ~: b) + }:z) ({...@] , (<. }.)) >:z > end. > {:z > ) > > > Henry Rich > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > -- Jan Jacobs Esdoornstraat 33 5995AN Kessel T: +31 77 462 1887 M: +31 6 23 82 55 21 E: jan.jac...@sommaps.com ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm