同じ色の点を楕円で囲み、色違いの同じ点で囲まれている線と重ならないように囲むプログラムを作りたいのですが、どのようにしていいかわかりません。何かアドバイスをいただけたらと思います。お願いします。
どちらの意味の「どのようにしたらいいのかわかりません」ですか?
・VBで描画や点の位置や色を調べる方法
・自分で色鉛筆でその様な楕円を書くのにどのようにしたらいいのか説明出来ない
前者については他の詳しい方にお任せします。
------------------------------------------
後者の場合は、戦略をよく練らなければなりません。
まず、囲み方には複数個考えられますが、その中でどの囲み方を選択するべきかを決める必要があります。
囲み方の選択基準が決まったら、囲み方を採点して数値で表現することを考えて下さい。
採点基準はこんな感じですね。
・楕円が色違いの同じ点で囲まれている線と重なったら 0 点
・重ならない場合はより最適に近いほど点数が高くなる
後は、考えられる囲み方の中で最も得点の高い物を選べばOKです。
--------------------------------
と書きましたが、実は最も得点の高い物を選ぶのがまた大変な問題です。
点の数が増えると囲み方のパターン数が爆発的に増大するので、総当たりで試していると現実的な時間では解が得られないということです。
このような総当たりでは計算時間が非現実的となってしまう場合は、
「出来る範囲で最も最適らしい解を得る」という戦略を採用する必要があります。
この方法の1つとして GA(遺伝的アルゴリズム)などが知られています。
「最適」「アルゴリズム」「探索」あたりをキーワードにして検索してみて下さい。
ツイート | ![]() |