ExcelのVBAでプログラムを作っているのですが、ある問題で
つまづいてしまいました。
問題は、30個のデータ(#1~#30とします)を円順列で
並べます。 (#1=10とか#18=24などの数値が入ります)
その場合の組み合わせは29!通りありますよね
そして、この組み合わせそれぞれである計算をさせます。
(ベクトル計算のようなものです)
その答えのもっとも最適な結果(今回の場合最小)が出る
組み合わせを見つけ出したいのです。
最適結果を導き出すアルゴリズムをご指導下さいお願いします。
No.2ベストアンサー
- 回答日時:
データは円周上に等間隔で配置されるということでいいんですね?部分問題に分割できるなら分枝限定法や動的計画法の適用が考えられるんですが、どうも私にはうまい分割方法がわかりません。
むしろ、重心を中心になるべく近づけるという問題は、貪欲法でもうまくいきそうな気がします。この場合の貪欲法は、
1. まず適当にならべる。
2. すべてのデータのペアについて、それを交換したらどれだけ重心のずれが減るか求める。
3. どのペアを交換しても減らなければ終了。そうでなければ最もずれの減るペアを交換。
4. 2にもどる。
です。
もっとも、この方法で常に真の最適解が得られることを保証するには、ペアの交換では改善できなくて、3個以上のローテートで改善できるような例が存在しないことを証明しないといけませんが、私には荷が重いので他の方に譲ります。このカテゴリではなく数学あたりのカテゴリで、それなりのタイトルと定式化をすれば、回答があるかもしれません。
ありがとうございました。
回答していただいた内容から非常に
難しいことがよくわかりました
本人もっと簡単に考えていました…(^^ゞ
ご指摘いただいたように、ほかのカテゴリで
質問してみます。
No.1
- 回答日時:
29!通りの組み合わせのうち、最適なものをみつけたいということですね?
どんな計算をして最適かどうかを決定するかがわかりませんが、一般には効率のよい方法はありません。最悪の場合、しらみつぶしということになり、人類が存在するうちに計算が終わらないでしょうね。
その最適を判断する計算の内容によっては、効率のよい方法や近似的な方法があるかもしれません。計算内容や近似解の可否を補足してもらえれば、なんらかのアドバイスもできるかもしれませんが。
この回答への補足
そうですね、しらみつぶしに探すとなると非常に大変です。
計算する内容は、たとえば、それぞれのデータが重さだったとします
それを円形に並べた時に、それぞれの重さのバラつきによって重心が
円の中心からずれますよね、このずれが一番小さいものはどの組み合わせ
なのか見つけ出すというような問題です。
どうかよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
変化させるセルが変化しない
-
排他的論理和 BCC(水平パリテ...
-
バッチファイルでウインドウを...
-
Visual C++でdebugとreleaseで...
-
モジュラス103の計算とは何でし...
-
ExcelのマクロVBA動作を軽くす...
-
VBAで関数をつくる
-
CとFORTRANの計算速度はどちら...
-
VBAでの勤務時間計算
-
PHPとJavaでSHA256の結果を同じ...
-
傾いた四角形内の範囲の条件式
-
エクセルで特定のセルのみを任...
-
モジュロ
-
VBでReplace
-
継承元と継承先での変数
-
計算量の少ないn乗根の求め方
-
CRC8を教えてください
おすすめ情報