隣接行列を使ったグラフ探索のプログラムを作りたいのですが。。
手も足もでません。どなたか助けていただけないでしょうか??
まずstate.txt
1
2 3
0
といったフォーマットに従った状態空間が記述された
テキストファイルを読み込んで、隣接行列を動的に作成し、
さらにその状態空間をfwrite()を用いてバイナリ形式のファイルにする。
実行時のコマンドラインは次の書式に従う。
> ./MakeGraph テキストファイル(読み込み元) 状態空間(書き込み元) 状態数 [Enter]
もうひとつは、上で作成した状態空間ファイル(バイナリ形式)をmalloc(),fread()を用いて
メモリ上に復元し、経路探索を行う。
ただし、オプション指定で縦型探索と横型探索を切り替えられるようにすること。
実行時のコマンドラインは次の書式に従う。
> ./Search [-bd] 状態空間ファイル 状態数 開始状態 終了状態 [Enter]
ちなみに、
使用例
> ./MakeGraph state.txt state.bin 4 [Enter]
> ./Search -d state.bin 4 1 0 [Enter]
> ./Search -b state.bin 4 3 3 [Enter]
> ./Search -bd state.bin 4 2 0 [Enter]
結果例
1-0 : d : 0 <- 3 <- 1
3-3 : b : 3 <- 1 <- 0 <- 3
2-0 : b : Not Found...
2-0 : d : Not Found...
これらを作るうえでのヒントのようなものもあるのですが、さっぱりで。。
状態空間をファイルから取り込むため、隣接行列で表現した状態空間のサイズは可変、
(たとえば、状態数5ならば、25個)である。したがって、メモリは動的に確保する必要がある。
また探索時に容易に扱えるようにするため、隣接行列は2次元配列であることが望ましい。
しかし、2次元の動的確保は難易度が高いので、1次元配列の動的確保を応用することで考える。
1次元配列を状態数2個確保し、2点の座標を指定することで、要求する要素へ
アクセスできるマクロCoordinates(x, y, size)を用意する。
このマクロを利用すれば、1次元配列で確保したデータを2次元として扱うことができる。
******************************************
MakeGraph.cとSearch.cは次にあります。
ここにはのせきれなかったので。。
お手数おかけします。
http://mugen.cc.osaka-kyoiku.ac.jp/pg/
あとstate.txt のフォーマットは次のようになっています。
これはデータ構造などででてくる有向グラフを隣接行列で示した場合、
スタート地点の状態0から状態1に(0→1)
状態1から状態2と、ゴールの状態3に(1→2、1→3)
ゴールの状態3からスタート地点の状態0に(3→0)
となっていた場合に、状態0~3までのリンク先をあらわしたものです。
単に、机上において、隣接行列で表現すると
0 1 2 3
0 0 1 0 0
1 0 0 1 1
2 0 0 0 0
3 1 0 0 0
となります。(線がはいっていないのでややこしいかもしれませんが。。)
これと同じ意味で、
1 (状態0のリンク先で、1の直後に¥n)
2 3 (状態1のリンク先で、2と3の間に空白、さらに3の後ろに¥n)
(状態2のリンク先はなにもないので、まっしろ)
0 (状態3のリンク先)
となっています。こういう説明で伝わっているかわかりませんが、
よろしくおねがいします!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- 物理学 統計力学における平衡状態の定義について 4 2022/12/27 01:47
- 宇宙科学・天文学・天気 銀河のハビタブルゾーンを確率的セルオートマトンという数値的にシミュレーションした結果、「群島」の様な 2 2023/06/06 23:10
- ニコニコ動画 【Premiere Pro】をお使いの方 カット作業を他動画に反映することはできますか? 1 2022/05/18 16:27
- その他(Microsoft Office) excel テーブル 4 2023/03/18 16:11
- Excel(エクセル) エクセルでフィルタ後、考えている場所に値コピーができない。 1 2022/05/02 21:01
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Windows 10 Windowsのアイコンの整列が変になりました 2 2022/06/24 00:02
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バイト型のデータを16進表記で...
-
Cで2次元配列にCSVファイルを...
-
テキストファイルを後ろから読...
-
VBSにてCSV読み込みし比較
-
VBAでテキストファイルの改行を...
-
C言語でのファイル読み込み
-
掲示板の編集機能
-
DXFファイルをVBで取り込み、図...
-
fread関数の使い方がわかりませ...
-
[VBS] 16進数でバイナリファイ...
-
バイナリデータの書き換え
-
数値から画像を作りたい
-
ファイルのアクセス回数について
-
エクセルのプロパティーでセキ...
-
バッチファイル 二つ上のディ...
-
エクセルで複数のコメントのサ...
-
現在のブックを閉じないで、マ...
-
エクセルvbaでdocuworksprinter...
-
バッチファイル XCOPYで上書き...
-
A列に記載されているフォルダ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バイト型のデータを16進表記で...
-
VBAでテキストファイルの改行を...
-
テキストファイルを後ろから読...
-
VBAでテキストファイルを複数開...
-
バイナリファイルでOutOfMemory...
-
DXFファイルをVBで取り込み、図...
-
RGBのバイナリデータをCImageに...
-
CFileの使い方を教えてください
-
datagridviewでドラッグ操作が...
-
Excel VBAで画像解析
-
バイナリの読み込みから出力まで
-
bmpファイルの明暗の数値化の方法
-
fread関数の使い方がわかりませ...
-
SDKにて。
-
日本語を配列に収め、そして表...
-
バイナリ出力
-
VBSにてCSV読み込みし比較
-
ファイル内の(&H0A)を(&H0D0A)...
-
Cで2次元配列にCSVファイルを...
-
日本語混じりのファイルをラン...
おすすめ情報