æ°æ¥åã®åºæ¥äº
ããã¯ãããã¹ãã®èè ã«ãã Kontur ã¹ã¿ã³ãã§ã®ã¿ã¹ã¯ã®åæãå«ãæçš¿ã§ãã 誰ãããã©ã«ä¹ã£ãŠããŸããã - ããã¯æ¥œããçµéšãæãåºãçç±ã§ãã誰ãä¹ã£ãŠããŸããã§ããã - ããªãã®é è³ã䌞ã°ããã£ã³ã¹ã§ã 倧ããªO-è¡šèšã
ããªãããã£ãŒããã¹ã©ã€ãã«å解ããŠèªåã®æ±ºå®ãæžãçããåå è ãããŸããã åè«ã§ã¯ãããŸããã圌ãã¯ç¢ºèªã®ããã«ãã®çŽã®æãæž¡ããŸããã
åèš XNUMX ã€ã®ã¿ã¹ã¯ããããŸããã
- è² è·åæ£ã®ããã®éã¿ã«ããã¬ããªã«ã®éžæã«ã€ããŠ
- ã€ã³ã¡ã¢ãªããŒã¿ããŒã¹ã«å¯Ÿããã¯ãšãªçµæã®äžŠã¹æ¿ãã«ã€ããŠ
- ãªã³ã°ããããžãåããåæ£ã·ã¹ãã ã«ãããç¶æ 転éã«ã€ããŠ
ã¿ã¹ã¯ 1. ClusterClient
åæ£ã·ã¹ãã ã® N åã®éã¿ä»ãã¬ããªã«ãã K åãå¹ççã«éžæããããã®ã¢ã«ãŽãªãºã ãææ¡ããå¿ èŠããããŸããã
ããªãã®ããŒã ã¯ãN åã®ããŒããããªã倧èŠæš¡åæ£ã¯ã©ã¹ã¿ãŒçšã®ã¯ã©ã€ã¢ã³ã ã©ã€ãã©ãªãéçºããä»»åãè² ã£ãŠããŸãã ã©ã€ãã©ãªã¯ãããŒãã«é¢é£ä»ããããããŸããŸãªã¡ã¿ããŒã¿ (ããšãã°ãåŸ ã¡æéã4xx/5xx å¿çé床ãªã©) ã远跡ãããããã«æµ®åå°æ°ç¹ã®éã¿ W1..WN ãå²ãåœãŠãŸãã åæå®è¡æŠç¥ããµããŒãããããã«ãã©ã€ãã©ãªã¯ N åã®ããŒãã®ãã¡ K åãã©ã³ãã ã«éžæã§ããå¿ èŠããããŸããéžæããã確çã¯ããŒãã®éã¿ã«æ¯äŸããå¿ èŠããããŸãã
ããŒããå¹ççã«éžæããã¢ã«ãŽãªãºã ãææ¡ããŸãã ããã° O è¡šèšæ³ã䜿çšããŠèšç®ã®è€éããæšå®ããŸãã
ãªãã§å šéšè±èªãªã®ïŒ
ãªããªãããã®åœ¢æ ã§ã¯äŒè°ã®åå è ã圌ããšæŠã£ãããã§ãããè±èªãããã©ã®å ¬çšèªã ã£ãããã§ãã ã¿ã¹ã¯ã¯æ¬¡ã®ããã«ãªããŸããã
çŽãšéçãçšæããŠãããã«ãã¿ãã¬ãéãããšããªãã§ãã ãã ð
ãœãªã¥ãŒã·ã§ã³ã®åæ (ãããª)
5:53 ããããã 4 åé:
ãããŠãããªãããã£ãŒããæã£ã人ãã¡ã解決çãææ¡ããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
ãœãªã¥ãŒã·ã§ã³ã®åæ (ããã¹ã)
次ã®è§£æ±ºçãè¡šé¢äžã«ãããŸãããã¹ãŠã®ã¬ããªã«ã®éã¿ãåèšãã0 ãããã¹ãŠã®éã¿ã®åèšãŸã§ã®ä¹±æ°ãçæããã¬ããªã«ã®éã¿ã®åèšã 0 ãã (i-1) çªç®ãŸã§ã«ãªãããã« i ã¬ããªã«ãéžæããŸããã¯ä¹±æ°ããå°ããã0 ãã i çªç®ãŸã§ã®ã¬ããªã«ã®éã¿ã®åèšã¯ãããã倧ãããªããŸãã ãããã£ãŠã2 ã€ã®ã¬ããªã«ãéžæããããšãã§ãã次ã®ã¬ããªã«ãéžæããã«ã¯ãéžæããã¬ããªã«ãèæ ®ããã«æé å šäœãç¹°ãè¿ãå¿ èŠããããŸãã ãã®ãããªã¢ã«ãŽãªãºã ã䜿çšãããšãXNUMX ã€ã®ã¬ããªã«ãéžæããè€éã㯠O(N)ãK åã®ã¬ããªã«ãéžæããè€éã㯠O(N K) ~ O(NXNUMX) ã«ãªããŸãã
äºæ¬¡è€éæ§ã¯æªãã§ãããæ¹åããããšãã§ããŸãã ãããè¡ãã«ã¯ã次ã®ããã«æ§ç¯ããŸãã
ç·åœ¢å¯Ÿæ°è€é床ã¯ãç¹ã« K ã倧ããå Žåãäºæ¬¡é¢æ°è€é床ãããåªããŠããŸãã
ããããã®ã¢ã«ãŽãªãºã ã§ã
ã¿ã¹ã¯ 2. ãŒãã©
ã€ã³ããã¯ã¹ã®ãªãä»»æã®ãã£ãŒã«ãã«ãã£ãŠã¡ã¢ãªå ã®ããã¥ã¡ã³ããå¹ççã«äžŠã¹æ¿ããããã®ã¢ã«ãŽãªãºã ãææ¡ããå¿ èŠããããŸããã
ããªãã®ããŒã ã¯ãã·ã£ãŒãåãããã¡ã¢ãªå ããã¥ã¡ã³ã ããŒã¿ããŒã¹ãéçºããä»»åãè² ã£ãŠããŸãã äžè¬çãªäœæ¥è² è·ã¯ããµã€ãº M (é垞㯠N < 100 << M) ã®ã³ã¬ã¯ã·ã§ã³ãããä»»æã® (ã€ã³ããã¯ã¹ãªã) æ°å€ãã£ãŒã«ãã«ãã£ãŠäžŠã¹æ¿ããããäžäœ N åã®ããã¥ã¡ã³ããéžæããããšã§ãã ããäžè¬çã§ã¯ãªãã¯ãŒã¯ããŒãã¯ãäžäœ S åã®ããã¥ã¡ã³ã (S ïœ N) ãã¹ãããããåŸã«äžäœ N åãéžæããããšã§ãã
ãã®ãããªã¯ãšãªãå¹ççã«å®è¡ããã¢ã«ãŽãªãºã ãææ¡ããŸãã å¹³åçãªã±ãŒã¹ãšææªã®ã±ãŒã¹ã®ã·ããªãªã§ããã° O è¡šèšã䜿çšããŠèšç®ã®è€éããæšå®ããŸãã
ãœãªã¥ãŒã·ã§ã³ã®åæ (ãããª)
34:50ããå§ãŸããããã6åé:
ãœãªã¥ãŒã·ã§ã³ã®åæ (ããã¹ã)
è¡šé¢çãªãœãªã¥ãŒã·ã§ã³: ãã¹ãŠã®ããã¥ã¡ã³ãã䞊ã¹æ¿ããŸã (ããšãã°ã
M åã®ææžããã¹ãŠãœãŒããããã®äžéšã ããåãåºãã®ã¯éå¹çã§ããããšã¯æããã§ãã ãã¹ãŠã®ææžããœãŒãããªãããã«ããã«ã¯ãã¢ã«ãŽãªãºã ãé©ããŠããŸã
ãã ããã¢ã«ãŽãªãºã ã䜿çšãããšãããã«å¹ççã«å®è¡ã§ããŸãã
ãã ããå®éã«ã¯ãã«ãŒãèŠçŽ ãšã® XNUMX åã®æ¯èŒåŸã«ããŒããåæ§ç¯ããã«ã»ãšãã©ã®ããã¥ã¡ã³ããç Žæ£ã§ãããããããŒã ã¹ããªãŒãã³ã°ã®æ¹ãå¹ççã§ããããšãå€æããŸããã ãã®ãããªäžŠã¹æ¿ãã¯ãKontur ã§éçºããã³äœ¿çšããã Zebra ã¡ã¢ãªå ããã¥ã¡ã³ã ããŒã¿ããŒã¹ã«å®è£ ãããŠããŸãã
ã¿ã¹ã¯ 3. ç¶æ ã®äº€æ
ç¶æ ãã·ããããããã®æãå¹ççãªã¢ã«ãŽãªãºã ãææ¡ããå¿ èŠããããŸããã
ããªãã®ããŒã ã¯ãN åã®ããŒããããªãåæ£ã¯ã©ã¹ã¿ãŒçšã®æŽŸæãªç¶æ 亀æã¡ã«ããºã ãéçºããä»»åãè² ã£ãŠããŸãã i çªç®ã®ããŒãã®ç¶æ 㯠(i+1) çªç®ã®ããŒãã«è»¢éãããN çªç®ã®ããŒãã®ç¶æ ã¯æåã®ããŒãã«è»¢éãããŸãã ãµããŒããããŠããå¯äžã®æäœã¯ãXNUMX ã€ã®ããŒããç¶æ ãã¢ãããã¯ã«äº€æããå Žåã®ç¶æ 亀æã§ãã ç¶æ ã®äº€æã«ã¯ M ããªç§ãããããšãç¥ãããŠããŸãã ãã¹ãŠã®ããŒãã¯ãã€ã§ãåäžã®ç¶æ ã¹ã¯ããã«åå ã§ããŸãã
ã¯ã©ã¹ã¿ãŒå ã®ãã¹ãŠã®ããŒãã®ç¶æ ã転éããã«ã¯ã©ããããæéãããããŸãã?
ãœãªã¥ãŒã·ã§ã³ã®åæ (ããã¹ã)
è¡šé¢è§£æ³: æåãš XNUMX çªç®ã®èŠçŽ ã次㫠XNUMX çªç®ãš XNUMX çªç®ã次㫠XNUMX çªç®ãš XNUMX çªç®ã®èŠçŽ ã®ç¶æ ã亀æããŸãã å亀æã®åŸãXNUMX ã€ã®èŠçŽ ã®ç¶æ ã¯ç®çã®äœçœ®ã«ãªããŸãã O(N) åã®é åãäœæããO(N M) æéãè²»ããå¿ èŠããããŸãã
ç·åœ¢æéã¯é·ããããèŠçŽ ã®ç¶æ ããã¢ã§äº€æã§ããŸã (æåã®èŠçŽ ãš XNUMX çªç®ã®èŠçŽ ãXNUMX çªç®ã®èŠçŽ ãš XNUMX çªç®ã®èŠçŽ ãªã©)ã åç¶æ ã®äº€æåŸãXNUMX ã€ããã®èŠçŽ ãæ£ããäœçœ®ã«é 眮ãããŸãã O(lg N) åã®é åãäœæããO(M lg N) æéãè²»ããå¿ èŠããããŸãã
ãã ããã·ãããç·åœ¢ã§ã¯ãªãäžå®æéã§ããã«å¹ççã«è¡ãããšãå¯èœã§ãã ãããè¡ãã«ã¯ãæåã®ã¹ãããã§ãæåã®èŠçŽ ã®ç¶æ ãæåŸã®èŠçŽ ãšäº€æãã2 çªç®ã®èŠçŽ ãæåŸãã 1 çªç®ã®èŠçŽ ãšäº€æããå¿ èŠããããŸãã æåŸã®èŠçŽ ã®ç¶æ ã¯æ£ããäœçœ®ã«ãªããŸãã 次ã«ãXNUMX çªç®ã®èŠçŽ ã®ç¶æ ãæåŸã®èŠçŽ ãšäº€æããXNUMX çªç®ã®èŠçŽ ãšæåŸãã XNUMX çªç®ã®èŠçŽ ã®ç¶æ ã亀æããå¿ èŠããããŸãã ãã®ã©ãŠã³ãã®äº€æã®åŸããã¹ãŠã®èŠçŽ ã®ç¶æ ã¯æ£ããäœçœ®ã«ãªããŸãã åèšã§ O(XNUMXM) ~ O(XNUMX) åã®é åãååšããŸãã
ãã®ãããªè§£æ±ºçã¯ãå転ã XNUMX ã€ã®è»žå¯Ÿç§°ã®åæã§ããããšããŸã èŠããŠããæ°åŠè ã«ã¯ãŸã£ããé©ããªãã§ãããã ã¡ãªã¿ã«ããã㯠XNUMX ã€ãã€ã§ã¯ãªããK < N åã®äœçœ®ã®ã·ããã«å¯ŸããŠèªæã«äžè¬åãããŸãã (ã³ã¡ã³ãã«æ£ç¢ºã«æžããŠãã ããã)
ããºã«ã¯å¥œãã§ãããïŒ ä»ã®è§£æ±ºçãç¥ã£ãŠããŸãã? ã³ã¡ã³ãã§å ±æããŠãã ããã
æåŸã«ããã€ãã®åœ¹ç«ã€ãªã³ã¯ã瀺ããŸãã
- ã«ã€ããŠãã£ãšåŠã¶
ã€ã³ãã©æŽå 茪é㧠- å
éšã®èšé²ãåç
§
ã¬ããŒãä»ããã©ã· åæ£ã·ã¹ãã ã«ã€ã㊠- äžé£ã®ãããªè¬çŸ©ãèŠã
äžè¬äººã«ãšã£ãŠã¯çããã¢ã«ãŽãªãºã » - ç§ãã¡ã®è³Œèªã賌èªããŠãã ãã
ãã¬ã°ã©ã ã®ãã£ã³ãã«
åºæïŒ habr.com