å®çŸ©ãèšãããã«ãããéåã®
åžå

æå°ã®åžéåã§ã

å€ããå«ã

ã ãã¢ããšã«ç°ãªãç¹ã®æééåã®åžå
ã¯å€é¢äœã§ãã
Quickhullã¢ã«ãŽãªãºã ã®1次å
ã®ã±ãŒã¹ãå®è£
ããã«ã¯ã颿°
std :: minmax_elementãé©ããŠããŸãã ãããäžã§ã¯ããã©ããã±ãŒã¹ã®Quickhullã¢ã«ãŽãªãºã ã®å€ãã®å®è£
ãèŠã€ããããšãã§ããŸãã ãã ããä»»æã®ãã£ã¡ã³ã·ã§ã³ã®å Žåã
qhull.orgããã®1ã€ã®ãããŒãŠã§ã€ãå®è£
ã®ã¿ãããã«èŠã€ãããŸãã
çšèªã®æšªã®æ¬åŒ§å
ã«ãè±èªãžã®ç¿»èš³ã瀺ããŸãïŒTuÒboã®ã¹ã¿ã€ã«ã§ããã¿ãŸããïŒã ããã¯ãçšèªã«ç²ŸéããŠãããããªã³ã¯ã§è±èªã®ããã¹ããèªãã ãããœãŒã¹ã³ãŒããæ±ãããšã決ããããã人ã«åœ¹ç«ã¡ãŸãã
äžèšã®ãæšæºçãªãå®è£
ã¯Cã§èšè¿°ããïŒC ++ãã€ã³ããŒããããŸãïŒãé·ãéïŒGNU Octaveããã³MATLABããã±ãŒãžã®äžéšãšããŠïŒåºã䜿çšãããŠãããããååã«ãã¹ããããŠããŸãã ãã ãã1ã€ã®Quickhullã¢ã«ãŽãªãºã ã®ã¿ã«é¢é£ããã³ãŒããåé¢ããããšã«ããå Žåãåé¡ãçºçããŸãã æãåçŽãªã¢ããªã±ãŒã·ã§ã³ã®å Žåããã£ãšã³ã³ãã¯ããªãã®ã§ã§ããããã«ããããšæããŸãã å°ã詊ããŠãããå®è£
ãäœæããŸããïŒ
https://github.com/tomilov/quickhull ïŒïŒããã¯äŸåé¢ä¿ã®ãªãå¯äžã®ã¯ã©ã¹ã§ãã åèšçŽ750è¡ã
幟äœåŠçãªæŠå¿µã
倿¬¡å
ãšã³ãã£ãã£ã®æäœãéå§ãããšãéåžžã®2次å
ããã³3次å
ã®ãªããžã§ã¯ããšã®é¡äŒŒæ§ãæå¹ã§ããããšãããããŸãã ç¥èãããããåçåããå¿
èŠããããŸããããã€ãã®æ°ããçšèªãå°å
¥ãããããã®é¢ä¿ãæç¢ºã«ããŸãã
ããã°ã©ããŒã«ãšã£ãŠã幟äœåŠçãªããžã§ã¯ãã¯äž»ã«ããŒã¿æ§é ã§ãã æåã«ã幟äœåŠçå®çŸ©ïŒå³å¯ã§ã¯ãããŸããïŒã瀺ããŸãã æ¬¡ã«ãããŒã¿ãæ ŒçŽãããããã广çã«æäœããã®ã«äŸ¿å©ãªå¯Ÿå¿ããããŒã¿æ§é ã®èª¬æãè¡ããŸãã
空éã®æ¬¡å
ã

ã
- ã·ã³ãã¬ãã¯ã¹ïŒè±èªã·ã³ãã¬ãã¯ã¹ïŒãèšå®ãããŠãã
ã¢ãã£ã³ç¬ç«ç¹ã èŠªåæ§ã®ç¬ç«æ§ã«ã€ããŠããã«èª¬æããŸãã ãããã®ãã€ã³ãã¯ãé ç¹ïŒEng.unitsé ç¹ãplãé ç¹ïŒãšåŒã°ããŸãã - å€é¢äœïŒå€é¢äœãå€é¢äœãå€é¢äœãè±èªã®å€é¢äœãå€é¢äœïŒã¯æå°å€ãšããŠå®çŸ©ãããŸã
ã¢ãã£ã³ç¬ç«ç¹ïŒé ç¹ïŒ; ã·ã³ãã¬ãã¯ã¹ïŒè±èªã®åäœããªããŒãïŒ-æãåçŽãªã±ãŒã¹
次å
ã®ããã£ãããå°ãªãé ç¹ãæã€å€é¢äœã¯å¿
ç¶çã«ãŒãã«ãªããŸã
次å
ã®ããªã¥ãŒã ã - å¹³è¡å蟺圢ïŒè±èªã®å¹³è¡å蟺圢ïŒ-å¹³ããªå¹³è¡å蟺圢ãšå¹³è¡å
é¢äœã®äžè¬åã ã·ã³ãã¬ãã¯ã¹ã®å Žåãæ§ç¯ã§ããŸã
察å¿ããå¹³è¡å蟺圢ïŒãããã¯ãã¹ãŠåãäœç©ãæã¡ãŸã
ã·ã³ãã¬ãã¯ã¹ããªã¥ãŒã ïŒãå¹³è¡å蟺圢ã®ãžã§ãã¬ãŒã¿ãŒïŒãã¯ãã«ïŒãšããŠã1ã€ã®åºå®é ç¹ããæ®ãã®ãã¯ãã«ã«åºçŸãããã¯ãã«ãåã
ãããã¹ã - åžå€é¢äœã®æŠå¿µïŒEngãConvex polytopeãconvex polyhedronïŒããã§ã¯èª¬æããŸããããããã«ã€ããŠã®çŽèгçãªèãã¯ããŸããããŸãã å€é¢äœã®ç¹æ®ãªã±ãŒã¹ãšããŠã®ã·ã³ãã¬ãã¯ã¹ã¯ãåžžã«åžã§ãã
- é£è¡æ©ã®æŠå¿µã説æããŸããã å²ãŸããŠããã¹ããŒã¹ãããæ¬¡å
ã1ã€å°ãªãããšã«æ°ã¥ãã§ãããã
- åäœãã¡ã»ãããå®çŸ©ãããŠããŸã
ã¢ãã£ã³ç¬ç«ç¹ïŒé ç¹ïŒã ããã«ãåäœãªããžã§ã¯ãïŒåžå€é¢äœãé€ãïŒã«ã€ããŠã®ã¿èª¬æããããããåäœãã®å®çŸ©ã¯çç¥ããŸãã ç¶ç·šã®å€ãã®ã¹ããŒãã¡ã³ãã¯ãåçŽãªå¹ŸäœåŠçãªããžã§ã¯ãã®éçž®éïŒãã¹ãŠã®ãã€ã³ãããã¢ã¯ã€ãºã§ç°ãªãïŒã®å Žåã«ã®ã¿æå¹ã§ãã - ãšããžïŒè±èªã®å°Ÿæ ¹ïŒã¯2ã€ã®é¢ã®äº€å·®ãšããŠå®çŸ©ããã
ãããã 2ã€ã®é¢ã«å
±éã®ãšããžã¯1ã€ãããããŸããã ãããã£ãŠã1ã€ã®é¡ã«
rib骚ãéããŠé£äººã - ããŒã¯ãå®çŸ©ãããŠããŸã
ãããã ããã§ã¯ãããŒã¯ãšé ç¹ã®æŠå¿µãäžèŽããªãããã3次å
空éãšã®çŽæçãªé¡äŒŒæ§ãæµ®ãã³ãŸããããã®ãããªãªããžã§ã¯ãã§ã¯æäœããŸããã é¡ã¯ãããŒã¯ãä»ããŠä»»æã®æ°ã®é£æ¥ããé¡ãæã€ããšãã§ããŸãããããã£ãŠãã¡ã¢ãªãšå€æäžã®ããŒã¿æ§é ã®é¢é£æ§ãç¶æããã³ã¹ãã®äž¡æ¹ã§ãããŒã¯ãä»ããé¡ã®é£æ¥ã°ã©ããä¿åããã®ã¯ã³ã¹ããããããšçµè«ä»ããããšãã§ããŸãã
å€é¢äœã®è¡šé¢ããã®å¢çããã®å¢çã®å¢çãªã© è±èªã§ã¯é¡ãšåŒã°ããŸãã è¯ããªãœãŒã¹ãžã®
ãªã³ã¯ãæäŸããŸããããã§ã¯ã

