Phân cụm K-Means ( Wikipedia )
Nhiệm vụ ở đây khá đơn giản, thực hiện một lần lặp duy nhất của thuật toán phân cụm k-mean trên ma trận nhị phân. Đây thực chất là nhiệm vụ thiết lập cho thuật toán k-mean chính, tôi cảm thấy việc thiết lập có thể dễ dàng hơn và lôi kéo các ngôn ngữ chơi gôn để cung cấp cho nó một cú đánh tốt. Ma trận được chuyển cho bạn sẽ có định dạng sau:
0 0 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0
0 0 0 0 0 1 0 0 1
0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0
0 1 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0
1 đại diện cho một điểm, trong khi 0 đại diện cho việc thiếu điểm. Công việc của bạn sẽ là tạo ngẫu nhiên các k-1
centroid và thực hiện phân cụm dữ liệu ban đầu xung quanh các centroid mà bạn đã tạo. k
được định nghĩa là min(grid#Width, grid#Height)-1
. Việc ghi nhãn của mỗi centroid nên đi từ 2
cho đến khi k
. Chẳng hạn, trong trường hợp này, bạn có thể tạo các trọng tâm sau:
Centroid 2 was generated at: (1.0, 4.0)
Centroid 3 was generated at: (1.0, 5.0)
Centroid 4 was generated at: (5.0, 1.0)
Centroid 5 was generated at: (3.0, 3.0)
Centroid 6 was generated at: (0.0, 2.0)
Centroid 7 was generated at: (6.0, 6.0)
Centroid 8 was generated at: (2.0, 6.0)
Sau khi tạo các tâm, bạn phải lặp qua từng điểm được đánh dấu bằng a 1
, vì chúng ta có thể coi các điểm được đánh dấu 0
là khoảng trống. Đối với mỗi centroid, bạn phải quyết định centroid nào gần điểm nhất trong câu hỏi. Đây là khoảng cách cho ví dụ:
(0,8) distance from centroid 2 is 4.123105625617661
(0,8) distance from centroid 3 is 3.1622776601683795
(0,8) distance from centroid 4 is 8.602325267042627
(0,8) distance from centroid 5 is 5.830951894845301
(0,8) distance from centroid 6 is 6.0
(0,8) distance from centroid 7 is 6.324555320336759
(0,8) distance from centroid 8 is 2.8284271247461903
(1,1) distance from centroid 2 is 3.0
(1,1) distance from centroid 3 is 4.0
(1,1) distance from centroid 4 is 4.0
(1,1) distance from centroid 5 is 2.8284271247461903
(1,1) distance from centroid 6 is 1.4142135623730951
(1,1) distance from centroid 7 is 7.0710678118654755
(1,1) distance from centroid 8 is 5.0990195135927845
(2,8) distance from centroid 2 is 4.123105625617661
(2,8) distance from centroid 3 is 3.1622776601683795
(2,8) distance from centroid 4 is 7.615773105863909
(2,8) distance from centroid 5 is 5.0990195135927845
(2,8) distance from centroid 6 is 6.324555320336759
(2,8) distance from centroid 7 is 4.47213595499958
(2,8) distance from centroid 8 is 2.0
(3,2) distance from centroid 2 is 2.8284271247461903
(3,2) distance from centroid 3 is 3.605551275463989
(3,2) distance from centroid 4 is 2.23606797749979
(3,2) distance from centroid 5 is 1.0
(3,2) distance from centroid 6 is 3.0
(3,2) distance from centroid 7 is 5.0
(3,2) distance from centroid 8 is 4.123105625617661
(4,5) distance from centroid 2 is 3.1622776601683795
(4,5) distance from centroid 3 is 3.0
(4,5) distance from centroid 4 is 4.123105625617661
(4,5) distance from centroid 5 is 2.23606797749979
(4,5) distance from centroid 6 is 5.0
(4,5) distance from centroid 7 is 2.23606797749979
(4,5) distance from centroid 8 is 2.23606797749979
(4,8) distance from centroid 2 is 5.0
(4,8) distance from centroid 3 is 4.242640687119285
(4,8) distance from centroid 4 is 7.0710678118654755
(4,8) distance from centroid 5 is 5.0990195135927845
(4,8) distance from centroid 6 is 7.211102550927978
(4,8) distance from centroid 7 is 2.8284271247461903
(4,8) distance from centroid 8 is 2.8284271247461903
(6,1) distance from centroid 2 is 5.830951894845301
(6,1) distance from centroid 3 is 6.4031242374328485
(6,1) distance from centroid 4 is 1.0
(6,1) distance from centroid 5 is 3.605551275463989
(6,1) distance from centroid 6 is 6.082762530298219
(6,1) distance from centroid 7 is 5.0
(6,1) distance from centroid 8 is 6.4031242374328485
(7,1) distance from centroid 2 is 6.708203932499369
(7,1) distance from centroid 3 is 7.211102550927978
(7,1) distance from centroid 4 is 2.0
(7,1) distance from centroid 5 is 4.47213595499958
(7,1) distance from centroid 6 is 7.0710678118654755
(7,1) distance from centroid 7 is 5.0990195135927845
(7,1) distance from centroid 8 is 7.0710678118654755
(7,5) distance from centroid 2 is 6.082762530298219
(7,5) distance from centroid 3 is 6.0
(7,5) distance from centroid 4 is 4.47213595499958
(7,5) distance from centroid 5 is 4.47213595499958
(7,5) distance from centroid 6 is 7.615773105863909
(7,5) distance from centroid 7 is 1.4142135623730951
(7,5) distance from centroid 8 is 5.0990195135927845
(8,1) distance from centroid 2 is 7.615773105863909
(8,1) distance from centroid 3 is 8.06225774829855
(8,1) distance from centroid 4 is 3.0
(8,1) distance from centroid 5 is 5.385164807134504
(8,1) distance from centroid 6 is 8.06225774829855
(8,1) distance from centroid 7 is 5.385164807134504
(8,1) distance from centroid 8 is 7.810249675906654
(8,8) distance from centroid 2 is 8.06225774829855
(8,8) distance from centroid 3 is 7.615773105863909
(8,8) distance from centroid 4 is 7.615773105863909
(8,8) distance from centroid 5 is 7.0710678118654755
(8,8) distance from centroid 6 is 10.0
(8,8) distance from centroid 7 is 2.8284271247461903
(8,8) distance from centroid 8 is 6.324555320336759
Kết quả cuối cùng của thuật toán phân cụm là sẽ không còn 1 số nào trong ma trận, chỉ có các số centroid. Đây là lý do tại sao điều quan trọng là phải dán nhãn từ tâm 2-k+1
, cho phép chúng tôi thay thế chúng, như sau:
0 0 0 0 0 0 0 0 8
0 6 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 8
0 0 5 0 0 0 0 0 0
0 0 0 0 0 5 0 0 7
0 0 0 0 0 0 0 0 0
0 4 0 0 0 0 0 0 0
0 4 0 0 0 7 0 0 0
0 4 0 0 0 0 0 0 7
0 0 0 0 0 0 0 0 0
Đây là cách bố trí phân cụm ban đầu cho 7 centroid trên lưới được cung cấp, với các centroid được tạo ngẫu nhiên. Công việc của bạn là xuất phiên bản cụm của lưới đầu vào nhị phân.
Quy tắc
- Các trọng
k-1
tâm phải được tạo ngẫu nhiên và nên ở bất cứ đâu từ(0,0)
đến(grid#Width, grid#Height)
.- Giá trị của
k
làmin(grid#Width, grid#Height)-1
. - Các trọng tâm được tạo ra PHẢI được đánh số từ
2
đếnk
.
- Giá trị của
- Định dạng đầu vào PHẢI là một lưới 0 và 1, trong đó 0 biểu thị không gian trống và 1s đại diện cho các điểm.
- Một lưới là một chuỗi sử dụng 1 char trên mỗi ô và
\n
là các dấu phân cách hàng hoặc một mảng 2D. - Lưới truyền qua không được đảm bảo là hình vuông, nhưng nó được đảm bảo không trống.
- Một lưới là một chuỗi sử dụng 1 char trên mỗi ô và
- Đầu ra cuối cùng có thể sử dụng mảng hoặc chuỗi phân cách.
- Mã ngắn nhất thắng, đây là mã golf .