I can only give a personal response.  Maybe it is because I'm left handed.

When I look at  ((<@#)&(i.n))@(0&<)  at or 

-----Original Message-----
From: programming-boun...@forums.jsoftware.com
[mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Mike Day
Sent: Monday, November 12, 2012 6:40 AM
To: programm...@jsoftware.com
Subject: Re: [Jprogramming] Arc consistency in J

But what's wrong with @ that's preferable with [:   ?        (I think 
Th is has been asked before.)

Aren't they both devices to represent what "ordinary" mathematicians 
just write as f g h ... for the composition of f g h ...   ?

Since J cleverly allows hooks and forks and interprets unbracketed trains of
verbs as such,  it needs some other way to recognise composition,  and
that's what both @ (and @:) and [: do for us - so why 
avoid one or the other of them?   I agree it took a lot of time to get 
my head round the new way of seeing trains of verbs.

Mike

On 12/11/2012 7:57 AM, Linda Alvord wrote:
> Well, it was possible, once I managed to get the rank right. Thanks 
> for providing hope that it could be done. Actually it is not too bad 
> looking after all.
>
>     A
> 0 0 1 0 0
> 0 0 0 0 0
> 2 0 0 0 1
> 0 0 0 0 1
> 0 0 2 2 0
>     
>     adj=:((<@#)&(i.n))@(0&<)
>     adj
> <@#&0 1 2 3 4@(0&<)
>     adj A
> --TT---T-T---┐
> │2││0 4│4│2 3│
> L-++---+-+----
>     
>     f=: 13 :'(0<y)([:<#)"1 i.#y'
>     f
> (0 < ]) ([: < #)"1 [: i. #
>     f A
> --TT---T-T---┐
> │2││0 4│4│2 3│
> L-++---+-+----
>
>        5!:4 <'adj'
>                          -- <
>              -- @ -------+- #
>        -- & -+- 0 1 2 3 4
>        │
> -- @ -+     -- 0
>        L- & -+- <
>     
>     5!:4 <'f'
>          -- 0
>    ------+- <
>    │     L- ]
>    │          -- [:
>    │     -----+- <
> --+- " -+    L- #
>    │     L- 1
>    │
>    │     -- [:
>    L-----+- i.
>          L- #
>
> Linda
>
> -----Original Message-----
> From: programming-boun...@forums.jsoftware.com
> [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Mike 
> Day
> Sent: Sunday, November 11, 2012 7:15 AM
> To: programm...@jsoftware.com
> Subject: Re: [Jprogramming] Arc consistency in J
>
> I don't think you can remove the @, although you may use the cap, [: , 
> instead,  but then you need to force the rank:
>      ([:<(#&0 1 2 3@(0&<)))"1 A
> +-++---+-+
> |2||0 3|2|
> +-++---+-+
>
> I don't like using 0 1 2 3 explicitly since it presumes you know the 
> dimension of A, so I prefer either
>         adja =: * <@# i.@#       NB. or use caps if @ is too horrible
>      adja A
> +-++---+-+
> |2||0 3|2|
> +-++---+-+
>
> or
>
>      adjI =: <@I.@:*
>      adjI A
> +-++---+-+
> |2||0 3|2|
> +-++---+-+
>
> I. is so useful that I've defined an I "dfn" in my Dyalog APL too!
>
> As for Raul's point about D,  I understood it to represent the domains 
> of the variables:  if there are m variables  and the domain of all 
> their possible values is i.n,  then 1 = D{~<i,j means that variable 
> number i may have value j .  m and n are likely to be different.  So  
> i<D is a boolean representing the a priori values that variable i might
have.
> The consistency algorithm apparently examines which of these a priori 
> values are consistent with the domains of the other variables given 
> certain unary and binary constraints which are also inputs to the problem.
>
> Michal's example had m=n which tends to mislead the casual reader!
>
> I believe The m*m A array points to which constraints apply,  so 
> 0<l=A{<i,k means that binary constraint number l applies between variables
i and k.
> This is why A isn't just a boolean adjacency matrix nor do the entries 
> signify distances as they would in a weighted graph.
>
> I'm puzzled that the algorithm requires each binary relation to be 
> presented in both direct and transposed form  (this explains Michal's 
> need to patch in a new index (to a transposed C) in the lower triangle 
> of A for each index to a direct C in the upper triangle).  Perhaps the
later algorithms (arc-4...
> ?) deal with this difficulty.
>
> It strikes me that for a real problem,  concise relations such as x <:
> y,  or 2x+3y>5 can become pretty large and unwieldy C-tables, but 
> perhaps that's unavoidable when working in the integers.
>
> (The other) Mike
>
> On 11/11/2012 10:16 AM, Linda Alvord wrote:
>
> Mike, I think this will work as an alternative to  adj
>
>       A
> 0 0 1 0
> 0 0 0 0
> 2 0 0 1
> 0 0 2 0
>      adj
> <@#&0 1 2 3@(0&<)
>      adj A
> --TT---T-┐
> │2││0 3│2│
> L-++---+--
>      h
> 0 1 2 3 <@#~ 0 < ]
>      h A
> --TT---T-┐
> │2││0 3│2│
> L-++---+--
>       
>    Can anyone remove the final  @  from  h  ?
>
> Linda
>    
>
> -----Original Message-----
> From:programming-boun...@forums.jsoftware.com
> [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Raul 
> Miller
> Sent: Saturday, November 10, 2012 12:44 PM 
> To:programm...@jsoftware.com
> Subject: Re: [Jprogramming] Arc consistency in J
>
> On Sat, Nov 10, 2012 at 12:16 PM, Michal 
> D.<michal.dobrog...@gmail.com>
> wrote:
>
>> Here X is telling us to use the constraint c1 (presumably b/c C is 
>> not
>> shown) between the variables 1 and 3 (0 based).  Likewise, use the 
>> transpose going the other direction (3,1).
> Ouch, you are correct, I did not specify C.  On retesting, though, it 
> looks like my results stay the same when I use:
>
> arccon=:3 :0
>      'D c1 X'=: y
>      'n d'=: $D
>      adj =: ((<@#)&(i.n)) @ (0&<)
>      A =: adj X
>      C=: a: , c1 ; (|:c1)
>      ac =: > @ (1&{) @ (revise^:_) @ ((i.n)&;)
>      ac D
> )
>
> For longer scripts like this, I really need to get into the habit of 
> restarting J for every test.  So that probably means I should be using
jhs.
>
>> Given the structure of X, only variables 1 and 3 can possibly change.
>> So if they are all changing something is definitely wrong.
> This line of thinking does not make sense to me.  I thought that the 
> requirement was that a 1 in D exists only when there is a valid 
> relationship along a relevant arc.  If a 1 in D can also exist in the 
> absence of any relevant arc, I am back to needing a description of the
algorithm.
>
>> Unfortunately I've run out of time to read the rest of your response 
>> but hopefully I can get through it soon.  I've also wanted to write a 
>> simpler version of the algorithm where the right argument of ac is 
>> only D and it runs through all the arcs in the problem instead of 
>> trying to be smart about which ones could have changed.
> Yes... I am currently suspicious of the "AC-3 algorithm".
>
> In the case of symmetric consistency, I think that it's unnecessary 
> complexity, because the system converges on the initial iteration.
>
> In the case of asymmetric consistency, I think that the work involved 
> in maintaining the data structures needed for correctness will almost 
> always exceed the work saved.
>
> But I could be wrong.  I am not sure yet if I understand the 
> underlying algorithm!
>
> --
> Raul
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
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