次å
空éãå¯èŠãŸãã¯èŠ³æž¬å¯èœãªãªããžã§ã¯ãã¯

次å
ãªããžã§ã¯ããã€ãŸãå¢ç

次å
ãªããžã§ã¯ãã è±èªã®ãã¡ã»ããã¯æ£ç¢ºã«èгå¯ãããé¡ã§ãã çŽç·ã¯åžžã«1次å
ã®ãšã³ãã£ãã£ã§ãã ãã®ã°ã©ããŒã·ã§ã³ã®ãã€ã³ãïŒé ç¹ïŒã¯ãŒã次å
ãšèŠãªãããšãã§ããŸãã
ããã€ãã®ã»ãããæ±ã

ãã€ã³ããæã
ã¯å¯Ÿå¿ããã»ããã®æ€èšã«é²ãããšãã§ããŸã

ä»ã®ãã¹ãŠã®ãã€ã³ããã1ã€ã®ãã€ã³ããæžç®ããããšã«ããããã¯ãã«ãäœæããŸãã ãããã£ãŠããã®ç¹ãåç¹ïŒEngãOriginïŒãšããŠå²ãåœãŠãŸãã ãã¹ãŠã®ãã€ã³ããåãå¹³é¢ã«ããå Žåãå¹³é¢ã¯åç¹ãééãå§ããããã«ã·ãããããŸãã ã¢ãã£ããã£ç¬ç«

ç·åœ¢ç¬ç«æ§ãå®è¡ããããšãã«ãã€ã³ããå®è¡ãããŸã

察å¿ãããã¯ãã«ã®ã ãã¯ãã«ã®ç·åœ¢ç¬ç«æ§ã®å®çŸ©ã¯ãããç¥ã£ãŠããããšã§ãããã ã ãã

-次å
空éã¯ãã以äžéžæã§ããªã

ãããã¯ãã¹ãŠã¢ãã£ã³çã«ç¬ç«ããŠããŸãã ããã説æããŸãããã3次å
空éã§ã¯ãäžè§åœ¢ïŒ3次å
ã·ã³ãã¬ãã¯ã¹ã®é¢-åé¢äœïŒã¯3ã€ã®ç¹ïŒãã¡ããã1ã€ã®çŽç·äžã«ãªãïŒã«ãã£ãŠå®çŸ©ãããŸãã åäžã®å¹³é¢ããããã®3ç¹ãééããŸãã äžè§åœ¢ã®3ã€ã®é ç¹ã®ã»ããã«è¿œå ããããã®å¹³é¢äžã®ä»»æã®ãã€ã³ãã¯ã3ã€ã®ã¢ãã£ã³ç¬ç«ãã€ã³ãã®å¯èœæ§ã4ã€ã®ã¢ãã£ã³äŸåã»ããã«å€æããŸãã ä»ã®æ¬¡å
ã«ã€ããŠãåæ§ã§ãã
ãšãããããã€ããŒããªã¥ãŒã ïŒè±èªã®ãã€ããŒããªã¥ãŒã ïŒã®æŠå¿µãå°å
¥ããå¿
èŠããããŸãã
ãã€ããŒããªã¥ãŒã ã倿°ã®
ã·ã³ãã¬ãã¯ã¹ ã
é¢ ã
ãšããž ã
ããŒã¯ãªã©ããèæ
®ããããªããžã§ã¯ãã 察å¿ãããµãã¹ããŒã¹ã§å¶éãããŸãã ãã®ãããªãªããžã§ã¯ããå ãããã¹ããŒã¹ã®éãã¯ã枬å®/決å®/å®çŸ©ã§ããŸãã 1次å
ã®çŽæ¥æž¬å®å€ã¯é·ããšåŒã°ããŸãã 2次å
å¹³é¢ã®å Žåãã¡ãžã£ãŒã¯é¢ç©ãšåŒã°ããŸãã äžæ¬¡å
ã®ããã£-ããªã¥ãŒã ã ãã®æŠå¿µã¯ãD次å
ããªã¥ãŒã ãŸãã¯Dãã€ããŒããªã¥ãŒã ãšåŒã¶ããšã§äžè¬åã§ããŸãã ãã¢ããšã«ç°ãªãç¹ã§åœ¢æãããã·ã³ãã¬ãã¯ã¹ã®å Žå

ïŒãã€ã³ãããªã¹ãããé åºã¯éèŠã§ãïŒããã€ããŒããªã¥ãŒã ã¯
次ã®ããã«èšç®ã§ã
ãŸã ïŒ



ããã§ããã¯ãã«ã®åº§æšãç·ã§æžããŸããã åæ§ã®åŒãšæšè«ãåãã¯ãã«ã«äžããããšãã§ããŸãïŒã€ãŸãããã¹ãŠã®è¡åã転眮ããå Žåãããã¯çµæãšçµè«ã«åœ±é¿ããŸããïŒã
äžèšã®åŒã®è¡ååŒã®çŽæ°ã¯ãå¹³è¡å蟺圢ãåå²ã§ããã·ã³ãã¬ãã¯ã¹ïŒãã¹ãŠåãäœç©ïŒã®æ°ã§ãã

ãã¯ãã«ã«åºã¥ã

ã ãããã£ãŠãè¡ååŒèªäœã¯å¹³è¡å蟺圢ã®ãã€ããŒããªã¥ãŒã ã§ãã ãã®å£°æã®æ ¹æ ã«èå³ããã人ã®ããã«ãç§ã¯ã°ã©ã è¡åã®è¡ååŒãšãã®å¹ŸäœåŠçè§£éã«ã€ããŠèªãããšããå§ãããŸãã
ãäœç©ããªããžã§ã¯ãã®ãã®æž¬å®å€ã¯ãŒã以å€ã®å€ã«ãªããæ£ãšè² ã®äž¡æ¹ã«ãªãå¯èœæ§ãããããšã«æ³šæããŠãã ããã æ¬¡ã®èæ
®äºé
ããèšå·ã®æå³ãçè§£ããããšã¯é£ãããããŸãããã·ã³ãã¬ãã¯ã¹ã®2ã€ã®ãã€ã³ãã亀æãããšãè¡ååŒã®èšå·ã«å€åãçããŸãã ãã€ã³ãã®é åºã¯ãã·ã³ãã¬ãã¯ã¹ã®ãå·Šå³ã®åããã§ãã é£è¡æ©ã§ã¯ãæ³åããã®ã¯ç°¡åã§ããäžè§åœ¢ã®èŸºã

åæèšåãã«èšèŒ

è¡ååŒã¯æ£ã§ã

ããã§ãªããã°

-è²

