... рдпрд╛ рдореБрдЭреЗ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрд▓реЗрдВрдХрд╛ рдХреИрд╕реЗ рдорд┐рд▓рд╛
рдПрдХ рд╡реНрдпрд╛рдкрдХ рд░рд╛рдп рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЖрдкрдХреЗ рдкреЗрд╢реЗрд╡рд░ рд╕реНрддрд░ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИред рдореИрдВ рдЦреБрдж рдХрднреА-рдХрднреА рдХреБрдЫ рдкреЗрдЪреАрджрд╛ рдкрд░реАрдХреНрд╖рдг рдзрд╛рдЧрд╛ рдЦреЛрджрдирд╛ рдФрд░ рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рддрд░рд╣ рдореИрдВ рдПрдХ рдХрдВрдкрдиреА рдореЗрдВ рдПрдХ рдЗрдВрдЯрд░реНрдирд╢рд┐рдк рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдпреЛрдЧреА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдкреВрд░рд╛ рдХрд░ рд░рд╣рд╛ рдерд╛, рдХрд╛рд░реНрдп рдореБрдЭреЗ рдЕрдЬреАрдм рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдпрд╣рд╛рдБ рдЗрд╕рдХреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реИ:
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рд╕рд╣рдХрд░реНрдореА-рдиреМрд╕рд┐рдЦрд┐рдП рдЕрдкрдиреЗ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдП рдереЗ - рдЙрдиреНрд╣реЗрдВ рдмрдврд╝рддреЗ рд╣реБрдП рдХреНрд░рдо рдореЗрдВ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рди рдХреЗрд╡рд▓ рдХреНрд░рдордмрджреНрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд▓реЗрдЯ рд╕реЗ рд▓реЗрдХрд░ рдЖрд░рде рд╕рдорд╛рд╡реЗрд╢реА рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЖрджреЗрд╢ рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!
рдЖрдкрдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рдХрд╛рд░реНрдп рд╣реИ рдФрд░ C # рдореЗрдВ рд╕рдорд╛рдзрд╛рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рджрд╕ рдорд┐рдирдЯ рдХрд╛ рд╕рдордп рдЪрд╛рд╣рд┐рдПред рдЦреИрд░, рдпрд╛ рдПрдХ рдШрдВрдЯрд╛ред рдпрд╛ рджреЛред рдпрд╛ рдЪреЙрдХрд▓реЗрдЯ "рдПрд▓реЛрдирдХрд╛"
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реЗрдЯ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдФрд░ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 10 ^ 6 рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧреАред
рд╕рдорд╛рдзрд╛рди рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдХрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╣реИрдВ:
рддреАрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЖрдкрдХреЗ рдХреЛрдб рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВрдЧреЗ:
- рдмрд┐рд▓ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ 10Kb рд╕реЗ рдмрдбрд╝реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдирд╣реАрдВ рдЪрд▓рд╛рдПрдЧрд╛ред
- рд╕реНрдЯреАрдлрди рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 10 ^ 5 рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧреА, рдЬрдмрдХрд┐ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 100 рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧреАред
- рдорд╛рд░реНрдХ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 10 ^ 5 рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧреАред
рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╕рдордЭрд╛ред
рдирд┐рд░реНрдгрдп
рд╣рдореЗрдВ рдПрдХ рдЕрдореВрд░реНрдд рднрдВрдбрд╛рд░ рд╣реИред
рдЬреЛрдбрд╝рдирд╛ (рдИ) рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ - рд╕реНрдЯреЛрд░ рдореЗрдВ рдПрдХ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рд░реЗрдВрдЬ (рдПрд▓, рдЖрд░) - рдПрд▓ рд╕реЗ рдЖрд░ рддрддреНрд╡ рддрдХ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд▓реЗрдВред
рдПрдХ рддреБрдЪреНрдЫ рднрдВрдбрд╛рд░рдг рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
- рднрдВрдбрд╛рд░рдг рдПрдХ рдЖрд░реЛрд╣реА рдЧрддрд┐рд╢реАрд▓ рд╕рд░рдгреА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдЧрд╛ред
- рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдПрдХ рдмрд╛рдЗрдирд░реА рдЦреЛрдЬ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдПрдХ рддрддреНрд╡ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
- рдЬрдм рд░реЗрдВрдЬ (рдПрд▓, рдЖрд░) рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдмрд╕ рдПрд▓ рд╕реЗ рдЖрд░ рддрдХ рд╕рд░рдгреА рдХрд╛ рдЯреБрдХрдбрд╝рд╛ рд▓реЗрддреЗ рд╣реИрдВред
рд╣рдо рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд╕рд░рдгреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВред
рд╕реА рд░реЗрдВрдЬ (рдПрд▓, рдЖрд░) - рдПрдХ рд╕реНрд▓рд╛рдЗрд╕ рд▓реЗрдиреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рдУ (рдЖрд░ - рдПрд▓) рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
C Add (e) - рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдореНрдорд┐рд▓рди O (n) рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЬрд╣рд╛рдВ n рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред N ~ 10 ^ 6 рдХреЗ рд▓рд┐рдП, рдЗрдВрд╕рд░реНрдЯ рдПрдХ рдЕрдбрд╝рдЪрди рд╣реИред рдПрдХ рдмреЗрд╣рддрд░ рднрдВрдбрд╛рд░рдг рд╡рд┐рдХрд▓реНрдк рдмрд╛рдж рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдХрд▓реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣:
- рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдЖрдзрд╛рд░ рдПрдХ рд╕реЗрд▓реНрдл-рдмреИрд▓реЗрдВрд╕рд┐рдВрдЧ рд╕рд░реНрдЪ рдЯреНрд░реА рд╣реЛрдЧрд╛ , рдЬрд┐рд╕рдореЗрдВ рдбрд╛рд▓рдиреЗ, рдЦреЛрдЬ, рдбрд┐рд▓реАрдЯ рдСрдкрд░реЗрд╢рди (AVL рдЯреНрд░реА, рдЖрд░рдмреА рдЯреНрд░реА рдФрд░ рдЕрдиреНрдп) рдХреЗ рд▓рд┐рдП O (ln n) рдЬрдЯрд┐рд▓рддрд╛ рд╣реИред
- рдЙрдк-рдиреЛрдб рдореЗрдВ рдиреЛрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдХрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдУ (ln n) рдХреЗ рд▓рд┐рдП рдкреЗрдбрд╝ рдХреЗ рдЖрдИ-рд╡реЗрдВ рддрддреНрд╡ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
- рдЖрдЗрдЯрдо рдХреЛ рдЙрдкрд╢реАрд░реНрд╖рдХ рдореЗрдВ рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЗрдбрд╝ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдРрдб рдСрдкрд░реЗрд╢рди рдХреА рд▓рд╛рдЧрдд O (ln n) рдмрдиреА рд░рд╣реЗред
рдореИрдВ рдХреЙрд░реНрдореЗрди рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рддреИрдпрд╛рд░ рдерд╛ рдФрд░ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдХрд┐ рдЖрд░рдмреА-рдЯреНрд░реА рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдпреЛрдЧ рд╕реЗ рдореИрдВ
рд╕реНрдХрд┐рдкреНрдкрд▓рд┐рд╕реНрдЯ рдкрд░ рдПрдХ
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд▓реЗрдЦ рдореЗрдВ рдЖрдпрд╛ рдерд╛ред
Skiplist
рдХрдИ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкреЗрдбрд╝ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХрд┐рд▓рд┐рд╕реНрдЯ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЗрд╕рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рд╡рд┐рд▓рд┐рдпрдо рдкреБрдШ рдиреЗ 1989 рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛ред рд▓реЙрдЧрд░рд┐рджрдорд┐рдХ рд░реВрдк рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдордп рдореЗрдВ рдЦреЛрдЬ, рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛ рдСрдкрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдпрд╣ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ (рд╡реИрд╕реЗ, рдФрд░ рдпрд╣
рд╣реИрдмреЗ рдкрд░ рдХрд╛рдлреА рдкреНрд░рдЪреБрд░ рдорд╛рддреНрд░рд╛
рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ), рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ рдЕрдЪреНрдЫреЗ рд╡рд┐рд╖рдо рдЕрдиреБрдорд╛рди рд╣реИрдВред рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд╕рднреА рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рдХрд╛рд░реНрдп рдерд╛ред
рдЖрдЧреЗ рдореИрдВ рдЙрди рд╕рднреА рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд┐рдЪреЛрдбрд╝ рджреВрдВрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдерд╛ред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХреНрд░рдордмрджреНрдз, рдмрд╕ рдЬреБрдбрд╝реА рд╣реБрдИ рд╕реВрдЪреА рд╣реИ:

рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЦреЛрдЬ O (n) рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕реЗ рдХреИрд╕реЗ рддреНрд╡рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдЬрдм рдореИрдВ рдХрд╛рд░реНрдп рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╡реАрдбрд┐рдпреЛ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдореЗрдВ, рдореИрдВрдиреЗ рдиреНрдпреВрдпреЙрд░реНрдХ рдореЗрдВ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрджреНрднреБрдд рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдерд╛:

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

рд╕рд╣реА SkipList рдЙрджрд╛рд╣рд░рдг рдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдЧрд▓рдд рд╣реИ :)
рдЦреЛрдЬ
рдЗрд╕реА рд╕реЗ рдЦреЛрдЬ рд╣реЛрддреА рд╣реИ рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо 72 рд╡реЗрдВ рддрддреНрд╡ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

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

рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рд╕рд┐рдХреНрдХрд╛ рд▓рдЧрд╛рддрд╛рд░ рджреЛ рдмрд╛рд░ рдЧрд┐рд░рд╛ред рддреЛ рдЖрдкрдХреЛ рддрддреНрд╡ рдХреЛ рджреЛ рд╕реНрддрд░реЛрдВ рддрдХ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

рдЗрдВрдбреЗрдХреНрд╕ рдПрдХреНрд╕реЗрд╕
рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирд┐рдореНрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдХреНрд░рдордг рдХреЛ рдиреЛрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ рдЬреЛ рдЗрд╕рдХреЗ рддрд╣рдд рдирд┐рд╣рд┐рдд рд╣реИрдВ:

