рдореЛрд╢рди рдкреНрд▓рд╛рдирд┐рдВрдЧ: рджреГрд╢реНрдпрддрд╛ рдХрд╛ рдЧреНрд░рд╛рдл, рд░реЛрдбрдореИрдк


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

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


рддрд┐рд░рд╕реНрдХрд╛рд░ рдмрд╣реБрднреБрдЬ P рдХрд╛ рдПрдХ рд╕реЗрдЯ рджреЗрдВ - рдмрд╣реБрднреБрдЬ рдмрд╛рдзрд╛рдПрдВ рджреА рдЬрд╛рдПрдВред рдПрдХ рд╣реА рд╡рд┐рдорд╛рди рдореЗрдВ рдПрдХ рдПрдЬреЗрдВрдЯ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рджреЗрдВ - рдпрд╣ рдПрдХ рдбреЙрдЯ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдХреЛ рдФрд░ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ f рдХреЛ рдмрддрд╛рдПрдВред рд╣рдореЗрдВ рдмрд┐рдВрджреБ s рд╕реЗ рдмрд┐рдВрджреБ f рддрдХ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдорд╛рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдЬреЗрдВрдЯ рдмрд╛рдзрд╛ рдХреА рд╕реАрдорд╛ рдкрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдирд╣реАрдВред

рдирд┐рд░реНрдгрдп


рдЗрд╖реНрдЯрддрдо рддрд░реАрдХрд╛ рд╣реИ

рдпрд╣ рд╕рд╛рдмрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╖реНрдЯрддрдо рдкрде рдПрдХ рдЯреБрдХрдбрд╝реЗ-рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рд░реЗрдЦреАрдп рдЯреВрдЯреА рд╣реБрдИ рд░реЗрдЦрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╕рд┐рд░рд╛ рдмрд╛рдзрд╛рдУрдВ рдХреЗ рдХреЛрдиреЗ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред

рд╕рдмреВрдд
рднрд╛рдЧ 1. рдЗрд╖реНрдЯрддрдо рдкрде - рдЯреБрдХрдбрд╝рд╛ рд░реЗрдЦреАрдп рдкреЙрд▓реАрд▓рд╛рдЗрди

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд░рд╛рд╕реНрддрд╛ рдЯреА - рдПрдХ рдЯреБрдХрдбрд╝реЗ-рдЯреБрдХрдбрд╝реЗ рд░реИрдЦрд┐рдХ рдЯреВрдЯреА рд╣реБрдИ рд░реЗрдЦрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрде T рдкрд░ рдПрдХ рдмрд┐рдВрджреБ p рдореМрдЬреВрдж рд╣реИ рдЬреЛ T (рдЪрд┐рддреНрд░ 1) рд╕реЗ рдХрд┐рд╕реА рднреА рд╕реАрдзреЗ рдЦрдВрдб рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдмрд┐рдВрджреБ p (рдЪрд┐рддреНрд░рд╛ 2) рдХрд╛ рдПрдХ ╬╡-рдкрдбрд╝реЛрд╕ рдореМрдЬреВрдж рд╣реИ рдЬрд┐рд╕ рдкрд░ рдХреЛрдИ рдмрд╛рдзрд╛ рдирд╣реАрдВ рдЖрддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдк-рдЯреА the рдЬреЛ ath-рдкрдбрд╝реЛрд╕ рдХреЗ рдЕрдВрджрд░ рд╣реИ, рдХреЛ рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде рдЫреЛрдЯрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдкрдеред рдХреЗ рд╕рд╛рде neighborhood-рдкрдбрд╝реЛрд╕ рдХреА рд╕реАрдорд╛ рдХреЗ рдЪреМрд░рд╛рд╣реЗ рдХреЗ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╕рд╛рдеред рдЪреВрдВрдХрд┐ рдорд╛рд░реНрдЧ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдкреВрд░рд╛ рд░рд╛рд╕реНрддрд╛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдореВрд▓ рдзрд╛рд░рдгрд╛ рдЧрд▓рдд рд╣реИред рдкрде рдЯреА рдПрдХ рдЯреБрдХрдбрд╝реЗ рд╡рд╛рд▓реА рд░реИрдЦрд┐рдХ рдЯреВрдЯреА рд╣реБрдИ рд░реЗрдЦрд╛ рд╣реИред

