Probably not.  It's not related to the problem of finding the minimum that
I know of.  It's the general problem of how you avoid initializing a large
but sparse array.  Recently, I did use the idea in a case of x i. y (you
know, the problem I've been working on for 30 years :-).

Anyway, here it is:  In the book *The Design and Analysis of Computer
Algorithms*, by Aho, Hopcroft, and Ullman, Addison-Wesley, 1974, Exercise
2.12:

Develop a technique to initialize an entry of a matrix to zero the first
time it is accessed, thereby eliminating the O(‖V‖^2) time to initialize an
adjacency matrix.
[Hint: Maintain a pointer to each initialized entry to a back pointer on a
stack. Each time an entry is accessed, verify that the contents are not
random by making sure the pointer in that entry points to the active region
on the stack and that the back pointer points to the entry.]


The hint is part of the statement of the exercise in the book and gives
away the game.  The technique is sufficiently well-known that it is the top
search result (of 3,800,000) on Googling "Exercise 2.12
sparse"<http://www.google.ca/search?q=Exercise+2.12+sparse>
.







On Thu, Mar 6, 2014 at 4:55 PM, Raul Miller <[email protected]> wrote:

> Is this still going to be faster than the test and branch loop?
>
> Thanks,
>
> --
> Raul
>
>
> On Thu, Mar 6, 2014 at 7:49 PM, Roger Hui <[email protected]>
> wrote:
> > Well, if you use a hash table it'd be O(1) expected time to read and
> write.
> >  The method I know is O(1) worst case time to read and write.
> >
> >
> > On Thu, Mar 6, 2014 at 2:54 PM, Yike Lu <[email protected]> wrote:
> >
> >> Hmm, maybe not. It has to basically be able to insert ordered in
> constant
> >> time. Everything I remember seems to be log time for one or the other.
> >>
> >> I'm starting to lean towards a multi-pass / multi-array solution.
> >>
> >>
> >> On Thu, Mar 6, 2014 at 4:42 PM, Roger Hui <[email protected]>
> >> wrote:
> >>
> >> > The method I know offers O(1) time to read and write.  Can your
> >> dictionary
> >> > do the same?  (And I think we are talking about _how_ you implement a
> >> > dictionary.)
> >> >
> >> >
> >> >
> >> >
> >> > On Thu, Mar 6, 2014 at 2:34 PM, Yike Lu <[email protected]>
> wrote:
> >> >
> >> > > Using a dictionary is another way.
> >> > >
> >> > >
> >> > > On Thu, Mar 6, 2014 at 3:30 PM, Roger Hui <
> [email protected]>
> >> > > wrote:
> >> > >
> >> > > > Yes, that's the cost.  The trick is to avoid initializing count
> >> > > altogether,
> >> > > > because for this subproblem M is much greater than n.  The answer
> is
> >> > > > algorithmic and not a matter of using this or that C operation.
> >> > > >
> >> > > > Recently I had occasion to use the trick for M=65536 and n about
> >> 5000.
> >> > >  As
> >> > > > originally posed, I think the intention was that M would be
> zillions.
> >> > > >
> >> > >
> ----------------------------------------------------------------------
> >> > > 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
> ----------------------------------------------------------------------
> 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