рдЬрдм рд╣рдо ith рддрддреНрд╡ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ (рд╡реИрд╕реЗ, рд╣рдо рдЗрд╕реЗ O (ln n)) рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдХрд╛рдЯрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд▓рдЧрддрд╛ред
рд░реЗрдВрдЬ (5, 7) рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдкрд╣рд▓реЗ рд╣рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рдкрд╛рдБрдЪ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдорд┐рд▓рддрд╛ рд╣реИ:

рдФрд░ рдЕрдм рд░реЗрдВрдЬ (5, 7):

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдЬрдм рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ рддреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд▓рдЧрддрд╛ рд╣реИ:
SkipListNode {
int Element;
SkipListNode[] Next;
int [] Width;
}
рджрд░рдЕрд╕рд▓, рдпрд╣
рд╡рд┐рд▓рд┐рдпрдо рдкрдЧ рджреНрд╡рд╛рд░рд╛ рд╕реА рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд▓реЗрдХрд┐рди рд╕реА # рдореЗрдВ, рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ рднреА рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд╕реНрдореГрддрд┐ рдХреА рд╕рдмрд╕реЗ рдЫреЛрдЯреА рд╕рдВрднрд╡ рдорд╛рддреНрд░рд╛ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдХрд╛рд░реНрдп рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЗрддрдиреА рд╕рдЦреНрддреА рд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рдЙрд╕реА рд╕рдордп, рдореИрдВ SkipList рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЖрд░рдмреА рдЯреНрд░реА рдХреЛ рд▓рдЧрднрдЧ рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ рдореЗрдВ рдореЗрдореЛрд░реА рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдЬрд╡рд╛рдм рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ java.util.concurrent рдкреИрдХреЗрдЬ рд╕реЗ
рд╕рдорд╡рд░реНрддреАSkipListMap рдХреЗ рдШрдирд┐рд╖реНрда рдирд┐рд░реАрдХреНрд╖рдг рдкрд░ рдорд┐рд▓рд╛ред
рджреЛ рдЖрдпрд╛рдореА рд╕реНрдХреЗрдкрд┐рд╕реНрдЯ
рдЪрд▓реЛ рдПрдХ рдЖрдпрд╛рдо рдореЗрдВ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рдмрд╕ рдЬреБрдбрд╝реА рд╣реБрдИ рд╕реВрдЪреА рд╣реЛред рджреВрд╕рд░реЗ рдореЗрдВ, рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдХреНрд░рдордг рдХреЗ рд▓рд┐рдП "рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд▓рд╛рдЗрдиреЗрдВ" рд╣реЛрдВрдЧреАред
ListNode {
int Element;
ListNode Next;
}
Lane {
Lane Right;
Lane Down;
ListNode Node;
}
рдмреЗрдИрдорд╛рди рд╕рд┐рдХреНрдХрд╛
рд╕реНрдореГрддрд┐ рдХреА рдЦрдкрдд рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк "рдмреЗрдИрдорд╛рди" рд╕рд┐рдХреНрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ рддрддреНрд╡ рдХреЛ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рддрдХ рдзрдХреЗрд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХрдо рдХрд░реЗрдВред рд╡рд┐рд▓рд┐рдпрдо рдкреБрдШ рдиреЗ рдХрдИ рдкреБрд╢ рд╕рдВрднрд╛рд╡рдирд╛ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдПрдХ рд╕реНрд▓рд╛рдЗрд╕ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреАред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ values тАЛтАЛрдФрд░ рдореВрд▓реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╕рдордп, рд╕реНрдореГрддрд┐ рдЦрдкрдд рдореЗрдВ рдХрдореА рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рдПрдХ рд╣реА рдЦреЛрдЬ рд╕рдордп рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреАрдврд╝реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛
рд╕рдорд╡рд░реНрддреАSkipListMap рдХреА рд╣рд┐рдореНрдордд рдореЗрдВ рдХрдореА, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдПрдБ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ:
int randomLevel() {
int x = randomSeed;
x ^= x << 13;
x ^= x >>> 17;
randomSeed = x ^= x << 5;
if ((x & 0x80000001) != 0)
return 0;
int level = 1;
while (((x >>>= 1) & 1) != 0) ++level;
return level;
}
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ XOR рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрджреНрдо рдЖрдпрд╛рдореА рд╕рдВрдЦреНрдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред рдореИрдВрдиреЗ рдЧрддрд┐ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рджреЗрдЦреА, рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдкрд░рд┐рдгрд╛рдореА рд╕рдВрдЧреНрд░рд╣рдг рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб
рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рд╕рднреА рдПрдХ рд╕рд╛рде рдЖрдк
googlecode.com (рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреЗрдЬрд┐рдиреЗрд╢рди) рд╕реЗ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░реАрдХреНрд╖рдг
рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рднрдВрдбрд╛рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
- рд╕рд░рдгреА (рдЧрддрд┐рд╢реАрд▓ рд╕рд░рдгреА)
- SkipListBased (рдкреИрд░рд╛рдореАрдЯрд░ L рдХреЗ рд╕рд╛рде рдЫреЛрдбрд╝реЗрдВ)
- рдЖрд░рдмреАрдЯреНрд░реАрдмреЗрдб (рд▓рд╛рд▓-рдХрд╛рд▓рд╛ рдкреЗрдбрд╝: рдореЗрд░реЗ рджреЛрд╕реНрдд рдХрд╛ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛ рдПрдХ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ)ред
10 ^ 6 рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдереЗ:
- рдЖрд░реЛрд╣реА рдЖрдЗрдЯрдо
- рдЕрд╡рд░реЛрд╣реА рд╡рд╕реНрддреБрдПрдБ
- рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЖрдЗрдЯрдо
рдЯреЗрд╕реНрдЯ рдорд╢реАрди рдкрд░ i5, 8gb ram, sdd рдФрд░ рд╡рд┐рдВрдбреЛрдЬ 7 x64 рдХреЗ рд╕рд╛рде рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдП рдЧрдП рдереЗред
рдкрд░рд┐рдгрд╛рдо:
| рд╕рд░рдгреА | RBTree | SkipList |
---|
рдмрд┐рдирд╛ рд╕реЛрдЪреЗ рд╕рдордЭреЗ | 127033 рдПрдордПрд╕ | 1020 рдорд┐ | 1737 рдорд┐ |
рдЖрджреЗрд╢ рджрд┐рдпрд╛ | 108 рдПрдордПрд╕ | 457 рдорд┐ | 536 рдорд┐ |
рдЙрддрд░ рдХрд░ рдЖрджреЗрд╢ рджрд┐рдпрд╛ | 256337 рдорд┐ | 358 рдорд┐ | 407 рдорд┐ |
рдХрд╛рдлреА рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдоред рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рддрддреНрд╡ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдкрд░ рдЬрдм рдХреЛрдИ рддрддреНрд╡ рдХрд╣реАрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдВрдд рдореЗрдВ рдЫреЛрдбрд╝рдХрд░, рд╕рдмрд╕реЗ рдзреАрд░реЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡рд╣реАрдВ, рд╕реНрдХрд┐рдкрдмреАрд╕реНрдЯ рдЖрд░рдмреАрдЯреНрд░реА рд╕реЗ рдзреАрдорд╛ рд╣реИред
рдорд╛рдк рднреА рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рдкреНрд░рддреНрдпреЗрдХ рднрдВрдбрд╛рд░рдг рдореЗрдВ 10 ^ 6 рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдореГрддрд┐ рдореЗрдВ рдХрд┐рддрдирд╛ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
var storage = ...
for ( var i = 0; i < 1000000; ++i)
storage.Add(i);
рдкрд░рд┐рдгрд╛рдо:
| рд╕рд░рдгреА | RBTree | SkipList |
---|
рдХреБрд▓ рдмрд╛рдЗрдЯреНрд╕ рдЖрд╡рдВрдЯрд┐рдд | 8,389,066 рдмрд╛рдЗрдЯреНрд╕ | 24,000,060 рдмрд╛рдЗрдЯреНрд╕ | 23,985,598 рдмрд╛рдЗрдЯреНрд╕ |
рдЕрднреА рднреА рдХрд╛рдлреА рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ: рдбрд╛рдпрдиреЗрдорд┐рдХ рдРрд░реЗ рдкрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдиреЗ рдХрдо рд╕реЗ рдХрдо рдореЗрдореЛрд░реА рд▓реА, рдЬрдмрдХрд┐ рд╕реНрдХрд┐рдкрд▓рд┐рд╕реНрдЯ рдФрд░ рдЖрд░рдмреАрдЯреНрд░реА рдиреЗ рдПрдХ рд╣реА рд░рд╛рд╢рд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред
рдРрд▓реЛрдирдХрд╛ рдХреЗ рд╕рд╛рде рд╣реИрдкреНрдкреА рдПрдВрдб
рдПрдХ рд╕рд╣рдХрд░реНрдореА, рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╣рд╛рд▓рд╛рдд рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ whiner, рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдЦреЛрд▓рд╛ред рдореЗрд░реЗ рдирд┐рд░реНрдгрдп рдХреЛ рдЕрдзрд┐рдХрддрдо рдЕрдВрдХ рдХреЗ рд╕рд╛рде рд╢реНрд░реЗрдп рджрд┐рдпрд╛ рдЧрдпрд╛ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рд▓реЗрдЦ рдорджрджрдЧрд╛рд░ рд▓рдЧреЗрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЙрддреНрддрд░ рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдкреБрдирд╢реНрдЪ: рдореИрдВ SKB рдХреЛрдВрддреБрд░ рдореЗрдВ рдПрдХ рдЗрдВрдЯрд░реНрдирд╢рд┐рдк рдкрд░ рдерд╛ред рдпрд╣ рдПрдХ рд╣реА рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рдирд╣реАрдВ рд╣реИ =)