Java-Gaming.org
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
Featured games (78)
games approved by the League of Dukes
Games in Showcase (408)
games submitted by our members
Games in WIP (293)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Memoizing positions  (Read 369 times)
0 Members and 1 Guest are viewing this topic.
Offline i30817

Junior Member





« Posted 2012-06-23 20:43:18 »

I've got this... iterator class. It's type doesn't really matter (it's a document find iterator)

Anyway, it's logic is implemented using hasNext() as the code that actually calculates the new index... and it's hasPrevious() is:
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
    public boolean hasPrevious() {
        [...already done at least once logic...]
       
        //lame O(n) backward search
       //TODO please memoize this
       int localIndex = searchIndex;
        searchIndex = 0;
        int tmp, tmp2 = -1;

        while (hasNext()) {
            tmp = next();
            if ((tmp + 1) < localIndex) {
                tmp2 = tmp;
            } else {
                break;
            }
        }

        if (tmp2 == -1) {
            //revert the index if found nothing.
           searchIndex = localIndex;
            return false;
        } else {
            //prepare for previous (next() clobbered lastFoundLocation)
           lastFound = tmp2;
            return true;
        }
    }


 persecutioncomplex (so embarrassed)

Anyway since the underlying search algorithms don't support backwards searching, memoization is the obvious answer to this problem, although it would introduce stale cache issues.
I don't have much experience with memoization - what do you think it's the best policy: to expand the table (much harder it looks like) or just null it and let it be reconstructed from scratch?
Offline jonjava

JGO Knight


Medals: 33



« Reply #1 - Posted 2012-06-25 01:17:16 »

What do you mean by "memorizing this"? Saving it to file?

Offline i30817

Junior Member





« Reply #2 - Posted 2012-06-25 04:47:24 »

Memory. Save the preprocessed hits to memory

it's a waste of processing cycles - each 'has previous' is actually recalculating the hits of the search phrase in the whole text prior to the current index (and having a cache may actually help in hasnext too).

What is making me hesitate is that i hate and fear caches because of the complexity introduced in maintaining them:
The document may change, the search index may change, the search phrase may change, actually finding the cache index. Of these, only the first two look amenable to retaining part of the cached search, haven't really thought about it more than this, it makes me so mad about this inelegance, oh why didn't you make a backwards search variant mr moore, oh why do i have to deal with caching behaviour anyway for better performance ffgfgdgufgfgdgfdgdfjdkgdjfjgdjk.
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
 
Get high quality music tracks for your game!

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

The invasion has landed! On Mars! And you're there to beat 'em!
cubemaster21 (101 views)
2013-05-17 21:29:12

alaslipknot (110 views)
2013-05-16 21:24:48

gouessej (139 views)
2013-05-16 00:53:38

gouessej (134 views)
2013-05-16 00:17:58

theagentd (146 views)
2013-05-15 15:01:13

theagentd (132 views)
2013-05-15 15:00:54

StreetDoggy (175 views)
2013-05-14 15:56:26

kutucuk (197 views)
2013-05-12 17:10:36

kutucuk (199 views)
2013-05-12 15:36:09

UnluckyDevil (205 views)
2013-05-12 05:09:57
Complex number cookbook
by Roquen
2013-04-24 12:47:31

2D Dynamic Lighting
by Oskuro
2013-04-17 16:46:12

2D Dynamic Lighting
by Oskuro
2013-04-17 16:45:57

2D Dynamic Lighting
by Oskuro
2013-04-17 16:23:20

Noise (bandpassed white)
by Roquen
2013-04-05 17:36:01

Noise (bandpassed white)
by Roquen
2013-04-03 16:17:38

Java Data structures
by Roquen
2013-03-29 13:21:12

Topic Request
by kutucuk
2013-03-22 21:42:01
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!
Page created in 0.083 seconds with 20 queries.