äžæ¥äžè¯ãããµã€ãHabrahabrã®èŠªæãªã蚪åè
ã ãã®èšäºã§ã¯ããããã€å³ïŒäžã®å³ãåç
§ïŒããããæ§ç¯ããããã®ããŸããŸãªã¢ã«ãŽãªãºã ïŒ

ã

-åå¹³é¢ã®äº€å·®ã

-Fortuneã®ã¢ã«ãŽãªãºã ïŒããã³å®è£
ã®ããã€ãã®åŸ®åŠãªç¹ïŒC ++ã§ïŒã

ãã£ãŒãã®å€ãã®èå³æ·±ãå¿çšãšãããã«é¢ããããã€ãã®èå³æ·±ãäºå®ãèæ
®ãããŸãã é¢çœãã§ãããïŒ
èšäºã®æŠèŠïŒ
-
å¿
èŠãªæŠå¿µãšå®çŸ©-
æ§ç¯ã¢ã«ãŽãªãºã -
ã¢ããªã±ãŒã·ã§ã³-
èå³æ·±ãäºå®-
åç
§ãã®èšäºã§ã¯ãå¹³é¢äžã«ãããã€å³ãæ§ç¯ããããã®ã¢ã«ãŽãªãºã ã®ã¿ãèæ
®ãããããšã«æ³šæããŠãã ããã éäžã§ããã€ã¢ã°ã©ã ã®äœæã«å¿
èŠãªä»ã®ã¢ã«ãŽãªãºã ãæ€èšããŸãã2ã€ã®ã»ã°ã¡ã³ãã®äº€ç¹ã決å®ããã¢ã«ãŽãªãºã ã2ã€ã®åžå€è§åœ¢ã亀差ãããO'Rourkeã¢ã«ãŽãªãºã ãããã³ã海岞ç·ããäœæããã¢ã«ãŽãªãºã ã§ãã
å¿
èŠãªæŠå¿µãšå®çŸ©
次ã«èµ·ããããšã¯
ãã¹ãŠ é£è¡æ©äžã«ãããšããã«èšããªããã°ãªããŸããã
ããŠããããäœã§ããããç解ããåã«-ãããã€å³ãç§ãã¡ãå¿
èŠãšãã幟äœåŠãªããžã§ã¯ãã®ããã€ãã®æŠå¿µãæãåºãããŸãïŒãã ããç¹ãç·ãå
ç·ãç·åãå€è§åœ¢ãé ç¹ãå€è§åœ¢ã®ãšããžã®å®çŸ©ã«æ¢ã«ç²ŸéããŠãããšä»®å®ããŸããå¹³é¢ãåå²ãããã¯ãã«ããã³çŽæçãªæŠå¿µïŒïŒ
åçŽãªããªãŽã³ãšã¯ãèªå·±äº€å·®ã®ãªã
ããªãŽã³ã§ãã åçŽãªããªãŽã³ã®ã¿ãæ€èšããŸãã
éåžå€è§åœ¢ãšã¯ã2ã€ã®é ç¹ãååšããå€è§åœ¢ã®ããšã§ããããã®é ç¹ãçµã¶ãšããžãé€ããæå®ãããå€è§åœ¢ãšäº€å·®ããç·ãæãããŸãïŒå³ãåç
§ïŒã
åžå€è§åœ¢ãšã¯ã蟺ã®å»¶é·ç·ãä»ã®èŸºãšäº€å·®ããªã
å€è§åœ¢ã§ãïŒå³ãåç
§ïŒã ä»ã®å®çŸ©ã¯
ãŠã£ãããã£ã¢ã§å©çšå¯èœã§ãã
ãã€ã¢ã°ã©ã ãæ§æããã®ã¯åžå€è§åœ¢ã§ãã ãªãåžããæ£ç¢ºã«ïŒ ãããã¯åžé¢å³åœ¢ã§ããåå¹³é¢ã®äº€ç¹ïŒåŸã§èŠãïŒã«ãããªããããåžé¢å³åœ¢ã®äº€ç¹ãåžé¢å³åœ¢ã§ããçç±ã¯ããã«ããã®ã§ãèªåã§ç¢ºãããããšããå§ãããŸãïŒèšŒæ ã¯ãããšãã°æ¬
[2]ã«ãããŸã ïŒã
åå¹³é¢ã«ã€ããŠè©±ãå§ããã®ã§ããã€ã¢ã°ã©ã èªäœïŒãããã
è»è·¡ãããªãïŒã«ã¹ã ãŒãºã«ç§»åã§ããŸãããã®é åã§ã¯ãä»ã®ãã¹ãŠã®ãã€ã³ããããç¹å®ã®ãã€ã³ãã«è¿ããã€ã³ãããã¹ãŠãããŸãã ãããã€å³ã§ã¯ãè»è·¡ã¯åžå€è§åœ¢ã§ãã
è»è·¡ãäœæããæ¹æ³ã¯ïŒ å®çŸ©ã«ããã次ã®ããã«æ§ç¯ãããŸããnåã®ãã€ã³ãã®ã»ãããäžããŠããã€ã¢ã°ã©ã ãæ§ç¯ããŸãã è»è·¡ãæ§æããç¹å®ã®ãã€ã³ã
pãš ãäžããããã»ããã®å¥ã®ãã€ã³ã
-q ïŒ
pãšçãããªãïŒãåããŸãã ãããã®2ã€ã®ãã€ã³ããçµã¶ç·ãæç»ãããã®ã»ã°ã¡ã³ãã®äžå€®ã®åç·ãšãªãç·ãæç»ããŸãã ãã®ç·ã¯å¹³é¢ã2ã€ã®åå¹³é¢ã«åå²ããŸãã1ã€ã¯ç¹
pã§ããã1ã€ã¯ç¹
qã§ãã ãã®å Žåããããã®2ç¹ã®è»è·¡ã¯ãçµæã®åå¹³é¢ã§ãã ã€ãŸããç¹
pã®è»è·¡ãæ§ç¯ããã«ã¯ããã®ãããªãã¹ãŠã®åå¹³é¢ã®äº€ç¹ãååŸããå¿
èŠããããŸãïŒã€ãŸãã
qãé€ãç¹å®ã®ã»ããã®ãã¹ãŠã®ç¹ã
qã®ä»£ããã«ãªããŸãïŒã
è»è·¡ãæ§ç¯ããããã€ã³ãã¯ã
ãµã€ããšåŒã°ã
ãŸã ã 次ã®å³ã§ã¯ãè»è·¡ã¯ç°ãªãè²ã§ããŒã¯ãããŠããŸãã
ãã€ã¢ã°ã©ã ãæ§ç¯ããããã®ã¢ã«ãŽãªãºã ã¯ãç¹å®ã®ã»ããã®ãã¹ãŠã®ãã€ã³ãã«å¯ŸããŠãããã®åã
è»è·¡ãæ§ç¯ããããã®ã¢ã«ãŽãªãºã ã«ä»ãªããŸããã ãã®åé¡ã®è»è·¡ã¯ã
ãããã€ããªãŽã³ãŸãã¯
ãããã€ã»ã«ãšãåŒã°ã
ãŸã ã
æåŸ
ã«ãå¹³é¢äžã®nç¹ã®ãããã€å³ã®å®çŸ©ãå®åŒåããŸãïŒnã¯æ£ã®æŽæ°ïŒ-ããã¯ã
nè»è·¡ ïŒè»è·¡ããšã®åç¹ïŒã§æ§æããã
å¹³é¢ã®ããŒãã£ã·ã§ã³ã§ã ã ç¹°ãè¿ãã«ãªããŸãããå¥ã®å®çŸ©ã¯
Wikipediaã«ãããŸãã
ã¡ãªã¿ã«ãããã¯ãããã€å³ã®
ã€ã³ã¿ã©ã¯ãã£ããªã«ã©ãŒããžã¥ã¢ã©ã€ã¶ãŒãåãã
ãµã€ãã§ãã
èªåã§é åãã¯ãªãã¯ããŠãå³ã®äœææ¹æ³ã確èªããããšãã§ããŸãã
ãã€ã¢ã°ã©ã ãã©ã®ããã«è¡šç€ºããããªããããã€ãšããååãä»ããããŠããã®ãã«èå³ãããå Žåã¯ã以äžã®ãã¿ãã¬ãã芧ãã ããã
æŽå²çäºå®ã¡ãã£ãšããæŽå²
ïŒ
ãã®ãµã€ãããåãããè³æïŒ
äžè¬ã«ããã®å³ã®æåã®äœ¿çšæ³ã¯ãRene DescartesïŒ1596-1650ïŒãThe Beginning of PhilosophyïŒ1644ïŒã®äœåã«ãããŸãã ãã«ã«ãã¯ãå®å®ãæã®éåã®åœ±é¿ã®ãŸãŒã³ã«åå²ããããšãææ¡ããŸããã


