Hi Michal,

maybe this is an interesting representation for what you want?

   ([:|. $ ;~ $ each) (i. 2 3) ; (,0) ; 0 1 
┌─┬─────────┐ 
│3│┌───┬─┬─┐│ 
│ ││2 3│1│2││ 
│ │└───┴─┴─┘│ 
└─┴─────────┘ 



----- Original Message -----
From: Michal D. <michal.dobrog...@gmail.com>
To: programm...@jsoftware.com
Cc: 
Sent: Saturday, September 6, 2014 12:06 PM
Subject: [Jprogramming] Ragged Array Shapes are Trees

I just came to the realization that ragged array shapes, regardless of how
you want to represent them, are trees.  I would be interested in any
references to prior exploration of this idea.

Some example data (boxes are used to display ragged arrays, but otherwise
have no semantic meaning):

   ] A =. i. 2 3
0 1 2
3 4 5
   ] B =. (< @ i."0) 1+i.2
+-+---+
|0|0 1|
+-+---+
   ] C =. A ; B
+-----+-+---+
|0 1 2|0|0 1|
|3 4 5| |   |
+-----+-+---+
   ] D =. A ; < B
+-----+-------+
|0 1 2|+-+---+|
|3 4 5||0|0 1||
|     |+-+---+|
+-----+-------+

The corresponding shape trees (monospace font required, root node is on the
left):

A: 2 - 3

       1
     /
B: 2
     \
       2

       2 - 3
     /
C: 3 - 1
     \
       2

       2 - 3
     /
D: 2       1
     \   /
       2
         \
           2

In some sense the shape tree for A is compressed, the verbose alternative
being:

       3
     /
A: 2
     \
       3

Compressing D in a similar manner leaves the full shape of the tree
ambiguous - there is no way to distinguish the duplicate structure of leaf
3 from the structure of leaves 1, 2.

           3
         /
D: 2 - 2 - 1
         \
           2

We could resolving this ambiguity by listing the shapes of all the items
explicitly.  The problem here is that 'compression' could very easily lead
to an increase in representation size, although it is nice and uniform for
ragged arrays of uniform rank.

            3
          /
         |  3
         | /
D: 2 - 2 +
         | \
         |  1
          \
            2

Regardless of compression, I would be interested in prior work in
representing shapes of ragged arrays as trees.

Cheers,

Mike
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to