From: "John B. Matthews" <nospam@nospam.invalid>
Subject: Re: find words that contains some specific letters
Date: Sat, 06 Jun 2009 12:13:19 -0400
Date: 2009-06-06T12:13:19-04:00 [thread overview]
Message-ID: <nospam-B6C8E0.12131906062009@news.aioe.org> (raw)
In-Reply-To: 78rpbkF1mqrc7U1@mid.individual.net
In article <78rpbkF1mqrc7U1@mid.individual.net>,
"Giovanni Azua" <bravegag@hotmail.com> wrote:
> "Patricia Shanahan" <pats@acm.org> wrote in message
> > A perfect hash function is one that guarantees distinct hash codes
> > for a specific set of keys. There are algorithms for constructing
> > one, given a set of keys.
>
> For example the Character class.
I think all of the primitive wrappers (except Double) have trivially
perfect integer hashes, as they wrap distinct values. Patricia was
perhaps referring to algorithms of the kind discussed here:
<http://en.wikipedia.org/wiki/Perfect_hash_function>
The jumble algorithm relies on a hashed map for efficiency, but a
perfect hash is not essential. I recently implemented the algorithm
in both Java and Ada using library routines:
<http://en.wikipedia.org/wiki/Jumble>
<http://sites.google.com/site/drjohnbmatthews/jumble>
<http://home.roadrunner.com/~jbmatthews/jumble.html>
I was intrigued to compare the two languages' library implementations
of a general purpose string hash. Using a multiplicative function with
an initial value of zero, both offer excellent performance. Java uses a
multiplier of 31 on a signed 32-bit integer; Ada uses a multiplier of
eight on an unsigned (modular) value whose size is implementation
defined (e.g. mod 2**32):
<http://www.docjar.org/html/api/java/lang/String.java.html>
<http://gcc.gnu.org/viewcvs/trunk/gcc/ada/a-strhas.adb>
[Cross-posted to comp.lang.java.programmer and comp.lang.ada;
Followup-To header not set.]
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>
next parent reply other threads:[~2009-06-06 16:13 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <edaeda6b-3793-48f2-8f8f-6c9701759de5@r33g2000yqn.googlegroups.com>
[not found] ` <f350aaae-d045-450d-b255-308eb7fb8f8a@e24g2000vbe.googlegroups.com>
[not found] ` <d121e6f6-6afa-43e7-bcd1-c9a770e12704@z9g2000yqi.googlegroups.com>
[not found] ` <nospam-83CE7B.07382201062009@news.aioe.org>
[not found] ` <78i1lbF1m69gkU1@mid.individual.net>
[not found] ` <78i2ajF1m4nglU1@mid.individual.net>
[not found] ` <h00l40$r5h$1@news.albasani.net>
[not found] ` <78i4i2F1magkfU1@mid.individual.net>
[not found] ` <3f1d007f-bcae-42b4-afb0-215b18f51b9c@n21g2000vba.googlegroups.com>
[not found] ` <78ib19F1mfh7qU1@mid.individual.net>
[not found] ` <3b519936-3db9-4dad-85ba-371fa4b29c8f@z5g2000vba.googlegroups.com>
[not found] ` <78quiaF1n95fsU1@mid.individual.net>
[not found] ` <h09q6f$41t$1@news.albasani.net>
[not found] ` <MJWdnUzVI6hADrXXnZ2dnUVZ_q2dnZ2d@earthlink.com>
[not found] ` <78rpbkF1mqrc7U1@mid.individual.net>
2009-06-06 16:13 ` John B. Matthews [this message]
2009-06-06 16:22 ` find words that contains some specific letters Patricia Shanahan
2009-06-06 20:42 ` Giovanni Azua
2009-06-06 23:43 ` Giovanni Azua
2009-06-06 17:11 ` Mark Space
2009-06-06 18:23 ` Lew
2009-06-06 23:58 ` Tom Anderson
2009-06-07 19:30 ` John B. Matthews
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox