2016-08-12 8 views
-1

Я пытаюсь внедрить Indoor навигационной системы, где я должен найти кратчайший путь к точке от моего текущего местоположения.Найти Кратчайший путь в Java без определения вершины/узлов

Вещи, которые я достиг: Использование алгоритма Дейкстры/Хипстера и тестового кода, где я определяю 4 узла с весами, а затем попытаюсь найти кратчайший маршрут от источника к месту назначения.

Теперь, если предположим, что я нахожусь в точке на карте, которая не определена как узел, и я хочу перейти к точке, которая может быть или не быть узлом, тогда в таком случае, как найти кратчайший путь?

Текущий тестовый код I'am с помощью:

package indoornav.shortestpath; 

import java.util.List; 

import es.usc.citius.hipster.algorithm.Hipster; 
import es.usc.citius.hipster.graph.GraphBuilder; 
import es.usc.citius.hipster.graph.GraphSearchProblem; 
import es.usc.citius.hipster.graph.HipsterDirectedGraph; 
import es.usc.citius.hipster.model.problem.SearchProblem; 

public class Client3 { 
    public static void main(String[] args) 
    { 
     HipsterDirectedGraph<String,Double> graph = 
       GraphBuilder.<String,Double>create() 
       .connect("A").to("D").withEdge(10d) 
       .connect("A").to("C").withEdge(12d) 
       .connect("C").to("A").withEdge(12d) 
       .connect("C").to("B").withEdge(10d) 
       .connect("B").to("D").withEdge(10d) 
       .connect("B").to("C").withEdge(10d) 
       .connect("D").to("A").withEdge(10d) 
       .connect("D").to("B").withEdge(10d) 

       .createDirectedGraph(); 

      // Create the search problem. For graph problems, just use 
      // the GraphSearchProblem util class to generate the problem with ease. 
      SearchProblem p = GraphSearchProblem 
             .startingFrom("A") 
             .in(graph) 
             .takeCostsFromEdges() 
             .build(); 

      // Search the shortest path from "A" to "F" 
      System.out.println(Hipster.createDijkstra(p).search("B")); 
    } 
} 

    enter code here 

ответ

0

Я думаю, что вы можете найти кратчайший путь между двумя соседними узлами, где находятся и где вы должны находитесь. Затем нужно добавить, чтобы привести путь от вашего реального местоположения, чтобы начать узел и от целевого местоположения до целевого узла:

A` - real location 
A - start node(neighbor for A`) 
B` - target location 
B - target node(neighbor for B`) 

result = shortest(A,B) + (A`-A) + (B`-B) 
+0

HI Slesh, спасибо за ответ, но не могли бы вы объяснить или дать некоторые справочные ссылки на него. Я новичок в этом алгоритме и принципах. Несколько строк кода для справки помогут намного лучше :-) – Anuj