1 рд╡реНрдпрдХреНрддрд┐-рдорд╛рд╣ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЧреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ

рдПрдХ рдмрд╛рд░, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд░реВрдЯ рдмрд┐рдЫрд╛рдиреЗ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдирд╣реАрдВ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреБрдЫ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдвреВрдВрдврдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рд╣рдордиреЗ рдЦреЛрдЬ рдХреА рдФрд░ рдХреБрдЫ рднреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдкрд╛рдпрд╛ред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд░реЛрдб рдЧреНрд░рд╛рдл рдХрд╛ рдбреЗрдЯрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдпрд╛ рдХреБрдЫ рдордзреНрдп-рд╡реЗрдпрд░ рдореЗрдВ рдЬрдорд╛ рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рд╣рдореЗрдВ рдордзреНрдп-рд╡реЗрдпрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЬрд┐рд╕рд╕реЗ рдХрд┐ рдпрд╣ рдмрд╕ рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХреАрдХреГрдд рд╣реЛ рдЧрдпрд╛ (рдзрдиреНрдпрд╡рд╛рдж, рдЕрдЧрд░ рдХреЛрдИ рдореБрдЭреЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХрд╣рд╛рдВ рджреЗрдЦрдирд╛ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЦреБрдж рдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдореМрдЬреВрджрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдоред



рдореИрдВ рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред

рдЧреНрд░рд╛рдл рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рдбреЗрдЯрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред рд╣рдореЗрдВ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреНрд░рджрд╛рддрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ; рд╣рдо рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдбрд╝рдХ рдбреЗрдЯрд╛, рдЖрд░реНрдХрд╡реНрдпреВ (рд╢реЗрдкрдлрд╛рдЗрд▓) рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред рд╕рднреА рд╕рдбрд╝рдХреЛрдВ рдХреЛ рдЪреМрд░рд╛рд╣реЗ рд╕реЗ рдЪреМрд░рд╛рд╣реЗ рддрдХ рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИрдВ:
- рдЕрджреНрд╡рд┐рддреАрдп рдЦрдВрдб рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛
- рд╕рдбрд╝рдХ рдХреЗ рдПрдХ рдЦрдВрдб рдХреЛ рджрд░реНрд╢рд╛рддреА рдЬреНрдпрд╛рдорд┐рддреАрдп рдЯреВрдЯреА рд▓рд╛рдЗрди
- рдпрд╛рддрд╛рдпрд╛рдд рдирд┐рдпрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд рдЕрдзрд┐рдХрддрдо рдЧрддрд┐ рдкрд░ рдбреЗрдЯрд╛
- рдЦрдВрдб рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдореЗрдВ рдПрдХ рдЙрд▓рдЯ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рдбреЗрдЯрд╛
- рдПрдХ рдЦрдВрдб рдкрд░ рдПрдХ рддрд░рдлрд╝рд╛ рдпрд╛рддрд╛рдпрд╛рдд рдХрд╛ рд╕рдВрдХреЗрдд
- Z рд╕реЗрдЧрдореЗрдВрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд рдХрд╛ рд╕реНрддрд░ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдУрд╡рд░рдкрд╛рд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрддрд░ 0 рдкрд░ рд╣реИ, рдФрд░ рдЕрдВрдд рд╕реНрддрд░ 1 рдкрд░)

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рддрд░реНрдХ рдФрд░ / рдпрд╛ рдпрд╛рддрд╛рдпрд╛рдд рдирд┐рдпрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рдЧрд╛рдП рдЧрдП рдЖрдВрджреЛрд▓рди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдмрдВрдз рд╕рдбрд╝рдХ рд╕реЗрдЧрдореЗрдВрдЯ (рдкрд╣рд▓реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ) рдХреЗ рд▓рд┐рдП рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╡реЗрдХреНрдЯрд░ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдорд┐рдХ рдЖрдВрджреЛрд▓рди рдирд┐рд╖рд┐рджреНрдз рд╣реИред

рдпрд╣ рд╕рдм рдХреИрд╕реЗ рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреЛрд╕реНрдЯ рд╢реАрд░реНрд╖рдХ (рд▓рд╛рд▓-рдирд┐рд╖реЗрдз) рдореЗрдВ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдорд╛рд░рд╛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдПрдХ рджрд┐рд╢рд╛ рдХреЗ рд╕рд╛рде рдирд┐рд╖рд┐рджреНрдз рдбреНрд░рд╛рдЗрдВрдЧ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ)ред

рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░рд╛рдл рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рдл рдХреЛ рдХреБрдЫ рдЖрдо рддреМрд░ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреБрдбрд╝реЗ рд╣реБрдП рдХреЛрдиреЗ рдХреА рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╛ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдореИрдЯреНрд░рд┐рдХреНрд╕ред рдпрд╣реА рд╣реИ, рдХреЛрдиреЗ рдкрд░ рдбреЗрдЯрд╛ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдХреЗ рд╕рдВрдмрдВрдз рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдореЗрдВ рдХреЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдмрд╣реБрдд рдЕрдзреВрд░реА рд╣реИ, рдЙрдирдХреЗ рдЬреНрдпрд╛рдорд┐рддреАрдп рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рд╣реИ, рд╣рдореЗрдВ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдерд╛ рддрд╛рдХрд┐ рд╕рднреА рдХреЛрдиреЗ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдорд┐рд▓реЗрдВред