ããã2äžçŽåŸãæåãªãã€ãã®æ°åŠè
ãšãã³ããŒã¿ãŒã°ã¹ã¿ãã¬ãžã¥ãŒããã£ãªã¯ã¬ïŒ1805幎-1859幎ïŒã2次å
ããã³3次å
ã®å Žåã®å³ãå°å
¥ããŸããã ãããã£ãŠããããã¯ãã£ãªã¯ã¬å³ãšåŒã°ããããšããããŸãã

ãŸãããã§ã«1908幎ã«ããã·ã¢ã®æ°åŠè
Georgy Feodosievich VoronoiïŒ1868幎4æ16æ¥ïŒ28ïŒã1868幎-1908幎11æ7æ¥ïŒ20ïŒã1908幎ïŒã¯ããã®å³ããã倧ããªæ¬¡å
ã®ç©ºéã«ã€ããŠèª¬æããŸããã ãã¡ãã圌ã®çãäŒèšã§ãïŒ
ãŠã£ãããã£ã¢ããåŒçšïŒïŒ
ã²ãªã«ã®ãŒã»ãã§ãªãã·ãšãããã»ãããã€ã¯ããã«ã¿ãå·ã®ãºã©ãŽã«æïŒçŸåšã®ãã§ã«ããŒããŠå°åïŒã§çãŸããŸããã 1889幎以æ¥ã圌ã¯ãµã³ã¯ãããã«ãã«ã¯å€§åŠã§
ã¢ã³ãã¬ã€ã»ãã«ã³ããšåŠã³ãŸããã 1894幎ã圌ã¯ä¿®å£«è«æã3次æ¹çšåŒã®æ ¹ã«äŸåããæŽæ°ã«ã€ããŠããæè·ããã å幎ã圌ã¯ã¯ã«ã·ã£ã¯å€§åŠã®ææã«éžåºãããããã§éã®åæ°ãç 究ããŸããã ãããã€ã¯ã
ãŽã¡ãŒãã©ãã»ã·ã§ã«ãã³ã¹ããŒã«ãã£ãŠèšç·ŽãããŸããã 1897幎ããããã€ã¯ãç¶ç¶åæ°ã®ã¢ã«ãŽãªãºã ã®äžè¬åã«ã€ããŠãå士è«æãæè·ããããã£ã³ãã¹ããŒè³ãåè³ããŸããã

æ§ç¯ã¢ã«ãŽãªãºã
ãããã€å³ã®äœææ¹æ³ãåŠã³ãŸãã 4ã€ã®ã¢ã«ãŽãªãºã ãæ€èšããŸãããã®ãã¡2ã€ã¯è©³çŽ°ã§ãïŒ1ã€ã¯å®è£
ãããå¥ã®èšäºã§ã¯Fortuneã®ã¢ã«ãŽãªãºã ã®å®å
šãªå®è£
ã«å°å¿µããŸãïŒã
- ãé¡ã«ããããã€å³ãããããããããã®ã¢ã«ãŽãªãºã ã é£æ床ïŒ
; - åå¹³é¢ã亀差ãããŠãããã€å³ãäœæããã¢ã«ãŽãªãºã ã é£æ床ïŒ
; - å¹³é¢äžã«ãããã€å³ãäœæããããã®ãã©ãŒãã¥ã³ã®ã¢ã«ãŽãªãºã ã é£æ床ïŒ
; - ååž°çãããã€ç·å³ããããã¢ã«ãŽãªãºã ã é£æ床ïŒ
ã
ããã€ãã®ã¢ã«ãŽãªãºã ã®èª¬æã®åŸãC ++ã§ã®å®è£
ãæäŸãããŸãã å®è£
ã«ã¯ãç§ãã¡ãäœæããã©ã€ãã©ãªSplashGeom©-github
ãžã®
ãªã³ã¯ã䜿çšããŸãããããã«ã¯ãå¹³é¢äžããã³ç©ºéå
ã®ããã€ãã®èšç®ãžãªã¡ããªã®ã¢ã«ãŽãªãºã ãå®è£
ããããã«å¿
èŠãªãã¹ãŠãå«ãŸããŠããŸãã ãã®ã©ã€ãã©ãªãå³å¯ã«å€æããªããããé¡ãããŸãããŸã 掻çºãªéçºãšæ¹åã®æ®µéã«ãããŸããããã¹ãŠã®ã³ã¡ã³ããèãããŸãã
ä»ã®å®è£
ã«èå³ãããå Žåã¯ã次ã®ãšããã§ãã
ããã§ã¯ãã¢ã«ãŽãªãºã ã®çŽæ¥èª¿æ»ã«ç§»ããŸãããã
ãé¡ã«ããããã€å³ãæ§ç¯ããããã®ã¢ã«ãŽãªãºã 
ããã§ã®ã¢ã€ãã¢ã¯ãåå¹³é¢ã暪åãã®ã§ã¯ãªããã»ã°ã¡ã³ãã®äžå€®ã®åç·ãïŒããã¯ç°¡åã§ãåæããããïŒäº€å·®ããããã®ç¹ãä»ã®ãã¹ãŠã®ç¹ãšæ¥ç¶ããããšã§ãã ã€ãŸãããããã€ã»ã«ã®å®çŸ©ã«åŸã£ãŠã次ã®ããã«ç¹
pã®è»è·¡ãäœæããŸãã
- ãã®ãã€ã³ãpãä»ã®ã»ã°ã¡ã³ããšæ¥ç¶ãããã¹ãŠã®ã»ã°ã¡ã³ãã®äžå€®ã®åç·ãæããã®ã§ãn-1ã®çŽç·ïŒäžå€®ã®åç·ïŒãååŸããŸãã
- ãã¹ãŠã®ç·ããã¢ã§äº€å·®ãããŠã
亀差ç¹ïŒãææªã®å Žåãã§ã¯ãåçŽç·ãä»ã®ãã¹ãŠã®çŽç·ãšäº€å·®ã§ããããïŒ; - ããããã¹ãŠã確èªããŠãã ãã
n-1åã®åå¹³é¢ã®ããããã®ã¡ã³ããŒã·ããäžã®ãã€ã³ããã€ãŸãã挞è¿ç·ããã§ã«ååŸããŠãã
ã ãããã£ãŠããã¹ãŠã®åå¹³é¢ã«å±ãããã€ã³ãã¯ããã€ã³ãpã®ãããã€ã»ã«ã®é ç¹ã«ãªããŸãã - ãã¹ãŠã®nãã€ã³ãã«å¯ŸããŠæåã®3ã€ã®ã¹ããããå®è¡ããçµæã®æŒžè¿ãååŸããŸã
ã
ã¢ã«ãŽãªãºã ã¯
e-maxx.ruã«ããããŸãã
å¿
èŠã«å¿ããŠãSplashGeom©ã䜿çšããŠãã®ã¢ã«ãŽãªãºã ãåå¥ã«å®è£
ã§ããŸãã ãã®èšäºã§ã¯ããã®ã¢ã«ãŽãªãºã ã¯å®éã«ã¯å°ãªããšã以äžã®ãã®ããã¯ããã«å£ãããããã®å®è£
ã¯ç€ºãããŠããŸãã...
åå¹³é¢ãè¶
ããŠäº€å·®ããããšã«ãããããã€å³ãæ§ç¯ããããã®ã¢ã«ãŽãªãºã 
ãã®ã¢ã«ãŽãªãºã ã¯ãããã»ã©è€éãªèšç®ãå¿
èŠãšããªãããããã§ã«å®éã«äœ¿çšã§ããŸãã ãã®ããã«ã¯ãã»ã°ã¡ã³ããšã©ã€ã³ã亀差ãããåžå€è§åœ¢ã亀差ãããåå¹³é¢ã亀差ãããåŸãããè»è·¡ããã€ã¢ã°ã©ã ã«çµåã§ããå¿
èŠããããŸãã
ã¢ã«ãŽãªãºã
- çŸåšã®ãµã€ãã®n-1çŽç·ãååŸããŸãïŒåã®ã¢ã«ãŽãªãºã ã®ããã«-äžå€®ã®åç·ïŒã ãããã¯ãåå¹³é¢ã®ããžã§ãã¬ãŒã¿ãã«ãªããŸãã
- ããã§ãn-1åå¹³é¢ãã§ããŸããã ãããã®ååå¹³é¢ã¯ãåããã®çŽç·ã§äžããããŸãã ãã€ã³ããšæ¹åãã€ãŸããç·ã®ã©ã¡ãåŽã«ãããã æ¹åã¯ãè»è·¡ãæ§ç¯ããçŸåšã®ãµã€ãã«ãã£ãŠæ±ºå®ãããŸããããã¯ãç®çã®åå¹³é¢ã«ãããããè»è·¡ã¯ãã®äžã«ãªããã°ãªããŸããã
- ç§ãã¡ã¯ãã¹ãŠã®åå¹³é¢ã暪æããŸã-ç§ãã¡ã¯ãããããããšãã§ããŸã
-çŸåšã®ãµã€ãã®è»è·¡ãååŸããŸãã - ãã¹ãŠã®nãã€ã³ãã«å¯ŸããŠæåã®3ã€ã®ã¹ããããå®è¡ããçµæã®æŒžè¿ãååŸããŸã
*
=
ã
å®è£
ããã§ã®äž»ãªãã£ããã¯ãåžå€è§åœ¢ã®éåžžã®äº€å·®ãå®è£
ããããšã§ãããªããªããäžå¿«ãªçž®éã±ãŒã¹ãããããã§ãïŒå€è§åœ¢ã®é ç¹ããã³/ãŸãã¯åŽé¢ãäžèŽããŸããå€è§åœ¢ãããèªäœãšäº€å·®ããå Žåããã®å ŽåïŒã
ã¢ã¯ã·ã§ã³ã®ç¯å²å
šäœã
å€æ¥ããé·æ¹åœ¢ã«å¶éããŠããããšã
ããã«èšããªããã°ãªããŸãã-ããŒããã¬ãŒã³ã¯äºãã«äº€å·®ããéšåãåãåããŸãã ããã«ããããã€ã¢ã°ã©ã å
ã®ç¡éã»ã«ã®åé¡ã解決ãããŸãã
ç·ãšç·åã®äº€ç¹
ãããŠããã®ååšã®å€æã ãã§ãªããæ£ç¢ºã«äº€ç¹ãå¿
èŠã§ãã SplashGeom©ã§ã¯ãããã¯-ããšãã°ãã©ã€ã³ãšã»ã°ã¡ã³ãã®äº€å·®ã®å®è£
ã§ãã
åžå€è§åœ¢ã®äº€å·®
ããã§ãããªãŽã³ã®äº€å·®ãå®çŸããŸããã ãã¡ãããããªãã¯ãããããããšãã§ããŸã

