1 package cz.cuni.amis.pathfinding.map; 2 3 import java.util.Collection; 4 5 /** 6 * This interface provides additional information about the map algorithms are going to work with. In its implementation you may provide custom 7 * view on the map as needed for your search (for instance you need to forbid some nodes / edges or change the general cost of nodes / edges 8 * in order to change how your agent is going to plan the path). 9 * <p><p> 10 * Generally, you will use {@link IPFKnownMap} interface to define the map in general and then use this {@link IPFKnownMapView} interface 11 * to specify a specific needs you need to impose over the map as is "forbidding" some nodes or "imposing additional costs 12 * onto the nodes". 13 * <p><p> 14 * See also {@link IPFMapView} 15 * 16 * @author Jimmy 17 */ 18 public interface IPFKnownMapView<NODE> extends IPFMapView<NODE> { 19 20 /** 21 * This method may return new nodes which are not present in standard 'map' (as returned by {@link IPFKnownMap#getNodes()}). 22 * Such nodes are then exclusively accessible to your particular agent, that is, this methods is adding nodes that can be accessed 23 * by the agent but are not part of your general map description. 24 * <p><p> 25 * Returned collection must not contain multiple references to a single node. 26 * <p><p> 27 * Returned collection must not contain any node from "mapNodes". 28 * 29 * @param mapNodes "nodes" of map as returned by {@link IPFKnownMap#getNodes()}, may return null 30 */ 31 public Collection<NODE> getExtraNodes(Collection<NODE> mapNodes); 32 33 /** 34 * Default view does not impose any specific view on the map... all nodes/arcs are opened, no extra cost/nodes/arcs defined. 35 * @author Jimmy 36 */ 37 public class DefaultView<NODE> extends IPFMapView.DefaultView<NODE> implements IPFKnownMapView<NODE> { 38 39 @Override 40 public Collection<NODE> getExtraNodes(Collection<NODE> mapNodes) { 41 return null; 42 } 43 44 45 } 46 47 }