рд╣рдордиреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреНрдпрд╛рдорд┐рддреАрдп рд╕реНрдерд╛рди рд▓рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдПрдХ рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдереА: рдЦрдВрдбреЛрдВ рдХреЗ рдЕрдВрддрд┐рдо рдЫреЛрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣рдореЗрд╢рд╛ 100% рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рдереЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЪреМрд░рд╛рд╣реЛрдВ рдкрд░ (рдЬреАрдЖрдИрдПрд╕ рд╕рд┐рд╕реНрдЯрдо рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рдХрд╛рдо рдореЗрдВ рджреЛрд╖ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЙрди рд╕рднреА рдЦрдВрдбреЛрдВ рдХреЗ рдЧреНрд░рд╛рдл рдХреЗ рдПрдХ рд╢реАрд░реНрд╖ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЬрд┐рдирдХрд╛ рд╕рдорд╛рди Z- рд╕реНрддрд░ рд╣реИ рдФрд░ рдЬреЛ 1 рдореАрдЯрд░ рд╕реЗ рдЕрдзрд┐рдХ рджреВрд░ рдирд╣реАрдВ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдореЗрдВ рд╕реНрдЯреНрд░реАрдЯ рд░реЛрдб рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рдЧрднрдЧ 140,000 рд╕реЗрдЧрдореЗрдВрдЯ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд▓рдЧрднрдЧ 280,000 рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдХреЗ 1 рдореАрдЯрд░ рдХреА рджреВрд░реА рдкрд░ рд╕рднреА рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреИрд░-рд▓рд▓рд╛рдЯ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд╕рднреА рдЬреЛрдбрд╝реЛрдВ рдХреА рдлреНрд░рдВрдЯрд▓ рдердХрд╛рд╡рдЯ рдореЗрдВ рджреНрд╡рд┐рдШрд╛рдд рдЬрдЯрд┐рд▓рддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реАрдзреЗ рдореВрд▓ рдбреЗрдЯрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЕрд░реНрдерд╛рдд рд╢реЗрдк рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде (рдХрд╛рд░рдг: рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди, рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рднрдВрдбрд╛рд░рдг рдкреНрд░рд╛рд░реВрдк рдХреЛ рд╕рдВрд╕реНрдХрд░рдг рдХрд░рдирд╛), рд╣рдореЗрдВ рдПрдХ рдХреБрд╢рд▓ рд╢реАрд░реНрд╖ рдкрд╣рдЪрд╛рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрдП (рдЗрд╕рдХреЗ рдмрд╛рдж C ++ рдХреЛрдб):
1. рдЧреНрд░рд╛рдл рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдпрд╛:
typedef size_t EdgeID; typedef size_t VertexID; struct EdgeDesc { VertexID vtxSrc, vtxDest; EdgeInfo info; }; typedef std::unordered_multimap<EdgeID, EdgeDesc> EdgeMap; 


рдПрдХ рдорд▓реНрдЯреАрдореИрдк, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЧреНрд░рд╛рдлрд╝ рдХреЗ рд╕реЗрдЧрдореЗрдВрдЯ / рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдирдП рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреЗрд╢ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рд╣реИ, рдФрд░ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдорд╛рди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╢рд╛рдпрдж рд╕рд╣реА рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рдХреБрдЫ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рддрд░реНрдХ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрдд рдореЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛрдЧрд╛ред


рдЪрд┐рддреНрд░ 1ред

2. рд╕рдордиреНрд╡рдп рд╡рд┐рдорд╛рди рдХреЛ рд╡рд░реНрдЧ рдореАрдЯрд░ рдкреНрд░рддрд┐ рдореАрдЯрд░ (рдЫрд╡рд┐ 1) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдкреНрд░рддреНрдпреЗрдХ рд╢реАрд░реНрд╖ рдПрдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ:

 static_assert(sizeof(size_t) >= 8, "size_t type should be 64 bit or larger"); auto keyPartX = [this](double x) { return (size_t)(x - bound_.first.x) + 1; }; auto keyPartY = [this](double y) { return (size_t)(y - bound_.first.y) + 1; }; auto getKey = [](size_t x, size_t y) { return x << (sizeof(size_t) / 2 * 8) | y; }; auto getKeyXY = [&keyPartX, &keyPartY, &getKey](double x, double y) { return getKey(keyPartX(x), keyPartY(y)); }; 


3. рдПрдХ рд╣реИрд╢ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдпрд╛
 typedef size_t CellKey; typedef std::unordered_map<CellKey, std::vector<VertexID>> SPHash; 


рд╕реНрдЯреНрд░реАрдЯ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЧрдореЗрдВрдЯ рдХреА рд╕реВрдЪреА рджреЗрдЦрддреЗ рд╕рдордп, рд╣рдо рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдФрд░ рдЕрдВрддрд┐рдо рдХреЛрдиреЗ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рдХрд┐рдирд╛рд░реЗ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рдиреНрди рдХреЛрдиреЗ рдХреА рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЧреНрд░рд╛рдл рд╣реИред

рд╣рдо рдЕрдиреБрднрд╛рдЧ 2 рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЧрдИ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ SPHash рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд╢реБрд░реБрдЖрддреА рдФрд░ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд┐рдВрджреБ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рдирдпрд╛ рдмрд┐рдВрджреБ рдирд╣реАрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореМрдЬреВрджрд╛ рдПрдХ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ (рдмрд╢рд░реНрддреЗ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдореМрдЬреВрджрд╛ рдмрд┐рдВрджреБ рдЙрд╕реА рдЬреЗрдб рд╕реНрддрд░ рдкрд░ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ)ред
рдпрджрд┐ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреБрдВрдЬреА рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬреЛрдбрд╝реЗ рдЧрдП рдмрд┐рдВрджреБ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред

рд╕рд╣реА рдмрд┐рдВрджреБ, рдЬрд┐рдирдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА 1 рдореАрдЯрд░ рд╕реЗ рдХрдо рд╣реИ, рдЙрдирдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд╛рдмрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрдВрдЯреЗрдирд░ рдХреЛ рди рдХреЗрд╡рд▓ рдЧрдгрдирд╛ рдХреА рдЧрдИ рдХреБрдВрдЬреА рд╕реЗ, рдмрд▓реНрдХрд┐ 8 рдкрдбрд╝реЛрд╕реА рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рднреА рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ:

 std::vector<size_t> near; size_t xPart = keyPartX(px); size_t yPart = keyPartY(py); near.clear(); merge(near, getKey(xPart, yPart)); merge(near, getKey(xPart + 1, yPart)); merge(near, getKey(xPart - 1, yPart)); merge(near, getKey(xPart, yPart + 1)); merge(near, getKey(xPart, yPart - 1)); merge(near, getKey(xPart + 1, yPart + 1)); merge(near, getKey(xPart + 1, yPart - 1)); merge(near, getKey(xPart - 1, yPart + 1)); merge(near, getKey(xPart - 1, yPart - 1)); 

рдорд░реНрдЬ () рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рдирд┐рдХрдЯрддрдо рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред
рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рд╢реАрд░реНрд╖ рдореЗрдВ рд╡рд┐рд▓рдп рдХреЗ рд▓рд┐рдП рдЙрдореНрдореАрджрд╡рд╛рд░) рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЙрдирдХреЗ рдмреАрдЪ рд╕рдЯреАрдХ рдпреВрдХреНрд▓рд┐рдбрд┐рдпрди рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реБрдП, рдЕрдВрдХ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдпрджрд┐ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗ рдХрдо рд╣реИ, рддреЛ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдВрдХ рд╕рдорд╛рди рд╣реИрдВ рдФрд░ рдПрдХ рд╡рд░реНрдЯреЗрдХреНрд╕ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЪрд┐рддреНрд░ рдореЗрдВ рд╕рдорд╛рди рд░рдВрдЧ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), getKey рдХреБрдВрдЬреА (xPart, yPart) рдХреЗ рд╕рд╛рде рд╕реЗрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЙрдкрдпреБрдХреНрдд рд╢реАрд░реНрд╖ рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЗрд╕ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд▓рдЧрднрдЧ 1 рд╕реЗрдХрдВрдб рд▓рдЧрддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рд╕реВрдЯ рдХрд░рддрд╛ рд╣реИред

4. рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╕реАрдорд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрдбрд╝реЛрд╕реА рдмрд┐рдВрджреБ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрд╕рдиреНрди рдХреЛрдиреЗ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рд▓рдВрдмрд╡рдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╣рд░ рдПрдХ рдХреЛ рдареАрдХ 1 рдмрд╛рд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣реИрд╢ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЦреЛрдЬ рдФрд░ рд╕рдореНрдорд┐рд▓рд┐рдд рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдЕрд╕рдорд╛рди рд░реВрдк рд╕реЗ рдирд┐рд░рдВрддрд░ рдЬрдЯрд┐рд▓рддрд╛ рд╣реЛрддреА рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛, рд╣рдо рдмрд╣реБрднреБрдЬ рд╕рдбрд╝рдХ рдЦрдВрдб рдХреЗ рдордзреНрдпрд╡рд░реНрддреА рдХреЛрдиреЗ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЧреНрд░рд╛рдл рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (рдЦрдВрдб рдХреЗ рдмреАрдЪ рдореЗрдВ рдХреЛрдИ рдкреИрдВрддрд░реЗрдмрд╛рдЬрд╝реА рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ)ред

рдпрджрд┐ рд╣рдо рдкреЙрд▓реАрд▓рд╛рдЗрди рдХреЛ рдЙрди рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб рдХреЛ рдПрдХ рдХрд┐рдирд╛рд░реЗ рдорд╛рдирддреЗ рд╣реИрдВ, рддреЛ рд▓рдЧрднрдЧ 140,000 рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдмрдЬрд╛рдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧреНрд░рд╛рдл рдореЗрдВ рд▓рдЧрднрдЧ 600,000 рдХрд┐рдирд╛рд░реЗ рд╣реЛрдВрдЧреЗред рдкрде рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рд╕рдордп рдореЗрдВ рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреА, рдЕрдВрдд рдореЗрдВ рдореИрдВ рдкреВрд░реНрдг рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рдпрд╣ рдЕрдВрддрд░ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред

рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ рд╣реИред рдкреНрд░рддрд┐рдмрдВрдз, рдпрд╛ рдпреБрджреНрдзрд╛рднреНрдпрд╛рд╕ рдирд┐рд╖рд┐рджреНрдзред
рдкреНрд░рддрд┐рдмрдВрдз рдХрд┐рд╕реА рднреА рдпреБрджреНрдзрд╛рднреНрдпрд╛рд╕ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪреМрд░рд╛рд╣реЗ рдкрд░ рдмрд╛рдПрдВ рдореБрдбрд╝рдирд╛ред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдбреЗрдЯрд╛ рдЦрдВрдбреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдорд┐рдХ рдЖрдВрджреЛрд▓рди рдирд┐рд╖рд┐рджреНрдз рд╣реИред

рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:

рдЕрдВрдЬреАрд░ред 2

рд▓рд╛рд▓ рддреАрд░ рдирд┐рд╖рд┐рджреНрдз рдкреИрдВрддрд░реЗрдмрд╛рдЬрд╝реА рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ, рд╕рдВрдЦреНрдпрд╛ рдЦрдВрдб рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдбреЗрдЯрд╛ рдореЗрдВ, рдпрд╣ рдкреНрд░рддрд┐рдмрдВрдз {e1, e4} рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред

рдорд╛рд░реНрдЧ рдмрд┐рдЫрд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд┐рд╖реЗрдз рдХреЗ рдЗрд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рддрд╛рдХрд┐ рдирд┐рд╖рд┐рджреНрдз рдкреИрдВрддрд░реЗрдмрд╛рдЬрд╝реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдереИрддрд┐рдХ рд░реВрдк рд╕реЗ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдЕрд╕рдВрднрд╡ рд╣реЛ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рд╕рднреА рдЕрдиреБрдордд рдкреИрдВрддрд░реЗрдмрд╛рдЬрд╝реА рд╕рдВрднрд╡ рд╣реЛред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдирд┐рд╖рд┐рджреНрдз рдкреИрдВрддрд░реЗрдмрд╛рдЬрд╝реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЪреЛрдЯрд┐рдпреЛрдВ рдХреА рдирдХрд▓ рдХреАред рдФрд░ рдкрд╕рд▓рд┐рдпреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдП рдЧрдП рд╢рд┐рдЦрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рддрд╛рдХрд┐ рдЕрдиреБрдордд рдпреБрджреНрдзрд╛рднреНрдпрд╛рд╕ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рдФрд░ рдирд┐рд╖рд┐рджреНрдз рдкреИрдВрддрд░реЗрдмрд╛рдЬрд╝реА рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдорд╛рд░реНрдЧ рдмрд╕ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ред

рдЬрдм рдХрд┐рд╕реА рд╢реАрд░реНрд╖ рдкрд░ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреА рдЬреНрдпрд╛рдорд┐рддреАрдп рд╕реНрдерд┐рддрд┐ рд╕рдорд╛рди рд░рд╣рддреА рд╣реИ (рдЖрдХреГрддрд┐ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╡рд░реНрдЯрд┐рдХрд▓ v6 рдФрд░ v5 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдЬреНрдпрд╛рдорд┐рддреАрдп рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЖрдХреГрддрд┐ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ), рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдирдП рд╢реАрд░реНрд╖ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░реВрдБрдЧрд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдирд┐рд╖рд┐рджреНрдз рдмрд╛рдПрдВ рдореЛрдбрд╝ рдХреЗ рд╕рд╛рде рдЪреМрд░рд╛рд╣реЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХреНрдпрд╛ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛:

рдЕрдВрдЬреАрд░ 3ред

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЯреЛрдкреЛрд▓реЙрдЬреА рдХреЗ рд╕рд╛рде рдЧреНрд░рд╛рдл рдкрд░, рдЪреМрд░рд╛рд╣реЗ рдкрд░ рдирд┐рд╖рд┐рджреНрдз рдкрде рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рдПрдВ рдореЛрдбрд╝ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЬрдмрдХрд┐ рд╕рднреА рдЕрдиреБрдордд рдпреБрджреНрдзрд╛рднреНрдпрд╛рд╕ рд╕рдВрднрд╡ рд╣реИрдВред

