可以帮助我进行图搜索吗?

时间:2019-05-27 06:21:52

标签: java grid-search

该代码适用于点数。我想重做它,花最短的时间而不考虑要花多少点 该算法找到了一种方法,但它并不总是最短的方法。我该如何处理它,以使它始终是最短的方法-考虑重量

    ArrayList<Node> list = new ArrayList<>();
    list.add(graph.getNode(startName));
    Node endNode = graph.getNode(endName);
    Node temp;

    while(!list.isEmpty()) {
        temp = list.get(0);
        System.out.println("Temp node is: " + temp.getName()
        + " , distance to goal node is: " + graph.calcDistance(temp, endNode));

        //test case
        graph.setCostAndParent(temp.getName());
        if(temp.getParent() != null) {
            System.out.println("Parent: " + temp.getParent().getName()
                    + " , cost: " + temp.getWeight());
        }
        //end test case

        if(temp.getName().equals(endName)) {
            return true;
        }

        temp.setTested(true);
        list.remove(0);

        if(!temp.isExpanded()) {
            for(Node node : graph.getLinkedNodes(temp.getName())) {
                addNodeToList(list, node, endNode);
            }
            temp.setExpanded(true);
        }


    }//end while


    return false;
}

public void addNodeToList(ArrayList<Node> list, Node node, Node endNode) {
    if (node.isTested() || list.contains(node))
        return;

    Node temp;

    for (int i = 0; i < list.size(); i++) {
        temp = list.get(i);
        double lengthToInitialCurrent = graph.calcDistance(node, endNode);
        double lengthToInitialTemp = graph.calcDistance(temp, endNode);
        if (lengthToInitialCurrent < lengthToInitialTemp) {
            list.add(i, node);
            return;
        } // end if
    } // end for

    list.add(node);
}//end method

}

如果有人可以帮助我... 我不知道如何驾驭这条路。

0 个答案:

没有答案