Đáng ngạc nhiên, chúng tôi chưa có bất kỳ thách thức nào về tô màu đồ thị!
Cho một đồ thị vô hướng, chúng ta có thể cung cấp cho mỗi đỉnh một màu sao cho không có hai đỉnh liền kề nào có cùng màu. Số nhỏ nhất χ của các màu riêng biệt cần thiết để đạt được điều này được gọi là số màu của đồ thị.
Ví dụ: phần sau đây cho thấy màu hợp lệ bằng cách sử dụng số lượng màu tối thiểu:
(Tìm thấy trên Wikipedia)
Vậy số màu của đồ thị này là = 3 .
Viết chương trình hoặc hàm, với một số đỉnh N <16 (được đánh số từ 1 đến N ) và danh sách các cạnh, xác định số màu của đồ thị.
Bạn có thể nhận đầu vào và tạo đầu ra ở bất kỳ định dạng thuận tiện nào, miễn là đầu vào không được xử lý trước. Nghĩa là, bạn có thể sử dụng một chuỗi hoặc một mảng, thêm các dấu phân cách thuận tiện vào chuỗi hoặc sử dụng một mảng lồng nhau, nhưng bất cứ điều gì bạn làm, cấu trúc dẹt phải chứa các số giống như các ví dụ bên dưới (theo cùng thứ tự).
Bạn không được sử dụng các hàm liên quan đến lý thuyết đồ thị tích hợp (như Mathicala's ChromaticNumber
).
Bạn có thể giả sử rằng biểu đồ không có vòng lặp (một cạnh kết nối một đỉnh với chính nó) vì điều đó sẽ làm cho biểu đồ không thể xóa được.
Đây là mã golf, câu trả lời ngắn nhất (tính bằng byte) sẽ thắng.
Ví dụ
Chương trình của bạn ít nhất phải giải quyết tất cả những điều này trong một khoảng thời gian hợp lý. (Nó phải giải quyết tất cả các đầu vào một cách chính xác, nhưng có thể mất nhiều thời gian hơn cho các đầu vào lớn hơn.)
Để rút ngắn bài đăng, trong các ví dụ sau, tôi trình bày các cạnh trong một danh sách được phân tách bằng dấu phẩy. Thay vào đó, bạn có thể sử dụng ngắt dòng hoặc mong đợi đầu vào ở một số định dạng mảng thuận tiện, nếu bạn thích.
Tam giác (= 3)
3
1 2, 2 3, 1 3
"Vòng" gồm 6 đỉnh (= 2)
6
1 2, 2 3, 3 4, 4 5, 5 6, 6 1
"Vòng" gồm 5 đỉnh (= 3)
5
1 2, 2 3, 3 4, 4 5, 5 1
Ví dụ hình trên (= 3)
6
1 2, 2 3, 3 4, 4 5, 5 6, 6 1, 1 3, 2 4, 3 5, 4 6, 5 1, 6 2
Tổng quát hóa ở trên cho 7 đỉnh (= 4)
7
1 2, 2 3, 3 4, 4 5, 5 6, 6 7, 7 1, 1 3, 2 4, 3 5, 4 6, 5 7, 6 1, 7 2
Biểu đồ Petersen (= 3)
10
1 2, 2 3, 3 4, 4 5, 5 1, 1 6, 2 7, 3 8, 4 9, 5 10, 6 8, 7 9, 8 10, 9 6, 10 7
Đồ thị hoàn chỉnh gồm 5 đỉnh, cộng với đỉnh bị ngắt kết nối (= 5)
6
1 2, 1 3, 1 4, 1 5, 2 3, 2 4, 2 5, 3 4, 3 5, 4 5
Đồ thị hoàn chỉnh gồm 8 đỉnh (= 8)
8
1 2, 1 3, 1 4, 1 5, 1 6, 1 7, 1 8, 2 3, 2 4, 2 5, 2 6, 2 7, 2 8, 3 4, 3 5, 3 6, 3 7, 3 8, 4 5, 4 6, 4 7, 4 8, 5 6, 5 7, 5 8, 6 7, 6 8, 7 8
Mạng tam giác có 15 đỉnh (= 3)
15
1 2, 1 3, 2 3, 2 4, 2 5, 3 5, 3 6, 4 5, 5 6, 4 7, 4 8, 5 8, 5 9, 6 9, 6 10, 7 8, 8 9, 9 10, 7 11, 7 12, 8 12, 8 13, 9 13, 9 14, 10 14, 10 15, 11 12, 12 13, 13 14, 14 15