caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: yoann padioleau <padator@wanadoo.fr>
To: caml-list@inria.fr
Subject: Re: [Caml-list] efficient binary relations?
Date: Fri, 31 Mar 2006 14:39:59 +0200 (CEST)	[thread overview]
Message-ID: <23781441.1143808799061.JavaMail.www@wwinf1603> (raw)




 
> I am looking for an efficient representation of binary relations in 
> OCaml. I have used bitvectors in the past but would like to use a more 
> high-level and less imperative data structure.
> 
> The most important operation is the following. For a binary relation R 
> over \X x \Y compute for a set X the set X' = { y | (x,y) in  R for all 
> x in X}. In other words, X' is the set of y that are common to all x in 
> X. Likewise, Y' must be computed. This operation requires to compute 
> the intersection of sets and was the main reason I chose bitvectors. If 
> you know about a suitable data structure I would glad to hear about it.
 
If you can represent the y by integers, and that the binary relation 
have good property, such as the set of y related to a x (the extension of x in concept analysis ?)
often follows each other,  then you can represent sets  by  list of intervals.
For instance the set of integers from 200 to 400 and 500 to 550  by [(200,400);(500;550)].
Computing intersection with such sets can be quite fast.
You can also represent such sets by tree of intervals (there is a pearl on this in journal of functionnal
programming if I remember).

Then, when you want to compute the intersection of an important number of set, maybe you have
to re-order the intersection operations, for instance starting with the sets which have the less elements.

I think that in constraint programming they have such problems.



             reply	other threads:[~2006-03-31 12:40 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-03-31 12:39 yoann padioleau [this message]
     [not found] <28871572.1143807766574.JavaMail.www@wwinf1529>
2006-03-31 13:24 ` Christian Lindig
  -- strict thread matches above, loose matches on Subject: below --
2006-03-31 11:56 Christian Lindig
2006-03-31 12:21 ` [Caml-list] " skaller
2006-03-31 12:42   ` Christian Lindig
2006-03-31 12:50 ` Sebastian Egner
2006-03-31 13:42   ` Christian Lindig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=23781441.1143808799061.JavaMail.www@wwinf1603 \
    --to=padator@wanadoo.fr \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).