ギフト包装法ギフト包装法(英: Gift wrapping algorithm)やJarvisの行進法(英: Jarvis's march)とは、計算幾何学における点の集合の凸包を求めるアルゴリズム。 2次元の場合2次元の場合、Jarvisの行進法とも呼ばれ、R. A. Jarvis が1973年に発表した[1]。計算量は O(nh) である。n は点の数、h は凸包の辺の数。n が小さかったり、h が n に比べて圧倒的に小さい場合は、他の凸包を求めるアルゴリズムと比較して計算量は良好。一般的な場合・最悪の場合は、他のアルゴリズムと比較して大きく劣る。 アルゴリズムここでは話を簡単にするため、どの3点も一直線上にないとする。一直線上にある場合は、最も遠い点を選ぶか、凸包の辺上の全ての点を選べば良い。また、実装を完璧にするには、点が2つ以下の場合も取り扱う必要がある。 凸包に必ず含まれていることが確実な点 から始める。この点は例えば一番左端の点を選べば良い。そして、 は全ての点が直線 の右側にあるように選べば良い。この点は を基点にした偏角を比較することで計算量 O(n) で求まる。そして、 となるまで、これを反復する。 この方法は3次元以上でも同様にできる。 擬似コード下記は2次元の場合の擬似コード。S は凸包を計算する点の配列。あらかじめ凸包の頂点に来ないことが確実な点は除去しておくと計算量が減る。L は可変長配列で、ここに凸包の頂点の座標が入る。A, B, C は点。|AB| は AB の距離。2次元の外積は で計算する。 A = S の内、最もy座標が小さい点の集合から、その中で最もx座標が小さい点 do { L に A を追加 B = S[0] for i = 1 to S の大きさ - 1 { C = S[i] if (B == A) { B = C } else { v = AB と AC の外積 if (v > 0 または (v == 0 かつ |AC| > |AB|)) { B = C } } } A = B } while (A != L[0]) 参照
|
Index:
pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve
Portal di Ensiklopedia Dunia