ืงืจื ืืคื ื ืืื ืืืื
ืืื ืคืืกื ืขื ื ืืชืื ืฉื ืืฉืืืืช ืืขืืืช Kontur ืืืช ืืืืจ ืืืงืกื ืฉืืื. ืื ืืื ืขื ืืืืืจื - ืื ืืกืืื ืฉืื ืืืืืืจ ืืืืืื ืื ืขืืื, ืื ืื ืืื - ืืืืื ืืช ืืืชืื ืืช ืืืื ืฉืื ืืืื O-ืกึดืืึผื.
ืืื ืืคืืื ืืฉืชืชืคืื ืฉืคืืจืงื ืืช ืืคืืืคืฆ'ืจ ืืฉืงืืคืืืช ืืื ืืจืฉืื ืืช ืืืืืชื. ืื ื ืื ืฆืืืง - ืื ืืกืจื ืืช ืขืจืืืช ืื ืืืจ ืืื ืืืืืืช:
ืืื ืฉืืืฉ ืืฉืืืืช ืืกื ืืื:
- ืืืื ืืืืจืช ืืขืชืงืื ืืคื ืืฉืงืืื ืืืืืื ืขืืืกืื
- ืขื ืืืื ืชืืฆืืืช ืฉืืืืชืืช ืืื ืืกื ื ืชืื ืื ืืืืืจืื
- ืขื ืืขืืจืช ืืฆื ืืืขืจืืช ืืืืืจืช ืขื ืืืคืืืืืืืช ืืืขืช
ืืฉืืื 1. ClusterClient
ืืื ืฆืืจื ืืืฆืืข ืืืืืจืืชื ืืืืืจื ืืขืืื ืฉื K ืืชืื N ืืขืชืงืื ืืฉืืงืืืื ืฉื ืืขืจืืช ืืืืืจืช:
ืขื ืืฆืืืช ืฉืื ืืืืืช ืืืฉืืื ืืคืชื ืกืคืจืืืช ืืงืื ืขืืืจ ืืฉืืื ืืืืืจ ืืืกืืื ืฉื N ืฆืืชืื. ืืกืคืจืืื ืชืขืงืื ืืืจ ืืื ื ืชืื ืื ืฉืื ืื ืืงืฉืืจืื ืืฆืืชืื (ืืืฉื, ืืื ืืืืืืจ ืฉืืื, ืฉืืขืืจื ืชืืืื ืฉื 4xx/5xx ืืื') ืืชืงืฆื ืืื ืืฉืงืื ื ืงืืื ืฆืคื W1..WN. ืขื ืื ืช ืืชืืื ืืืกืืจืืืืืช ืืืืฆืืข ืืืงืืื, ืืกืคืจืืื ืฆืจืืื ืืืืืช ืืกืืืืช ืืืืืจ K ืืชืื N ืฆืืชืื ืืืืคื ืืงืจืื - ืืกืืืื ืืืืืืจ ืฆืจืื ืืืืืช ืคืจืืคืืจืฆืืื ืื ืืืฉืงื ืืฆืืืช.
ืืฆืข ืืืืืจืืชื ืืืืืจืช ืฆืืชืื ืืืขืืืืช. ืืขืจื ืืช ืืืืจืืืืช ืืืืฉืืืืช ืฉืื ืืืืฆืขืืช ืกืืืื O ืืืื.
ืืื ืืื ืืื ืืืืช?
ืื ืืฆืืจื ืื ืืฉืชืชืคื ืืื ืก ื ืืืื ืืืชื ืืื ืื ืืืืช ืืืืชื ืืฉืคื ืืจืฉืืืช ืฉื ืืืืจื. ืืืฉืืืืช ื ืจืื ืื:
ืงืื ื ืืืจ ืืขืืคืจืื, ืชืืฉืื, ืื ืชืืืจื ืืคืชืื ืกืคืืืืจืื ืืื ๐
ื ืืชืื ืืคืชืจืื (ืืืืื)
ืืื ื-5:53, 4 ืืงืืช ืืืื:
ืืื ื ืืื ืืืืจ'ื ืขื ืืคืืืคืฆ'ืจ ืืขืื ืืช ืืคืชืจืื ืฉืืื:
ื ืืชืื ืืคืชืจืื (ืืงืกื)
ืืคืชืจืื ืืื ื ืืฆื ืขื ืคื ื ืืฉืื: ืกืื ืืช ืืืฉืงืืืืช ืฉื ืื ืืืขืชืงืื, ืฆืืจ ืืกืคืจ ืืงืจืื ื-0 ืืกืืื ืื ืืืฉืงืืืืช, ืืืืืจ ืืื ืืืจ ืขืืชืง i ืื ืฉืกืืื ืืฉืงืื ืืขืชืง ื-0 ืขื (i-1) ืืื ืงืื ืืืกืคืจ ืืงืจืื, ืืกืืื ืืืฉืงื ืฉื ืืขืชืง ื-0 ืขื i-th - ืืืชืจ ืืื ื. ืื ื ืืชื ืืืื ืืืืืจ ืืขืชืง ืืื, ืืืื ืืืืืจ ืืช ืืื, ืขืืื ืืืืืจ ืขื ืื ืืืืื ืืืื ืืืชืืฉื ืืืขืชืง ืฉื ืืืจ. ืขื ืืืืืจืืชื ืืื, ืืืืจืืืืช ืฉื ืืืืจืช ืืขืชืง ืืื ืืื O(N), ืืืืจืืืืช ืฉื ืืืืจืช ืืขืชืงืื ืฉื K ืืื O(N K) ~ O(N2).
ืืืืจืืืืช ืืจืืืืขืืช ืืื ืืจืืขื, ืื ื ืืชื ืืฉืคืจ ืืืชื. ืืฉื ืื, ื ืื ื
ืืืืจืืืืช ืฉื ืืื ืืื ืืืจื ืืืื ืืืชืจ ืืืืจืืืืช ืจืืืืขืืช, ืืืืืื ืขืืืจ K ืืืื.
ืื ืืืืืืจืืชื ืืื
ืืฉืืื 2. ืืืจื
ืืื ืฆืืจื ืืืฆืืข ืืืืืจืืชื ืืืืื ืืขืื ืฉื ืืกืืืื ืืืืืจืื ืขื ืืื ืฉืื ืฉืจืืจืืชื ืืื ืืื ืืงืก:
ืขื ืืฆืืืช ืฉืื ืืืืืช ืืืฉืืื ืืคืชื ืืกื ื ืชืื ืื ืฉื ืืกืืืื ืืืืืจืื. ืขืืืก ืขืืืื ื ืคืืฅ ืืืื ืืืืจืช N ืืกืืืื ืืืืื ืื ืขื ืคื ืฉืื ืืกืคืจื ืฉืจืืจืืชื (ืฉืืื ื ืืฆืืจืฃ ืืืื ืืงืก) ืืชืื ืืืกืฃ ืืืืื M (ืืืจื ืืื N < 100 << M). ืขืืืก ืขืืืื ืืขื ืคืืืช ื ืคืืฅ ืืืื ืืืืจืช N ืืขืืืื ืืืืจ ืืืืื ืขื ืืกืืื S ืืืืืืื (S ~ N).
ืืฆืข ืืืืืจืืชื ืืืืฆืืข ืฉืืืืชืืช ืืืื ืืืขืืืืช. ืืขืจื ืืช ืืืืจืืืืช ืืืืฉืืืืช ืฉืื ืืืืฆืขืืช ืกืืืื O ืืืื ืืืงืจื ืืืืืฆืข ืืืชืจืืืฉื ืืืงืจื ืืืจืืข ืืืืชืจ.
ื ืืชืื ืืคืชืจืื (ืืืืื)
ืืื ื-34:50, 6 ืืงืืช ืืืื:
ื ืืชืื ืืคืชืจืื (ืืงืกื)
ืคืชืจืื ืืฉืื: ืืืื ืืช ืื ืืืกืืืื (ืืืืืื ืขื
ืืจืืจ ืฉืืืืื ืื ืืืกืืืื ืฉื M ืืื ืืงืืช ืจืง ืืืง ืงืื ืืื ืื ืื ืืขืื. ืืื ืื ืืืืื ืืช ืื ืืืกืืืื, ืืชืืื ืืืืืจืืชื
ืขื ืืืช, ืืชื ืืืื ืืขืฉืืช ืืช ืื ืืคืืื ืืืชืจ ืืืขืืืืช - ืืฉืชืืฉ ืืืืืืจืืชื
ืขื ืืืช, ืืืจืืช ืขืจืืื ืืชืืจืจืช ืืืขืืื ืืืชืจ ืืฉื ืืขืืืื ืฉืืคืืขื ื ืืชื ืืืจืืง ืืช ืจืื ืืืกืืืื ืืืื ืืื ืืช ืืืืฉ ืืช ืืขืจืืื ืืืืจ ืืฉืืืื ืืืช ืขื ืืืื ื ืืฉืืจืฉ ืฉืื. ืืืื ืืื ืืืืฉื ืืืกื ืื ืชืื ืื ืฉื ืืกืืืื ืืืืืจืื Zebra ืฉืคืืชื ืื ืขืฉื ืื ืฉืืืืฉ ื-Kontur.
ืืฉืืื 3. ืืืืืคื ืืืื ื
ืืื ืฆืืจื ืืืฆืืข ืืช ืืืืืืจืืชื ืืืขืื ืืืืชืจ ืืฉืื ืื ืืฆืืื:
ืขื ืืฆืืืช ืฉืื ืืืืืช ืืืฉืืื ืืคืชื ืื ืื ืื ืืืืืคื ืืฆืืื ืืืืืจ ืขืืืจ ืืฉืืื ืืืืืจ ืฉื N ืฆืืชืื. ืืฉ ืืืขืืืจ ืืช ืืฆื ืืฆืืืช ื-I ืืฆืืืช (i+1) ืืฆืืืช, ืืฉ ืืืขืืืจ ืืช ืืฆื ืืฆืืืช ื-N ืืฆืืืช ืืจืืฉืื. ืืคืขืืื ืื ืชืืืช ืืืืืื ืืื ืืืืืคื ืืืฆืืื ืืืฉืจ ืฉื ื ืฆืืชืื ืืืืืคืื ืืช ืืืฆืืื ืฉืืื ืืฆืืจื ืืืืืืช. ืืืืข ืฉืืืืคืช ืืฆื ืืืงืืช M ืืืคืืืช ืฉื ืืืช. ืื ืฆืืืช ืืกืืื ืืืฉืชืชืฃ ืืืืืคืช ืืฆื ืืืืืช ืืื ืจืืข ื ืชืื.
ืืื ืืื ืืืงื ืืืขืืืจ ืืช ืืืฆืืื ืฉื ืื ืืฆืืชืื ืืืฉืืื?
ื ืืชืื ืืคืชืจืื (ืืงืกื)
ืคืชืจืื ืืฉืื: ืืืืฃ ืืช ืืืฆืืื ืฉื ืืืืื ื ืืจืืฉืื ืืืฉื ื, ืืืืจ ืืื ืืจืืฉืื ืืืฉืืืฉื, ืืืืจ ืืื ืืจืืฉืื ืืืจืืืขื ืืื ืืืื. ืืืืจ ืื ืืืืคื, ืืืฆื ืฉื ืืืื ื ืืื ืืืื ืืืืงืื ืืจืฆืื. ืืชื ืฆืจืื ืืขืฉืืช ืชืืืจืืช O(N) ืืืืืืช ืืื O(N M).
ืืืื ืืืื ืืืจื ืืื ืืจืื, ืื ืืชื ืืืื ืืืืืืฃ ืืช ืืืฆืืื ืฉื ืืืื ืืื ืืืืืืช: ืืจืืฉืื ืขื ืืฉื ื, ืืฉืืืฉื ืขื ืืจืืืขื, ืืื ืืืื. ืืืืจ ืื ืืืืืคื ืืืื ื, ืื ืืืื ื ืฉื ื ืืืื ืืืืงืื ืื ืืื. ืืชื ืฆืจืื ืืขืฉืืช ืชืืืจืืช O(lg N) ืืืืืื ืืื O(M lg N).
ืขื ืืืช, ืืคืฉืจ ืืืคืื ืืช ืืืกืื ืืืขืืื ืขืื ืืืชืจ - ืื ืืืื ืืจืืช, ืืื ืืืื ืงืืืข. ืืื ืืขืฉืืช ืืืช, ืืฉืื ืืจืืฉืื, ืืชื ืฆืจืื ืืืืืืฃ ืืช ืืฆื ืืืืื ื ืืจืืฉืื ืขื ืืืืจืื, ืืฉื ื ืขื ืืืคื ื ืืืจืื, ืืื ืืืื. ืืืฆื ืฉื ืืืืื ื ืืืืจืื ืืืื ืืืืงืื ืื ืืื. ืืขืืฉืื ืื ืื ื ืฆืจืืืื ืืืืืืฃ ืืช ืืืฆื ืฉื ืืืกืื ืืฉื ื ืขื ืืืืจืื, ืืฉืืืฉื ืขื ืืืคื ื ืืืจืื, ืืื ืืืื. ืืืืจ ืกืื ืืืืืคืื ืื, ืืืฆืืื ืฉื ืื ืืืืื ืืื ืืืื ืืืืงืื ืื ืืื. ืืืื ืชืืืจืืช O(2M) ~ O(1) ืืกื ืืื.
ืคืชืจืื ืืื ืื ืืคืชืืข ืืื ืืชืืืืงืื ืฉืขืืืื ืืืืจ ืฉืกืืืื ืืื ืืจืื ืฉื ืฉืชื ืกืืืืจืืืช ืฆืืจืืืช. ืืื, ืื ืืืืื ืืืืคื ืืจืืืืืืื ืขืืืจ ืชืืืื ืื ืืืื, ืืื ืืคื ืืืงืืื K < N. (ืืชืื ืืชืืืืืช ืืื ืืืืืง.)
ืืืืชื ืคืืืืื? ืืืืจืื ืคืชืจืื ืืช ืืืจืื? ืฉืชืคื ืืชืืืืืช.
ืืื ื ืืื ืงืืฉืืจืื ืฉืืืืฉืืื ืืกืืคื ืฉื ืืืจ:
- ืืืืื ืขืื ืขื
ืคืืชืื ืชืฉืชืืืช ืืงื ืืชืืจ - ืจืื ืจืืฉืืืื ืคื ืืืืื
ืคืืืืจ ืขื ืืืืืช ืืืื ืืขืจืืืช ืืืืืจืืช - ืฆืคื ืืกืืจืช ืืจืฆืืืช ืืืืืืื
ืืืืืจืืชืืื ืืืฆืื ืืืคื ืขืืืจ ืื ืฉืื ืจืืืืื ยป - ืืืจืฉื ืื ื
ืขืจืืฅ ืืืืืจื
ืืงืืจ: www.habr.com