Newsgroups: comp.ai.nat-lang,comp.lang.prolog
Path: cantaloupe.srv.cs.cmu.edu!rochester!udel!news.mathworks.com!uunet!allegra!alice!pereira
From: pereira@radish.research.att.com (Fernando Pereira)
Subject: Re: code for finite automata
In-Reply-To: etg10@cl.cam.ac.uk's message of 10 Feb 1995 13:38:20 GMT
X-Nntp-Posting-Host: radish.research.att.com
Message-ID: <PEREIRA.95Feb10222452@radish.research.att.com>
Sender: usenet@research.att.com (netnews <9149-80593> 0112740)
Reply-To: pereira@research.att.com
Organization: AT&T Bell Laboratories
References: <3hfq8c$9cf@lyra.csx.cam.ac.uk>
Date: Sat, 11 Feb 1995 03:24:52 GMT
Lines: 23
Xref: glinda.oz.cs.cmu.edu comp.ai.nat-lang:2873 comp.lang.prolog:12247

In article <3hfq8c$9cf@lyra.csx.cam.ac.uk> etg10@cl.cam.ac.uk (Edmund Grimley-Evans) writes:
   Does anyone know of any public-domain code for manipulating finite
   automata, i.e. intersecting them, minimising them, doing unions, etc?
   Prolog would be best.
I wouldn't hold my breath for really efficient FSA intersection,
determinization or minimization in Prolog. All those algorithms depend
on imperative algorithms to achieve decent performance. Imperative
algorithms in Prolog require using assert etc, which have awful
constant multipliers. Either Prolog extensions or other logic-based
languages that optimize updates to single-threaded data structures may
get closer to procedural language performance on those algorithms, but
I've not yet seen actual results demonstrating that.


--
Fernando Pereira
2B-441, AT&T Bell Laboratories
600 Mountain Ave, PO Box 636
Murray Hill, NJ 07974-0636
pereira@research.att.com
1-908-582-3980


