While working on a project I've stumbled upon a graph algorithms problem I haven't been able to solve. The problem is as follows:
You have a directed, weighted graph and want to find the shortest path between a start node and an end node while visiting specified nodes (very much like Find the shortest path in a graph which visits certain nodes). However, along with nodes and edges, this graph also has the notion of "items", which reside at nodes and you "pick up" when you enter that node. Now there is an extra constraint that edges can only be traversed if you have obtained the necessary items, I, for that particular edge. Think of it as a key for a door; you need to obtain a key before being able to pass through the door.
I can only think of brute-force methods that blow up exponentially. Can anyone think of anything better or point me to a place where this problem is solved? Or maybe convince me that this is "hard" (computationally speaking)? Thanks for any help!