import java.util.List; import graphlib.graphs.DirectedGraph; import graphlib.nodes.Node; public interface KortstePaden { /** * Bereken het kortste pad van de gegeven starttop naar de gegeven bestemming. * Indien er een negatieve cykel voorkomt in de graaf, of de bestemming niet * bereikbaar is vanuit de starttop, genereer je een runtime exceptie met * gepaste foutboodschap. * * @param graaf gerichte gewogen graaf * @param start starttop * @param bestemming bestemming * @return kortste pad van starttop naar bestemming * @throws NegativeCycleException als er een negatieve cykel voorkomt in de graaf * @throws UnreachableDestinationException als de bestemming niet bereikbaar is vanuit de starttop */ public List kortstePad(DirectedGraph graaf, Node start, Node bestemming); public class NegativeCycleException extends RuntimeException { public NegativeCycleException() { super("Graaf bevat een negatieve cykel."); } } public class UnreachableDestinationException extends RuntimeException { public UnreachableDestinationException() { super("Bestemming onbereikbaar uit starttop."); } } }