2 рд╕реЗ рдЕрдзрд┐рдХ рдХрд┐рдирд╛рд░реЛрдВ рд╕реЗ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдПрдХ рд╣реА рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдирдП рдХреЛрдиреЗ рдФрд░ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рдпреЗ рдкрд░рд┐рд╡рд░реНрддрди рдЧреНрд░рд╛рдлрд╝ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ (рдХрд┐рдирд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓рдЧрднрдЧ 5% рдХреА рд╡реГрджреНрдзрд┐)ред рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдореЗрдВ, рджреЛ рдЦрдВрдбреЛрдВ рд╕реЗ рд▓рдЧрднрдЧ 5000 рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВ рдФрд░ рддреАрди рд╕реЗ рд▓рдЧрднрдЧ 400)ред

рдпрд╣рд╛рдБ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЪрд┐рддреНрд░рдг рд╣реИ рдХрд┐ рдПрдХ рдЧреНрд░рд╛рдл 3 рдХрд┐рдирд╛рд░реЛрдВ рдХреА рдмрд╛рдзрд╛ рдХреЗ рддрд╣рдд рдХреИрд╕реЗ рдмрджрд▓рддрд╛ рд╣реИ:
рдпрд╣ рдерд╛:

рдЕрдВрдЬреАрд░ рекред

рдпрд╣ рдмрди рдЧрдпрд╛:

рдЕрдВрдЬреАрд░ релред

рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЧреНрд░рд╛рдл рдкрд░рд┐рд╡рд░реНрддрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рдХрдард┐рди рдЪрд░рдг рдмрди рдЧрдпрд╛ (рдЗрд╕рдореЗрдВ рд▓рдЧрднрдЧ 30% рд╕рдордп рд▓рдЧрд╛) рдФрд░ рдпрд╣ рд╡рд╣рд╛рдБ рдерд╛ рдХрд┐ рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрдЧ рдереЗред рдпрд╣ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рддрдерд╛рдХрдерд┐рдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдХрд╛рд░рдг рд╣реИред рдЗрд╕рд▓рд┐рдП рдЕрдЧрд░ рдХреБрдЫ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ - рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рдирд╣реАрдВ рдерд╛, рд╕рд╡рд╛рд▓ рдкреВрдЫреЗрдВ, рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред

рд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдПрдХ рдЧреНрд░рд╛рдл рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдЙрди рд╕рднреА рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рди рдкрд░ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рд░рдЦрдирд╛ рд╕рдВрднрд╡ рдерд╛ред рд╣рдордиреЗ рдХреНрд▓рд╛рд╕рд┐рдХ рджрд┐рдХреНрдХреНрд╕реНрдЯреНрд░рд╛ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЛ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдЬрд╝рдорд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмреВрд╕реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╣реИред
рдЬреЛрдбрд╝рдиреЗ, рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ :: рдЧреНрд░рд╛рдл рдореЗрдВ рдЕрдЪреНрдЫреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд┐рддрд╛рдмреЗрдВ рднреА рд╣реИрдВ, рд╣рдордиреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХреЛрдб рд▓рд┐рдпрд╛ рдФрд░ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдорд╛рдореВрд▓реА рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред

рдЕрдЧрд▓рд╛ рдЪрд░рдг рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдерд╛ред рд╣рдордиреЗ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рдпрджрд┐ рд╕реЗрд╡рд╛ рдирд┐рд░реНрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереА, рддреЛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛, рдХреЗрд╡рд▓ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рд╛рд░рдВрдн рдФрд░ рдЕрдВрдд рдмрд┐рдВрджреБред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдЖрд░рдВрдн рдФрд░ рдЕрдВрдд рдХреЗ рдХреЛрдиреЗ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдХреНрд╡реЗрд░реА рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрд░реАрдм рд╣реИрдВред
рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЬрд▓реНрджреА рд╕реЗ рд╕рдбрд╝рдХ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдмрд┐рдВрджреБ рдХреЗ рдирд┐рдХрдЯрддрдо рдмрд┐рдВрджреБ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдбрд╝рдХ-рд╕рдбрд╝рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдмрд╛рд╣рд░ рд╕реНрдерд┐рдд рдмрд┐рдВрджреБ рд╕реЗ рдорд╛рд░реНрдЧ рдЪрд╛рд╣ рд╕рдХрддрд╛ рд╣реИ)ред

рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЙрдЪрд┐рдд рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рдореЗрдВ рд╕рдбрд╝рдХ-рд╕рдбрд╝рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЦрдВрдб рдЯреВрдЯреА рд╣реБрдИ рд░реЗрдЦрд╛рдПрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЯреВрдЯреА рд╣реБрдИ рд░реЗрдЦрд╛ рдкрд░ рджрд┐рдП рдЧрдП рдмрд┐рдВрджреБ рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм рдмрд┐рдВрджреБ рдХреЛ рдвреВрдВрдврдирд╛ рдерд╛ (рдпрд╣ рдЯреВрдЯреА рд╣реБрдИ рд░реЗрдЦрд╛ рдкрд░ рд╕реНрдерд┐рдд рдПрдХ рдмрд┐рдВрджреБ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЗрд╕рдХреА рд╢реБрд░реБрдЖрдд рдпрд╛ рд╕рдорд╛рдкреНрддрд┐ рд╢реАрд░реНрд╖)ред
рдХрд╛рдлреА рдЯреВрдЯреА рд╣реБрдИ рд░реЗрдЦрд╛рдПрдВ (140,000), рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЬрд▓реНрджреА рд╕реЗ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╕рднреА рдЦрдВрдбреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреЛрдЬ рдмрд╣реБрдд рдзреАрдореА рд╣реИред рдпрд╣рд╛рдВ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг :: рдЬреНрдпрд╛рдорд┐рддрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрдпрд╛, рдЬрд╣рд╛рдВ рд╕реНрдерд╛рдирд┐рдХ рд╕реВрдЪрдХрд╛рдВрдХ (рдмреВрд╕реНрдЯ :: рдЬреНрдпрд╛рдорд┐рддрд┐ :: рд╕реВрдЪрдХрд╛рдВрдХ) рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЯреВрдЯреА рд╣реБрдИ рд░реЗрдЦрд╛ (рд▓рд┐рдиреЗрд╕реНрдЯреНрд░рд┐рдВрдЧ) рдЬреИрд╕реА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред

рдЗрд╕ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЬрд▓реНрджреА рд╕реЗ рдирд┐рдХрдЯрддрдо рдЙрдореНрдореАрджрд╡рд╛рд░реЛрдВ рдХреЛ рдвреВрдВрдврддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рдЯреАрдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рджрд┐рдП рдЧрдП рдмрд┐рдВрджреБ рдХреЗ рдирд┐рдХрдЯрддрдо рдЦрдВрдб рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

SHP рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдордиреЗ GDAL рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рднреМрдЧреЛрд▓рд┐рдХ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП (рд╣рдо рд╢рд╣рд░ рдХреА рд╕реНрдерд╛рдиреАрдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рд╣реБрдЖ рд╣реИ), рдФрд░ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП GPS (WGS84) рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд╣рдордиреЗ proj4 рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдпрд╛, рдФрд░ рдкрд╛рда рдПрдиреНрдХреЛрдбрд┐рдВрдЧ iconv рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдПред

рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

- рдкрд╕рд▓реА рдХреЗ рдмреАрдЪ рдХрд╛ рдорд╛рд░реНрдЧ
рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдЧреНрд░рд╛рдл рд╕рдбрд╝рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдПрдХ рд╕рд╛рдордпрд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ, рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдХреНрдЬрд╕реНрддреНрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рдорд┐рддреАрдп рд╡рд┐рд╡рд░рдг рдорд╣рддреНрд╡рд╣реАрди рд╣реИрдВред рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рдорд┐рддреАрдп рдкрд╣рд▓реВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рд╕реНрдорд░рдг рдХрд░реЛ рдХрд┐ рджрд┐рдЬреНрдХреНрд╕реНрдЯреНрд░рд╛ рдХрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЧреНрд░рд╛рдл рдХреЗ рджрд┐рдП рдЧрдП рд╢реАрд░реНрд╖ рд╕реЗ рд▓реЗрдХрд░ рдЕрдиреНрдп рд╕рднреА (рд╡рд╛рдВрдЫрд┐рдд рдЕрдВрдд рд╢реАрд░реНрд╖ рд╕рд╣рд┐рдд) рд╕реЗ рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рдорд╛рд░реНрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢реАрд░реНрд╖ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╣рдо рдЯреВрдЯреА рд╣реБрдИ рд░реЗрдЦрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рд╣реИред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕ рд╢реАрд░реНрд╖ (рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ) рд╕реЗ рдЖрдкрдХреЛ рдПрдХ рдорд╛рд░реНрдЧ рдкреНрд▓реЙрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣рд╛рдБ рдЦрдВрдб рдХреЗ рдХреЛрдИ рдордзреНрдпрд╡рд░реНрддреА рдХреЛрдиреЗ рдирд╣реАрдВ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдЦрдВрдб рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдпрд╛ рдЕрдВрдд рдХреЗ рд╢реАрд░реНрд╖ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдЕрдВрдЬреАрд░ ремред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдПрдХ рд▓рдВрдмреЗ рд░рд╛рдЬрдорд╛рд░реНрдЧ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ, рдмрд┐рдирд╛ рдореБрдбрд╝реЗрдВ рдФрд░ рдореБрдбрд╝реЗрдВ (рдФрд░ рдЕрдХреНрд╕рд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ)ред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрдЧрд╛ рдХрд┐ рдорд╛рд░реНрдЧ рдХреЛ рдЙрд╕ рдмрд┐рдВрджреБ рд╕реЗ рдПрдХ рдХрд┐рд▓реЛрдореАрдЯрд░ рдХреА рджреВрд░реА рдкрд░ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдЙрд╕рдиреЗ рдкреВрдЫрд╛ рдерд╛ (рдХреНрдпреЛрдВрдХрд┐ рдирд┐рдХрдЯрддрдо рдЦрдВрдб рдореЗрдВ рдХреЛрдИ рдЕрдиреНрдп рдЪреЛрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рдереАрдВ)ред рдпрд╣ рдмреБрд░рд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЪрд┐рддреНрд░ 6 (рд▓рд╛рд▓ рдзрд░рд╛рд╢рд╛рдпреА рд░реЗрдЦрд╛рдПрдВ) рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХрд┐рд╕реА рдЦрдВрдб рдХреЗ рдирд┐рдХрдЯрддрдо рд╢реАрд░реНрд╖ рдХреЛ рдЪреБрдирдирд╛ рдХрднреА-рдХрднреА рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕ рддрдереНрдп рдХрд╛ рдЖрднрд╛рд╕ рдкреИрджрд╛ рдХрд░рдирд╛ рдерд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд░реНрдЯрд┐рдХрд▓ рд╣реИрдВ рдФрд░ рд╡реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рд╕реНрдерд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрде рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рд╕рдордп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рдЙрдирдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рде рдорд╛рдирд╛ рдЧрдпрд╛ рдерд╛:
1) рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдФрд░ рдЕрдВрдд рджреЛрдиреЛрдВ рдЫреЛрд░реЛрдВ рд╕реЗ рджреЛ рдЦреЛрдЬреЗрдВ рдФрд░ рдЙрд╕ рдкрде рдХреА рдкрд╕рдВрдж, рдЬрд┐рд╕реЗ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЫреЛрд░ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд┐рдВрджреБ рд╕реЗ рджреВрд░реА рджреА рдЧрдИ рд╣реИред
рдкреНрд▓рд╕: рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИ
рд╢реВрдиреНрдп рд╕реЗ: рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рдордп рдореЗрдВ рдЗрд╕реА рдордВрджреА рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рд░рд╛рд╕реНрддреЗ рдХреЗ рд▓рд┐рдП рджреЛрд╣рд░реА рдЦреЛрдЬред

