授業で示した最長経路問題を解くプログラムについて、与えられたグラフ中に最長経路でのコストと、それを実現する経路(訪れるべき頂点の順)を示すようにプログラムを改良せよ。
訪れるべき頂点の順は、それが分かる形であれば出力形式はどのような形でもよい。
提出するプログラムについては、与えるグラフはSAMPLE_G120だけでよい。
・出力結果が読みやすくなるように、テキスト出力部分を工夫してあるほうがポイントが高いです。
グラフ名 | SAMPLE_G120 | SAMPLE_G130 | |||
隣接行列 | #define N 8 int edge[N][N] = { {0,4,0,0,2,0,0,0}, {0,0,0,0,0,0,1,0}, {0,0,0,3,0,0,3,0}, {0,0,0,0,0,0,0,5}, {0,0,0,0,0,2,0,0}, {0,0,0,0,0,0,2,0}, {0,0,0,0,0,0,0,1}, {0,0,0,0,0,0,0,0} }; | #define N 8 int edge[N][N] = { {0,4,0,0,2,0,0,0}, {0,0,0,0,0,0,1,0}, {0,0,0,3,0,0,3,0}, {0,0,0,0,0,0,0,5}, {0,0,0,0,0,2,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,4,0,1}, {0,0,0,0,0,0,0,0} }; |
【状況】 | 【指示】 |
誰かに教えてもらった場合: | その学生(氏名と9桁の学籍番号)をプログラム先頭に記し、さらにプログラム中コメントを使って、教えてもらったところの解説を数行以上書き込むこと。
(教えてもらった部分の解説コメントのないプログラムは全く評価しません。「全体です」のようなコメントの場合も同じです。) |
誰かに教えてあげた場合: | その学生(氏名・学籍番号)をプログラム先頭に記すこと。 |
お互いに相談した場合: | お互いの氏名・学籍番号を、教えてもらった・教えてあげたの例に準拠して提出してください。 |
授業で示した最長経路問題を解くアルゴリズムとプログラムは、以下のようなグラフが与えられた時、解を与えることが可能か。はい、いいえを理由とともに答えよ。
(1) グラフ中に閉路が1つ以上存在する場合
(2) グラフ中のエッジで、コスト0のものが1つ以上存在する場合
(3) グラフ中のエッジで、コスト負のものが1つ以上存在する場合
(4) グラフ中のエッジで、閉路がありかつその閉路中にコスト負のエッジが含まれている場合
課題2Aで用いたプログラムについて、グラフ中にコスト0のエッジが含まれていても最長経路を示せるよう改良せよ。
また同時に、同一コストをもつ最長経路が2つ以上見つかる場合は、頂点数の多い経路を答えるようにせよ。
・一般性を失わない限り、隣接行列の表現形式に変更を加えても良い。
・出力結果が読みやすくなるように、テキスト出力部分を工夫してあるほうがポイントが高いであろう。
評価用サンプルとして、SAMPLE_G132とSAMPLE_G133を示す。