ã åé¢äœã®å Žåã笊å·ã¯æåŸããèŠããšãã«æåã®3ç¹ããªã¹ããããé åºïŒæèšåããŸãã¯åæèšåãïŒã«äŸåããŸãã ãããã£ãŠãå°æ¥ã幟äœãªããžã§ã¯ããå®çŸ©ãããšãããã€ã³ãã®åæã®é åºãåºå®ããå¿
èŠãããããšãåãå
¥ããå¿
èŠããããŸãã
ã¢ã«ãŽãªãºã ã¯æ¹åä»ãããããã€ããŒããªã¥ãŒã ã®å€§ããã®ç¬Šå·ã«é¢ããæ
å ±ã®ã¿ã䜿çšãããããè¡ååŒã®åã®å åãçç¥ã§ããŸãã
å°ãªããšã2ã€ã®ã©ã€ã³ãç·åœ¢ã«äŸåããŠããå Žåãè¡ååŒã¯ãŒãã§ãïŒãã€ã³ãããã¢ããšã«ç°ãªããã€ãŸãã©ã€ã³ããŒãã§ã¯ãªãããšãæãåºããŠãã ããïŒã ã¢ãã£ã³äŸåç¹ãšãããã«å¯Ÿå¿ããç·åœ¢äŸåãã¯ãã«ã«é¢ããäžèšã®æšè«ã®å¯Ÿå¿ãç°¡åã«æ€èšŒã§ããŸãã
è¡ååŒã®çµ¶å¯Ÿå€ã¯ããã¯ãã«ã«æž¡ããšãã«æžç®ããæ£ç¢ºãªç¹ã®åœ±é¿ãåããã笊å·ã®ã¿ã«åœ±é¿ããŸãã æåŸã®ãã€ã³ãã¯åžžã«æåã®ãã€ã³ãããæžç®ããå¿
èŠããããŸããããããªããšãå°æ¥äœ¿çšãããåäžæ¹åã®é¡äŒŒãªããžã§ã¯ãã®å Žåãã¡ãžã£ãŒã®ç¬Šå·ã¯å¶æ°æ¬¡å
ãšå¥æ°æ¬¡å
ã§ç°ãªããŸãã
é¡ãªã©ã倧ãããã空éã«åã蟌ãŸãããªããžã§ã¯ãã®ã¡ãžã£ãŒãã©ããããïŒ äžèšãšåãæ¹æ³ã§ãããªãã¯ã¹ãäœæãããšãé·æ¹åœ¢ã«ãªããŸãã ãã®ãããªè¡åã®è¡ååŒã¯ååŸã§ããŸããã è¡ãã¯ãã«ã§æ§æãããåãè¡åã䜿çšããŠãåŒãäžè¬åã§ããããšãããããŸãïŒãã®äžè¬åã¯
Binet-CauchyåŒã«é¢é£ä»ããããŠããŸã ïŒã





ã¢ãã£ã³çã«ç¬ç«ãããã¢ããšã«ç°ãªãç¹ã®å Žåãè¡ååŒã®äžã®è¡åã¯åžžã«æ£å®æ£æ¹è¡åã§ããããã®ãããªè¡åã®è¡ååŒèªäœã¯åžžã«æ£ã®æ°ã§ãã ã¢ãã£ã³äŸåç¹ã®å Žåãè¡åã¯ç¹ç°ã§ãïŒã€ãŸããè¡ååŒã¯ãŒãã§ãïŒã 枬å®å€ãåžžã«éè² ã§ãããæ¹åã«é¢ããæ
å ±ããªãããšã¯æããã§ãã
äžæ¹ã§ã¯ãæ£æ¹è¡åã®ç©ã®è¡ååŒã¯è¡ååŒã®ç©ã«çããã仿¹ã§ã¯ã転眮ãããæ£æ¹è¡åã®è¡ååŒã¯å
ã®è¡ååŒãšäžèŽãããããæåŸã®åŒã¯

æ£æ¹åœ¢ã®æ ¹ãé€ãç¹ãããªãã¡ ãã®ã¢ãžã¥ãŒã«ã¯ã空éå
ã®ãã€ã³ãã®çžå¯Ÿçãªæ¹åã«é¢ããè¿œå æ
å ±ãååŸããããã«çç¥ã§ããŸãã
ã¢ã«ãŽãªãºã
ä»»æã®æ¬¡å
ã®å Žåã®Quickhullã¢ã«ãŽãªãºã èªäœã¯ã
BarberãC. Bradfordã«ãã£ãŠææ¡ãããŸãã
ã ãããã³ãããããPã; HuhdanpaaãHannuïŒ1996幎12æ1æ¥ïŒã ãåžå
ã®ã¯ã€ãã¯ãã«ã¢ã«ãŽãªãºã ãã æ°åŠãœãããŠã§ã¢äžã®ACMãã©ã³ã¶ã¯ã·ã§ã³22ïŒ4ïŒïŒ469â483 èè
ã®ãæšæºçãªãCå®è£
ã¯ããã§ã«èšåãããµã€ã
http://qhull.org/ã«ãããŸããããã¯ãC ++ã€ã³ã¿ãŒãã§ã€ã¹
https://gitorious.org/qhull/qhullãåãããªããžããªã§ãã å
ã®ãœãŒã¹ããã¢ã«ãŽãªãºã ãåŒçšããŸãã
d + 1ãã€ã³ãã®ã·ã³ãã¬ãã¯ã¹ãäœæããŸã
åãã¡ã»ããF
æªå²ãåœãŠã®åç¹p
pãFãè¶
ããå Žå
pãFã®å€éšã»ããã«å²ãåœãŠãŸã
空ã§ãªãå€éšã»ãããæã€åãã¡ã»ããFã«ã€ããŠ
ã»ããã®å€åŽã®Fã®æãé ãç¹pãéžæãã
å¯èŠã»ããVãFã«åæåããŸã
Vã®ãã¡ã»ããã®ãã¹ãŠã®æªèšªåã®ãã€ããŒ
pãNãè¶
ããå Žå
NãVã«è¿œå
å°å¹³ç·ã®å°Ÿæ ¹ã®éåHã¯Vã®å¢çã§ã
Hã®åãªããžR
RãšPããæ°ãããã¡ã»ãããäœæããŸã
æ°ãããã¡ã»ããããã®è¿é£ã«ãªã³ã¯ããŸã
æ°ãããã¡ã»ããããšã«F '
Vã®ãã¡ã»ããã®å€éšã»ããå
ã®åæªå²ãåœãŠç¹q
qãF 'ãã倧ããå Žå
qãF 'ã®å€éšã»ããã«å²ãåœãŠã
Vã®ãã¡ã»ãããåé€ããŸã
åžå
ã¯é¢ã®ãªã¹ãã§ãã
ã·ã³ãã¬ãã¯ã¹ã®éå§ã
ã芧ã®ãšããã
éå§ã·ã³ãã¬ãã¯ã¹ããéå§ããå¿
èŠããããŸãã ã©ãã§ãéžæã§ããŸã

ã¢ãã£ã³ç¬ç«ãããã€ã³ãã§ãããäœããã®å®äŸ¡ãªãã¥ãŒãªã¹ãã£ãã¯ã䜿çšããããšããå§ãããŸãã ãã®ã¹ãããã®äž»ãªèŠä»¶ã¯ãã·ã³ãã¬ãã¯ã¹ãå¯èœãªéããçãããªãããšããªãããã«ããããšã§ãã ããã¯ãæµ®åå°æ°ç¹æŒç®ã䜿çšãããå Žåã«éèŠã§ãã å
ã®å®è£
ã§ã¯ãæå€§ããã³æå°ã®åº§æšãæã€ãã€ã³ãã䜿çšãããŸãïŒæããã«ããããã¯åžå
ã®é ç¹ã®ã»ããã«ãå«ãŸããŸãïŒã éå§ã·ã³ãã¬ãã¯ã¹ããéå§ããŠãåŸç¶ã®åã¹ãããã§ããã倧ããªå€é¢äœãååŸããŸãããã®äžå€ã®ããããã£ã¯åžžã«ãã®åžæ§ã«ãªããŸãã
äžæçãªå€é¢äœãšåŒã³ãŸãã
ã·ã³ãã¬ãã¯ã¹ãéå§ããããã®é ç¹æ€çŽ¢ãã¥ãŒãªã¹ãã£ãã¯ãç§ã®çºèŠçææ³ã¯ããã€ã³ãã®é æ¬¡éžæã«åºã¥ããŠãããããæ¬¡ã®åãã€ã³ãã¯ä»¥åã®ãã¹ãŠã®ãã€ã³ãããå¯èœãªéãé¢ããŠããŸãã ãããã«ã-ããæå³ã§ããããããã«æç¢ºã«ããŸãã
2ã€ã®ãã€ã³ããªã¹ããç¶æãããŸãïŒãœãŒã¹ãªã¹ã

