- 締切済み
2次元座標上の対称性を排除した点の組合せ
2次元座標上の対称性を排除した点の組合せ 質問です. グリッドの引かれた2次元座標上において,格子上の任意のn点の座標の組合せを求め,プログラムに入力することを検討しています. 現在は全組合せをプログラムに入力しているのですが,空間上に, ・x軸,y軸に関する線対称性 ・原点に関する点対称性 があるので,計算量削減のために,2次元座標上において,これらの対称性を排除した任意のn点の組合せを求めるアルゴリズムを作成したいのですが,何か定石のような考え方はないでしょうか. とりあえず,現在検討しているのが, 1. 2次元座標空間を軸上,第1~4象限と5つのエリアに分ける 2. 軸上にn点を取る場合,軸上に(n-1)点をとり,第1象限から1点をとる場合...と,思いつく全てのパターンについて組合せを考える といったものなのですが,もっとスマートな方法があるはずでは,と思い,質問させて頂きました. 以上,宜しくお願い致します.
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- osu_neko09
- ベストアンサー率48% (56/115)
n点の組合せ全部と、それと対称な3つの組合せを求めることができるのなら、以下のアルゴリズムはどうでしょうか。 1.リストを用意し、リストを空にする 2.n点の組合せ全部に対し、以下の処理を行なう 2-1.組み合わせがリストにあれば、無視する 2-2.組み合わせがリストになければ、以下の処理を行なう 2-2-1.当該組み合わせをプログラムに入力する 2-2-2.当該組み合わせと、それと対称な3つの組合せを、リストに入れる これだと、「思いつく全てのパターン」に漏れがないか気にする必要がなくなります。 また、チェックする点が、たとえば左上に固まってしまうのを避けたいなら、こんな方法もあります。 1.リストを用意し、リストを空にする 2.n点の組合せ全部を、リストにいれる 3.リストが空になりまで、以下の処理を繰り返す 3-1.リストに入っている組み合わせをランダムに一つ取り出し、プログラムに入力する 3-2.当該組み合わせと、それと対称な3つの組合せを、リストから除外する
- nag0720
- ベストアンサー率58% (1093/1860)
対称性を排除を考慮しない場合のプログラムはできているのでしょうか? それができているなら、対象性を排除する方法として、 n点の組合せと、それと対称な3つの組合せを数値化して、n点の組合せの数値が最小でなかったら排除するという方法でどうですか。