рдЪрд┐рддреНрд░рд╛ 1. рдкрде рдЯреА рдкрд░ рдмрд┐рдВрджреБ рдкреА
рдЪрд┐рддреНрд░рд╛ 2. 2.-p рдХрд╛ рдкрдбрд╝реЛрд╕
рдЪрд┐рддреНрд░рд╛ 3. рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд░рд╛рд╕реНрддрд╛ рдХреЙрд░реНрдб


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

рдЪрд┐рддреНрд░рд╛ 4. рдЦрд╛рд▓реА рд╕реНрдерд╛рди рдореЗрдВ рдкрдбрд╝реЗ рд╣реБрдП рдорд╛рд░реНрдЧ рдХреЗ рд╢реАрд░реНрд╖ рдХрд╛ neighborhood-рдкрдбрд╝реЛрд╕
рдЪрд┐рддреНрд░рд╛ 5. рдХрд┐рдирд╛рд░реЗ рдкрд░ рдкрдбрд╝реЗ рд╣реБрдП рдкрде рдХреЗ рд╢реАрд░реНрд╖ рдХрд╛ neighborhood-рдкрдбрд╝реЛрд╕


рдЙрдкрд░реЛрдХреНрдд рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЯреБрдХрдбрд╝реЗ-рдЯреБрдХрдбрд╝реЗ рд░реИрдЦрд┐рдХ рдкрде T рдХреЗ рдХреЛрдиреЗ рдмрд╛рдзрд╛рдУрдВ-рдмрд╣реБрднреБрдЬ рдХреЗ рдХреЛрдиреЗ рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рджреГрд╢реНрдпрддрд╛ рдЧреНрд░рд╛рдл

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

рдЪрд┐рддреНрд░ 6. рджреГрд╢реНрдпрддрд╛ рдЧреНрд░рд╛рдл рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред


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

рдПрдХ рджреГрд╢реНрдпрддрд╛ рдЧреНрд░рд╛рдл рдХрд╛ рдирд┐рд░реНрдорд╛рдг: рдПрдХ рднреЛрд▓реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо

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

O (n 2 log (n)) рдореЗрдВ рджреГрд╢реНрдпрддрд╛ рдЧреНрд░рд╛рдл рдмрдирд╛рдирд╛

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

рдЪрд┐рддреНрд░рд╛ 7. рдПрдХ рдШреВрд░реНрдгрди рдмреАрдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдорд╛рди рдХреЛ рд╕реНрд╡реАрдк рдХрд░рдирд╛


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

рджреГрд╢реНрдпрддрд╛ рдЧреНрд░рд╛рдл рдХрд╛ рдирд┐рд░реНрдорд╛рдг
public final G buildVisibilityGraph(final Set<Segment> segments) { /*  .        .   - . */ final G visibilityGraph = new G(getVertices(segments)); /*     */ for (final Vertex v : visibilityGraph.getVertices()) { /*       */ final Set<Vertex> visibleVertices = getVisibleVertices(v, segments); /*       */ for (final Vertex w : visibleVertices) visibilityGraph.addEdge(v, w); } return visibilityGraph; } 


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

рд╕рднреА рджреГрд╢реНрдпрдорд╛рди рдХреЛрдиреЗ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
 public final Set<Vertex> getVisibleVertices(final Vertex v, final Set<Segment> segments) { /*    ( )  ,   pw ( w -  )   ,    v */ final SortedSet<Vertex> sortedVertices = sortSegmentsVertices(v, segments); /*  I -  ,   v.   ,                   */ final BST<Segment> intersectedSegments = new BST<Segment>(v, segments); /*     */ final Set<Vertex> visibleVertices = new HashSet<Vertex>(); /*     */ for (final Vertex w : sortedVertices) { if (isVertexVisible(v, w, intersectedSegments)) visibleVertices.add(w); /*      ,   w       ( vw),  ,    w */ intersectedSegments.add(getIncidentSegments(v, w, Position.RightOf)); /*      ,   w       ( vw),  ,    w */ intersecedSegments.remove(getIncidentSegments(v, w, Position.LeftOf)); } return visibleVertices; } 


