ページ 11

2次元凸包の分割統治法での求め方について

Posted: 2012年1月05日(木) 02:12
by ペキロゲン
学校の課題にて分割統治法を用いて凸包を求めよという問題を出されました。ちなみに用いる言語はC言語です。
凸包の求め方自体は分かったのですが、肝心の分割して統合していくまでの過程が分からず悩んでいます。
例えば既にソート済みの座標配列pがあったとして、マージソートの時と同様に再帰を用いてpを二分割していき、
そして細かく分割された座標配列ごとに凸包での座標を求め、そして統合していくかと思います。
問題はその統合の仕方で、マージソートの時はもとある配列の順番を入れ替えながら統合していきましたが、
今回は凸包に用いなかった要素はどんどん削除していき、必要な要素だけを集め統合していくかと思います。
しかしその統合の仕方が見当がつかず、どこでどのように凸包に必要な要素だけを含む配列に格納していけば分かりません。
問題が抽象的で分かりにくいかと思いますが、どなたか知恵をお貸しいただけたら幸いです。

Re: 2次元凸包の分割統治法での求め方について

Posted: 2012年1月05日(木) 13:00
by non
私は作ったことがないので、良いアドバイスできませんが、
どのようなデータ構造に凸包線上の点を持たせればよいかという点につきますね。
先生からは全くのノーヒントなのでしょうか?
もし、ノーヒントで私に作れと言うのでしたら、循環リスト構造にしますね。
両方向がいいかなぁ。

Re: 2次元凸包の分割統治法での求め方について

Posted: 2012年1月05日(木) 23:51
by ペキロゲン
回答ありがとうございます!
確かに途中で要素の削除がある場合配列よりリストの方が楽ですね
C言語でもC++みたいにlistが使い安かったら便利なのですが・・・