kjbuckets: graphs, sets, dicts extension by Aaron Watters

Guido.van.Rossum@cwi.nl
Thu, 12 Jan 1995 10:36:38 +0100

Aaron Watters sent me a Python extension whose description follows.
(I haven't tried it yet but wanted to pass the news on as quickly as
possible.)

========================================================================
The kjbuckets module is a C extension to Python which defines
three hash table based datatypes:
kjSet: an implementation for a Set ADT.
kjDict: an implementation for a mapping ADT.
kjGraph: an implementation for a (directed) graph ADT.
To use this module it must be compiled and linked to Python
(possibly via a dll).

For suitably large compute intensive uses these types should provide
up to an order of magnitude speedup versus an implementation that uses
analogous operations implemented directly in Python.

Briefly, these types have the following associated operations
(among others): [G is a graph, S is a set, D is a dict, X is any]
==================
kjSet(), kjGraph(), kjDict():
initializers (with optional arguments).

S.member(ob), D.member(arg,map), G.member(src,dst), X.has_key(key):
membership tests.

S.add(ob), D.add(arg,map), G.add(src,dst), X[key] = map:
populators.

G.delete_arc(src,dst), del X[key]:
delete operations.

X.choose_key(), X[key], G.neighbors(key), X.items(), X.keys(), X.values():
choice/retrieval operations.

G.reachable(key):
reachability set of from a key.

S.ident():
graph identity generator.

G.tclosure():
transitive closure generator.
===============

Objects of the same type may be combined using set-algebraic
operations:

X + Y or X | Y:
union of X and Y.

X - Y, X & Y:
intersection and difference of X and Y respectively.

And for Graphs or Dicts:

~X:
transposition of X.

X * Y:
relational composition of X with Y.

For more information please see the documentation enclosed with
the source.

The kjbuckets package consists of the following files
COPYRIGHT - a copyright notice.
kjbuckets.README - a readme (this file)
kjbuckets.tex - documentation in LaTeX.
kjbucketsmodule.c - the C source for the module

Hoping you'll like it.
Aaron Watters
Department of Computer and Information Sciences
New Jersey Institute of Technology
University Heights
Newark, NJ 07102
phone (201)596-2666
fax (201)596-5777
home phone (908)545-3367
email: aaron@vienna.njit.edu