C# を使用して宣教師と人食い人種に関するプロジェクトを行っています。幅優先検索と深さ優先検索の 2 つの検索アルゴリズムを使用しました。幅優先検索を使用して、プログラムはルートからレベル 12 の結果を見つけます。しかし、深さ優先検索を使用すると、解決策が見つからず、コンピューターがハングします。グラフのサイクルに入ると思います。私の質問は、宣教師と人食い人種の問題を解決するために深さ優先検索を使用できないかということです。
幅優先探索のコードは
public State getSolutionStatesBFS(State StartState, State EndState)
{
State CurState = new State();
ArrayList visited = new ArrayList();
addStateToAgenda(StartState, true);
while (searchAgenda.Count > 0) {
CurState = (State)searchAgenda.Dequeue();
if (CurState.Equals(EndState)) {
break;
} else {
if (!isVisited(CurState, visited))
{
generateSucessors(CurState, true);
visited.Add(CurState);
}
}
}
return CurState;
}
深さ優先検索のコードは次のとおりです。
public State getSolutionStatesDFS(State StartState, State EndState)
{
State CurState = new State();
ArrayList visited = new ArrayList();
addStateToAgenda(StartState, false);
while (searchAgendaS.Count > 0)
{
CurState = (State)searchAgendaS.Pop();
if (CurState.Equals(EndState))
{
break;
}
else
{
if(!isVisited(CurState,visited))
{
generateSucessors(CurState, false);
}
}
}
return CurState;
}