ïŒæåã¯ãã¢ã«ãŽãªãºã ã®å
¥åããã®ãã¹ãŠã®ãã€ã³ããå«ãŸããŠããŸãïŒããã³ã·ã³ãã¬ãã¯ã¹ã®ãã€ã³ãã®ãªã¹ã

ïŒæåã¯ç©ºã§ãïŒã ã»ããã«ãããš

ãããŠ

ããªãã¯å€ãã®ãã¯ãã«ã眮ãããšãã§ããŸã

ãããŠ

ã ãããè¡ãã«ã¯ããã®ã¢ã«ãŽãªãºã ã®ãã¹ãŠã®ã¹ãããã§ç²Ÿç¥çã«ä»»æã®ãã€ã³ããéžæããŸã

å€ãã®ãã¡

ïŒç©ºã§ã¯ãããŸããïŒãèŠããŠãããããããä»ã®ãã¹ãŠã®ç¹ãžã®ãã¯ãã«ãæç»ããŸã

ïŒåãåã£ã

å«ãŸããèŠçŽ ã¯1ã€å°ãªã

ïŒãããã¹ãŠã®ãã€ã³ããž

ïŒåãåã£ã

ïŒ ãŸããæåã®ïŒãŸãã¯ä»ã®ïŒãã€ã³ããååŸããŸã

ã«ç§»åããŸã

ã æ¬¡ã«ããããã¯ãã«ãæ¢ããŸã

æå€§ã®ã¢ãžã¥ãŒã«ã䜿çšããŠã察å¿ãããã€ã³ãã

ã§

ã ããã®æåã®ãã€ã³ã

ã«æ»ã

ïŒåœŒå¥³ã¯åºæºãªãã§éžã°ããïŒã 次ã®ããããã«ã€ããŠ

ãã€ã³ããæ¢ããŠãã

ãã
åºåºã® ããã¢ãã£ã³ç©ºéããå¯èœãªéãé ã

ããç§»åãã

ã§

ã ãããè¡ãã«ã¯ã察å¿ãããã€ã³ããæ¢ããŸã

ãã¯ãã«

ãã
çŽäº€è£å®äžã®
æåœ±ã¢ãžã¥ãŒã«

ãã¯ãã«éšå空é

æå€§ã ããã«

-ç·åœ¢ã·ã§ã«

ãã€ãŸã-ãã¯ãã«ç©ºé ãã¯ãã«

ïŒæ§ç¯ã«ããïŒç·åœ¢ã«ç¬ç«ããŠåŸãããå Žåã

ãã®ãã¯ãã«ç©ºéã®åºç€ã§ãã
ããã®è·é¢

åã«

ïŒ

ãã¯ãã«ã¯ãä»»æã®éšå空éããã³ãã®éšå空éã®çŽäº€è£æ°ãžã®å°åœ±ã®åèšã«çŽæ¥åè§£ããããããæ¬¡ã®ããã«ãªããŸãã
æ£èŠçŽäº€åºåºãæã€

ãã¯ãã«éšå空é

ããã®éšå空éã®çŽäº€è£æ°ãžã®æåœ±ã¢ãžã¥ãŒã«ãèšç®ã§ããŸãã

ãã¯ãã«åº§æš

ã»ããããã®ïŒåº§æšïŒåãã¯ãã«ã§æ§æãããïŒããšãã°Householderã¡ãœããã«ããïŒé·æ¹åœ¢è¡åã®QRåè§£ãå®è¡ããããšã§ååŸã§ããŸãã

ã ãã®çµæãçŽäº€ïŒé·æ¹åœ¢ïŒè¡åQïŒ

ïŒããã³äžäžè§RïŒæªäœ¿çšïŒã åQã¯ãã¯ãã«ã®åº§æšã§ã

ãã¯ãã«ç©ºéã®æ£èŠçŽäº€åºåºã圢æãã

ã
ã§ã¢ã«ãŽãªãºã ãå®äºããåŸ

äœçœ®ããŠããŸã

ãã€ã³ãã
次ã«ãé¡ã®ãããã
å€éšãã€ã³ãã®ãªã¹ã ïŒè±èªã®å€éšã»ããïŒã«æ®ãã®ãã€ã³ããé
åžããå¿
èŠããããŸã-ãããã¯ãåé¡ã«å¯ŸããŠç¶æããããŸã
èæ
®ãããŠ
ããªãïŒä»¥äž-æªå²ãåœãŠãè±èªæªå²ãåœãŠïŒãã€ã³ãã®ãªã¹ãã§ãã·ã³ãã¬ãã¯ã¹ã®å
éšïŒãŸãã¯å°æ¥ã®äžæçãªå€é¢äœïŒã®å察åŽã®é¢ã«çŽé¢ããŸãã ããã§ã¯ãåžé¢å€é¢äœïŒç¹ã«ã·ã³ãã¬ãã¯ã¹ïŒã®ããããã£ã䜿çšããŸããããã¯ã空éå
šäœãåé¢ã®å¹³é¢ã§å²ãããšã«ãã£ãŠåŸããã2ã€ã®
å空éã®ãã¡ã®1ã€ã®ã¿ã«ååšããŸãã ãã®ããããã£ã¯ãããç¹ãåžå
ã®é¢ã®å€éšç¹ã®ãªã¹ãã®ãããã«ã該åœããªãå Žåããã®ç¹ã®å
éšã«ç¢ºå®ã«é
眮ããããšããäºå®ãæå³ããŸãã å°æ¥çã«ã¯ãã¢ã«ãŽãªãºã ã¯ãå€éšãã€ã³ãã®ãªã¹ãã«å«ãŸãããã€ã³ãã®ã©ããé¡ã®å¹³é¢ããæãé¢ããŠãããã«ã€ããŠã®æ
å ±ãå¿
èŠãšããŸãããããã£ãŠãå€éšãã€ã³ãã®ãªã¹ãã«ãã€ã³ãã远å ããã«ã¯ãã©ããæãé ããã«é¢ããæ
å ±ãä¿åããå¿
èŠããããŸãã ä»»æã®ãã€ã³ãã¯ãå€éšãã€ã³ãã®1ã€ã®ãªã¹ãã®ã¿ã«åé¡ãããŸãã æŒžè¿çãªè€éãã¯ããã€ã³ãããªã¹ãå
šäœã«ã©ã®çšåºŠæ£ç¢ºã«ååžããŠãããã«ã¯åœ±é¿ãããŸããã
ãã®æ®µéã§ãé¡ãèšå®ããæ¹æ³ãé¡ãŸã§ã®è·é¢ãèšç®ããæ¹æ³ãé¡ã«å¯Ÿããç¹ã®åããæ±ºå®ããæ¹æ³ã«ã€ããŠèª¬æããŸãã
ç¬æžéã ãã§ãŒã¹ãã¬ãŒã³ãããã€ã³ããŸã§ã®æ¹åè·é¢ãé¡ãèšå®ããã«ã¯ãæã£ãŠããå¿
èŠããããŸã

