laziness, impatience, and hubris PerlMonks

### RE: Re: Graph Traversal

by lhoward (Vicar)
 on Nov 08, 2000 at 22:23 UTC ( #40591=note: print w/replies, xml ) Need Help??

in reply to Re: Graph Traversal

This problem has one feature that make is distinct from the classic TSP (Travelling Salesman Problem). In the TSP you must visit every node exactly once. Even if a node is very far away it must be visited. In my case I only need to visit as many nodes as possible in so many moves and can safely ignore nodes that are "too far away".

I've tried adpoting spanning-tree approach to solving the TSP with moderate success. But I have already done better with an algorithm of my own.

Replies are listed 'Best First'.
Re: Graph Traversal
by tedv (Pilgrim) on Nov 08, 2000 at 23:46 UTC
I don't think it's that different. It's just a weighting problem with a threshold. Give each node a weight and divide by distance and you have a rough heuristic for how important it is to get there. Choose an appropriate threshold and you've reduced it to the TSP. In theory, a slightly better solution is to make a large graph and weight entire sections of the graph (ie. groups of nodes). This tells you that 9 average nodes are better than 1 great node and 8 worthless ones. But that's just another way of simplifying N nodes into 1 node, and you still have to apply a heuristical threshold to end up with a the TSP again.

-Ted
Because you have only a limited number of moves, the importance of a single node is also a function of the importance of its neighbours, so that a nearby (to the player) but lonely oil node isn't as important as a more distant oil node that is itself near to other oil nodes.

This is starting to sound like some statistical clustering is in order, then you measure distances to the various clusters along with the maximum number of moves required to suck up all the oil in each cluster. You then increase the cluster sizes and choose the largest cluster you can reach.

Maybe I've just restated another posting, but I feel better! ;-)

Create A New User
Node Status?
node history
Node Type: note [id://40591]
help
Chatterbox?
 [1nickt]: tobyink perl -MTypes::Standard= is_Int -Mstrict -wE 'say 1 if is_Int 1.0' [jdporter]: so that I can use the existing expand unix util. Otherwise, I'll probably use Text::Tabs. [1nickt]: pryrt I guess I don;t really care if user 42 logs on as 42.0 ... more of an academic question at this point. [LanX]: jdporter: open PIPE,'-|' ? [LanX]: oh you want the result line by line? [jdporter]: ok, LanX, then what? [jdporter]: It doesn't have to be line by line. Just "my program" "writes" to the external prog and also/then "reads" from it. LanX open (You are not allowed to open to a command that pipes both in and out, but see IPC::Open2, IPC::Open3, and Bidirectional Communication with Another Process in perlipc for alternatives.) [jdporter]: IPC::Open2, I guess [jdporter]: yes, that

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (11)
As of 2017-05-24 20:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
My favorite model of computation is ...

Results (186 votes). Check out past polls.