授業で示したFloydのアルゴリズムに従って、全ての頂点対についての最短経路値とその経路を表示するプログラムを、C言語で書いて実行せよ。
実行例となる処理対象のグラフG50dash0は隣接行列で下記のように与える。
Graph G6-A | Graph G6-B |
|
|
【注意】 | |
誰かに教えてもらった場合: | その学生(氏名と9桁の学籍番号)をプログラム先頭に記し、さらにプログラム中コメントを使って、教えてもらったところの解説を数行以上書き込むこと。(教えてもらった部分の解説コメントのないプログラムは全く評価しません。「全体です」のようなコメントの場合も同じです。) |
誰かに教えてあげた場合: | その学生(氏名・学籍番号)をプログラム先頭に記すこと。 |
お互いに相談した場合: | 教えてもらった・教えてあげたの例に準拠して提出してください。 |
課題3aで提出したfloydのアルゴリズムを実行するプログラムにおいて、空間計算量と時間計算量をビッグオーによるオーダー表現で示せ。その理由も説明せよ。 必要ならば課題3aで提出した最長経路問題を解くプログラムを適宜引用すること。
※課題3cが間違って2cのままでした(5/27a版)。5/28a版以降は訂正済です。
安定結婚問題を解くための授業で紹介した「求婚アルゴリズム」について、男性数をNとしたときの時間計算量をビッグオーによるオーダー表現で示せ。その理由も説明せよ。また、時間計算量が最悪になるケースを説明せよ。
課題3aのプログラムにおいて、頂点に頂点名(文字列)を関連付け、最短経路の表示時に頂点番号ではなく頂点名を表示するようにせよ。
必要な文字列情報は配列の形で格納せよ。
発展課題においては、経路は必ず始点から終点の順に表示すること。
以下は例である。この通りに行う必要はない。隣接行列も独自に与えてよい。
Graph G6-A / 名前 | |
0 | Tokyo |
1 | Shinjuku |
2 | Tsukuba |
3 | Yokohama |
4 | Utsunomiya |
5 | Ohmiya |