ノードとグラフの非常に基本的な知識があると言って始めましょう。
私の目標は、配列として格納されている迷路のソルバーを作成することです。私は解決するためのアルゴリズムを実装する方法を正確に知っています (私は実際にそれらのいくつかを実装しています) が、私の問題は、ソルバーが各空のセルで使用するノードを実装する方法について非常に混乱していることです。
配列の例を次に示します。
char maze[5][9] =
"#########",
"# # #",
"# ## ## #",
"# # #",
"#########"
私のソルバーは左上から始まり、ソリューション (出口) は右下にあります。
ノードの仕組みとグラフの実装方法について読んだので、これを作成する必要があると思う方法は次のとおりです。
- 始点がノードになる
- 各ノードには、プロパティとして列と行番号があります
- 各ノードは、訪問された状態もプロパティとして持ちます
- 訪問した状態は
visited
、、、visited and leads to dead end
not visited
- ノードが訪問されるたびに、直接隣接する空のセルおよび訪問されていないすべてのセルが、訪問されたノードの子になります
- 訪問したすべてのノードは、solutionPath スタックの一番上に配置されます (マップ上で「*」としてマークされます)。
- 行き止まりになったすべてのノードがスタックから削除されます (マップ上で「~」としてマークされます)。
完成した迷路の例:
"#########",
"#*~#****#",
"#*##*##*#",
"#****~#*#",
"#########"
基本的に私の質問は、私の考え方でここで本当にばかげたことをしているのですか (私は本当にノードの経験が浅いため)、そうである場合は、その理由を説明していただけますか? また、可能であれば、他のウェブサイトを提供して、実際のアプリケーションでグラフの例を実装しているものを確認して、それをよりよく理解できるようにします。