K- рд╕рд╛рдзрди рд╡рд┐рдзрд┐ (k- рд╕рд╛рдзрди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ

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

рдЫрд╡рд┐

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


рд╡рд╕реНрддреБ рд╡рд┐рднрд╛рдЬрди


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

K- рд╕рд╛рдзрди рд╡рд┐рдзрд┐


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

рдпрд╣рд╛рдБ k- рд╕рд╛рдзрди рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд╕рд░рд▓рддрдо рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рдХрд╛ рдмрд╣реБрдд рд╕рд┐рджреНрдзрд╛рдВрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
  1. рдпрд╣ k рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд╕реЗрдЯ рд╕реЗ рдЪрдпрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдЕрдиреБрд░реВрдк k рд╕рдореВрд╣реЛрдВ рдХреЗ рдХреЗрдиреНрджреНрд░рдХ рд╣реЛрдВрдЧреЗред
    рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдВрдЯреНрд░реЛрдЗрдбреНрд╕ рдХрд╛ рдЪрдпрди рдпрд╛ рддреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
  2. рд╣рдо рдПрдХ рдЪрдХреНрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рддрдм рддрдХ рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдХреЗрдВрджреНрд░рдХ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдирд╣реАрдВ рдХрд░рддреЗред
  3. рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд╕реЗрдВрдЯ рдХреЗ рдкрд╛рд╕ рд╣реИред
  4. рдкрд╛рд╕ рдХреЗ рдПрдХ рдХреЗрдиреНрджреНрд░рдХ рдкрд╛рдпрд╛? рдЗрд╕ рд╕реЗрдВрдЯреНрд░реЛрдЗрдб рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдмрд╛рдВрдзреЗрдВред
  5. рд╕рднреА рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рдордмрджреНрдз? рдЕрдм рдЖрдкрдХреЛ k рд╕рдореВрд╣реЛрдВ рдХреЗ рдХреЗрдиреНрджреНрд░рдХ рдХреЗ рдирдП рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  6. рдЕрдм рдирдП рд╕реЗрдВрдЯреНрд░реЛрдЗрдбреНрд╕ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдпрджрд┐ рд╡реЗ рдХреНрд░рдорд╢рдГ рдкрд┐рдЫрд▓реЗ рд╕реЗрдВрдЯреНрд░реЛрдЗрдбреНрд╕ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрдВ, рддреЛ рд╣рдо рдЪрдХреНрд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╣рдо рдмрд┐рдВрджреБ 3 рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВред

рдпрд╣рд╛рдБ рдПрдХ рдЪрд┐рддреНрд░ рд╣реИ рдЬреЛ рд▓рдЧрднрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:

рдпрд╣рд╛рдБ k- рд╕рд╛рдзрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдПрдкреНрд▓реЗрдЯ рд╣реИ

рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ


рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЖрдЗрдП рдЗрд╕реЗ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╣рддреЗ рд╣реИрдВ, рдЬреЛ рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╡реЗрдХреНрдЯрд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛, рдЬреЛ рд╕реЗрдВрдЯреНрд░реЛрдЗрдб рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╡рд░реНрддрдорд╛рди рдФрд░ рдкрд┐рдЫрд▓реЗ рдорд╛рди рд╣реИрдВ:
class Cluster{ vector<POINT> scores; public: int curX , curY;//   int lastX, lastY;//   size_t Size(){ return scores.size();}//   inline void Add(POINT pt){ scores.push_back(pt); }//    void SetCenter(); void Clear();//  static Cluster* Bind(int k, Cluster * clusarr, vector<POINT>& vpt); static void InitialCenter(int k, Cluster * clusarr , vector<POINT>& vpt);; static void Start(int k, Cluster * clusarr, vector<POINT>& vpt); inline POINT& at(unsigned i){ return scores.at(i);}//    }; 


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

 void Cluster::InitialCenter(int k, Cluster * clusarr, vector<POINT>& vpt){ int size = vpt.size(); int step = size/k; int steper = 0; for(int i = 0;i < k;i++,steper+=step){ clusarr[i].curX = vpt[steper].x; clusarr[i].curY = vpt[steper].y; } } 


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

 void Cluster::SetCenter(){ int sumX = 0, sumY = 0; int i = 0; int size = Size(); for(; i<size;sumX+=scores[i].x,i++);//the centers of mass by x i = 0; for(; i<size;sumY+=scores[i].y, i++);//the centers of mass by y lastX = curX; lastY = curY; curX = sumX/size; curY = sumY/size; } void Cluster::Clear(){ scores.clear(); } 


рдФрд░ рдЕрдм рдпрд╣ рдЦрдВрдбреЛрдВ рдХреЗ рдорд╛рдк рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд▓рд┐рдП "рд▓рд┐рдВрдХрд┐рдВрдЧ" рдкрд┐рдХреНрд╕рд▓ рдХреА рдПрдХ рд╕рд░рд▓ рд╡рд┐рдзрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ:

 Cluster * Cluster::Bind(int k, Cluster * clusarr, vector<POINT>& vpt){ for(int j = 0; j < k;j++) clusarr[j].Clear();//     int size = vpt.size(); for(int i = 0; i < size; i++){//       int min = sqrt( pow((float)clusarr[0].curX-vpt[i].x,2)+pow((float)clusarr[0].curY-vpt[i].y,2) ); Cluster * cl = &clusarr[0]; for(int j = 1; j < k; j++){ int tmp = sqrt( pow((float)clusarr[j].curX-vpt[i].x,2)+pow((float)clusarr[j].curY-vpt[i].y,2) ); if(min > tmp){ min = tmp; cl = &clusarr[j];}//    } cl->Add(vpt[i]);//        } return clusarr; } 


рдФрд░ рдЕрдВрдд рдореЗрдВ рдореБрдЦреНрдп рд▓реВрдк:
 void Cluster::Start(int k, Cluster * clusarr, vector<POINT>& vpt){ Cluster::InitialCenter(k,clusarr,vpt); for(;;){//   int chk = 0; Cluster::Bind(k,clusarr,vpt);//    for(int j = 0; j < k;j++)//    clusarr[j].SetCenter(); for(int p = 0; p<k;p++)//       - if(clusarr[p].curX == clusarr[p].lastX && clusarr[p].curY == clusarr[p].lastY) chk++; if(chk == k) return;//     } } 

рдФрд░ рдЗрд╕ рд╕рдм рд╕реЗ рдХреНрдпрд╛?


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



рдЕрдм, рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди рдЖрдпрддреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рд╕реЗ, рд╣рдо рдкрд░рд┐рдгрд╛рдореА рд╕рдореВрд╣реЛрдВ рдХреЛ рдвреВрдВрдврддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЖрдпрдд рдХреЗ рд╕рд╛рде рдЪрдХреНрдХрд░ рд▓рдЧрд╛рддреЗ рд╣реБрдП рд╣рдо рдкреЛрд╕реНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рд░рд▓ рд╣реИред

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


All Articles