-1
Google을 사용하여 소스 코드를 찾을 수 없습니다. (java, c, C++) 사실 이진 트리를 사용하고 반복 검색을 사용하는 코드를 찾고 있는데, 원하는 노드의 경로를 알려줍니다.반복 심화 검색 소스 코드
Google을 사용하여 소스 코드를 찾을 수 없습니다. (java, c, C++) 사실 이진 트리를 사용하고 반복 검색을 사용하는 코드를 찾고 있는데, 원하는 노드의 경로를 알려줍니다.반복 심화 검색 소스 코드
어떻게 여기에 대해 자바 : http://aima-java.googlecode.com/svn/trunk/aima-core/src/main/java/aima/core/search/uninformed/IterativeDeepeningSearch.java
package aima.core.search.uninformed;
import java.util.Collections;
import java.util.List;
import aima.core.agent.Action;
import aima.core.search.framework.Metrics;
import aima.core.search.framework.NodeExpander;
import aima.core.search.framework.Problem;
import aima.core.search.framework.Search;
/**
* Artificial Intelligence A Modern Approach (3rd Edition): Figure 3.18, page
* 89.<br>
* <br>
*
* <pre>
* function ITERATIVE-DEEPENING-SEARCH(problem) returns a solution, or failure
* for depth = 0 to infinity do
* result <- DEPTH-LIMITED-SEARCH(problem, depth)
* if result != cutoff then return result
* </pre>
*
* Figure 3.18 The iterative deepening search algorithm, which repeatedly
* applies depth-limited search with increasing limits. It terminates when a
* solution is found or if the depth- limited search returns failure, meaning
* that no solution exists.
*
* @author Ravi Mohan
* @author Ciaran O'Reilly
*/
public class IterativeDeepeningSearch extends NodeExpander implements Search {
public static final String PATH_COST = "pathCost";
// Not infinity, but will do, :-)
private final int infinity = Integer.MAX_VALUE;
private final Metrics iterationMetrics;
public IterativeDeepeningSearch() {
iterationMetrics = new Metrics();
iterationMetrics.set(METRIC_NODES_EXPANDED, 0);
iterationMetrics.set(PATH_COST, 0);
}
// function ITERATIVE-DEEPENING-SEARCH(problem) returns a solution, or
// failure
public List<Action> search(Problem p) throws Exception {
iterationMetrics.set(METRIC_NODES_EXPANDED, 0);
iterationMetrics.set(PATH_COST, 0);
// for depth = 0 to infinity do
for (int i = 0; i <= infinity; i++) {
// result <- DEPTH-LIMITED-SEARCH(problem, depth)
DepthLimitedSearch dls = new DepthLimitedSearch(i);
List<Action> result = dls.search(p);
iterationMetrics.set(METRIC_NODES_EXPANDED,
iterationMetrics.getInt(METRIC_NODES_EXPANDED)
+ dls.getMetrics().getInt(METRIC_NODES_EXPANDED));
// if result != cutoff then return result
if (!dls.isCutOff(result)) {
iterationMetrics.set(PATH_COST, dls.getPathCost());
return result;
}
}
return failure();
}
@Override
public Metrics getMetrics() {
return iterationMetrics;
}
//
// PRIVATE METHODS
//
private List<Action> failure() {
return Collections.emptyList();
}
}
thnx! 이진 트리를 가져올 배열을 정의 할 수 있습니다. 하지만이 알고리즘을 통해 배열을 통해 원하는 노드를 검색하고 경로를 인쇄하려면 어떻게해야합니까? – user998596
주요 검색 기능 (검색 (문제 p))을 문제 (p)에 적용하면 해결책이 사용자에게 반환됩니다. 목록 결과 –
죄송합니다. 나는 이것에 처음이에요. 너는 바꿀 수 있니? – user998596