ããã§ãnãšmã¯ãããã1çªç®ãš2çªç®ã®å€è§åœ¢ã®é ç¹ã®æ°ã§ã-æåã®å€è§åœ¢ã®å蟺ãš2çªç®ã®å€è§åœ¢ã®å蟺ã亀差ããã亀差ç¹ãæžã蟌ã¿ãããã«å¥ã®å€è§åœ¢ã«å±ããç¹ã確èªããŸãããããè¯ãé床ãéæããããã«ãã¢ã«ãŽãªãºã ã«åŸã£ãŠäº€å·®ããŸãO`RourkeïŒã¢ã«ãŽãªãºã ã®å
ã®èª¬æ-
[3] ïŒã
ãŸãããã®èª¬æã®ãªãã·ã§ã³ã®1ã€ã¯
algolist.ruã«ãããŸãã ç§ãã¡ã®å Žåãå®è£
ã¯ãããã€ãã®è£è¶³çãªã¢ã€ãã¢ãšãšãã«ãæ¬
[1] ïŒpã334ïŒã®ã¢ã«ãŽãªãºã ã®èª¬æã«åºã¥ããŠããŸãã ãã®å®è£
ã§
㯠ãããªãŽã³
ã«å
±éã®èŸºã ããå ŽåïŒæ¬
[1]ã«èšèŒãããŠããããã«ããã®å Žåã¯å¥éèæ
®ããå¿
èŠ
ããããŸãïŒãèæ
®ããŠããŸããã ãå
±éã®é ç¹ãæã€å Žåã¯æ£ããæ©èœããŸãã
以äžã®ãã¿ãã¬ã®äžã«ãã¢ã«ãŽãªãºã ã®äžè¬çãªèª¬æããããŸãã
O'Rourkeã¢ã«ãŽãªãºã ãç¥ãããïŒã¢ã«ãŽãªãºã ïŒè¿œå ã®èª¬æã«ã€ããŠã¯ãäžèšã®ãœãŒã¹ãåç
§ããŠãã ããïŒïŒ
- æ倧å埩åæ°ãçµéãããŸã§ïŒ2 *ïŒn + mïŒä»¥äžã§ããããšã蚌æãããŸãïŒã次ã®æé ãå®è¡ããŸãã
aïŒã 1çªç®ãš2çªç®ã®ããªãŽã³ã®çŸåšã®ãšããžãååŸããŸãã
bïŒ ãããã亀差ããå Žå-亀差ç¹ããã®ç¹ãèæ
®ããŸãïŒäº€å·®ç¹ããªãŽã³ã«è¿œå ããã ãã§ãè¿œå ãç¡èŠããå ŽåããããŸããããã§ãªãå Žå-æåã®äº€å·®ç¹ã§ãªãå ŽåïŒã€ãŸãããã§ã«åãäœã£ãŠããïŒã亀差ç¹ããã以å€ã®å Žåã¯ã¢ã«ãŽãªãºã ãçµäºããŸã-亀差ç¹ã«å°éããŸããã
cïŒã 次ã«ïŒçŸåšã®ãšããžã亀差ãããã©ããã«é¢ä¿ãªãïŒã ã¢ãŒã·ã§ã³é¢æ°ãåŒã³åºããŸãããã®é¢æ°ã¯ãæåã®ïŒãŸãã¯2çªç®ã®ïŒããªãŽã³ã®ãŠã£ã³ããŠã1ãšããžåæ¹ã«ç§»åãã亀差ããªãŽã³ã«é ç¹ãè¿œå ã§ããããã«ããŸãã äž»ãªè¡åã¯ã éåã§æ£ç¢ºã«è¡ãããŸãã - 亀差ç¹ããªãã£ãå ŽåãããããªãŽã³ãå¥ã®ããªãŽã³ã®å
åŽã«ãããã©ãããå€æããŸãïŒãã€ã³ããOã®åŸãã®åžããªãŽã³ã«å±ããŠãããã©ããã確èªããŸãïŒlogïŒããªãŽã³ã®é ç¹ã®æ°ïŒïŒ- [1] ã59-60ããŒãžïŒã ããã§ããã°ããããè¿ããããã§ãªããã°ç©ºã®äº€å·®ç¹ãè¿ããŸãã
ã¢ãŒã·ã§ã³é¢æ°ã¯ããŸããŸãªæ¹æ³ã§å®è£
ã§ãããšããžã移åããŠããããªãŽã³ã®çªå·ïŒã©ãã«ïŒãè¿ããŸãã æŠå¿µçã«ã圌女ã¯èªåã®äžã§3ã€ã®ããšãè¡ããŸãã
-
ã±ãŒã¹çªå·ã決å®
ããŸã -æåã®ããªãŽã³ã®ãšããžãš2çªç®ã®ããªãŽã³ã®ãšããžã®çŸåšã®çžå¯Ÿäœçœ®ã ããã
ã¢ã«ãŽãªãºã ã®äž»èŠãªã¢ã€ãã¢ã§ã -äºãã«å¯Ÿãããšããžã®äœçœ®ã®ã±ãŒã¹ã衚瀺ããŸãã ãããã®4ã€ã®äœçœ®ã¯ãã¹ãŠ
[1]ã§è©³ãã説æãããŠããŸãããå®è£
ã§ã¯ãå¹³é¢äžã®ãã¯ãã«ã®ã¹ãã¥ãŒç©ã䜿çšããŠäœçœ®ã決å®ãããŸãã
-çŸåšã©ã®ããªãŽã³ã®ã©ã®ãšããžããå
åŽãã«ããããã€ãŸããä»ã®ãšããžã®ãå·ŠåŽãã«ãããã決å®ããŸããããã¯æãã®è£œåã§ããã§ãã¯ãããŸãïŒçµç¹ããå·ŠåŽãã«ããå Žåã¯ãå·ŠåŽãã«ãããŸãïŒã
-ãšããžã®1ã€ã®çŸåšã®ç«¯ã亀差ããªãŽã³ã«æžã蟌ããã©ããã決å®ããŸãã ãããç®çã®ã±ãŒã¹ãšå
åŽã®ãªãã«å¯Ÿå¿ããå Žåãè¿œå ããå¿
èŠããããŸãã
ããŠãSplashGeom©ã§ã¯æ¬¡ã®ããã«ãªããŸãã
ããªãŽã³äº€å·®ã³ãŒã ãã®èª¬æãšã³ãŒãã圹ã«ç«ã€ããšãé¡ã£ãŠããŸãã
åå¹³é¢ã®äº€å·®ç¹
ãããã£ãŠãåå¹³é¢ã®äº€å·®ç¹ãæ§ç¯ããããã«å¿
èŠãªãã®ã¯ãã¹ãŠæã£ãŠããŸãã ããŠãããããã£ãŠã¿ãŸãããããããŠããã ãã§ãªããè³¢ãæ¹æ³ã§-亀差ããåå¹³é¢ã®æäœã®çµåæ§ã®ããã«ãä»»æã®é åºã§ãããã亀差ãããããšãã§ããŸããã€ãŸãã2ã€ã®å¹³é¢ã亀差ãããããã«2ã€ã®å¹³é¢ã亀差ããã次ã«äº€å·®ç¹ã亀差ãããŸããããã¯ãã¹ãŠãåå¥ã«æšªæãããããæ©ããªã£ãŠããŸãã
ãã®ããã
ååž°ã䜿çšããããšããå§ãããŸã
ïŒæ°åã¯ããã«æªããªããŸããïŒ -ããã§ã®äœæ¥ã¯ç解ã§ããŸãã
ã³ãŒãã衚瀺 Convex2D GetHalfPlanesIntersection(const Point2D& cur_point, const vector<Line2D>& halfplanes, const Rectangle& border_box) { if (halfplanes.size() == 1) { Convex2D cur_convex(border_box.GetIntersectionalConvex2D(cur_point, halfplanes[0])); return cur_convex; } else { int middle = halfplanes.size() >> 1; vector<Line2D> first_half(halfplanes.begin(), halfplanes.begin() + middle); vector<Line2D> second_half(halfplanes.begin() + middle, halfplanes.end()); Convex2D first_convex(GetHalfPlanesIntersection(cur_point, first_half, border_box)); Convex2D second_convex(GetHalfPlanesIntersection(cur_point, second_half, border_box)); return first_convex.GetIntersectionalConvex(second_convex); } }
è»è·¡ããã£ãŒãã«è¿œå ãã
ããã§ãæå®ãããã€ã³ãã®ãããã€ããªãŽã³ãã§ããŸãããããããã€ã¢ã°ã©ã ã«è¿œå ããŸãã é åãä»»æã®é åºã§ååŸãããããã¯äºãã«é¢é£ããŠããªããããããã«ã¯ç¹ã«åé¡ã¯ãããŸããïŒFortuneã¢ã«ãŽãªãºã ã®å®è£
ãšã¯ç°ãªãããšããžãžã®ãã€ã³ã¿ãŒã§é£æ¥ããè»è·¡ã«ç§»åã§ããŸãïŒã
ããã§ããããã€å³ãäœæããæ¹æ³ãåŠã³ãŸãã

ãããã¯è»è·¡ã®ãã¯ãã«ïŒãªã¹ãïŒã®åœ¢ãããŠããŸãã ãã®ãœãªã¥ãŒã·ã§ã³ã®æ¬ ç¹ã¯ãé£äººã«é¢ããæ
å ±ãååŸã§ããªãããšã§ãïŒããããããã®æ¬ ç¹ã¯å®è£
ãæ¹åããããšã§è§£æ¶ã§ããŸãïŒã
ããã«å€ãã®æ
å ±ã
RSEL ïŒ
DCEL ïŒããååŸã§ããŸãã ãã®æ§é ã¯ãFortuneã®ã¢ã«ãŽãªãºã ã§äœ¿çšãããŸãã
次ã«ãFortuneã®ã¢ã«ãŽãªãºã ããçŽç·ãšã海岞ç·ãã䜿çšããŠèª¬æããŸã
ïŒæ°Žçãšæ°Žæ³³ãã³ããæºåããŸã-ããŒãã«è¡ããŸãïŒ ã ç§ã®æèŠã§ã¯ãããã¯ãããã€å³ã®æ§ç¯ãå®è£
ãã
å
ã® ãé床ãã§æ§ç¯ãããå Žåã«æãåãå
¥ãããããªãã·ã§ã³ã§ã

ã
ã®ãããã€å³ãæ§ç¯ããããã®ãã©ãŒãã¥ã³ã®ã¢ã«ãŽãªãºã 
1987幎ãã¹ãã£ãŒããã©ãŒãã¥ã³ã¯ã

ã ãã¡ãããããã¯ãã®ãããªæŒžè¿ç·ãæã€å¯äžã®æ§ç¯ã¢ã«ãŽãªãºã ã§ã¯ãããŸããããéåžžã«ç解å¯èœã§ãããå®è£
ããã®ã¯ããã»ã©é£ãããããŸããïŒããã«ãéåžžã«çŸãã
æ°åŠçã§ãïŒ ïŒãç§ã¯ãããéžã³ãŸããã
ãã©ãŒãã¥ã³ã¢ã«ãŽãªãºã ã®è³æã¯ã
ãã¡ã ã
ãã¡ã ã
ãã¡ã ã
ãã¡ãã§
ã芧ããã ããŸã ã
ãšããã§ã
Habrahabrã®èšäºã¯ãã§ã«ãã®ã¢ã«ãŽãªãºã ã®æ€èšã«å°å¿µããŠããŸãã
ãããã£ãŠãã¢ã«ãŽãªãºã ã®äž»ãªã¢ã€ãã¢ã¯ããããã
ã¹ã€ãŒãã©ã€ã³ã§ãã ç¹å®ã®ãªããžã§ã¯ãã»ããã«æ²¿ã£ãçŽç·ã®åããç°¡åã«ã·ãã¥ã¬ãŒãã§ãããããèšç®ãžãªã¡ããªã®å€ãã®ã¢ã«ãŽãªãºã ã§äœ¿çšãããŸãïŒããšãã°ãnåã®ã»ã°ã¡ã³ãã亀差ãããã¢ã«ãŽãªãºã ã§ãã¹ã€ãŒãã©ã€ã³ã䜿çšãããŸãïŒã
ã©ã®ããã«ãäœãããã®ãã«ã€ããŠè©±ãå§ããåã«ãã¹ã€ãŒãã©ã€ã³ãã©ã®ããã«åãããèŠãŠã¿ãŸãããïŒ
ãããã ïŒ
ããã§ããã å®è£
ã§ã¯ããã¹ãŠãã»ãŒåãã§ãRFPã®ã¿ãéåžžãå·Šããå³ã§ã¯ãªãäžããäžã«ç§»åããŸããå®éããã¹ãŠã¯ããã»ã©æ»ããã§ã¯ãªããã€ãã³ãããšã«çºçããŸãïŒä»¥äžãåç
§ïŒã
ã¢ã«ãŽãªãºã ã®æ¬è³ª
nåã®ãµã€ãïŒå¹³é¢äžã®ãã€ã³ãïŒããããŸãã ãäžããäžãžããã€ãŸãæ倧ã®çžŠåº§æšãæã€ãµã€ãããå°ãã座æšãæã€ãµã€ããžïŒæ£ç¢ºã«ã¯ã€ãã³ãããã€ãã³ããžïŒã«ç§»åããã¹ã€ãŒãã©ã€ã³ããããŸãã ããã«æ³šæããå¿
èŠãããã®ã¯ãå³ã®æ§ç¯ã«åœ±é¿ãäžããã®ã¯ã
ããé«ããµã€ã
ãŸãã¯ææ¬çãªã©ã€ã³
äžã«ãããµã€ã
ã®ã¿ ã§ã ã
ZPã次ã®ãµã€ãïŒ
ãã€ã³ãã€ãã³ãïŒã«å°éãããšãæ°ããæŸç©ç·ïŒã¢ãŒãïŒãäœæãã
ãŸãããã®ãµã€ãã®
çŠç¹ã¯ ã
ãã£ã¬ã¯ã¿ãŒã§ãïŒ
ãŠã£ãããã£ã¢ã®æŸç©ç·ã«ã€ã㊠ïŒã ãã®æŸç©ç·ã¯å¹³é¢ã2ã€ã®éšåã«åå²ããŸããæŸç©ç·ã®ãå
åŽãé åã¯ãµã€ãã«è¿ããã€ã³ãã«å¯Ÿå¿ãããå€åŽãé åã¯æåŒç·ã«è¿ããã€ã³ãã«å¯Ÿå¿ããæŸç©ç·äžã«ãããã€ã³ãã¯ãµã€ãããã³GPããçè·é¢ã«ãããŸãã æŸç©ç·ã¯ããµã€ããžã®RFPã®äœçœ®ã«å¿ããŠå€åããŸããRFPããµã€ãããããã«äžããã°äžããã»ã©ãæŸç©ç·ã¯æ¡å€§ããŸãããæåã¯äžè¬ã«ã»ã°ã¡ã³ãã§ãïŒãäžåããïŒã
æŸç©ç·ãæ¡å€§ãããšã2ã€ã®
ãã¬ãŒã¯ãã€ã³ãããããŸããä»ã®æŸç©ç·ãšã®äº€ç¹ïŒã海岞ç·ãïŒã§ãã ã海岞ç·ãã«ã¯ã亀差ç¹ã®1ã€ã®ãã€ã³ãããä»ã®ãã€ã³ããŸã§ã®æŸç©ç·ç¶ã®å匧ãæ ŒçŽãããŠãããããããŒãã©ã€ã³ãå€æããŸãã å®éããã®ã¢ã«ãŽãªãºã ã§ã¯ããã®ã海岞ç·ãã®åããã·ãã¥ã¬ãŒãããŸãã ãããã®åããã¬ãŒã¯ãã€ã³ãã¯ãããã€ã»ã«ã®ãšããžã«æ²¿ã£ãŠæ£ç¢ºã«ç§»åããããã§ãïŒçµå±ãã³ã³ãããŒã«ãã€ã³ãã¯ãããã®æŸç©ç·ã察å¿ããäž¡æ¹ã®ãµã€ããããããã«ã¯RFPãããçè·é¢ã§ããããšãããããŸãïŒã
ãããŠã¡ããã©ãã®ç¬éãç°ãªãæŸç©ç·ã®1ã€ã«ãã2ã€ã®å¶åŸ¡ç¹ããäŒãããšããã€ãŸã1ã€ã«å€ãããã®ããã«ããã®ç¹ããããã€ã»ã«ã®é ç¹ã«ãªããŸã
ïŒåã€ãã³ããçºçããŸãïŒããã®æç¹ã§ããããã®2ã€ã®ãã€ã³ãã®éã«ãã£ãå匧-ã厩å£ãããã海岞ç·ãããåé€ãããŸãã 次ã«ããã®ãã€ã³ããåã®å¯Ÿå¿ãããã€ã³ãã«æ¥ç¶ãããããã€ã»ã«ã®ãšããžãååŸããŸãã
ã¢ã«ãŽãªãºã
ãã®ãããã¹ã€ãŒãã©ã€ã³ãäžã«ç§»åãããšã2
çš®é¡ã®ã€ãã³ããçºçããŸã ã
ãã€ã³ãã€ãã³ã
ãã€ã³ãã®ã€ãã³ãã¯ããµã€ãã®1ã€ã§ã®POã®ãããã§ãããã®ããããã®ãµã€ãã«å¯Ÿå¿ããæ°ããæŸç©ç·ãäœæãã2ã€ã®
ãã¬ãŒã¯ãã€ã³ããè¿œå ããŸãïŒå®éãæåã¯1ã€ã§ãããã¢ãŒããæ¡åŒµãããšããã§ã«2ã€ãããŸãïŒ-ãã®äº€å·®ç¹æµ·å²žç·ã®ããæŸç©ç·ïŒã€ãŸããæ¢åã®æŸç©ç·ã®åé¢ïŒã ãã®ã¢ã«ãŽãªãºã ã§ã¯ãæŸç©ç·ïŒãŸãã¯ãããã海岞ç·ãã«å±ããéšå-
ã¢ãŒã ïŒã¯ããã€ã³ãã€ãã³ãã®å Žåã«
ã®ã¿ ã海岞ç·ã«æ¿å
¥ããããŸããã€ãŸããæ°ããã¢ãŒãã¯
ãã€ã³ãã€ãã³ãã®åŠçæã«ã®ã¿è¡šç€ºãããŸãã
ãšããã§ã次ã®åçã¯ããªããã®ãããªãæŸç©ç·ã®ããããã®é¢é£ãã海岞ç·ããšåŒã°ããã®ãã瀺ããŠããŸãã


ãµãŒã¯ã«ã€ãã³ã
ãµãŒã¯ã«ã€ãã³ãã¯ã1ã€ã®ã¢ãŒãã®åé€ã«äŒŽããããã€ã»ã«ã®æ°ããé ç¹ã®åºçŸã§ããããã§ã®ãã€ã¢ã°ã©ã ã®æ°ããé ç¹ã®åºçŸã¯ãã¢ãŒãã®å·Šå³ã®ç¹ãšæ°ããé ç¹ã®ã¢ãããŒãã«ãããå·Šãäžå€®ãå³ãäžå€®ã®ã厩å£ãã®3ã€ã®ã¢ãŒãããã£ãããšãæå³ããããã§ããããã€å³ã ãã®ã¢ã«ãŽãªãºã ã§ã¯ãåã€ãã³ããçºçããå Žåã«
ã®ã¿æŸç©ç·ïŒã¢ãŒãïŒãã海岞ç·ãããåé€ãããŸããã€ãŸããã¢ãŒãã¯
åã€ãã³ããåŠçãããšãã«ã®ã¿åé€ã§ããŸãã
ãããã€å³ã®é ç¹ã¯åžžã«å³ã®æ£ç¢ºã«3ã€ã®ãšããžã®äº€ç¹ã«ãããšããå®çããããå³ã®é ç¹ã¯3ã€ã®ãµã€ããéãåã®äžå¿ã§ããããã®ç¹ããã¹ã€ãŒãç·ãŸã§ã®è·é¢ãåãã§ãããšè¿°ã¹ãŠããŸããã®åã®ååŸã«çããïŒããã¯ã海岞ç·ãäžã«ãããã€ã³ãã®ããããã£ã§ãïŒã ããã¯ã3ã€ã®ãµã€ããééãã
åã®æäžç¹ãã¹ã€ãŒãã©ã€ã³ã®
äžãŸãã¯ã¹ã€ãŒãã©ã€ã³
äžã«ãããšãã«ããã®æäžç¹ã®åã€ãã³ããã€ãã³ããã¥ãŒã«ããã·ã¥ããããã§ãããããã€å³ã
ã€ãã³ãïŒãã€ã³ããŸãã¯ãµãŒã¯ã«ïŒã§ã¯ã1ã€ã®ç¹å®ã®ã¢ãŒããæ¥ç¶ãããŠãã
ããšãéèŠã§ãã ããã¯ãã€ãã³ããåŠçãããšãã«åœ¹ç«ã¡ãŸãã ãŸããæéå
ã«
RSDS ïŒ
DCEL ïŒã«ãšããžãè¿œå ããå¿
èŠãããããšãå¿ããŠã¯ãªããŸããïŒæ§é å
ã®ãã€ã³ã1ã以äžãåç
§ïŒããããã£ãŠãã¢ãŒããšãšããžã®é¢ä¿ãç解ããå¿
èŠããããŸãã
ãããã£ãŠãç·ã®åãã¯é¢æ£çã§ãã
ãµã€ãäžã®ä»»æã®ç¬éã
ãŸã㯠3ã€ã®ãµã€ããéã
åã®äžéšã®ç·ã§ ããã®äžå¿ã¯ãããã€å³ã®æ°ããé ç¹ã§ãã çŽ æŽãããã
äžè¬çãªã¢ã«ãŽãªãºã ïŒ
- æåã«ãã€ã³ãã€ãã³ãã§åæåããã€ãã³ãã®ãã¥ãŒïŒåªå
é äœä»ãïŒãäœæããŸã-ãã®ãµã€ãã®ã»ããïŒçµå±ããã€ã³ãã€ãã³ãã¯åãµã€ãã«å¯Ÿå¿ããŸãïŒ;
- ãã¥ãŒã空ã§ã¯ãªãéïŒ
aïŒã ããããã€ãã³ããåããŸãã
bïŒ ããããã€ã³ãã€ãã³ãã®å Žåããã€ã³ãã€ãã³ããåŠçããŸãã
cïŒã ããããµãŒã¯ã«ã€ãã³ãã®å ŽåããµãŒã¯ã«ã€ãã³ããåŠçããŸãã
- æ®ãã®ãã¹ãŠã®ãšããžãä»äžããŸãïŒborder_boxã䜿çšïŒã
å®è£
Fortuneã¢ã«ãŽãªãºã ã®å®è£
ã«ã€ããŠã¯ãå¥ã®èšäºã§è©³çŽ°ã«æ€èšããŸãããããã§ã¯ããã®ç解ã«åœ¹ç«ã€å¯èœæ§ã®ããããã€ãã®éçºã«ã€ããŠèª¬æããŸãã
å¿
èŠãªæ§é
ãã®ã¢ã«ãŽãªãºã ãå®è£
ããã«ã¯ãããã€ãã®æ§é ïŒã¯ã©ã¹ïŒãå¿
èŠã§ãã
- RSDS ïŒ DCEL ïŒ-ãã§ã«èŠã€ãã£ããããã€å³ã®ãšããžãä¿åããããã®ãªã¹ãã
- ã€ãã³ãã®ããåªå
ãã¥ãŒã
- ãã€ããªããªãŒïŒBeachSearchTreeããããŸãïŒ-ã海岞ç·ããä¿åãããã-æŸç©ç·ãšãã€ã³ãã®çŸåšã®äœçœ®ã ãã®ããªãŒã¯ãã©ã³ã¹ãåããŠããããšã«æ³šæããŠãã ãããããŒãã«ã¯æ£ç¢ºã«2人ã®æ¯åããŸãã¯ãŒãïŒèïŒããããŸãã ãã®æ§é ã®è©³çŽ°ã«ã€ããŠã¯ãããšãã°ã Habréã®ãã®èšäºãåç
§ããŠãã ãã ïŒ ãã®åœã§ã¯å°ãç°ãªã£ãŠè¡šç€ºãããŸãïŒã
ãã®ãããªããŒã¿æ§é ã䜿çšããŠãäžè¬çãªã¢ã«ãŽãªãºã ã®å®è£
ãäœæã§ããŸãã
ã³ãŒãã衚瀺 VoronoiDiagram2D VoronoiDiagram2D::MakeVoronoiDiagram2DFortune(const vector<Point2D>& points, const Rectangle& border_box) { priority_queue<Event> events_queue(points.begin(), points.end()); shared_ptr<Event> cur_event; BeachSearchTree beach_line; DCEL edges; while (!events_queue.empty()) { cur_event = make_shared<Event>(events_queue.top()); shared_ptr<const PointEvent> is_point_event(dynamic_cast<const PointEvent *>(cur_event.get())); if (is_point_event) { events_queue.pop(); beach_line.HandlePointEvent(*is_point_event, border_box, events_queue, edges); } else { shared_ptr<const CircleEvent> is_circle_event(dynamic_cast<const CircleEvent *>(cur_event.get())); events_queue.pop(); beach_line.HandleCircleEvent(*is_circle_event, border_box, events_queue, edges); } } edges.Finish(border_box); this->dcel_ = edges; return *this; }
HandlePointEventïŒïŒãšHandleCircleEventïŒïŒã®ãã¹ãŠã®ããžãã¯ãšè€éãã¯ãå¥ã®èšäºã®äž»é¡ã«ãªããŸãã以éãå®è£
ã«åœ¹ç«ã€ããã€ãã®è£å©é¢æ°ã瀺ããŸãã
ãã«ããŒé¢æ°
æŸç©ç·ã®äº€å·®ç¹ïŒã¢ãŒãïŒ
RFPã®äœçœ®ã«å¿ããŠã2ã€ã®æŸç©ç·ïŒã¢ãŒãïŒã®äº€å·®ç¹ãååŸã§ããå¿
èŠããããŸãã ç¹x 'ããã³y'ã«çŠç¹ãåœãŠãæŸç©ç·ã®æ¹çšåŒãšãy軞ã«æ²¿ã£ãäœçœ®ãlã§ããçŽæ¥è¡åã¯ã次ã®æ¹çšåŒã§äžããããŸãïŒå°åºå¯èœïŒã

ãšããã§ããã©ã±ããã®åã®éšå
ã¯ãã®æŸç©ç·ã®
çŠç¹ãã©ã¡ãŒã¿ã§ã ã ãããããæŸç©ç·æ¹çšåŒã®å¯Ÿå¿ããä¿æ°ããåŒãåºãããç°¡åãªæ¹æ³ã§2ã€ã®éç·åœ¢æ¹çšåŒã解ãããšãã§ããŸããäžæ¹ããä»æ¹ãæžç®ããæåã«èŠã€ãã£ãæ ¹ã代å
¥ããŠã2ã€ã®ãã€ã³ããååŸããŸãã æãé«ããã€ã³ãã¯ã海岞ç·ãã®èåŸã«ãããããäœããã€ã³ãïŒã€ãŸãã瞊座æšãå°ãããã€ã³ãïŒã«èå³ããããŸãã 説æãããã¢ã¯ã·ã§ã³ã¯ã次ã®ã³ãŒãã«åæ ãããŸãã
ãã©ããŒã«äº€å·®ç¹ã³ãŒã pair<Point2D, Point2D> Arch::GetIntersection(const Arch& second_arch, double line_pos) const { pair<Point2D, Point2D> intersect_points; double p1 = 2 * (line_pos - this->focus_->y); double p2 = 2 * (line_pos - second_arch.focus_->y);
3ç¹ã§åãæã
åã€ãã³ããåŠçãããšãã3ã€ã®ã¢ãŒãïŒãµã€ãïŒã®çŠç¹ããæ§æãããåã®äžå¿ãšæäžç¹ã決å®ããå¿
èŠããããŸãã3ç¹ã䜿çšããŠåãæ§ç¯ããããã®ããã€ãã®åæã¢ã«ãŽãªãºã ããããŸãïŒæ§ç¯ã«ããããã®äžå¿ãšååŸãååŸããããšãæå³ããŸãïŒãç§ãã¡ã®ããã°ã©ã ã§ã¯ãããè¡ãããŸãïŒã¢ã«ãŽãªãºã ã®ãããã§ïŒ-æåã®2ç¹ãš2çªç®ã®2ç¹ãã»ã°ã¡ã³ãã§æ¥ç¶ããŸããäžå¿ã¯äžå€®ã®åç·ã®äº€ç¹ã«ãããååŸã¯äžå¿ãã3ç¹ã®ãããããŸã§ã®è·é¢ã§ããéããŠçŸããïŒ3ã€ã®ãã€ã³ãã§å建èšã³ãŒãã衚瀺ãã Circle::Circle(const Point2D& p1, const Point2D& p2, const Point2D& p3) { Segment2D first_segment(p1, p2); Segment2D second_segment(p2, p3); Line2D first_perpendicular(first_segment.GetCenter(), first_segment.NormalVec()); Line2D second_perpendicular(second_segment.GetCenter(), second_segment.NormalVec()); center_ = first_perpendicular.GetIntersection(second_perpendicular); little_haxis_ = big_haxis_ = center_.l2_distance(p1); }
ãã€ã³ãã€ãã³ãåŠç
ãã€ã³ãã€ãã³ãã¯ãPointEventããã¥ãŒããåãåºãããšãã§ããäœãå
¥ã£ãŠããã®ïŒãã®ã€ãã³ããé¢é£ä»ããããŠãããµã€ãã®ã¿ããããŸãããããåŠçãããšãã«äœãããŸããïŒ ã海岞ç·ãã«æ°ããã¢ãŒããè¿œå ããããªãŒã®ãå¿
èŠã«å¿ããŠããã¹ãŠã®æ¥ç¶ãèšå®ãã3ã€ã®å¯èœãªã±ãŒã¹ã®ããããã§ãµãŒã¯ã«ã€ãã³ããçºçãããã©ããã確èªããŸããæ°ãããµã€ããåå ã§ãããã¹ãŠã®ã±ãŒã¹ã確èªããå¿
èŠããããŸããã¢ãŒããè¿œå ãããšãã¯ã©ãããŸããïŒãã€ããªã®ã海岞ç·ãããªãŒïŒx座æšïŒã§ãã®å Žæãæ¢ãããããæ¿å
¥ããŸãã貌ãä»ãããäœãããŸããïŒæ°ããã¢ãŒãã2ã€ã®ãã€ã³ãã§äº€å·®ããã¢ãŒããžã®ãã€ã³ã¿ãŒãèŠã€ããŸããïŒäº€å·®ãã€ã³ããã³ã³ãããŒã«ãã€ã³ãã®1ã€ã«æ£ç¢ºã«åœããå Žåã¯åå¥ã«èæ
®ãããŸã-亀差ã¯2ã€ã®æŸç©ç·-å·Šå³ã«ãããŸãïŒãã€ãŸãããå£ããããã®ã¢ãŒããåãã代ããã«5ã€ã®ããŒãïŒ1ã5ãã¯ãïŒãæ¿å
¥ããŸã-arch1ãbp1ãarch2ãbp2ãarch3ã Arch1ã¯ãæ°ããã¢ãŒãã亀差ããã¢ãŒãã®å·ŠåŽéšåã§ããã€ãŸããå·Šã®ãã¬ãŒã¯ãã€ã³ãã®å·Šã«ããããŒã¹ãbp1ã¯å·Šã®ãã¬ãŒã¯ãã€ã³ãïŒæ°ããã¢ãŒãã®å·Šã®äº€å·®ïŒãarch2ã¯æ°ããã¢ãŒããbp2ã¯å³ã®ãã¬ãŒã¯ãã€ã³ãã§ãïŒå³æ°ããã¢ãŒãã®äº€å·®ç¹ïŒãarch3ã¯ãæ°ããã¢ãŒãã亀差ããã¢ãŒãã®æ£ããéšåã§ãããã€ã³ãã€ãã³ãããããã€å³ã®æ°ãããšããžïŒãŸãã¯ããšããžãããå ŽåããããŸãïŒãçæããããšã¯æ³šç®ã«å€ããŸããæ°ãã海岞ç·ãã海岞ç·ãã«è¿œå ããããã®å¯èœãªãªãã·ã§ã³ã®1ã€ã¯ãHabréã®ãã®èšäºã§èª¬æãããŠããŸãããµãŒã¯ã«ã€ãã³ããã³ããªã³ã°
ãµãŒã¯ã«ã€ãã³ãã¯ããã¥ãŒããCircleEventãåŒãåºãããšãã§ããäœãå
¥ã£ãŠããã®ïŒãã®äžã«ãã€ã³ãããããŸã-ããã¯ã3ã€ã®ãµã€ããééããç¹å®ã®åã®æäœãã€ã³ãã§ãããåé€ãã¹ãã¢ãŒãã§ããããªãŒã«ã¯2ã€ã®ã³ã³ãããŒã«ãã€ã³ããããã圌女èªèº«ãã³ã³ãããŒã«ãã€ã³ãã¯æçµçã«1ã€ã«ãªããŸãããããŠãã¢ãŒããããªãŒããæ
éã«åé€ãããã¹ãŠã®ã芪åé¢ä¿ããåæ§ç¯ããå¿
èŠããããŸããå®éããã®ã€ãã³ããåŠçãããšãããªãŒå
ã®3ã€ã®ããŒãã1ã€ã«çœ®ãæããããŸãïŒ2ã€ã®ãã¬ãŒã¯ãã€ã³ããš1ã€ã®ãã¬ãŒã¯ãã€ã³ããæã€ã¢ãŒãïŒããµãŒã¯ã«ã€ãã³ãããããã€å³ã®2ã€ã®ãšããžãå®äºããããšãã€ãŸãããã®ã€ãã³ããåŠçããããšãšããžãçµäºããããšã«æ³šæããŠãã ããããŸããã€ãã³ãåŠçã®éèŠãªéšåã¯ããšããžã®æé·ãç£èŠãããããããªã¹ãã«è¿œå ããŠãšããžãå®æãããæ¹æ³ã§ããã€ãŸããæçµçã«ã¯ãã¹ãŠãçµäºãããæéã§ããããå¢çã«çœ®ãããŸãé·æ¹åœ¢ãçµæã®å°ããªåæ
åºåã§ãã§ã«RSDSïŒDCELïŒãåãåãã®ã§ãååãªæ
å ±ãååŸã§ããŸã-察å¿ãããµã€ããç¥ã£ãŠããåãšããžã«ã€ããŠããã®ãšããžã®ããã€ã³ããååŸãããã®ãµã€ããèŠã€ããŠãåºæ¥äžãã-é£äººãèªèããŸãããªã¹ãã«ããã¹ãŠã®ãµã€ãã®é£äººã®ãªã¹ããäœæã§ããŸããããã¯ãã§ã«éæãããŠããŸãã
+

=

ïŒ
ããã«ããšããžã«ããŒãããµã€ããããå Žåããå¢çãµã€ãããã€ãŸããç¡éãã®è»è·¡ãæã€ãµã€ãã«ããŸããããŒãããããããã«ããããã€ã³ãã®åæã»ããã®åžå
ãæ§ç¯ããããšãã§ããŸã;
æåŸã«ãçŽ æŽãããããŸããäžè¬ã«ãRSDSã¯æ¬è³ªçã«ã°ã©ããªã®ã§ãå€ãã®ã°ã©ãã¢ã«ãŽãªãºã ã§ãã®ãªã¹ããåŒãç¶ã䜿çšã§ããŸããã®ãããã€å³ãäœæããããã®ååž°ã¢ã«ãŽãªãºã 
ãã®ã¢ã«ãŽãªãºã ã¯æ¬[1]ïŒpã260ïŒã§æäŸãããŠããŸããããã§ã¯ãFortuneã¢ã«ãŽãªãºã ãšãã䌌ãŠããŸããããã®ãªãã·ã§ã³ãå®è£
ããªãã£ããããæ§ç¯ã¢ã«ãŽãªãºã ã®ã¿ãæäŸããŸããã¢ã«ãŽãªãºã
- Sãµã€ãã®ã»ããå
šäœã2ã€ã®ã»ãŒçããéšåïŒå¥æ°åã®ãã€ã³ããããå ŽåããããŸãïŒS 1ãšS 2ã«åå²ããŸãã
- S 1ããã³S 2ã®ãããã€å³ãååž°çã«äœæããŸãã
- çµæã®å³ãçµã¿åãããŠãSã®å³ãååŸããŸãã
ã¢ã«ãŽãªãºã ã®äžè¬çãªèª¬æã¯è€éã§ã¯ãããŸããããã¢ã«ãŽãªãºã ã«ã¯ç¬èªã®åŸ®åŠãªç¹ããããŸãã詳现ã«ã€ããŠã¯ãæå®ãããæ¬ãåç
§ããŠãã ãããçšé
ãããã€å³ã®ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã®å®å
šãªãªã¹ãã¯ããã«ãããŸããç§ã«ãšã£ãŠæãèå³æ·±ããšæããããã®ãããã€ã玹ä»ããŸãïŒå€ãã®æ
å ±ã¯[1]ããååŸããŸããïŒãããã°ã©ãã³ã°ãã²ãŒã éçºãå°å³äœæ
èšç®å¹ŸäœåŠãããã€å³ã§ã®åé¡è§£æ±ºããã¹ãŠã®å¿
èŠãªæåã®ããè¿æ¥ãã€ã³ãããããããããã¯ã®ã¿ã¹ã¯ã§ç¹å¥è³ãã£ãŒãäžãããã¹ãŠã®æè¿å ïŒ..ãããããããªã倧é³éã®é³æ¥œãå«ãŸãããã®ïŒããåæ§ã®æ¹æ³ãããã¯ããç°¡åã§ã¯ãããŸããã®ã§ã ïŒ[1]ïŒããããã€å³ã䜿çšããŠãèåŸã«åžå
ãæ§ç¯ã§ã
ãŸãïŒãã¬ã€ããšããžãèŠãŠãããããå±ãããµã€ããèŠã€ããããããè¹äœã«å«ããŸãïŒããããã€å³ãšããããŒäžè§åœ¢åå²ã®éã«ãéèŠãªé¢ä¿ãããã次ã
ã«æ§ç¯ããããšãã§ããŸã
圌ãã¯ãäºãã«ãã¥ã¢ã«ãªã®ã§ïŒ -ãšããžãé£æ¥ãµã€ãã¯ãæçµçã«ããããŒäžè§åœ¢åå²ååŸæ¥ç¶vikikonspektyãïŒãã²ãŒã éçºã§ãããã€å³ã䜿çšããäŸã¯ãããšãã°ãã®èšäºã«ãããŸããããã§ã¯ãã²ãŒã ãšã³ãžã³ã®ããã²ãŒã·ã§ã³ã·ã¹ãã ã¯å³ã«åºã¥ããŠããŸããããŸããŸãªãžãªãã±ãŒã·ã§ã³ãœãããŠã§ã¢ããããã€å³ã䜿çšããå¯èœæ§ããããŸããäœçœ®æ
å ±åç
§ã·ã¹ãã ã¯ãVoronoiãã€ã¢ã°ã©ã ã䜿çšããŠãããšãã°ãå Žæã®ããŸããŸãªæ€çŽ¢ãšåæã®ããã«ãæå¯ãã®é£æååºã決å®ã§ããŸãã
ããã§ã¯ãå°å³äœæã§ã®ãã£ãŒãã®äœ¿çšã«èšåããããšãã§ããŸã-å°åã®å¢çã®æŠèŠãšããããã«åºã¥ãããããªãåæããšã«ãããè²ä»ãã®ãããã€å³ã®å©ããåããŠãäœãã®ååžã瀺ãå°çå³ãæ確ã«ç€ºãããšãã§ããŸããããã«ã¯ãå¿
èŠãªã€ã³ãžã±ãŒã¿ãŒïŒæž©åºŠãªã©ïŒã®æšç§»ã衚瀺ãããŸãããã¡ãããVoronoiãã€ã¢ã°ã©ã ã䜿çšããŠããŸããŸãªãã£ã«ã¿ãŒåçãã³ãã©ãŒãäœæããããçš®ã®ãã¢ã¶ã€ã¯ããäœæã§ããŸããããããããã¯ã¢ããªã±ãŒã·ã§ã³ã®å§ãŸãã«ãããŸããã建ç¯ãšèšèšã«ãããŠ
ãããã€å³ã¯çŸããå³åœ¢ã§ãããäžçš®ã®ã幟äœåŠçãªãŠã§ããã§ããããã人ã
ã建ç¯ãšãã¶ã€ã³ã§ãããã€å³ã䜿çšãããšããã¢ã€ãã¢ãæãã€ããã®ã¯éåžžã«è«ççã§ãããã¹ãŠã®äœæã äŸïŒ




èå€åŠã§
[1]ããïŒèå€åŠã§ã¯ããããã€ããªãŽã³ã䜿çšããŠãå€ä»£æåã®ããŒã«ã®äœ¿çšç¯å²ããããã³ã°ãã競åãã貿æã®äžå¿ã®åœ±é¿ãç 究ããŠããŸãã
çæ
åŠã§ã¯ãäœãçãæ®ãèœåã¯ãé£ç©ãšå
ã®ããã«æŠããªããã°ãªããªãé£äººã®æ°ã«äŸåããŸãã
-ããã¯éåžžã«è«ççã§ãããªããªããéåžžãè¿é£ã®å°åã¯ãçåãã®ããã«æŠãããã§ããã¢ããªã³ã°ãšèªèã«ãããŠ
ãã®èšäºã§ã¯ãVoronoiã®3Dãã€ã¢ã°ã©ã ã«ã€ããŠã¯èª¬æããŸããããç©çåŠããã³ãªããžã§ã¯ãã®3Dã¢ããªã³ã°ã«å€ãã®çšéããããŸãã空éå
ã®ãªããžã§ã¯ãã®ããŸããŸãªçš®é¡ã®ã°ãªããïŒããã³ã¹ã±ã«ãã³ïŒã¯ããããã€å³ã䜿çšããŠæ§ç¯ã§ããŸãïŒãã ããããå€ãã®å ŽåãããããŒäžè§åœ¢åå²ã䜿çšããŸãïŒãããŸããŸãªãªããžã§ã¯ãã®
3Dã¹ãã£ã³ïŒããã³ã³ã³ãã¥ãŒã¿ãŒããžã§ã³ïŒã§ã¯ããããã€å³ãšããããŒäžè§åœ¢åå²ã䜿çšã§ããŸãããŸããããããå·¥åŠïŒé害ç©ãèæ
®ããããããã®åãïŒãšå¯æ¥ã«é¢é£ããŠããŸããçç©åŠãšååŠ
[1]ããïŒè€éãªãããã€å³ãæ§ç¯ãããç 究ã®ããã«ãé»æ°åãšçè·é¢åãçµã¿åããã圱é¿ã¯ãååã®æ§é ã決å®ããã®ã«åœ¹ç«ã¡ãŸãã
ãããã€å³ã®äœ¿çšã«é¢ããå¥ã®èå³æ·±ãèšäºããããŸããèå³æ·±ãäºå®
èªç¶ã¯é©ãã¹ããã®ã§ããããªã³ã®è²ãå®éã«ãããã€å³ã®ããã«èŠããããšãããã£ãããã§ããããã¯èçŒã§èŠãããšãã§ããŸãïŒæ¬¡ã®èŠ³å¯ã泚ç®ã«å€ããŸããããã¯ãæš¹æšã®èã®äžã§ãå³ãèŠãããšãã§ããããšã瀺ããŠããŸããã¡ãªã¿ã«ã1幎ã»ã©åã«ã1ã€ã®äºä»¶ããããã€å³ã«ãé¢é£ä»ããããŸãããããã§ã¯ãæ°ããã¢ã¹ã¯ã¯ãããžã§ã¯ãã®ããŽã«äœ¿çšãããŸããããããŠ-æåŸã«-ãµã€ãå
ã«äžå¿ãæã€åã®æé·ãšãšãã«å³ãã©ã®ããã«è¡šç€ºãããããèŠãããšãã§ãããããªïŒããã§ã¯ãããã€ãã®ç«æºãæã€ç«ã®åºãããšã®é¡äŒŒæ§ãæãããšãã§ããŸããããŠã誰ãèªåã«æãè¿ãããç¥ã£ãŠããäžçãžã®ç§ãã¡ã®å°ããªæ
è¡ã¯çµãããŸããããã®èšäºã楜ããã§ãæ°ããã䟿å©ã§é¢çœãäœããæ¬åœã«åŠãã ããšãé¡ã£ãŠããŸãããæž
èŽããããšãããããŸããïŒ
åç
§è³æ
[1]æºåF.ãShaymos M.èšç®å¹ŸäœåŠãã¯ããã«ïŒ1989ïŒ[2] Alexandrov A. D.ãWerner A. L.ãRyzhik V. I. Stereometryã空éã®å¹ŸäœåŠ[3]ãžã§ã»ãã»ãªã«ãŒã¯ãCã®èšç®å¹ŸäœåŠããã®èšäºã¯ãInstitute of Physics and Technologyã®1幎çã§ããIlya Zakharkinã«ãã£ãŠäœæãããŸããã
»FIVT MIPT Kirilenko ElenaãšKasimova Nadezhdaã®1幎çãå³æžé€šã®å·çãæäŒããŸããã
»ã©ã€ãã©ãªããã¹ãããããšã§ãã€ãã¹ã©ãã»ã¹ããªã³ãå©ããŸããã
»æå°è
ã®Gadelshin IlnurãšGafarov Rustamã«ç¹ã«æè¬ããŸãã