2) рдПрдХ рдирд┐рд░рд░реНрдердХ рдЧреНрд░рд╛рдл рдмрдирд╛рдирд╛: рд╕рдбрд╝рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рднреА рдЬреНрдпрд╛рдорд┐рддреАрдп рдХреЛрдиреЗ рдЧреНрд░рд╛рдл рдХреЗ рдХреЛрдиреЗ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВред
рдкреНрд▓рд╕: рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИ
рд╡рд┐рдкрдХреНрд╖: рджрд┐рдЬреНрдХреНрд╕реНрдЯреНрд░рд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдХрд╛рдо рдХреЗ рд╕рдордп рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡реГрджреНрдзрд┐, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕рдбрд╝рдХ рдкрд░ рдЪрд▓рдиреЗ)

3) рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рдордп рдЕрд╕реНрдерд╛рдпреА рдХреЛрдиреЗ рдФрд░ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЧреНрд░рд╛рдл рдХреЛ рдкреВрд░рдХ рдХрд░рдирд╛ рдФрд░ рдорд╛рд░реНрдЧ рдорд┐рд▓рдиреЗ рдХреЗ рдмрд╛рдж рдЧреНрд░рд╛рдл рдХреЛ рдЕрдкрдиреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ред
рдкреНрд▓рд╕: рдПрдХ рдорд╛рд░реНрдЧ рдЦреЛрдЬ, рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдлреБрд▓рд╛рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдорд╛рдЗрдирд╕: рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИ

рд╣рдордиреЗ рддреАрд╕рд░рд╛ рд░рд╛рд╕реНрддрд╛ рдЪреБрдирд╛ рд╣реИред рдЯреВрдЯреЗ рд╣реБрдП рдЦрдВрдб рдФрд░ 2 рдХрд┐рдирд╛рд░реЛрдВ рдкрд░ рд╕реНрдерд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд┐рдВрджреБ рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм рдПрдХ рд╡рд░реНрдЯреЗрдХреНрд╕ (рдЦрдВрдб рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ рд╢реБрд░реВ рдФрд░ рдЕрдВрдд рддрдХ, рдпрд╛ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ, рдпрджрд┐ рд╕реЗрдЧрдореЗрдВрдЯ рдПрдХ-рддрд░рдлрд╛ рд╣реИ) рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЧреНрд░рд╛рдл рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрди рд╡рд░реНрдЯреЗрдХреНрд╕ рдФрд░ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЧреНрд░рд╛рдл, рдПрдХ рдЦреЛрдЬ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЕрд╕реНрдерд╛рдпреА рдХреЛрдиреЗ рдФрд░ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдЧреНрд░рд╛рдл рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