ãã€ã³ã-é¡ã®é ç¹ã äžèšã®çç±ã«ããããããã®ãã€ã³ããæŽç¶ãšä¿ç®¡ããŸãã ããã«ãå¿
èŠãªé åºã¯å³å¯ã§ã¯ãããŸããã ããšãã°ããã¢ããšã«ç°ãªããã€ã³ãã®å¿
ãããç°ãªããã¢ã§ã¯ãªã2ã€ã®äº€æã2åè¡ã£ãå Žåãå°æ¥ã®æäœã§æå³ããŸã£ããåãåãã«ãªããŸãïŒããã¯éåžžãé ç¹ã®å®æ°ãšåº§æšãã圢æãããè¡åããè¡ååŒãååŸããŸãïŒãã®ãããªãã¢ã®é åã¯çµæã«åœ±é¿ããŸããã 2ã€ã®å¯èœãªæ¹åã¯ãå¹³é¢ïŒé¢ïŒã®æ³ç·ã®2ã€ã®å¯èœãªæ¹åã«å¯Ÿå¿ããŸãã
äžåºŠã ã-æåã«-èšå·ã§åããæ±ºå®ããããã«ãéå§ã·ã³ãã¬ãã¯ã¹ã®ãã€ããŒããªã¥ãŒã ã®å€ãèšç®ããå¿
èŠããããŸãã é¢ã«é¢ãã以éã®ãã¹ãŠã®æäœã¯ããã€ã³ããŸã§ã®æåè·é¢ïŒè±èªã®æç€ºè·é¢ïŒã®èšç®ã®ã¿ã§æ§æãããŸãã ããã§ãä»»æã®æ¬¡å
ã®å Žåã«äžè¬åã§ããåŠæ ¡ã®å
¬åŒãæãåºãããšãã§ããŸããã€ãŸãããäžè§åœ¢ã®é¢ç©ã¯åºèŸºãé«ãã®ç©ã®ååã§ãããŸãã¯ããã©ãããã®äœç©ã¯åºåºé¢ç©ãšé«ãã®ç©ã®3åã®1ã§ãã äœãšé¡ã®å°ºåºŠãåé€ããæ¹æ³ãç¥ã£ãŠããã®ã§ãé«ãïŒ1次å
ã®é·ãïŒã衚çŸã§ããŸãã

ã¢ã«ãŽãªãºã ã§ã¯ãåºå®å¹³é¢ïŒé¢ïŒãããã€ã³ããŸã§ã®æ¹åä»ããããè·é¢ãèšç®ããå¿
èŠããããŸãã ãã®å Žåãåæ¯ã«æ£ã®å®æ°ãããããšãããããŸãã ååå
ã®ãã€ããŒããªã¥ãŒã ã®ã¿ããã€ã³ãã®äœçœ®ã«äŸåããŸãïŒãäžããŸãã¯ãäžãïŒã

宿°ã§ããããŸãã ãããã£ãŠãé¡ãšç¹ããæ§æãããã·ã³ãã¬ãã¯ã¹ã®ãã€ããŒããªã¥ãŒã ïŒãŸãã¯ã察å¿ããå¹³è¡å蟺圢ïŒã®çžå¯Ÿçãªå€§ããã®ã¿ãèæ
®ããããšãã§ããŸãã è¡ååŒãæãé
ãæ¹æ³ãšèŠãªãããªãå ŽåïŒå®çŸ©ã«ããã

ïŒ
æéã§ã¯ãããŸããïŒ

ïŒãããã³LUPåè§£æ³ïŒè±èªã®LUPåè§£ïŒã䜿çšãããšãè€éããéæã§ããŸãã

ãããŠãŸãšããªæ°å€å®å®æ§ã ç§ã¯ãè¡ååŒã®èšç®ã®è€éããã¢ã«ãŽãªãºã å
šäœã®æçµçãªè€éãã«ã©ã®ããã«åœ±é¿ããããè©äŸ¡ããããšã¯æ³å®ããŠããŸããããå®éšããŠãææªã®å ŽåïŒããšãã°ãçïŒè±èªã®ç圢ã®ç¹ïŒã«ããç¹ã®å ŽåïŒ
ïŒè·é¢ãæšå®ããããã®è¡ååŒã®èšç®ã¯ãèšç®ã³ã¹ããé«ãããŸããå¥ã®ã¢ãããŒãã¯ãæ£èŠåããã平颿¹çšåŒã®äœ¿çšã§ããããã¯ã
å¹³é¢äžã®ç¹ã®åº§æšãæ£èŠåãããæ³ç·ãã¯ãã«ã®åº§æšãé¢é£ä»ããäžæ¬¡æ¹çšåŒã§ã
ïŒ

â ) (. normalized normal vector)

(. offset):


ïŒ


â :


, , â :

, ,

, â .

ãããŠ

- () .

:

.
std::inner_product , , , â