рддреЛ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡рд░реНрдЯрд┐рд╕ w sort W рдХреЛ рд░реЗ vw рдФрд░ v рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЯрд┐рдХрд▓ рд╣рд╛рдл-рдПрдХреНрд╕рд┐рд╕ рдХреЗ рдмреАрдЪ рдХреЗ рдХреЛрдг рд╕реЗ рд╕реЙрд░реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЫрдБрдЯрд╛рдИ O (nlog (n)) рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд░реНрдЬ рдЫрдБрдЯрд╛рдИред рдлрд┐рд░, рджреГрд╢реНрдпрдорд╛рди рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдРрд╕рд╛ рд╕реЗрдЯ рдЦрд╛рд▓реА рд╣реЛрддрд╛ рд╣реИ)ред рдЕрдЧрд▓рд╛ рд╡рд┐рдорд╛рди рдХреЛ рд╕реНрд╡реАрдк рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдХреЛрдиреЗ рдХреА рдЫрдВрдЯрд╛рдИ рдХреЗ рдХреНрд░рдо рдореЗрдВ, рдПрдХ рдЪреЗрдХ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: рд╢реАрд░реНрд╖ рдкрд░ v рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╡рд░реНрдЯреЗрдХреНрд╕ рд╣реИред рдЪреВрдВрдХрд┐ рдЗрд╕ рдЪреЗрдХ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЪреМрд░рд╛рд╣реЗ рд╣реИрдВ рдЬреЛ рдПрдХ рд╕рдВрддреБрд▓рд┐рдд рдкреЗрдбрд╝ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ, рдЗрд╕реЗ рдУ (рд▓реЙрдЧ (рдПрди)) рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд╢реАрд░реНрд╖ рджреГрд╢реНрдпрдорд╛рди рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рджреГрд╢реНрдпрдорд╛рди рд░реЗрдЦрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╡рд░реНрдЯреЗрдХреНрд╕ рдХреА рджреГрд╢реНрдпрддрд╛ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рд╕реНрд╡реАрдкрд┐рдВрдЧ рд▓рд╛рдЗрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд░реНрддрдорд╛рди рд╢реАрд░реНрд╖ w рдХреЗ рд▓рд┐рдП, рд╡рд░реНрддрдорд╛рди рдЪреМрд░рд╛рд╣реЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рд╕рднреА рдХрд┐рдирд╛рд░реЛрдВ (рдЦрдВрдбреЛрдВ) рдХреЛ рд╣рдЯрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рдЗрд╕ рд╢реАрд░реНрд╖ рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ (рдкрдВрдХреНрддрд┐ vw рдХреЗ рдмрд╛рдИрдВ рдУрд░) рдФрд░ рдЗрд╕рдореЗрдВ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХрд┐рдирд╛рд░реЛрдВ (рдЦрдВрдбреЛрдВ) рдХреЛ рдЬреЛрдбрд╝реЗрдВ (рдкрдВрдХреНрддрд┐ vw рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд) ред
рдЖрдВрдХрдбрд╝реЛрдВ рдкрд░ рдЧреМрд░ рдХрд░реЗрдВ 8-10:
рдЖрдВрдХрдбрд╝реЗ 8-10

рдЪрд┐рддреНрд░рд╛ 8. рдЪрд░рдг 1. рд╡реНрдпрд╛рдкрдХ рд▓рд╛рдЗрди рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ред


рдЪрд┐рддреНрд░ 9. рдЪрд░рдг 2. рд╕реНрд╡реАрдкрд┐рдВрдЧ рд▓рд╛рдЗрди рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ред


рдЪрд┐рддреНрд░рд╛ 10. рдЪрд░рдг 3. рд╡реНрдпрд╛рдкрдХ рд▓рд╛рдЗрди рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ред


рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ (рд░реЗ vw 1 ), рджреЛ рдЦрдВрдбреЛрдВ w 1 w 5 рдФрд░ w 1 w 2 рдХреЛ рдкреЗрдбрд╝ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХрд┐рд░рдг vw 1 рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдирд╛рд░рдВрдЧреА рдореЗрдВ рд╕реНрд╡реЗрдкреНрдЯ рд▓рд╛рдЗрди рдХреА рд╕реНрдерд┐рддрд┐ рдЪрд┐рд╣реНрдирд┐рдд рд╣реИред
рджреВрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ (рд╕реВрдЪреА рдореЗрдВ рджреВрд╕рд░рд╛ рд╢реАрд░реНрд╖ рд╢реАрд░реНрд╖ w 3 рд╣реИ ), рд╕реНрдерд┐рддрд┐ рдореЗрдВ рджреЛ рдФрд░ рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ: w 3 w 2 рдФрд░ w 3 w 4 ред рдЕрдм 4 рдкрд╕рд▓рд┐рдпрд╛рдВ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рддреАрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ (рд╡рд░реНрдЯреЗрдХреНрд╕ рдбрдмреНрд▓реНрдпреВ 2 ), 2 рдХрд┐рдирд╛рд░реЛрдВ рдХреЛ рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдбрдмреНрд▓реНрдпреВ 3 рдбрдмреНрд▓реНрдпреВ 2 рдФрд░ рдбрдмреНрд▓реНрдпреВ 1 рдбрдмреНрд▓реНрдпреВ 2 ред

рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ рд╢реАрд░реНрд╖ рджреГрд╢реНрдпрддрд╛ рдЬрд╛рдВрдЪ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕рддреНрдпрд╛рдкрди рджреГрд╢реНрдпрддрд╛ рд╕рдорд╛рд░реЛрд╣
 public final boolean isVisible(final Vertex v, final Vertex w, final BST<Vertex> intersections) { final Segment currentSegment = new Segment(v, w); /*  vw    ,   w,    */ if (intersects(currentSegment, w.getSegments()) return false; /*   ( )    vw. */ if (currentSegment.contains(w.getPreviousVertex())) { /*   ,  ,   */ if (!v.getPreviousVertex().isVisible()) return false; return !intersections.hasIntersectionsWith(new Segment(w.getPrevious(), w)); } /*         (    vw    ) */ return intersections.intersectWithLeftMost(currentSegment); } 

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЗрд╡рд▓ рд╕рд╣реА рд▓реМрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрджрд┐ рд╢реАрд░реНрд╖ рдкрд░ w рд╢реАрд░реНрд╖ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗ рдФрд░ рдЕрдиреНрдпрдерд╛ рдЭреВрдареА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЦрдВрдб vw рдХреА рд▓рдВрдмрд╛рдИ рдФрд░ рдмрд┐рдВрджреБ v рд╕реЗ рдЪреМрд░рд╛рд╣реЗ рдХреА рджреВрд░реА рдкреЗрдбрд╝ (рд╕рдмрд╕реЗ рдмрд╛рдИрдВ рд╢реАрдЯ) рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд┐рдХрдЯрддрдо рдЦрдВрдб рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдХрдИ рд╕реАрдорд╛рдПрдБ рд╣реИрдВ:


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рджреГрд╢реНрдпрддрд╛ рдЪреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдУ (рд▓реЙрдЧ (рдПрди)) рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕рдВрддреБрд▓рд┐рдд рдкреЗрдбрд╝ рдореЗрдВ рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╢реЗрд╖ рд╕рдВрдЪрд╛рд▓рди рдирд┐рд░рдВрддрд░ рд╕рдордп рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдбрд╝рдХ рдХреЗ рдирдХреНрд╢реЗ

рдПрдХ рдЕрдиреНрдп рдорд╛рд░реНрдЧ рдирд┐рдпреЛрдЬрди рд╡рд┐рдзрд┐ рд░реЛрдбрдореИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реА рд╣реИред рдПрдХ truism рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд╣реИ рдирд╛? рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ, рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ (рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрдЦ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рд▓рдВрдмрд╛ рд╣реИ), рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдореИрдВ рдмрд╛рдж рдореЗрдВ рдПрдХ рдФрд░ рдкреНрд░рдХрд╛рд╢рди рд▓рд┐рдЦреВрдВрдЧрд╛ред So.

рд╣рдо рдПрдХ рдЖрдпрдд рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдмрд╛рдзрд╛ рдмрд╣реБрднреБрдЬ рд╣реЛрддреЗ рд╣реИрдВ (рдЪрд┐рддреНрд░ 11)ред рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд╕реЗрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ - рдмрд╛рдзрд╛рдУрдВ рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреНрд░реИрдкреЗрдЬрд╝реЙрдЗрдбрд▓ рдореИрдк рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ (рдЪрд┐рддреНрд░ 12), рдФрд░ рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдореА рдореИрдк рд╕реЗ рд╕рднреА рдмрд╛рдзрд╛рдУрдВ (рдЪрд┐рддреНрд░рд╛ 13) рдХреЗ рдЕрдВрджрд░ рдкрдбрд╝реЗ рдЯреНрд░реИрдкреЛрдЬрд╝рд╛рдЗрдб рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рдПрдХ рдирдХреНрд╢рд╛ рдмрдирд╛рдиреЗ рдореЗрдВ O (nlog (n)) рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ n рдмрд╛рдзрд╛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдЯреНрд░реЗрдкреЛрдЬреЙрдЗрдб рдЯреА рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд┐рдирд╛рд░реЗ рд╢реАрд░реНрд╖ (рдЯреА) рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдФрд░ рдпрд╣ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдПрдХ рдмрд╛рдзрд╛ рдЗрд╕рдХреЗ рдКрдкрд░ рдпрд╛ рдиреАрдЪреЗ рд╕реНрдерд┐рдд рд╣реИ, рдЬрд┐рд╕рдХреА рд╕реАрдорд╛ рдореЗрдВ рдпрд╣ рдХрд┐рдирд╛рд░рд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдЯреНрд░реЗрдкреЛрдЬрд╝реЛрдЗрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП O (n) рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред
рдпрджрд┐ рдкреНрд░рд╛рд░рдВрдн рдФрд░ рдЕрдВрдд рдмрд┐рдВрджреБ рдПрдХ рд╣реА рдЯреНрд░реЗрдкреЛрдЬрд╝реЙрдЗрдб рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╣рд▓реЗ рдмрд┐рдВрджреБ рд╕реЗ рджреВрд╕рд░реЗ рддрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдпреЗ рдмрд┐рдВрджреБ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреНрд░реЗрдкреЛрдЬрд╝рд┐рдбреНрд╕ рдореЗрдВ рдЭреВрда рдмреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдкрде рдХрдИ рдЯреНрд░реЗрдкреЛрдЬрд╝реЛрдЗрдб рдХреЛ рдкрд╛рд░ рдХрд░реЗрдЧрд╛, рдФрд░, рд╢рд╛рдпрдж, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдореЗрдВ рд╣рдореЗрдВ рдореЛрдбрд╝ рдмрдирд╛рдиреЗ рд╣реЛрдВрдЧреЗред
рд╣рдо рдПрдХ рд░реЛрдб рдореИрдк рдмрдирд╛рддреЗ рд╣реИрдВ - рдЧреНрд░рд╛рдл рдЬреАред рдЬреА рдХреЗ рдХреЛрдиреЗ рдмрд╛рдзрд╛рдУрдВ рдХреЗ рд╢реАрд░реНрд╖ рдФрд░ рдЯреНрд░реЗрдкреЛрдЬрд╝реЙрдЗрдб рдХреЗ рдорд┐рдбрдкреЙрдЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреАрдВрдЪреА рдЧрдИ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдЦрдВрдбреЛрдВ рдХреЗ рдордзреНрдп рдмрд┐рдВрджреБ рд╣реЛрдВрдЧреЗред рдЧреНрд░рд╛рдл рдЬреА рдХреЗ рджреЛ рдХреЛрдиреЗ рдПрдХ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ рдпрджрд┐ рдФрд░ рдХреЗрд╡рд▓ рдЕрдЧрд░ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХреБрдЫ рдЯреНрд░реЗрдкреЛрдЬрд╝реЙрдЗрдб рдХреЗ рдмреАрдЪ рдХрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░рд╛ рдЗрд╕ рдЯреНрд░реЗрдкреЛрдЬрд╝реЙрдЗрдб рдХреЗ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдХрд┐рдирд╛рд░реЗ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред рдЧреНрд░рд╛рдл G рдХрд╛ рдирд┐рд░реНрдорд╛рдг O (n) рд╕рдордп рдореЗрдВ рдПрдХ рдЯреНрд░реЗрдкреЛрдЬреЙрдЗрдбрд▓ рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЧреНрд░рд╛рдл G рдПрдХ рд╕рдкрд╛рдЯ рдЧреНрд░рд╛рдл рд╣реИред
рдмрд┐рдВрджреБ s рд╕реЗ рдмрд┐рдВрджреБ f рддрдХ рдХрд╛ рдорд╛рд░реНрдЧ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рд╕рдорд▓рдВрдм рдореЗрдВ s рдФрд░ f рд╣реИрдВред рдпрджрд┐ рд╡реЗ рдПрдХ рдЯреНрд░реЗрдкреЛрдЬрд╝реЙрдЗрдб рдХреЗ рдЕрдВрджрд░ рдорд┐рд▓реЗ, рддреЛ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рд░рд╛рд╕реНрддрд╛ рдПрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ рд╣реИред рдЕрдиреНрдпрдерд╛, рд╣рдо рдмрд┐рдВрджреБ рдПрд╕ рд╕реЗ рдЯреНрд░реЗрдкреЗрдЬрд╝реЙрдЗрдб рдХреЗ рдордзреНрдп рддрдХ рдПрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЧреНрд░рд╛рдл рдХреЗ рдХрд┐рдирд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЯреНрд░реИрдкреЗрдЬрд╝реЙрдЗрдб рдХреЗ рдордзреНрдп рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдБ рдЬрд┐рд╕рдореЗрдВ рдПрдл (рдЖрдк рдЪреМрдбрд╝рд╛рдИ-рдкреНрд░рдердо рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдФрд░ рдЕрдВрдд рдореЗрдВ рдЯреНрд░реИрдкреЛрдЬрд╝реЙрдЗрдб рдХреЗ рдордзреНрдп рд╕реЗ рдПрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ рдореЗрдВ рдЬрд╛рдПрдБ (рдЖрдВрдХрдбрд╝рд╛) 14)ред рдЪреВрдВрдХрд┐ рдЯреНрд░реИрдкреЗрдЬрд╝реЙрдЗрдбрд▓ рдореИрдк рдореЗрдВ n рдореЗрдВ рдЯреНрд░реЗрдкреЗрдЬрд╝реЛрдЗрдбреНрд╕ рд░реИрдЦрд┐рдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдмрд╛рдзрд╛рдУрдВ рдХреЗ рдХреЛрдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреАрдВрдЪреА рдЧрдИ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдЦрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рднреА n рдореЗрдВ рд░реИрдЦрд┐рдХ рд╣реЛрддреА рд╣реИ, рдЧреНрд░рд╛рдл G рдореЗрдВ O (n) рдХреЛрдиреЗ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЪреВрдВрдХрд┐ рдпрд╣ рдкреНрд▓рд╛рдиреЗрд░ рд╣реИ, рдХрд┐рдирд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рднреА O (рд╣реИ) рдПрди)ред рдЗрд╕рд▓рд┐рдП, рдЬреА рдкрд░ рдПрдХ рдЪреМрдбрд╝рд╛рдИ-рдкрд╣рд▓реА рдЦреЛрдЬ рдУ (рдПрди) рдХреЗ рд╕рдордп рдореЗрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЪреВрдБрдХрд┐ O (log (n)) рдХреЛ рдПрдХ рдЯреНрд░реЗрдкреЗрдЬрд╝реЙрдЗрдбрд▓ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдПрдХ рдмрд┐рдВрджреБ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд┐рдВрджреБ O рд╕реЗ рдмрд┐рдВрджреБ f рддрдХ рдХрд╛ рдорд╛рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП O (n) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рд░реЛрдбрдореИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдП рдЧрдП рдорд╛рд░реНрдЧ рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред

рдЪрд┐рддреНрд░ 11. рдПрдХ рд╕рдВрд▓рдЧреНрди рдЖрдпрдд рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдЪрд┐рддреНрд░рд╛ 12. рдЯреНрд░реИрдкреЗрдЬрд╝реЙрдЗрдбрд▓ рдорд╛рдирдЪрд┐рддреНрд░
рдЪрд┐рддреНрд░рд╛ 13. рдХрдо рдЯреНрд░реЗрдкреЛрдЬрд╝рд╛рдЗрдбрд▓ рдорд╛рдирдЪрд┐рддреНрд░



рдЪрд┐рддреНрд░ 14. рдирд┐рд░реНрдорд┐рдд рд╕рдбрд╝рдХ рдХрд╛ рдирдХреНрд╢рд╛


рдЙрдк-рдХрд╛рд░реНрдп


рдЙрддреНрддрд▓ рдкрддрд╡рд╛рд░ рдирд┐рд░реНрдорд╛рдг

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


рд▓рд╛рдЗрди рдЪреМрд░рд╛рд╣рд╛

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

рдирд┐рд╖реНрдХрд░реНрд╖


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


рд╕рдВрджрд░реНрдн


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


All Articles