comp.lang.ada
 help / color / mirror / Atom feed
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>



       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