http://en.wikipedia.org/wiki/Shortest_path_problem



----- Original Message -----
From: Dan Bron <[EMAIL PROTECTED]>
Date: Thursday, December 28, 2006 8:52 am
Subject: [Jprogramming] I know a shortcut

> I have a problem to which I'd like a beautiful J solution.  I know 
> 
> it's out there.  But I can't find it.
> 
> The basic problem is a have a bunch of long "paths".  Now, I know 
> some  
> "shortcuts" down these paths.  For example, let's say I want to 
> get to  
> point X:
> 
>   $ A-B-C-D-E...-X
> 
> Now, say I know shortcuts to points E, M, and T, labeled sE, sM, 
> sT,  
> respectively.  I now have several ways to get to point X:
> 
>   $  A-B-C...-X
>   $ sE-F-G...-X
>   $ sM-N-O...-X
>   $ sT-U-V...-X
> 
> What I want is the shortest way to get to X.  In this case, I'd 
> choose  
> the last path, because T is closest to X.
> 
> So, given a Nx2 table of  shortcut ; path-equivalent-to-shortcut  
> and  
> a list of target paths, I want the targets shortened as much as  
> possible (if no reduction is possible, the target remains unchanged).
> 
> A concrete example (somewhat) analogous to my problem would be to  
> provide an inverse to   jpath_z_  .  The verb takes a shortcut and 
> 
> resolves it to a fully qualified path.  What I want is the 
> opposite:   
> Given a fully qualified path, it should return the shortest 
> possible  
> shortcut.
> 
> So, provide a dyadic verb  shortcut  such that:
> 
>           pathj =:  (2 {."1 SYSTEMFOLDERS_j_,USERFOLDERS_j_)&shortcut
> 
>           eg    =:  <;._2 noun define
>       ~Classes\plot\jzplot.ijs
>       ~Main\sysenv.ijs
>       ~config\recent.ijs
>       ~user\labs.txt
>       )
> 
>           eg -: pathj jpath&.> eg
>       1
> 
> 
> I have included an (ugly, explicit, nested-loop) model of  
> shortcut   
> in the postscript.
> 
> It is important to note that  jpath  is "eached" but  pathj  
> isn't.   
> (Of course, in the body of the model, each path is treated  
> independently, but I don't think in a "beautiful" solution that 
> should  
> be so.)
> 
> A lot of paths will be prefixes of others, and having resolved 
> such a  
> path once, we should be able to reuse that knowledge for an 
> efficient  
> solution (would  M.  help here?).  Another way of putting it is 
> that  
> shortcuts can be relative to other shortcuts.
> 
> Note also that file systems permit backtracking with "\..", and my 
> 
> model reflects this.  In my real problem however, that's not 
> possible,  
> so you may feel free to ignore the possibility in your solution 
> (you  
> can treat shortcuts followed by "..\" as non-viable/infinite 
> length).   
> But bonus points for generality if you provide for the possibility.
> 
> -Dan
> 
> PS: Here is a model:
> 
> shortcut =: dyad define
> 
>   r =. 0 $ a:
>   for_file. y do.
>     cutfile =. PATHSEP_j_ cut tolower^:IFWIN32 > file
> 
>     file_candidates =. file
>     for_nick_dir. x do.
>       'nick dir' =. nick_dir
>       cutdir =. PATHSEP_j_ cut tolower^:IFWIN32 dir
> 
>       a          =.  i.&0@:=/ cutdir,:cutfile
>       relative   =.  (a~:0) # ('~',nick) ; a }. (#cutdir) # <'..'
>       candidate  =.  ; }:,(<'\') ,.~ a: -.~ relative , a }. cutfile
> 
>       file_candidates =. file_candidates , <candidate
>     end.
> 
>     r =. r , ({~ [: (i. <./) #&>) file_candidates -. a:
>   end.
> 
>   r
> )


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

Reply via email to