30/09/2018, 16:27
Hướng giải quyết bài toán tô màu đồ thị
Cho ma trận kề của đồ thị, hãy tô màu đồ thị sao cho hai đỉnh kề nhau có màu khác nhau và sử dụng số màu ít nhất như có thể.
Vấn đề:
- Theo em nghĩ thì có phải mình nhập vào mảng 2 chiều không?
Ví dụ: Đỉnh = 6 thì có phải nhập ma trận 6x6 không?
Bước tiếp theo thì mong a chị giúp em.
Bài liên quan
Xài mảng 6x6 là đúng rồi đó bạn, mình phải lưu lại ma trận kể chứ
bươc tiếp theo la gì vay anh
Dùng danh sách kề giảm độ phức tạp bài toán đi và tô màu cũng dễ.
Mình nghĩ vì số đỉnh nhỏ nên dùng ma trận kề thì truy xuất nhanh hơn danh sách kề.
Bạn thử code theo thuật toán phía dưới, nếu không được thì mình share code sau nhé
Tô màu đồ thị: tô màu đồ thị sao cho hai đỉnh kề nhau có màu khác nhau và sử dụng số màu ít nhất như có thể.
Thuật toán
Sắp thứ tự danh sách các đỉnh theo bậc giảm dần.
Gọi m là số màu cần sử dụng, ban đầu m=0;
Trong khi còn đỉnh chưa tô{
m=m+1;
Gán màu m cho đỉnh chưa được tô màu đầu tiên trong danh sách và lần lượt cho các đỉnh chưa tô màu trong danh sách và không kề với các đỉnh có màu m.
}
Chú ý: thuật toán thường cho kết quả với số màu tô ít nhất nhưng không phải luôn là như vậy.
Ví dụ:
a) Cho đơn đồ thị vô hướng 7 đỉnh, dạng ma trận trọng số như sau:
HD:
Stt:4>5>6>1>2>3>7
màu 1: 4, 1, 7
màu 2: 5,2,3
màu 3: 6
em vẫn không hiểu lam.a cho e xin code luôn duoc khong ạ
có ngĩa bau giờ minh sap xep bac giam dan theo cot hay theo hàng deu duoc hả anh
Bậc của một đỉnh chính là số đỉnh kề với nó. Đầu tiên, em cần tính bậc của tất cả các đỉnh và lưu vào mảng, sau đó sắp xếp mảng này giảm dần.
a xem cho em phan hàm tìm bâc của các đỉnh dúng chưa ạ
http://codepad.org/x3ti2LSr
Anh bổ sung code lên diễn đàn luôn cho @Tri_H_i_D_ng
Cách post code là thêm dấu ` như hình dưới.
Link hướng dẫn cách post code lên diễn đàn cụ thể ở đây:
@Tri_H_i_D_ng em đặt câu hỏi và thảo luận trong topic này rất tốt, tiếc là anh học cái này lâu rồi, giờ không còn nhớ để trả lời giúp em được. Hi vọng em sẽ tìm được câu trả lời cho mình.
Cảm ơn em đã đọc và làm theo hướng dẫn đặt câu hỏi của anh
em cảm ơn anh ạ.a xem cho em cái phần tìm bậc của đỉnh đồ thị với.em mà không viết hàm thì em tim đươc bâc của đỉnh,còn khi dùng hàm tìm đỉnh thì không ra.mong a giúp em
Rất muôn giúp nhưng anh quên hết rồi. À, anh đã share cho @Gio xem. và @Gio có trả lời ở đây:
Đạt Lê Trần
Mọi người vào giúp 1 tay :)
vang ạ.em cảm ơn anh nha
Bậc của một đỉnh chính là số đỉnh kề của đỉnh đó.
Vì ma trận kề chỉ lưu giá trị 0 và 1 nên ta có thể tính để bậc của một đỉnh là tổng trên hàng tương ứng. Ví dụ, bậc của đỉnh 1 tổng các giá trị trên hàng thứ 1, tức là bac[1] = a[1][1] + a[1][2]+ a[1][3] + …+ a[1][n]
em làm được đến bước đó oy anh,bây giờ mình làm gì tiếp hả anh
Bạn thử xem cái này có phải cái bạn cần ? (sorry nếu không phải)
GeeksforGeeks – 1 May 12
m Coloring Problem | Backtracking-5 - GeeksforGeeks
Given an undirected graph and a number m, determine if the graph can be colored with at most m colors such that no two adjacent… Read More »
Có thể là không giải được nếu đồ thị liên thông 3 đỉnh
why not? ít nhất có một lời giải mà
Bai này ngày trước anh có giải
Em xem đây nhé:
https://drive.google.com/file/d/0B5d8cee5X6WmY3h6djUwNU43cDg/view?usp=sharing