- рд╡реЗрдм рдЖрдЙрдЯрдкреБрдЯ
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдорд╛рдирдХ рдЗрдирдкреБрдЯ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрддреНрддрд░ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рдкреНрд░реЗрд╖рдг рдХреЗ рд╕рд╛рде рд╕рдВрдкреВрд░реНрдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдиреЛрдб рдкрд░ рдПрдХ рдЕрд▓рдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

- рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо 1 рдереНрд░реЗрдб рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рднреА рдХрд░реНрдиреЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдХреЛрд░ рдХреЗ рд▓рд┐рдП 1 рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ 1 рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ 300 рдПрдордмреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдФрд░ рдЗрд╕ рдЖрдХрд╛рд░ рдХреЛ 2-3 рдЧреБрдирд╛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдЕрднреА рддрдХ рдпрд╣ рдХрд╛рд░реНрдп рд╕реНрд╡рдпрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдЕрдирд╛рд╡рд╢реНрдпрдХ)ред рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдХреИрд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░реЗрдВ? рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд╛рд╣реНрдп рдкреНрд░реЗрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ, рдпрд╣ рдХрд╛рд░реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╡рд┐рддрд░рдг рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЙрдирдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЖрджрд┐ред
рд╕рднреА рдХреЛрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк: C ++ рдореЗрдВ рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдирд╛, рд╣рдореЗрдВ рдЕрдзрд┐рдХ рдХрдард┐рди рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ C ++ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ (рд▓рдЧрднрдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреВрд░рд╛ рд╕рд░реНрд╡рд░ рд╣рд┐рд╕реНрд╕рд╛ n.js рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╣рдо рдЬрд╛рдирддреЗ рдереЗ рдХрд┐ рдЗрд╕ рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ), рдпрд╛ рдмрд╛рд╣рд░реА рдбрд┐рд╕реНрдкреИрдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдирд╛ stdin / stdout рдХреА рддреБрд▓рдирд╛ рдореЗрдВред рджреВрд╕рд░реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрд╕реНрдерд╛рдИ рдЫреЛрд░реЛрдВ рдФрд░ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рдХрд╛рд░рдг рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рдлрд╝ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ рдХреЛ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдПрдХ рддрд░рдл рдкреНрд░рджрд░реНрд╢рди рдХреЛ рди рдорд╛рд░реЗрдВ рдФрд░ рджреВрд╕рд░реА рддрд░рдл рдорд▓реНрдЯреАрдереНрд░реЗрдб рдХреЛрдб рдХреЛрдб рдХреА рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рди рдЪрд▓реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдордп (рдЗрд╕ рд╕рдордп) рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рд▓рд╛рдн рдорд┐рд▓рд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдХреБрдЫ рдЖрдБрдХрдбрд╝реЗ:
рдкреВрд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗрд╡рд▓ 1,500 рд▓рд╛рдЗрдиреЗрдВ рдирд┐рдХрд▓рд╛, рд╕рд╛рде рд╣реА рдиреЛрдб.рдЬреЗрдПрд╕ рдкрд░ рдбрд┐рд╕реНрдкреИрдЪрд░ рдХреА рдХрдИ рджрд░реНрдЬрди рд▓рд╛рдЗрдиреЗрдВ, 1 рд╡реНрдпрдХреНрддрд┐ рдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд▓рдЧрд╛ рд╣реБрдЖ рдерд╛, рд▓рдЧрднрдЧ 1 рдорд╣реАрдиреЗ рдХрд╛ рд╕рдордп рд▓рдЧрд╛ + рдПрдХ рд╕рд╣рдХрд░реНрдореА рдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ рдорджрдж рдХреАред рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдмрд╕реЗ рдкреНрд░рд╛рдердорд┐рдХ рдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред

рдФрд╕рдд рдорд╛рд░реНрдЧ рдЦреЛрдЬ рд╕рдордп (рдХреЛрд░ i7 3.4 Ghz рдкрд░) рд▓рдЧрднрдЧ 60-65 рдПрдордПрд╕ рд╣реИред рд╡реИрд╕реЗ, рдореИрдВрдиреЗ рдЧреНрд░рд╛рдлрд╝ рдкрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рдордп рдХрд╣рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛, рдЬрд╣рд╛рдВ рдЯреВрдЯреА рд╕рдбрд╝рдХ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб рдХреЛ рдЧреНрд░рд╛рдлрд╝ рдХреЗ рдПрдХ рдЕрд▓рдЧ рдХрд┐рдирд╛рд░реЗ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд▓рдЧрднрдЧ 250 рдПрдордПрд╕ рд╣реИ, рдПрдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдЕрдВрддрд░ рд╣реИ, рд╕рд╣рдордд рд╣реВрдВред

рдЬреЛ рдЕрдВрдд рддрдХ рдкрдврд╝реЗ рд╣реИрдВ, рдЙрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рджред

Source: https://habr.com/ru/post/In211388/


All Articles