ã , , , , , .
ããã§ãé¢ã®å¹³é¢ã説æããããšãã§ããŸããããããŸããã1ã€ãããŸããéå§ã·ã³ãã¬ãã¯ã¹ã®é¢ã®é ç¹ã®ãªã¹ãã§ããã€ã³ãã®åæã®é åºãéžæããæ¹æ³ã§ããèè
ã¯ãé ç¹ã®ãªã¹ããé åºä»ãããŸãããããããŸãããä»»æã§ãããåºå®ãããæ¬¡æ°ã®é ç¹ã«å¯ŸããŠå¹³é¢ã®æ¹çšåŒãèšå®ãããšããã®å¹³é¢ã«å¯Ÿããå
éšãã€ã³ãïŒè±èªã®å
éšãã€ã³ãïŒã®æ¹åãããããŸããã€ãŸããæåè·é¢ãèšç®ãããŸããè·é¢ãè² ã®å Žåãè¶
å¹³é¢ã®æ³ç·ã®åº§æšãšåç¹ããã®ãªãã»ããã§ç¬Šå·ãå€ãããŸãããŸãã¯ããã©ã°ã®å€ãèšå®ããŠãé¡ãäžäžéã«ãªã£ãŠããããšã瀺ããŸãïŒè±èªãå転ïŒãåžå€é¢äœã®å
éšç¹ã¯ãå°ãªããšã
ãã®é ç¹ïŒãã¹ãŠã®é ç¹ãååŸããå Žåãããããéå¿ïŒã®ç®è¡å¹³åã«ãªããŸããéå§ã·ã³ãã¬ãã¯ã¹ã®é¢ã®åãã倿ŽããŸãã( ) . , , (

) (

ïŒ ,

«»

, ( ). ,

(

). .

ã , , . , . ( / ).
, ,

, , . , .
é¢ããšã«ãé ç¹ã®ãªã¹ããå€éšãã€ã³ãã®ãªã¹ããæå®ããããšã«å ããŠã飿¥ããïŒè±èªã®é£æ¥ãªã¹ãïŒé¢ã®ãªã¹ããæå®ããå¿
èŠããããŸããé¡ããšã«æ£ç¢ºã«å«ãŸããŸã
èŠçŽ ã
éå§ã·ã³ãã¬ãã¯ã¹ã«ã¯
é¢ãå«ãŸããŠããããããã®é¢ã®ãããã«ã€ããŠããä»ã®ãã¹ãŠã®é¢ïŒ
ããŒã¹ïŒã飿¥ããé¢ã®ãªã¹ãã«å«ãŸããããšã¯æããã§ããã¡ã€ã³ã«ãŒãã
ããã§ãã¡ã€ã³ã«ãŒãã§äœæ¥ã§ããäžæçãªããªãŽã³ãã§ããŸãããã¡ã€ã³ã«ãŒãã§ã¯ããã®äžæçãªããªãŽã³ã宿ããå€é¢äœã®å€åŽã«1ã€ã®ãã€ã³ãããªããªãç¬éãæ¥ããŸã§ããŸããŸãå€ãã®ã¹ããŒã¹ãšå
ã®ã»ããã®ãã€ã³ããããã£ããã£ãããŸããæ¬¡ã«ããã®ããã»ã¹ã«ã€ããŠè©³ãã説æããŸããã€ãŸãããããç§ã®å®è£
ã§ã©ã®ããã«æ©èœãããã§ããã¡ã€ã³ã«ãŒãã¯ãã§ã€ã¹ã«ãŒãã§ããåå埩ã§ãå€éšãã€ã³ãã®ç©ºã§ãªããªã¹ããæã€é¢ã®äžãããæè¯ã®é¢ãéžæãããŸã
ïŒè±èªã®æè¯ã®é¢ïŒãå€éšãã€ã³ãã®ãªã¹ãããæãé ããã€ã³ããä»ã®ãã§ãŒã¹ããããã§ãŒã¹ããé ããšããæå³ã§æé«ã§ããå€éšãã€ã³ãã®ç©ºã§ãªããªã¹ããæã€é¢ããªããªããšããµã€ã¯ã«ãçµäºããŸããã¡ã€ã³ãµã€ã¯ã«ã®ããã£ã§ã¯ãéžæããé¢ã¯åžå
ã®æå³çã«éé¢ãšããŠåé€ãããŸããããããæåã«ã圌女ã¯ãã³ã³ããŒãã³ããçè§£ããŸãããå€éšãã€ã³ãã®ãªã¹ãããæãé ããã€ã³ããæœåºãããŸã
-ããããåžå
ã®äžéšã§ããæ®ãã®ãã€ã³ãã¯ãå²ãåœãŠãããŠããªããã€ã³ãã®äžæçãªãªã¹ãã«ç§»åãããŸãã
ã
ããã«ãFacesã®ãªã¹ãããå§ãŸã
飿¥ããFacesã®ãªã¹ãã§ã¯ãäžæçãªå€é¢äœã®Facesã®é£æ¥ã°ã©ãããã€ãã¹ãããåFacesãæ¢ã«èšªããïŒVisitïŒFacesã®ãªã¹ãã«è¿œå ããããã€ã³ãããã®å¯èŠæ§ããã¹ããããŸã
ã
é¢ããã€ã³ãããèŠããªãå Žåã
ãã®é£æ¥ããé¢ã¯ãã以äžé²ã¿ãŸããã飿¥ããé¢ã®äžã§æ¬¡ã®å¯èŠé¢ã«äžå¯èŠãã€ã³ããããå Žåã
å¢çã®å¯èŠé¢ã®ãªã¹ãã«ãªããŸãïŒæ°Žå¹³ç·ã®åã§ã¯ãªããæ°Žå¹³ç·ã®å-ãæ°Žå¹³ç·ãè¶
ããŠãïŒããã ãããã¹ãŠã®é£æ¥ããé¡ã衚瀺ãããŠããå Žåããã®ãããªé¡ã¯åé€çšã®é¡ã®ãªã¹ãã«è¿œå ãããŸããé¢ã®é£æ¥ã°ã©ããèµ°æ»ããåŸãå¢çã«è¡šç€ºãããé¢ã®ãªã¹ããšåé€ããé¢ã®ãªã¹ãã«ã¯ããã€ã³ãããèŠãããã¹ãŠãå«ãŸããŸã
ãã¡ã»ãããããã§ããªã¹ããããã¹ãŠã®é¡ãåé€ãããŸãããããã«ãåé€ãããåé¡ã¯ããã®é£æ¥ãã飿¥é¡ã®ãªã¹ãããåé€ãããŸãããããã¯å®å
šã§ããããã¯ã飿¥ããé¢ãå°æ¥çã«é£æ¥ããé¢ã®ãªã¹ãããèŠããå¢çã§ãã£ãŠãããã€ã³ãããèŠããªã
ãšããžãžã®è¿æ¥ã«é¢ããæ
å ±ã®ã¿ã䜿çšãããããã§ããåé€ããé¢ã®ãªã¹ãã«ç¶ããŠãå¢çã«è¡šç€ºãããé¢ã®ãªã¹ããã¹ãã£ã³ãããŸããå¢çã«è¡šç€ºãããåé¢ã¯ãè§£æãããïŒãã®åŸã飿¥ããé¢ã®ãªã¹ããšé ç¹ã®ãªã¹ããå¿
èŠã«ãªããŸãïŒãåé€ãããŸããå¢çã®å¯èŠé¢ããšã«ãæ°ããé¢ãäœæãããŸãïŒ1ãã
æ°ããé¡ã®ãªã¹ãã«è¿œå ãããŸãããã®å Žåã飿¥ããé¡ã®ãªã¹ããã¹ãã£ã³ããããã®ãªã¹ãããèŠããªãåé¡ã«ã€ããŠãç¹å®ã®å¯èŠå¢çãæã€å
±éã®ãšããžãæ€çŽ¢ãããŸããé衚瀺ãšããžãšå¢ç衚瀺ãšããžã«å
±éã®é ç¹ïŒã€ãŸããå
±éãšããžã®é ç¹ïŒã¯ãããã«ãå¢ç衚瀺é¢ã®é ç¹ã®ãªã¹ãã«æžã蟌ãŸããé åºã§ãæ°ããé¢ã®é ç¹ã®ãªã¹ãã«æžã蟌ãŸããŸããã¡ãªã¿ã«ããšããžïŒEngãHorizoâân ridgeïŒã¯ããã€ã³ãããèŠããäžæçãªå€é¢äœã®è¡šé¢ã®ãã®éšåã®å°å¹³ç·ã®äžéšã§ã
ã
ãã®ãšããžã«å±ããªãå¢çå¯èŠé¢ã®å¯äžã®é ç¹ããã€ã³ãã«çœ®ãæããããŸã
æ°ããé¢ã®é ç¹ã®ãªã¹ãã§ã¯ãæ®ãã®é ç¹ã¯ã衚瀺ãããŠããé¢ã®å¢çã®é ç¹ã®ïŒé åºä»ããããïŒãªã¹ããšåãã§ãåãå Žæã«ãããŸãããããã£ãŠãæ§ç¯ãããæ°ããé¢ã®é ç¹ã®ãªã¹ãã¯æ£ããåããä¿èšŒããŸããã€ãŸããæ£èŠåããã平颿¹çšåŒãèšç®ãããšããæ³ç·ã¯äžæçãªå€é¢äœã®å€åŽã«åãããããªãã»ããå€ã¯æ£ãã笊å·ãååŸããŸãããã¹ãŠã®å¢ç衚瀺é¢ãåŠçãããåŸãæ°ããé¢ã®ãªã¹ããäœæãããŸãããããã®é¢ã®è¶
平颿¹çšåŒã¯ããããã®é ç¹ã®ãªã¹ããäœæããçŽåŸã«èšç®ã§ããŸãããŸããæ°ããé¢ãäœæããå Žåã飿¥ããé¢ã®ãªã¹ãã«1ã€ã®é¢ãã€ãŸãæ°ããé¢ã®é ç¹ã®ãªã¹ããäœæãããšãã«å¢çã®å¯èŠé¢ã«é£æ¥ããŠãã察å¿ããé衚瀺é¢ã远å ã§ããŸããæããã«æ®ã
æ®ãã®æ°ããé¡ã®äžãã飿¥ããé¡ãæ¢ãå¿
èŠããããŸãã倿ããããã«ïŒGoogle Performance Toolsãããããã¡ã€ã©ãŒã§ãµã³ããªã³ã°ãããšãïŒãã¢ã«ãŽãªãºã ã¯ã倧ããªæ¬¡å
ããã³/ãŸãã¯æªãå
¥åããŒã¿ã®å ŽåïŒã€ãŸããã»ãšãã©ã®ãã€ã³ããåžå
ã®é ç¹ã§ããå ŽåïŒã«æ°ããé¡ã®é£æ¥ããé¡ã®æ€çŽ¢ã«è²»ãããŸããç§ã®å®è£
ã§ã¯ãæåã¯ã¢ã«ãŽãªãºã ã¯éåžžã«ç°¡åã§ããïŒæ°ããé¢ã®ãªã¹ãããã®é¢ã®ãã¹ãŠã®å¯èœãªãã¢ïŒ2ã€ã®ãã¹ããããã«ãŒãïŒããœãŒãããã1ã€ã®äžäžèŽãæã€é ç¹ãªã¹ãã®é åºïŒãã€ã³ãã®å
¥åãªã¹ãããã®çªå·ã«ããïŒã®æ¯èŒãå®è¡ãããŸããïŒä¿®æ£ãããã¢ã«ãŽãªãºã std :: set_differenceãŸãã¯std :: set_symmetric_differenceïŒãããã¯
æ¯èŒãããã§
ã¯æ°ããé¡ã®æ°ã§ããããããå°æ¥ããã®ããã«ããã¯ã§é åºä»ãããã飿³é
åïŒstd :: setïŒã䜿çšããŠã飿¥ãããã®ãæ€çŽ¢ããé床ã§ïŒãã€ããª=ïŒã®ãã¢ãç²åŸããããšãã§ããŸãããäžè¬ã«ããã®ã¿ã¹ã¯ã«é¢é£ããç¥èã®åéå
šäœããããŸãïŒé£äººã®æ±ºå®ïŒ-ããã¯å±ææ§ã«ææãªããã·ã¥ã§ããå
ã®qhullå®è£
ã§ããã·ã¥ã®ã¿ïŒLSHã§ã¯ãªãïŒã䜿çšãããŸãããã®äžã«ã¯ãåãšããžïŒ2ã€ã®é¢ïŒã«åå¥ã®ããŒã¿æ§é ïŒãšããžã®ãšããžã®ãªã¹ããšããšããžã®ãäžããšãäžãã«é¢ããæ
å ±ïŒãä¿åãããåãã§ã€ã¹ã«ã¯ãšããžã®ãªã¹ããå«ãŸããŸããé¢ã®ãã¹ãŠã®ãšããžã®é¢ïŒæ°ããé¢ã®ãªã¹ãããã®é¢ïŒã®è¿åãæ±ºå®ããããã«ããããã®é ç¹ã®é
åã®ããã·ã¥ã®é¢é£ä»ããããé åºãªãé
åãäœæããïŒ1åã¹ãããããŠïŒã1ã€ã®ç Žæ£ãããé ç¹
ïŒ ããã¯
ç¯çŽããã·ã¥ãããã·ã¥ã®è¡çªïŒããã³ããã«ç¶ããªã¹ãã®å®å
šãªäžèŽïŒãããå ŽåãïŒæããã«ïŒãããã®2ã€ã®é¢ã«ã¯å
±éã®ãšããžãããïŒããã·ã¥ã¯ãããã·ã¥ããŒãã«ãåæžããããã«åé€ã§ããŸãïŒããããã®ããããã¯ãä»ã®é£æ¥ããé¢ã®ãªã¹ãã«è¿œå ã§ããŸããæšæºã©ã€ãã©ãªãSTLãããã·ã¥ã³ã³ãã€ããªã©ã®ããŒã«ãæã£ãŠããªãããããã®æ¹æ³ã¯äœ¿çšããŸããïŒæŽæ°ãæè¯ã®éžæã¯XORã®ã¿ã§ãããšããæ
å ±ãåãåããŸããïŒãç§èªèº«ã¯ãstd :: vector <std :: size_t>ã®std :: hashããæ£åœæ§ã«é¢ããçè«çãªæ
å ±ã®æ£åœåãªãã«ç¹åããããããŸããã§ããããããç§ã飿³é åºä»ãã䜿çšããçç±ã§ã飿¥ããé¢ãæ€çŽ¢ããããã®ãªãã³ã³ãããŒããã®çµæïŒæããã«ïŒãã¢ã«ãŽãªãºã ã®ç§ã®å®è£
ã¯ãé床ã§qhullãæŒžè¿çã«å€±ã
åã«
åïŒããŸããŸãªå
¥åããŒã¿çšïŒãæ¯èŒãã¹ãã
äŸã¯ãããã±ãŒãžãããŒãžã£ãŒïŒUbuntu 14.04 LTSïŒãä»ããŠã€ã³ã¹ããŒã«ãããQuickhull
qhullã¢ã«ãŽãªãºã ã®ãæšæºçãªãå®è£
ã§ãã åã
qhull-binããã±ãŒãžããå
¥åãçæããããã«ã
rboxãŠãŒãã£ãªãã£ã
䜿çšãããŸãã ã
rbox tn D4 30000 s> /tmp/qhuckhull.txtã³ãã³ãã¯ã4次å
çäœäžã®30,000ãã€ã³ãã®åº§æšãæã€ãã¡ã€ã«ãäœæããŸãã
rbox tn D10 30 s> /tmp/quickhull.txtã³ãã³ãã¯ã10次å
ã®çäœäžã®30ç¹ã®åº§æšãæã€ãã¡ã€ã«ãäœæããŸãã ããã°ã©ã ãæ¶è²»ããã¡ã¢ãªéã¯ã
-vã¹ã€ããã䜿çšãã
/ usr / bin / timeãŠãŒãã£ãªãã£ã®åºåã§ç¢ºèªã§ããŸãã
/ usr / bin / time -v bin / quickhull /tmp/quickhull.txtã®åºå| head -7ã¯ãç§ã®å®è£
ã®ã¡ã¢ãªãšããã»ããµæéã®äž¡æ¹ã®æ¶è²»éïŒãã¡ã€ã«ã®èªã¿åããšç«¯æ«ãžã®åºåã®ã¯ãªã¢ïŒãããã³output
/ usr / bin / time -v qconvex s Qt Tv TI /tmp/quickhull.txt- ãæšæºçãªã
qhullå®è£
çšã
åžå
ã®é¢ã®æ°ã®äžèŽã«ãããå®è£
ã®æ£ç¢ºãã倿ããŸãã ããããïŒ2次å
ããã³3次å
ã¢ãŒãã§ïŒãããã°ããããã«ã段éçã«ïŒ
äžæåæ¢ã³ãã³ãã䜿çšããŠïŒ
gnuplot圢åŒã®ã¢ãã¡ãŒã·ã§ã³åºåãå®è£
ã
ãŸãã ã ã³ãããã®ã©ããã§ãã ããã°ã©ã ã®åºåã¯ãåžå
ãš
gnuplot圢åŒã§è¡šãããå
¥åãã€ã³ãã®çªå·ä»ãã»ããã§ãã
ããã«ãç§ã¯
rboxã®é¡äŒŒç©ã§ãã
randomboxãŠãŒãã£ãªãã£ãäœãšãæžãå§ããŸããïŒãããã宿ããŸããã§ããïŒã
randombox㯠ãåäžã«ååžããŠããªããã€ã³ããçæãã
rboxãšã¯ç°ãªãã空éã«åäžã«ååžããŠãããã€ã³ãïŒè±èªã®åäžãªç©ºéååžïŒãçæãããŠãŒãã£ãªãã£ãšããŠèæ¡ãããŸããã
randomboxã¯ãåäžã®ããã€ã€ã¢ã³ã圢ãå€é¢äœã®è¡šé¢ã«ãåäœçïŒè±èªã®åäœçïŒãããŒã«ïŒè±èªã®çïŒãã·ã³ãã¬ãã¯ã¹ïŒãã€ã³ãã®ãã空éã«åã蟌ãããšãã§ããä»»æã®æ¬¡å
ïŒã§å²ãŸãããã€ã³ãã®ã»ãããçæã§ããŸãããŠããããã€ã€ã¢ã³ãïŒããŠããããã¥ãŒãïŒEngããŠããããã¥ãŒãïŒå
ãå¹³è¡å蟺圢å
ãæšæºãŠãããã·ã³ãã¬ãã¯ã¹ïŒEngããŠãããã·ã³ãã¬ãã¯ã¹ïŒå
ãããã³ã³ãŒã³ïŒEngãã³ãŒã³ïŒãŸãã¯ã·ãªã³ããŒïŒEngãã·ãªã³ããŒïŒã®ããªã¥ãŒã ã«å€ãã®ãã€ã³ããæåœ±ããŸãïŒ ïŒç©ºéã«å²ãŸããïŒä»»æã®ã·ã³ãã¬ãã¯ã¹å
ã«åäžã«ååžãã座æšãçæããããã«ãã€ã³ã¿ãŒãããäžã§ïŒDirichletååžãä»ããŠïŒæ°å€çã«å®å®ããã¢ã«ãŽãªãºã ãèŠã€ããŸããã ãã®çµæãæåã®ãã®ãéžæããŸããã
ãããžã§ã¯ãã«ãŒããã
gnuplotã䜿çšããŠãåžå
ããæãããããã«ã¯ãã³ãã³ã
rbox n D3 40 t |ãå
¥åããŸã
ã bin / quickhull> /tmp/quickhull.plt && gnuplot -p -e "load '/tmp/quickhull.plt'" ã
rbox n D3 40 t㯠ãå¢çãã¥ãŒãå
ã«40ãã€ã³ã
ãçæããŸã

ïŒè±èªã®å¢çããã¯ã¹ïŒã ããŒ
tã¯ãPRNGã®åæå€ãšããŠçŸåšã®æéïŒç§åäœïŒã®äœ¿çšãæå®ããŸãã çäžã®ç¹ãååŸããã«ã¯ãããŒ
sã远å ããå¿
èŠããããŸãã éåçŽãªé¢ãã©ã®ããã«å£ããŠããããèŠãã®ãè峿·±ãã§ãïŒ
rbox n D3 c -cubeã
rbox n D3 729 M1,0,1- 
ããŒãå
šäœã«ãããã€ã³ãã ãããã®åžå
ã¯çŸããèŠããŸãïŒè±èªã®ãããïŒïŒ
rbox n D3 50 l ã é¢ãšåäžå¹³é¢äžã«ãã倿°ã®ãã€ã³ããåæã«é
眮ããå Žåãã¢ã«ãŽãªãºã ãªããžã§ã¯ãã®æ§ç¯æã«èšå®ããã
eps宿°ããçµæã®æ£ç¢ºæ§ã«å€§ããªåœ¹å²ãæããå§ããŸãã ããšãã°ã
std :: numeric_limits <value_type> :: epsilonïŒïŒãå°ããªå€ãšããŠäœ¿çšããå Žåã64åã®æŽæ°ãã€ã³ã
rbox n D3 64 M3,4ã® ãå転ãããç«æ¹äœã®å Žåãã¢ã«ãŽãªãºã ã¯æ£ãããªã幟äœåŠçãªããžã§ã¯ãã«ãªããŸããåžå€è§åœ¢ã§ããããšã
çµæãŸãã¯é
å»¶TL; DRã
ç§ã®ä»äºã®çµæã¯ãC ++ã§ã®Quickhullã¢ã«ãŽãªãºã ã®å®è£
ã§ãããããã¯éåžžã«ã³ã³ãã¯ãã§ã
qhull.orgã§ã®å®è£
ãããããã»ã©é
ããããŸããã ãã®ã¢ã«ãŽãªãºã ã¯ãSTLã§æ
£äŸãšãªã£ãŠããããã«ãå
¥åã§ç©ºéã®æ¬¡å
ã®å€ãå°ããªå®æ°
epsã®å€ãããã³ã€ãã¬ãŒã¿ã®ãã¢ã§æå®ãããç¯å²ãšããŠè¡šããããã€ã³ãã®ã»ãããåãåããŸãã æåã®æ®µéã§ã
create_simplexã¯éå§ã·ã³ãã¬ãã¯ã¹ãæ§ç¯ããå
¥åãã€ã³ããå«ãã¢ãã£ã³ïŒãµãïŒç©ºéã®ãã€ã³ãããŒã¹ãè¿ããŸãã åºåºã®ç¹ã®æ°ãç¹ãå«ããŠãŒã¯ãªãã空éã®æ¬¡å
ããã倧ããå Žåãåžå
ã宿ãããã¢ã«ãŽãªãºã ãå®è¡ããå¿
èŠããããŸãã åºåã§ã¯ãã¢ã«ãŽãªãºã ã¯å
¥åã»ããã®åžå
ã®é¢ãèšè¿°ããããŒã¿æ§é ã®é
åãæäŸããŸãããããçãã§ãã 倱æããå Žåããã¹ãŠã®ãã€ã³ããå«ãäœæ¬¡å
ã®éšå空éã®ãã€ã³ãããŒã¹ããããŸãã Householderã¢ã«ãŽãªãºã ã䜿çšãããšããã€ã³ãã®æé«åº§æšãç¡å¹ã«ããªãããäœããã®æ¹æ³ã§å
¥åã»ãããå転ãããããšãã§ããŸãã ãã®ãããªåº§æšã¯ç Žæ£ã§ããQuickhullã¢ã«ãŽãªãºã ã¯äœæ¬¡å
ã®ç©ºéã«æ¢ã«é©çšã§ããŸãã
çšé
ãã®ã¢ã«ãŽãªãºã ã«ã¯å€ãã®çšéããããŸãã åžå
èªäœãèŠã€ããããšã«å ããŠãåžå
ã
ããããŒäžè§åœ¢åå²ãš
ãããã€ç·å³ã®éã«
é¢é£ããããšããäºå®ã®ãããã鿥ãã¢ã«ãŽãªãºã ã®é©çšãèŠã€ããããšã¯é£ãããããŸããã
ãã®å®è£
ã¯ãã§ã«ããã€ãã®äººã«ãšã£ãŠäŸ¿å©ã«ãªã£ãŠãã ãæè¬ã®æ°æã¡ã§ïŒè¬èŸã§ïŒæ¯æãããŸãããããã¯éåžžã«çŽ æŽãããããšã§ãã
ã¢ããããŒãã
2015幎6æ24æ¥ïŒ
Kurt MehlhornãStefanNÀherãThomas SchilzãStefan SchirraãMichael SeelãRaimund Seidelãããã³Christian Uhrigã®ã¢ã«ãŽãªãºã ã«åŸã£ãŠãçµæã®å¹ŸäœåŠçæ§é ã®åžæ§ã®æ€èšŒã远å ããŸãã
ã 幟äœåŠçããã°ã©ã ã®ãã§ãã¯ãŸãã¯å¹ŸäœåŠçæ§é ã®æ€èšŒã Procã§ã 12åšå¹Žã ACMã·ã³ããžãŠã ã èšç®ã GeomããããŒãž159ã165ã1996幎 ã
2015幎6æ24æ¥ïŒçµæã®å€é¢äœã®é¢ã«ã¯ã察å¿ããé ç¹ãå察åŽïŒè±èªã®å察åŽïŒã«ãªãããã«é
眮ããã飿¥ããé¢ã®é ç¹ãšã€ã³ããã¯ã¹ã®ã»ãããå«ãŸããããã«ãªããŸããã ããã«ãããæ§é ã䜿çšãããããªãå ŽåããããŸãã
06/24/2015ïŒããã·ã¥ã䜿çšããŠãæ°ããåãåã£ãé¡ã®è¿åãæ±ºå®ããŸãã