An explanation of closure usually begins with a description of
graphs and then proceeds to closure.  From the J dictionary:

http://www.jsoftware.com/help/dictionary/samp20.htm  (Directed Graphs)
http://www.jsoftware.com/help/dictionary/samp21.htm (Closure)

One particular kind of graph provides a telling example:
the relation ship is "children of".  The transitive closure
of this graph is "descendant of".  "Transitive" means
if a R b and b R c, then a R c .



----- Original Message -----
From: Oleg Kobchenko <[EMAIL PROTECTED]>
Date: Wednesday, April 2, 2008 0:23
Subject: [Jgeneral] Transitive Closure and Line Wrap
To: General forum <[email protected]>

> Transitive Closer (TC) is applying the same operation over and
> over until the results stop changing.
> 
> As a simple example +/ can be expressed: remove first two items,
> prepend their sum.
> 
> In TC it is (typically) necesary to establish a stop condition. 
> Here, it is: until there is more than one item. We apply 
> operation 
> only while stop condition is satisfied. Here's one step:
> 
>    2&(+/@{. , }.) ^: (1<#) 1 2 3 4 5
> 3 3 4 5
> 
> We get the sought +/ after applying the above ad infinum:
> 
>    2&(+/@{. , }.) ^: (1<#) ^:_ ]  1 2 3 4 5
> 15
>    +/  1 2 3 4 5
> 15
> 
> Now for convenience, we separate the TC operator from
> the functional arguments: operation and stop condition:
> 
>    tc=: 2 : 'u ^:v ^:_'
> 
>    2&(+/@{. , }.) tc (1<#) 1 2 3 4 5
> 15
> 
> Now, in line wrap problem we need to break the sequence
> of words into lines. Suppose we calculated each word length
> (plus 1 for space) and have line length.
> 
>    L=. 1 2 3 4 5 3 2 1 2 3 4 3 2    NB. 
> word lengths +1
> 
> Continuing the idea of TCing +/ here we need to
> do the +/ until we reach line end, which gives us
> first line, and then repeat it until we exhaust all
> words, which will give the rest of the lines. That's
> two nested TCs.
> 
> Here's inner TC: calculate leading line length
> 
>    ln=. 1 : '2&(+/@{. , }.) tc ((m>:[:+/2&{.)*.(1<#))'
>    8 ln L
> 6 4 5 3 2 1 2 3 4 3 2
> 
> For outer TC we need "trasitive accumulator" for 
> intermediate results
> 
>    ta=: 2 : 'u&.> ^: (v&>) ^:a:'
> 
> We are interested in }.@(8 ln) which are unwrapped
> words after each successive line. Getting their
> lengths and then pairwise differences will yield
> the sought word lengths of each line:
> 
>    ]s=. 2-/\ #&> }.@(8 ln) ta (0<#) <L
> 3 1 2 4 2 1
> 
>    ((# [EMAIL PROTECTED]) s) </. L
> +-----+-+---+-------+---+-+
> |1 2 3|4|5 3|2 1 2 3|4 3|2|
> +-----+-+---+-------+---+-+
> 
> 
> 
> --- Mattia Landoni <[EMAIL PROTECTED]> wrote:
> 
> > Out of sheer curiosity, and far from intervening in the merit 
> of the
> > discussion, what does "transitive closure" have to do with 
> "line wrap"? The
> > Wikipedia entry failed to illuminate me. There must be some subtle
> > connection!
> > 
> > 
> > > From: Devon McCormick <[EMAIL PROTECTED]>
> > >
> > > > Yes - "transitive closure" will become my new
> > > > catchphrase for the way we state things in J-world that 
> render them
> > > > opaque to everyone but college math professors and a
> > > > few fellow travelers.  As I've mentioned before, when 
> I originally
> > > needed to
> > > > do this,
> > > > it was simpler for me to write a crude text folder than to 
> find the
> > > > code I knew already existed.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to